[antlr-interest] a newbie question

william yuan ordinarybackstreetmoldywilliam at gmail.com
Wed Mar 25 08:23:48 PDT 2009


Hi ALL,
I have met another problem when i am tring to understand the antlr tree. 
here is my example
Cozily.g

grammar Cozily;
options {
    output=AST;
    ASTLabelType=CommonTree; // type of $stat.tree ref etc...
}

expr:    INT '+'^ INT
 | INT '-'^ INT
 |  INT '*'^ INT
 |   INT '%'^ INT
    ;
INT :   '0'..'9'+ ;
WS  :   (' '|'\t'|'\n'|'\r')+ {skip();} ;
// END:tokens

and the tree here CozilyTree.g

tree grammar CozilyTree;

options {
    tokenVocab=Expr;
    ASTLabelType=CommonTree;
}
prog:   expr{System.out.println($expr.value);} ;

expr returns [int value]
    :   ^('+' a=INT b=INT) {$value = 
Integer.parseInt($a.text)+Integer.parseInt($a.text);}
    |   ^('-' a=INT b=INT) {$value = 
Integer.parseInt($a.text)-Integer.parseInt($a.text);;}
    |   ^('*' a=INT b=INT) {$value = 
Integer.parseInt($a.text)*Integer.parseInt($a.text);;}
    | ^('%' a=INT b=INT) {$value = 
Integer.parseInt($a.text)/Integer.parseInt($a.text);;}
    ;

// END:expr

I wanna make a calculator, only to get evaluate the expressions like '1+1' 
or '2*3' and of this sort,
but output is here
.....\CozilyTree.g: node from line 1:1 no viable alternative at input '+' 
when i inputted 1+1

so what is the root cause ?

Thanks  in adv .

Best Regards,
Bill Yuan



More information about the antlr-interest mailing list