PARSER_BEGIN(calc)
public class calc {
public static void main(String args[]) throws ParseException {
int result;
calc parser = new calc(System.in);
parser.complete_expression();
}
}
PARSER_END(calc)
SKIP :
{
" "
}
TOKEN :
{
< INTEGER_LITERAL: (["0"-"9"])+ >
| < PLUS: "+" >
| < MINUS: "-" >
| < MULTIPLY: "*">
| < DIVIDE: "/" >
| < LPAREN: "(" >
| < RPAREN: ")" >
| < EOL: "\n" >
}
void complete_expression():
{ }
{
expression() <EOL> { }
}
void expression():
{ }
{
term() ((<PLUS> | <MINUS>) term())*
}
void term():
{ }
{
factor() ( (<MULTIPLY> | <DIVIDE>) factor() )*
}
void factor():
{ }
{
<MINUS> factor()
| <INTEGER_LITERAL>
| <LPAREN> expression() <RPAREN>
}