[antlr-interest] a left recursive walker rule

=?gb2312?q?=CB=EF=BC=CD=B8=D5=20Jigang=20(Robert)=20Sun?= sunjigang1965 at yahoo.com.cn
Fri Jul 14 08:11:48 PDT 2006


Hi,
I have a rule in tree walker, which is left recursive:  A : (A|B)+ C ,

so I am trying to eliminate it 

A : (A|B)+ C
=> A : ( A(A|B)* | B(A|B)*) C
=> A : A(A|B)* C | B(A|B)* C
=> A : B(A|B)* C  ((A|B)* C)*
=> A : B ( (A|B)* C )+
=> A : B ( ( B((A|B)* C)+ |B )* C )+ //replace A with " B ( (A|B)* C )+ "
=> A : B( ( B [((A|B)* C)+ | ]* C)+ // need to replace A with " B ( (A|B)* C )+ " again
=> A : ... //then again and again forever, never ends

Any better solution?

Thanks

Jigang





		
___________________________________________________________ 
ÑÅ»¢Ãâ·ÑÓÊÏä-3.5GÈÝÁ¿£¬20M¸½¼þ 
http://cn.mail.yahoo.com/


More information about the antlr-interest mailing list