[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