[antlr-interest] Double Left Recursion Update: Test case with working "double left recursion"

Jan Finis finis at in.tum.de
Tue Feb 28 06:11:48 PST 2012

Hi again,

as I mentioned in my last mail, I think that the problem with rules of 
the form

expr : expr expr;

is solvable because old Honey Badger was able to match them. I tried 
again and could confirm this. This grammar:

result : expr { System.out.println($expr.s); } EOF;

expr returns [String s]
	: 'x' { $s = "x"; }
	| e1=expr '?' { $s = $e1.s + "?"; }
	| e1=expr e2=expr { $s = "(" + $e1.s + " " + $e2.s + ")"; }

parses correctly with an older 4.0ea version. I have uploaded this 
version here:

It does not only parse correctly, even the resulting parser is really 
able to match input without descending into a looping recursion.

I tested the resulting parser on the following input:


and the result was:

(x (x (x (x (x? (x (x? (x x))))))))

so the concatenation operation seems to be right associative, but it 
works perfectly fine :).

Best regards,

More information about the antlr-interest mailing list