将EBNF转换为Bison

时间:2014-02-16 10:53:08

标签: bison ebnf

我有这条EBNF语法,我想将其转换为Bison语法。

E ::= {S [`;´]} [L [`;´]]

我对语法没有多少经验,但我想我设法弄清楚有一些可选部分和一些重复。

我的尝试:

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

lOp:        /* No Action*/ 
        | laststat   
;

我无法测试这个atm,所以从你们那里得到一些意见是很好的。

1 个答案:

答案 0 :(得分:1)

我就是这样做的:

program   : statements
          | statements last opt_semi
          ;

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

opt_semi  : /* empty */
          | ';'
          ;

其中program对应E; statementSlastL