options { LOOKAHEAD=2; } PARSER_BEGIN(Calculatrice) public class Calculatrice { public static void main(String args[]) throws ParseException { Calculatrice parser = new Calculatrice(System.in); System.out.println(parser.expression()); } } PARSER_END(Calculatrice) SKIP : { " " | "\r" | "\t" | "\n" } TOKEN: { < NUMBER: ()+ > | < DIGIT: ["0"-"9"] > } int expression(): { int a,b; } { a=terme() ( "+" b=expression() { a += b; } )* { return a; } } int terme(): { int a,b; } { a=element() ( "*" b=terme() { a *= b; } )* { return a; } } int element(): { Token t; } { t= { return Integer.parseInt(t.toString()); } }