[antlr-interest] Python target @members problem

Henrique hjrnunes at student.dei.uc.pt
Fri Sep 19 13:39:16 PDT 2008


Hi everyone!Thanks Matt and Ben! I got it now! I've now finished my parser
and I can move on! Thank you!
Cheers!

Henrique Nunes


On Fri, Sep 19, 2008 at 9:38 PM, Henrique <hjrnunes at gmail.com> wrote:

> Hi everyone!Thanks Matt and Ben! I got it now! I've now finished my parser
> and I can move on! Thank you!
> Cheers!
>
> Henrique Nunes
>
>
>
> On Fri, Sep 19, 2008 at 7:57 PM, Benjamin Niemann <pink at odahoda.de> wrote:
>
>> Hi Henrique,
>>
>> On Thu, Sep 18, 2008 at 4:35 AM, Henrique <hjrnunes at student.dei.uc.pt>
>> wrote:
>> > I'm building a parser that should generate python code. The problem is
>> that
>> > the variables that I define in the @members section are not recognized
>> in
>> > the rules themselves.
>> > For instance, I have this:
>> > grammar cfdg_py;
>> > options{
>> > language=Python;
>> > }
>> > ...
>> > @members {
>> > names=[]
>> > rule_name = []
>> > }
>> > ...
>> > rule
>> > @init{
>> > rule_name=[]
>> > print "NEW RULE"
>> > }
>> > @after{
>> > names.append(rule_name)
>> > print "END RULE: " + str(names)
>> > }
>> > : RULE USER_STRING (USER_RATIONAL)? LEFTBRACKET buncha_replacements?
>> > RIGHTBRACKET {rule_name.append($USER_STRING.text);}
>> > ;
>> > I get a NameError: global name 'names' is not defined in the first line
>> of
>> > the @after section.
>> > How do I make sure the variables are defined?
>> > I've tried inserting the semicolons as advised in the wiki but it didn't
>> > work. The antlr python documentation is really scarce so I can't figure
>> it
>> > out.
>> > I'm attaching the whole grammar with this. Using ANTLR 3.1 on Windows.
>>
>> Things are a little bit different in Python than for Java. For
>> instance attributes you have to use @init, e.g.
>>
>> @init {
>> self.name = []
>> self.rule_name = []
>> }
>>
>> And when referencing those, you have to use self.name etc.
>> @members can be used for class attributes and member functions.
>>
>> -Ben
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.antlr.org/pipermail/antlr-interest/attachments/20080919/00fdd806/attachment.html 


More information about the antlr-interest mailing list