[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