Bison 将EBNF转化为野牛

Bison 将EBNF转化为野牛,bison,ebnf,Bison,Ebnf,我有一段EBNF语法,我想转换成Bison语法 E ::= {S [`;´]} [L [`;´]] 我没有太多语法方面的经验,但我想我设法弄明白了其中有一些可选部分和一些重复 我的尝试: E: S semiColOp E lOp semiColOp ; semiColOp: /* No Action*/ | semiCol//';' ; lOp: /* No Action*/ | laststat ; 我不能测试这个at

我有一段EBNF语法,我想转换成Bison语法

E ::= {S [`;´]} [L [`;´]]
我没有太多语法方面的经验,但我想我设法弄明白了其中有一些可选部分和一些重复

我的尝试:

E:      S semiColOp E lOp semiColOp
;
semiColOp:  /* No Action*/ 
        | semiCol//';' 
;

lOp:        /* No Action*/ 
        | laststat   
;
我不能测试这个atm机,所以很高兴能从你们那里得到一些信息。

我就是这样做的:

program   : statements
          | statements last opt_semi
          ;

statements: /* empty */
          | statements statement opt_semi
          ;

opt_semi  : /* empty */
          | ';'
          ;
其中,
program
对应于
E
<代码>语句到
S
last
L