[antlr-interest] Correct way to pass arguments with ANTLR
Carter Cheng
carter_cheng at yahoo.com
Sun Jul 12 07:55:18 PDT 2009
Actually this still isnt working. Is what I have legal ANTLR 3.1.3 code? I am getting the following error-
lpcParser.c: In function ‘void synpred49_lpc_fragment(lpcParser_Ctx_struct*)’:
lpcParser.c:13341: error: ‘e’ was not declared in this scope
Generated by the following predicate block-
// $ANTLR start synpred49_lpc
static void synpred49_lpc_fragment(plpcParser ctx )
{
exp::Exp* s;
#undef RETURN_TYPE_s
#define RETURN_TYPE_s exp::Exp*
s = NULL;
// /home/carter/sorrows-working5/sorrows/trunk/src/compiler/lpc.g:248:31: (s= selector[e] )
// /home/carter/sorrows-working5/sorrows/trunk/src/compiler/lpc.g:248:31: s= selector[e]
{
FOLLOWPUSH(FOLLOW_selector_in_synpred49_lpc1550);
s=selector(ctx, e);
FOLLOWPOP();
if (HASEXCEPTION())
{
goto rulesynpred49_lpcEx;
}
if (HASFAILED())
{
return ;
}
}
I am not sure how best to fix this. Any advice would be appreciated. Thanks in advance,
Carter.
--- On Sat, 7/11/09, Carter Cheng <carter_cheng at yahoo.com> wrote:
> From: Carter Cheng <carter_cheng at yahoo.com>
> Subject: Re: [antlr-interest] Correct way to pass arguments with ANTLR
> To: "Terence Parr" <parrt at cs.usfca.edu>
> Cc: antlr-interest at antlr.org
> Date: Saturday, July 11, 2009, 11:44 AM
>
> Hi Terence,
>
> Thanks for the reply. I managed to work around the problem
> by do this-
>
> unary returns [exp::Exp* e]
> : p=primary { $e = $p.e; }
> (s=selector[e] { $e = $s.e;} )*
> ;
>
> I tried $p as well and it ANTLR doesnt seem to accept it.
>
> Carter.
>
> --- On Sat, 7/11/09, Terence Parr <parrt at cs.usfca.edu>
> wrote:
>
> > From: Terence Parr <parrt at cs.usfca.edu>
> > Subject: Re: [antlr-interest] Correct way to pass
> arguments with ANTLR
> > To: "Carter Cheng" <carter_cheng at yahoo.com>
> > Cc: antlr-interest at antlr.org
> > Date: Saturday, July 11, 2009, 10:43 AM
> > $p?
> > Ter
> > On Jul 11, 2009, at 9:36 AM, Carter Cheng wrote:
> >
> > >
> > > I have been having some difficulties getting a
> rule
> > which looks somewhat as follows to work with ANTLR
> 3.1.3 and
> > the C runtime. I am not sure if I am passing the
> parameter
> > in question correctly. The rule is as follows-
> > >
> > > exp : p=primary (selector[p])*
> > > ;
> > >
> > > The error I am getting is this:
> > >
> > > lpcParser.c: In function ‘void
> > synpred23_lpc_fragment(lpcParser_Ctx_struct*)’:
> > > lpcParser.c:10684: error: ‘p’ was not
> declared in
> > this scope
> > >
> > > Thanks in advance,
> > >
> > > Carter.
> > >
> > >
> > >
> > >
> > > List: http://www.antlr.org/mailman/listinfo/antlr-interest
> > > Unsubscribe: http://www.antlr.org/mailman/options/antlr-interest/your-email-address
> >
> >
>
>
>
>
> 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