public Node ExprAdd() { var node = ExprMul(); while (CurrentToken == TokenCategory.PLUS || CurrentToken == TokenCategory.MINUS) { if (CurrentToken == TokenCategory.MINUS) { var node_minus = new Minus(); node_minus.AnchorToken = Expect(TokenCategory.MINUS); node_minus.Add(node); node_minus.Add(ExprMul()); node = node_minus; } else { var node_plus = new Plus(); node_plus.AnchorToken = Expect(TokenCategory.PLUS); node_plus.Add(node); node_plus.Add(ExprMul()); node = node_plus; } } return(node); }