<< #include ATOKPTR_H // define smart pointers class ANTLRToken : public ANTLRCommonToken { public: int muck; public: ANTLRToken(ANTLRTokenType t, ANTLRChar *s) : ANTLRCommonToken(t,s) { muck = atoi(s); } ANTLRToken() {;} ANTLRChar *getText() { return ""; } void setText(ANTLRChar *s) { ; } virtual ANTLRAbstractToken *makeToken(ANTLRTokenType t, char *s, int line) { ANTLRToken *tk = new ANTLRToken(t,s); tk->muck = atoi(s); return tk; } }; #include "DLGLexer.h" #include "PBlackBox.h" int main() { ParserBlackBox p(stdin); p.parser()->calc(); return 0; } >> #token "[\ \t\n]+" <> class Expr { calc: <> e>[r] <> ; e > [int r] : <> e2>[$r] ( "\+" e2>[b] <<$r+=b;>> )* ; e2 > [int r] : NUMBER <<$r=mytoken($1)->muck;>> ( "\*" NUMBER <<$r*=mytoken($2)->muck;>> )* ; } #token NUMBER "[0-9]+"