[antlr-interest] RewriteEmptyStreamException

Terence Parr parrt at cs.usfca.edu
Thu Feb 14 10:49:37 PST 2008


Hi. If you have any rewrite in an alternative, the auto AST  
construction is turned off for the entire alternative even if you set  
it just inside a subrule.

Ter
On Feb 13, 2008, at 7:38 PM, Jamie Penney wrote:

> To answer my own question, it seems like I had an alternative in the  
> 'type' rule that didn't have a rewrite rule associated with it. I  
> thought ANTLR was supposed to automatically create an AST if you  
> didn't specify a rewrite rule? For whoever is interested, this was  
> the rule:
> type
>   :    (namespace_or_type_name -> ^(TYPE $namespace_or_type_name) //  
> JP Added -> ^(TYPE $namespace_or_type_name)
>       |    simple_type
>       |    OBJECT
>       |    STRING
>       |    VOID s1=STAR -> ^(VOID $s1)
>       )    (s2=STAR -> ^(TYPE $type OP_POINTER[$s2])
>           |    INTERR -> ^(TYPE $type OP_NULLABLE[$INTERR])
>           |    (rank_specifier)=> rank_specifier -> ^(TYPE $type  
> rank_specifier)
>           )*
>   ;
>
> Because the second group (starting with s2=STAR) is optional, if it  
> wasn't triggered there was no rewrite rule triggered.
>
>
>
> Jamie Penney wrote:
>> Forgot to mention that I am using the antlr-2008-01-23.10 build. I  
>> tried the lastest build after Terrance announced it, but it was  
>> giving me Template missing exceptions after I recompiled to add  
>> some stuff I needed to the CSharp target.
>>
>> Jamie
>>
>> Jamie Penney wrote:
>>> Hi All,
>>> I am getting the following exception when executing a rewrite rule:
>>>
>>> Antlr.Runtime.Tree.RewriteEmptyStreamException: rule type
>>>  at Antlr.Runtime.Tree.RewriteRuleElementStream`1._Next()
>>>  at  
>>> Antlr 
>>> .Runtime.Tree.RewriteRuleSubtreeStream.FetchObject(ProcessHandler  
>>> ph)
>>>  at Antlr.Runtime.Tree.RewriteRuleSubtreeStream.NextTree()
>>>  at  
>>> Kerriv.CSharpML.CSharp3ParserSyntax.using_namespace_directive()  
>>> in ....
>>>
>>>
>>> This is cause by the code generated from the following rule:
>>> using_namespace_directive
>>>   :    USING type SEMICOLON -> ^(USING type SEMICOLON)
>>>   ;
>>>
>>> Any ideas as to where I should start with this? The documentation  
>>> and Google haven't given me any clues.
>>>
>>> Thanks,
>>> Jamie Penney
>>
>



More information about the antlr-interest mailing list