grammar Formula;


formula : expression ;

expression : firstExpression ( secondExpression  )* ;

firstExpression : numberExpression ( thirdExpression )*;

numberExpression : NUMBER ;


NUMBER : DIGIT+ (DOT DIGIT+)? ;

DIGIT : [0-9] ;

DOT : '.' ;


thirdExpression : ( MUL | DIV | MOD ) numberExpression ;

secondExpression : ( PLUS | MINUS ) firstExpression ;


PLUS : '+' ;

MINUS : '-' ;

MUL : '*' ;

DIV : '/' ;

MOD : '%' ;


WS : [ \t\r\n] -> skip ;