[antlr-interest] "explosion" rewrite

Steve Ebersole steve at hibernate.org
Fri May 1 13:14:34 PDT 2009


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.


-- 
Steve Ebersole <steve at hibernate.org>
Hibernate.org



More information about the antlr-interest mailing list