Thanks Martijn,

I think I tried to do what you did by overriding lexer::members, and members 
(and rulecatch) but I think I may be doing it wrong.  Once difference though is 
that I'm trying to encapsulate the ANTLR code as much as possible---it's not 
very convenient to write Python inside AntlrWorks, and I've read that the 
Python runtime is subject to change so I want to use the recommended methods.  
So I think this may be more of a Python-specific issue.

-- 
Ben Escoto

----------------- Original message -----------------
From: Martijn Reuvers <[email protected]>
To: Ben <[email protected]>
Date: Mon, 7 Sep 2009 20:46:22 +0200
Hi Ben,

I can't help you with the Python part, but below is a quick & dirty
grammar for Java which more or less does do what you want.

Most likely your errors will come from the lexer, hence I throw the
exception there to show you. So in your python program catching that
should tell you it was wrong. The rest of the grammar fills a list
with text or numbers that are parsed, and prints it in the @after of
begin rule (which is only there so a quick printout was possible).

Martijn


grammar test001;

@lexer::members {

  @Override
        public void reportError(RecognitionException e) {
                throw new RuntimeException(e);
        }

}

@members {

        java.util.List result = new java.util.ArrayList();

        public List getResult() {
                return result;
        }
}

begin
@after {
        System.out.println("RESULT=" + result);
}
        :       expr
        ;


expr
        :       what (DOT expr)?
        ;
        
what
        :       TEXT
                {
                        if($TEXT.text != null) {
                                result.add($TEXT.text);
                        }               
                }
        | NUMBER
                {
                        if($NUMBER.text != null) {
                                result.add($NUMBER.text);
                        }
                }
        ;       

DOT
        :       '.'
        ;

TEXT
        : 'A'..'Z'+
  ;

NUMBER
        :       '0'..'9'+
        ;

WS  :   ( ' '
        | '\t'
        | '\r'
        | '\n'
        ) {$channel=HIDDEN;}
    ;


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 [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/il-antlr-interest?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to