コンパイラに関する本の章には、次の文法定義とサンプル コードがあります。
...
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
ループは、なしでどのように有効です{
}
か? ステートメント定義にはそれらが必要であるように見えます。これは本の間違いですか、それとも構文を誤解していますか?
[編集]あいまいさをお詫びします。上に入力したものはすべて、本からの逐語的なものです。省略は私のしたことではありません。