public Exp arith_expr()
{
var e = term();
if (e == null)
return null;
for (; ; )
{
Op op;
switch (lexer.Peek().Type)
{
case TokenType.OP_PLUS: op = Op.Add; break;
case TokenType.OP_MINUS: op = Op.Sub; break;
default: return e;
}
lexer.Get();
var r = term();
if (r == null)
Unexpected();
e = new BinExp(op, e, r, filename, e.Start, r.End);
}
}