【问题标题】:Convert EBNF to Bison将 EBNF 转换为 Bison
【发布时间】:2014-02-16 10:53:07
【问题描述】:

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

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

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

我的尝试:

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

lOp:        /* No Action*/ 
        | laststat   
;

我无法测试这个自动取款机,所以很高兴能从你们那里得到一些意见。

【问题讨论】:

    标签: bison ebnf


    【解决方案1】:

    这就是我的做法:

    program   : statements
              | statements last opt_semi
              ;
    
    statements: /* empty */
              | statements statement opt_semi
              ;
    
    opt_semi  : /* empty */
              | ';'
              ;
    

    其中program对应EstatementSlastL

    【讨论】:

      猜你喜欢
      • 2011-01-28
      • 1970-01-01
      • 2021-11-29
      • 2020-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多