start = EXPR
EXPR = EXPR_M ( [-+] EXPR_M )*
EXPR_M = EXPR_H ( [*%/] EXPR_H )*
EXPR_H = V
EXPR_H = '+' V
EXPR_H = '-' V
EXPR_H = '(' EXPR ')'
https://en.wikipedia.org/wiki/Recursive_descent_parser