我想为算术方程和变量赋值设计一个 LL1 语法。我从这个语法开始:
我对算术表达式有一个明确的语法:
E → T E’
E’ → | + E
T → id T’
T’ → | * T
但是,我不确定如何将变量分配合并到 E 产品中。
我之前的尝试是:
stmt -> assignment SEMI | RETURN stmt_prime
| LBRACE stmt_list RBRACE
| IF LPAREN assignment RPAREN stmt stmt_prime_prime
| FOR LPAREN assignment SEMI assignment SEMI assignment RPAREN stmt |
stmt_prime -> SEMI | -> assignment SEMI
stmt_prime_prime -> NOELSE
| ELSE stmt
assignment -> ID typ ASSIGN expr | expr
expr -> TE*
E* -> + TE* | -TE* | epsilon
T -> FT*
T* -> * FT* | / FT* | epsilon
F -> (E) | int_literal | TRUE | FALSE