private IExpression ParseExprAdd() { var result = ParseExprMul(); while (true) { if (Accept(TokenType.OpAdd) != null) { result = new ExprBinaryArithmetic(ExprBinKind.Add, result, ParseExprMul()); } else if (Accept(TokenType.OpAssAdd) != null) { result = new ExprBinaryArithmetic(ExprBinKind.AssAdd, result, ParseExprMul()); } else if (Accept(TokenType.OpSub) != null) { result = new ExprBinaryArithmetic(ExprBinKind.Sub, result, ParseExprMul()); } else if (Accept(TokenType.OpAssSub) != null) { result = new ExprBinaryArithmetic(ExprBinKind.AssSub, result, ParseExprMul()); } else { break; } } return(result); }
private IExpression ParseExprMul() { var result = ParseExprPrimary(); /*while (Accept(TokenType.OpMul) != null || Accept(TokenType.OpDiv) != null || Accept(TokenType.OpMod) != null) * result = new ExprBinaryArithmetic(ExprBinKind.Mul, result, ParseExprPrimary());*/ while (true) { if (Accept(TokenType.OpMul) != null) { result = new ExprBinaryArithmetic(ExprBinKind.Mul, result, ParseExprMul()); } else if (Accept(TokenType.OpDiv) != null) { result = new ExprBinaryArithmetic(ExprBinKind.Div, result, ParseExprMul()); } else if (Accept(TokenType.OpAssMul) != null) { result = new ExprBinaryArithmetic(ExprBinKind.AssMul, result, ParseExprMul()); } else if (Accept(TokenType.OpAssDiv) != null) { result = new ExprBinaryArithmetic(ExprBinKind.AssDiv, result, ParseExprMul()); } else if (Accept(TokenType.OpMod) != null) { result = new ExprBinaryArithmetic(ExprBinKind.Mod, result, ParseExprMul()); } else { break; } } return(result); }