[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