[antlr-interest] ANTLR 3.1.2 bug in tree grammars? - RewriteEmptyStreamException
"Paul Bouché (NSN)"
paul.bouche at nsn.com
Wed Feb 25 07:05:49 PST 2009
Thank you very much Ter :-)
So it was a bug that this problem was not detected before?
Anyway, it works now :-)
Thanks.
Terence Parr schrieb:
> 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
>
--
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
More information about the antlr-interest
mailing list