Steve Ebersole wrote: > Is there a syntax to "explode" a subrule result (sorry don't know a > better term). > > I have a rule: > > sortSpecification > : sortKey collationSpecification? orderingSpecification? > -> ^( SORT_SPEC sortKey collationSpecification? > orderingSpecification? ) > ; > > The result of the sortKey subrule could be a Tree of type VECTOR_EXPR > (its a "row value constructor" for those familiar with SQL). > > In terms of eventual output, this rule translates as "(sort_key1, > sort_key2) asc" where "sort_key1, sort_key2)" is the VECTOR_EXPR. > > Instead what I need to have happen is "sort_key1 asc, sort_key2 asc". > > I started down the path of trying an @after in the sortSpecification and > calling out to some java code to mutate the tree manually. But I'd > prefer to keep this in the grammar if at all possible. > > > I would need to see your sortKey rule but you can do things like this:
x : a+=something x? y? ->^(NODE $a $x? $y)+ That will probably get you on track. Also, you could reorder the tree and more easily pick up the order: -> ^( SORT_SPEC collationSpecification? orderingSpecification? sortKey) Assuming the first two optional sequences have a root node. Then you could assume that the elements in sortKey have whatever you have established in the ordering. If what you are trying to do is parse a SQL statement you could try inputting this into my online SQL parser and looking at the tree output: http://www.temporal-wave.com Jim 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 -~----------~----~----~----~------~----~------~--~---