2014-02-16 95 views
1

我有這條EBNF語法,我想將其轉換爲Bison語法。將EBNF轉換爲Bison

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

我對語法沒有太多的經驗,但我想我設法弄清楚有一些可選的部分和一些重複。

我嘗試:

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

lOp:  /* No Action*/ 
     | laststat 
; 

我不能對此進行測試ATM所以它會是不錯的,從你們獲得了一些信息。

回答

1

這是我會怎麼做它:

program : statements 
      | statements last opt_semi 
      ; 

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

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

其中program相當於E; statementSlastL