3

ANTLRWorks2 で言語を解析しようとしています:

grammar testLR;
pb: 'kind' '=' ID ';' pb
  | fd pb
  |
  ;
fd: ( 'instance' '=' ID ';' )*   
  ;
ID: ('a'..'z'|'A'..'Z'|'_'|'$') ('a'..'z'|'A'..'Z'|'0'..'9'|'_'|'$')*
  ;

次に、ANTLRWork は、「次の一連のルールは相互に左再帰的です [pb]」と言います。問題を解決する方法がわかりません。どんな提案でも大歓迎です。ありがとう!

4

1 に答える 1

3

fd ルールには * があるため、空にすることができます (* = 0 回以上) - fd を空にすると、pb ルール (2 行目) が pb : pb になることを意味します。永遠にループし続けます。fd ルールを空にしない (* を + に変更する) ことでこれを修正できますが、文法でそれが必要かどうかはわかりません。

于 2013-08-28T19:13:21.437 に答える