[antlr-interest] Need quick ANTLR/ST3 hack
Bill Andersen
bill.andersen at mac.com
Wed Sep 14 19:27:03 PDT 2011
Thanks, Sam...
That works - never used those ST operators before.
On Sep 14, 2011, at 15:09 , Sam Harwell wrote:
> I believe <if(rest(args))> will evaluate to true if args has more than one
> item.
>
> Sam
>
> -----Original Message-----
> From: antlr-interest-bounces at antlr.org
> [mailto:antlr-interest-bounces at antlr.org] On Behalf Of Bill Andersen
> Sent: Wednesday, September 14, 2011 1:26 PM
> To: antlr-interest
> Subject: [antlr-interest] Need quick ANTLR/ST3 hack
>
> Folks
>
> I want to write a template containing a conditional expansion for a
> multi-valued attribute that does one thing if the attribute is singleton and
> another if there are more than 1 element
>
> For example, in an ANTLR grammar with ST output
>
> rule
> : FOO (bars+=bar)+ -> foo(args={$bars})
> ;
>
> where the template looks like
>
> foo(args) ::= <<
> <if(???)>
> something
> <else>
> something else
> <endif>
>>>
>
> I want some expression for ??? to test for args being singleton.
>
> Is this possible in ST3? Else I imagine I could write:
>
> rule
> : FOO (bars+=bar)+ -> foo(args={$bars},singleton={$bars.size() == 1})
> ;
>
> and
>
> foo(args,singleton) ::= <<
> <if(singleton)>
> something with args
> <else>
> something else with args
> <endif>
>>>
>
> ... but I would really rather not.
>
> List: http://www.antlr.org/mailman/listinfo/antlr-interest
> Unsubscribe:
> http://www.antlr.org/mailman/options/antlr-interest/your-email-address
>
More information about the antlr-interest
mailing list