[antlr-interest] Modifying tree based on semantic content

David Jameson dhjdhj at gmail.com
Fri May 15 04:34:43 PDT 2009


I was not aware of this kind of construction. Thank you for bringing  
it to my attention.  Where is there an article that specifically  
discusses this mechanism? I couldn't find it in my ANTLR book nor  
through (a few) google searches?

In other words, what exactly is "areStrings(...)" --- is it just a  
function that returns boolean? I'm assuming that the syntax here  
implies that you can have a sequence of these
     -> { .... }   TREE
lines and that ANTRL looks for the first expression in braces that is  
"true"

Is that correct?

D


On May 15, 2009, at 7:26 AM, Steve Ebersole wrote:

> someRule
>    : a PLUS b
>        -> { areStrings($a.tree,$b.tree) } ^(CONCATENATE a b)
>        -> ^(PLUS a b)
>
> On Thu, 2009-05-14 at 23:38 -0400, David Jameson wrote:
>> Is there any way to control the built-in tree generation (from an
>> initial parse phase) based on semantics of what is being parsed?
>>
>> As a simple example,    if   I see the expression
>>        a + b
>>
>> then I want to produce
>>     (PLUS a b)
>> or
>>    (CONCATENATE a b)
>>
>> depending on whether a and b are numeric or string.
>>
>>
>> How can I do this with rewrite rules (for example)?   Or do I have to
>> construct my own trees?
>>
>>
>> Thanks,
>> D
>>
>> List: http://www.antlr.org/mailman/listinfo/antlr-interest
>> Unsubscribe: http://www.antlr.org/mailman/options/antlr-interest/your-email-address
> -- 
> Steve Ebersole <steve at hibernate.org>
> Hibernate.org
>



More information about the antlr-interest mailing list