Hmmm, answering my own question, it looks like you have to put a ? after the predicate
D On May 15, 2009, at 7:57 AM, Steve Ebersole wrote: > On Fri, 2009-05-15 at 07:34 -0400, David Jameson wrote: >> 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" > Here specifically I would assume that areStrings(...) would be a > grammar > member function so that the types of the 'a' and 'b' expressions could > be determined. But in general yes, the fragment inside {} just > needs to > evaluate to a boolean value. I believe these are called rewrite > predicates(?). And yes, just like regular predicates you can list > multiples and the first match will "win". > >> 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 <st...@hibernate.org> >>> Hibernate.org >>> >> >> >> List: http://www.antlr.org/mailman/listinfo/antlr-interest >> Unsubscribe: >> http://www.antlr.org/mailman/options/antlr-interest/your-email-address > -- > Steve Ebersole <st...@hibernate.org> > Hibernate.org > List: http://www.antlr.org/mailman/listinfo/antlr-interest Unsubscribe: http://www.antlr.org/mailman/options/antlr-interest/your-email-address --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "il-antlr-interest" group. To post to this group, send email to il-antlr-interest@googlegroups.com To unsubscribe from this group, send email to il-antlr-interest+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/il-antlr-interest?hl=en -~----------~----~----~----~------~----~------~--~---