我需要将其从EBNF转换为BNF。
<statement> ::= <ident> = <expr>
<statement> ::= IF <expr> THEN <statement> [ ELSE <statement> ] END
<statement> ::= WHILE <expr> DO <statement> END
<statement> ::= BEGIN <statement> {; <statement>} END
另外,我坚持这个:
E -> E+T | E-T | T
T -> T*F | T/F | F
F -> (E) | VAR | INT
VAR -> a | b | c
INT -> 0 | 1 | 2| 3 | 4| 5 | 6 | 7 | 8 | 9
修改语法以添加
^
运算符后,语法分配给表达式a^2^b*(c+1)?
的最左边的派生是什么?您可能会发现首先为此表达式绘制解析树是方便的,并且然后找出最左边的推导。
我添加了G -> F^G | G
然后获得G 2 G b E
作为我的答案,但我不确定这是否正确。