1

次のエラーが表示されます。

Warning : *** Shift/Reduce conflict found in state #2
  between ExitLoopStatement ::= EXITLOOP (*) 
  and     VarAccess ::= (*) DOLLAR IDENTIFIER 
  under symbol DOLLAR

これは私が使っている文法です。現在、割り当てとブレークがあります (各ブレーク ステートメントは、終了するループ レベルの数を指定できます)。

start with StatementList;

StatementList
    ::= Statement
    |
        StatementList Statement
    ;

Statement
    ::= AssignmentStatement
    |
        ExitLoopStatement
    ;

AssignmentStatement
    ::= VarAccess EQ_OP VarAccess
    ;

VarAccess
    ::= DOLLAR IDENTIFIER
    ;

ExitLoopStatement
    ::= EXITLOOP
    |
        EXITLOOP VarAccess
    ;

私が理解していることから、問題は、EXITLOOPに遭遇した後、次のトークンが割り当ての開始または終了するレベルの数になる可能性があることです。

この問題を解決する方法はありますか?

ありがとう!

4

1 に答える 1