[antlr-interest] Left recursive grammar

Luigi Iannone iannone at cs.manchester.ac.uk
Thu Jul 21 06:00:28 PDT 2011


Hi all,

I have this simple grammar 


grammar test;
options {
  language = Java;
  output = AST;
}

a
	:
		a*B  ->^(B a*)
		| A
	;

B	:
		'.B'
	;

A	:
		'A'
	;
 



and I get the following output when I try to generate the parser in ANTRLWorks 

[13:48:53] error(210):  The following sets of rules are mutually left-recursive [a]

I read on the Web that there are solutions to solve this, however they will mess up the associativity, which I need to keep instead.
So, for instance, for the input 

A.B.B

the AST tree should be

^(B ^(B A))

Is there any way to change the grammar in order to eliminate the left recursion and obtain the above tree. I am afraid I do not get how to do it by just looking at what is there online about left recursive grammars.

Thanks a lot for your help,

Luigi


More information about the antlr-interest mailing list