2016-11-25 13 views
0

ANTLR 4.6、2011/11/23のスナップショット。左回帰規則からの相互左回帰の除去

私はそれぞれ左回帰的な2つのルールを持っています。私は、左回帰を公開するためのいくつかの選択肢を拡張しました。左回帰が明示的であるため、ANTLR4がこれを処理します。ただし、2つのルールは相互に左回帰的です。

どのようにして相互左帰属を解決し、そうすることでルールが完全な混乱ではないのですか?今、私は何が拡張されたかを示すよいコメントを持っており、私はそれを相互左回帰に関与していないprimary2とconstant_primary2に移しました。

constant_primary : 
    constant_primary2 
    | primary '.' method_call_body 
    | constant_primary '\'' '(' constant_expr ')' 
    ; 

primary : 
    primary2 
    | primary '.' method_call_body 
    | constant_primary '\'' '(' expr ')' 
    ; 

答えて

1

1つのオプションは、グループID com.tunnelvisionlabsを使用してthrough Maven利用可能であるANTLR 4、のmy forkを使用するように切り替えることです。このフォークは、文法で実際に書いたフォームに一致する構文木を生成しながら、相互左回帰を処理します。

この機能は多少実験的です。あなたが問題に遭遇した場合、私のフォークの問題トラッカーに問題を投稿してください。