ここでは、LL(k)パーサの相互左回帰問題に関するStackOverflowに関する多くの質問を読んでいます。私は、左再帰除去するために一般的なアルゴリズムを見つけました: A : Aa | b ;
はしかし、私は私の状況に適用する方法を見つけ出すことはできません A : bR ;
R : (aA)? ;
になります。私は、など left_exp: IDENT | exp DOT IDE
これはANTLR4で私の文法である:私はのようなものを入力すると grammar Hello;
r : WORD ID ;
ID : [a-z]+ ;
WORD : [a-z]+ ;
WS : [ \t\r\n]+ -> skip ;
は: line 1 missing WORD at 'hello'
: hello buddy
私は、次のエラーメッセージが表示されましたしか
しばらくの間、私はLLパーサがどのように動作するのかを知ろうとしていましたが、これを正しく理解すれば、トップダウンの再帰的降下パーサを手作業で書くとき、終端記号。したがって、この例のために: S -> AB
A -> aA|ε
B -> bg|dDe
D -> ab|cd
私はこのようにそれぞれS、A、BおよびDのための関数を作成する必要があると思います: Token B()
{