finished basic account add
[Bookkeeping.git] / grammar / expr.g
blob284bf094479e0f5ccdd5d860258c51d3fa5f0f5b
4 /* PARSER 
5  */
6 class ExprParser extends Parser;
8 expr returns [int value=0]
9 {int x;}
10     :   value=mexpr
11         ( PLUS x=mexpr  {value += x;}
12         | MINUS x=mexpr {value -= x;} 
13         )*
14     ;
16 mexpr returns [int value=0]
17 {int x;}
18     :   value=atom ( STAR x=atom {value *= x;} )*
19     ;
21 atom returns [int value=0]
22     :   i:INT {value=Integer.parseInt(i.getText());}
23     |   LPAREN value=expr RPAREN
24     ;    
28 /* LEXER 
29  */
30 class ExprLexer extends Lexer;
31 options {
32     k=2; // needed for newline junk
33     charVocabulary='\u0000'..'\u007F'; // allow ascii
36 LPAREN: '(' ;
37 RPAREN: ')' ;
38 PLUS  : '+' ;
39 MINUS : '-' ;
40 STAR  : '*' ;
41 INT   : ('0'..'9')+ ;
42 WS    : ( ' '
43         | '\r' '\n'
44         | '\n'
45         | '\t'
46         )
47         {$setType(Token.SKIP);}
48       ;