//      <expr>          ::= <term> (('+' | '-') <term>)*
//      <term>          ::= <factor> (('*' | '/') <factor>)*
//      <factor>        ::= ('+' | '-')? <primary>
//      <primary>       ::= <number> | <var> | '(' <expr> ')'