gpt4 book ai didi

language-agnostic - 上下文无关语法定义中的可选与强制终止符

转载 作者:行者123 更新时间:2023-12-04 08:58:39 24 4
gpt4 key购买 nike

在一本书关于编译器的章节中,有如下语法定义和示例代码。

...
statement: whileStatement
| ifStatement
| ... // Other statement possibilities
| '{' statementSequence '}'
whileStatement: 'while' '(' expression ')' statement
ifStatement: ... // Definition of "if"
statementSequence: '' // empty sequence (null)
| statement ';' statementSequence
expression: ... // Definition of "expression"
... // More definitions follow

while (expression) {
statement;
statement;
while (expression) {
while(expression)
statement;
statement;
}
}

如果没有 { },代码最内层的 while 循环如何有效?在我看来,语句定义需要它们。这是书中的错误还是我误解了语法?


[编辑] 对于任何歧义,我深表歉意。上面输入的所有内容都是书中逐字逐句的。遗漏不是我做的。

最佳答案

再次考虑您的示例代码:

1 while (expression) {
2 statement;
3 statement;
4 while (expression) {
5 while(expression)
6 statement;
7 statement;
8 }
9 }

为什么您担心第 6 行缺少大括号,而不关心第 2、3 和 7 行也缺少大括号?语法是说 while 循环以 statement 结束,而 statementSequence 及其所需的大括号只是众多替代方案之一语句。第 5 行和第 6 行完全匹配该规则——除了 ';',它在规则中没有位置。

关于language-agnostic - 上下文无关语法定义中的可选与强制终止符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1395822/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com