The root node of any tree needs to have a type, so ^( ^( makes no sense as
what is the first root supposed to be?

Jim

> -----Original Message-----
> From: [email protected] [mailto:antlr-interest-
> [email protected]] On Behalf Of Gerald Rosenberg
> Sent: Wednesday, August 04, 2010 10:09 PM
> To: Junkman
> Cc: [email protected]
> Subject: Re: [antlr-interest] Tree parser eats up DOWN node when
> navigating optional child node
> 
>   ------ Original Message (Wednesday, August 04, 2010 5:21:33
> PM) From: Junkman ------
> Subject: Re: [antlr-interest] Tree parser eats up DOWN node when
> navigating optional child node
> >
> > You wrote "AST ^( ^( PARENT A ) B )".  Can you describe the tree this
> > notates?  I can see it as a node sequence, but I don't know what tree
> > structure it is describing.
> >
> > Thanks for the reply.
> >
> > Jay
> >
> 
> The AST
> 
> ^( ^( PARENT A? ) B? )
> 
> should implement as
> 
> ( ( PARENT Token.DOWN A? Token.UP ) Token.DOWN B? Token.UP )
> 
> but is actually
> 
> ( PARENT Token.DOWN A? B? Token.UP )
> 
> Because parent_a is the root of parent, the parser is (for some reason)
not
> actually generating the middle Token.UP Token.DOWN sequence.  That
> explains why P and PA work, but PB and PAB do not - after matching for A?,
> the tree parser is looking for UP, but finding B.  Not sure why Antlr is
doing
> this - not expected.
> 
> Changing A and/or B to non-optional does not change this behavior.
> 
> If, however, you change the parent rule to
> 
> parent : parent_a B? -> ^( M parent_a B? )  ;
> 
> where M is an imaginary token (and make the corresponding change to the
> tree grammar), all four patterns will parse and match as expected:
> 
> AST:
> 
> ^( M ^(PARENT A? ) B? )
> 
> properly implements as
> 
> ( ( M Token.DOWN PARENT A? Token.UP ) Token.DOWN B? Token.UP )
> 
> 
> 
> 
> List: http://www.antlr.org/mailman/listinfo/antlr-interest
> Unsubscribe: http://www.antlr.org/mailman/options/antlr-interest/your-
> email-address


List: http://www.antlr.org/mailman/listinfo/antlr-interest
Unsubscribe: 
http://www.antlr.org/mailman/options/antlr-interest/your-email-address

-- 
You received this message because you are subscribed to the Google Groups 
"il-antlr-interest" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/il-antlr-interest?hl=en.

Reply via email to