[antlr-interest] infinite iteration in AST make(params AST[] nodes)

=?gb2312?q?=CB=EF=BC=CD=B8=D5=20Jigang=20(Robert)=20Sun?= sunjigang1965 at yahoo.com.cn
Wed Mar 8 09:48:34 PST 2006


> 
> The code generated by following grammar 
> 
> program
> 	:
> 	m:mainClass l:classDeclList  {## = #( #[PROGRAM,
> "PROGRAM","MiniJava.Program"],#m,#l);} EOF
> 	; 	
> 
> runs into infinite iteration at
> 
> public virtual AST make(params AST[] nodes)
> {
> ...
>      while (tail.getNextSibling() != null) //could not
> get out of here
>     {
>         tail = tail.getNextSibling();
>         Console.WriteLine(tail.GetType());//added by
> me
>     }
>   }
> return root;
> }
> 
> After putting to the end of ! program, got expected
> tree.
> 
> What I remember last time for formalList, I put ! to
> formalList after computer got into dead iteration,
> then   I continue to other grammar modification which
> is irrelavant to formalList, then remove the bomb off.
> It worked normally.
> 
> Jigang  
> 
> 
> --- Micheal J <open.zone at virgin.net>дµÀ:
> 
> > > Code generated by the attached grammar only
> > produces a
> > > root StatementList node contains an empty list of
> > > Statement. After remove ! from end of 
> > > "statementList", desired result got. Is this
> > normal?
> > 
> > Yes. "!" means don't generate standard tree creation
> > code. You now have to
> > provide that yourself. For statementList, you should
> > leave it  out.
> > 
> > > While the following grammar works well.
> > > 
> > > formalList!
> > > 	:
> > > 	 (formal ( COMMA! formal)* { ## = 
> > > #(#[FORMAL_LIST,"FORMAL_LIST"],##); })?
> > > 	;
> > 
> > Strange. This should give the root node only as
> > well.
> > 
> > 
> > Micheal
> > 
> > 
> 
> 
> 
> 		
> ___________________________________________________________ 
> ÑÅ»¢1GÃâ·ÑÓÊÏä°Ù·Ö°Ù·ÀÀ¬»øÐÅ 
> http://cn.mail.yahoo.com/
> 



	

	
		
___________________________________________________________ 
ÑÅ»¢1GÃâ·ÑÓÊÏä°Ù·Ö°Ù·ÀÀ¬»øÐÅ 
http://cn.mail.yahoo.com/


More information about the antlr-interest mailing list