[antlr-interest] null pointer to ADAPTOR->setTokenBoundaries

Alan Condit acondit at ipns.com
Wed May 19 17:00:40 PDT 2010


On page 164 of "The Definitive Antlr Reference" under the heading "Omitting Input Elements" Terrance shows using an empty rewrite rule to allow omitting unneeded symbols from the output AST tree.

This does not say that it could not be causing a problem with the generated 'C' code.

Jim, is there a possibility that this is a problem?

Alan
---

Alan Condit
1085 Tierra Ct.
Woodburn, OR 97071

Email -- acondit at ipns.com
Home-Office (503) 982-0906

On May 19, 2010, at 3:36 PM, John B. Brodie wrote:

> Pardon me for butting in.
> 
> And I have never used the C code generator, but.....
> 
> On Wed, 2010-05-19 at 14:06 -0700, Alan Condit wrote:
> 
>> which I assume, based on the comment, is generated from this rule:
>> line	:	line_number? segment+ K_NEWLINE
>> 		-> ^(STMT segment+)
>> 	|	line_number? K_NEWLINE
>> 		->
>> 	|	oword_stmt
>> 		-> ^(STMT oword_stmt)
>> 	;
>> 
>> The grammar is for parsing an existing language not one of my invention,
>> and grammatically the newlines delineate a semantic block therefore must
>> be known by the parser, but empty lines are discarded and therefore
>> should not be in the tree.
> 
> having an empty RHS of the -> rewrite operator feels well unusual.
> 
> i am not sure that ANTLR permits a rule which produces no tree when
> output=AST is present....
> 
> Maybe try (untested):
> 
> line : line_number? ( segment+ -> ^(STMT segment+) )? K_NEWLINE
>     | oword_stmt -> ^(STMT oword_stmt)
>     ;
> 
> but i do not know what would happen when no segment is present for the
> above rule....
> 
> have you considered building a dummy tree node for the empty case and
> then your tree walker can just ignore it?
> 
> not sure that i have really helped any, sorry.
>   -jbb
> 
> 



More information about the antlr-interest mailing list