[antlr-interest] ANTLR 3.1.2 bug in tree grammars? - RewriteEmptyStreamException
Terence Parr
parrt at cs.usfca.edu
Tue Feb 24 10:07:25 PST 2009
Yeah, i fixed bugs. Naturally, you need:
> propertynode
> :
> properties -> ^( TYPE PROPERTYNODE ) properties?
since properties can be empty
Ter
On Feb 24, 2009, at 2:57 AM, Paul Bouché (NSN) wrote:
> Hi,
>
> I just upgraded to ANTLR v3.1.2 from 3.0. What worked before does not
> work anymore.... :-( I looked through the changes list, but could not
> find anything related.
>
> We first create an AST and then parse it with a tree grammar. The
> syntax
> is a list key = value pairs, where a structure can be built using
> curly
> brackets. A structure is again a list of key-value pairs, i.e.
> struct = { a = 3, b = 4 }
>
> also
> struct = { }
>
> was allowed which created an empty sub structure.
>
> This is broken now. I get the exception:
> Exception in thread "main"
> org.antlr.runtime.tree.RewriteEmptyStreamException: rule properties
> at
> org
> .antlr
> .runtime
> .tree.RewriteRuleElementStream._next(RewriteRuleElementStream.java:
> 158)
> at
> org
> .antlr
> .runtime
> .tree
> .RewriteRuleElementStream.nextTree(RewriteRuleElementStream.java:145)
> ...
>
> I have no clue whatsoever what this means. Well obviously somehow the
> parser tries to rewrite an empty stream. Well before 3.1.2, in 3.0
> this
> worked fine without errors. Now it does not work. Something must have
> changed or is it a bug?
>
> The grammar for parsing the above syntax is basically as follows:
> start
> :
> propertynode EOF
> ;
> propertynode
> :
> properties -> ^( TYPE PROPERTYNODE ) properties
> ;
> properties
> :
> ( property ( ',' property )* )? ','? -> property*
> ;
> property
> :
> name '=' value -> ^( PROPERTY name cast?
> attributes? value )
> ;
> value
> :
> ( plain | '{' propertynode '}' ) -> plain?
> list? propertynode?
> ;
>
> As you can see rule value calls propertynode which allows
> substructures.
> If the rule properties does match an empty obviously a stream is not
> instanciated as it was before in 3.0 hence the exception. Can you tell
> me how I need to modify the grammar to make it work in 3.1.2?
>
> Thanks a bunch!
> Paul
>
> --
> Paul Bouché
> Voice: +49 30 590080-1284
>
> Nokia Siemens Networks GmbH & Co. KG, An den Treptowers 1, 12435
> Berlin, Germany
> Sitz der Gesellschaft: München / Registered office: Munich
> Registergericht: München / Commercial registry: Munich, HRA 88537
> WEEE-Reg.-Nr.: DE 52984304
>
> Persönlich haftende Gesellschafterin / General Partner: Nokia
> Siemens Networks Management GmbH
> Geschäftsleitung / Board of Directors: Lydia Sommer, Olaf Horsthemke
> Vorsitzender des Aufsichtsrats / Chairman of supervisory board:
> Lauri Kivinen
> Sitz der Gesellschaft: München / Registered office: Munich
> Registergericht: München / Commercial registry: Munich, HRB 163416
>
>
> List: http://www.antlr.org/mailman/listinfo/antlr-interest
> Unsubscribe: http://www.antlr.org/mailman/options/antlr-interest/your-email-address
More information about the antlr-interest
mailing list