0

次の簡単な文法があります。

E -> T | ^ v . E 
T -> F T1 
T1 -> F T1 | epsilon
F -> ( E ) | v

私は Bison にかなり慣れていないので、誰かがその形式で書き出す方法を教えてくれることを願っていました。私がこれまでに持っているのは次のすべてですが、それが正しいかどうかはわかりません。

 %left '.'
 %left 'v'
 %% /* The grammar follows.  */

 exp:
 term               {printf("1");}
 | '^' 'v' '.' exp  {printf("2");}
 ;

 term:
 factor term1       {printf("3");}
 ;

 term1:
 factor term1       {printf("4");}
 |                  {printf("5");}      
 ;

 factor:
 '(' exp ')'        {printf("6");}
 | 'v'              {printf("7");}
 ;
 %%
4

1 に答える 1

1

いくつかのプロダクションで終了セミコロンがありません。ソースの文法には、行に関するプロダクションが必要であることを示唆するものは何もありません。

于 2013-03-03T02:08:19.677 に答える