[antlr-interest] Combining += with returns and actions

Jim Idle jimi at temporal-wave.com
Sat Aug 11 12:08:39 PDT 2007


Try

 

mr1=memberReference {q.AddSelect($mr1.Reference) } (COMMA
m2=memberReference {q.AddSelect($mr2.Reference) })*

 

 

From: antlr-interest-bounces at antlr.org
[mailto:antlr-interest-bounces at antlr.org] On Behalf Of Ayende Rahien
Sent: Friday, August 10, 2007 8:04 PM
To: antlr-interest at antlr.org
Subject: [antlr-interest] Combining += with returns and actions

 

I have run into a snag when building a dialect with ANTLR 3, I have the
following:

selectClause[Query q]
    :    SELECT 
        mr+=memberReference (COMMA mr+=memberReference)*
        {
            q.AddSelection ($mr);
        }
    ;

Where memberReference is defined as:

memberReference returns[MemberReferenceExpression Reference]
    :    ids+=IDENTIFIER (DOT ids+=IDENTIFIER)? 
    {
        $Reference = new MemberReferenceExpression(); 
        foreach(IToken token in $ids)
        {
            $Reference.AddReference(token.Text);
        }
        
    };


My problem is that I would like to get a list of
MemberReferenceExpression, but what I end up getting is a list of tree. 
The problem is here:
PushFollow(FOLLOW_memberReference_in_selectClause76);
mr = memberReference();
followingStackPointer_--;

adaptor.AddChild(root_0, mr.Tree);
if (list_mr == null) list_mr = new ArrayList(); 
list_mr.Add(mr.Tree); // <-- I want to get mr.Reference, not mr.Tree

Any idea how to solve that?

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.antlr.org/pipermail/antlr-interest/attachments/20070811/00c9bf68/attachment.html 


More information about the antlr-interest mailing list