我有这条EBNF语法,我想将其转换为Bison语法。
E ::= {S [`;´]} [L [`;´]]
我对语法没有多少经验,但我想我设法弄清楚有一些可选部分和一些重复。
我的尝试:
E: S semiColOp E lOp semiColOp
;
semiColOp: /* No Action*/
| semiCol//';'
;
lOp: /* No Action*/
| laststat
;
我无法测试这个atm,所以从你们那里得到一些意见是很好的。
答案 0 :(得分:1)
我就是这样做的:
program : statements
| statements last opt_semi
;
statements: /* empty */
| statements statement opt_semi
;
opt_semi : /* empty */
| ';'
;
其中program
对应E
; statement
至S
和last
至L
。