.blank = [" \t\f\b\v\r\n"]
.number :: Int = ['0'..'9']+
expr :: Expr
= term ::= term
| Add(expr1,term1) ::= expr '+' term
| Sub(expr,term) ::= expr '-' term ;
term
= $1 ::= factor
| Mul($1,$3) ::= term '*' factor
| Div($1,$3) ::= term '/' factor ;
factor
= Number($1) ::= number
| $2 ::= '(' expr ')'
%data Expr
= Add(Expr, Expr)
| Sub(Expr, Expr)
| Mul(Expr, Expr)
| Div(Expr, Expr)
| Number(Int)