EBNF式をモデル化しようとしています
("declare" "namespace" ";")* ("declare" "variable" ";")*
これを表すように見えるyacc(MPPGを使用しています)文法を作成しましたが、テスト式と一致しません。
私が一致させようとしているテストケースは
declare variable;
レクサーからのトークンストリームは
KW_Declare
KW_Variable
Separator
文法解析では、「Shift / Reduce競合、KW_Declareの状態6」があると示されています。「%leftPrologHeaderList PrologBodyList」でこれを解決しようとしましたが、どちらの解決策も機能しません。
Program : Prolog;
Prolog : PrologHeaderList PrologBodyList;
PrologHeaderList : /*EMPTY*/
| PrologHeaderList PrologHeader;
PrologHeader : KW_Declare KW_Namespace Separator;
PrologBodyList : /*EMPTY*/
| PrologBodyList PrologBody;
PrologBody : KW_Declare KW_Variable Separator;
KW_Declare KW_Namespace KW_Variable Separatorはすべて、値が「declare」、「naemsapce」、「variable」、「;」のトークンです。