public override void Parse(Parser parser) { int parentLevel = 0; while (Token.TokenType == TokenType.Parenthesis) { parentLevel++; Token = parser.Lexer.ReadNext(); } while ((Token.TokenType == TokenType.EndParenthesis) && (parentLevel > 1)) { parentLevel--; Token = parser.Lexer.ReadNext(); } switch (Token.TokenType) { case TokenType.Number: Left = new NumberNode(Token); break; case TokenType.Operator: Left = new OperatorNode(Token); break; case TokenType.Identifier: Left = new IdentifierNode(Token); break; case TokenType.String: Left = new StringNode(Token); break; case TokenType.EndParenthesis: Token = new NullToken(); return; } var token = parser.ReadNext(); Right = new ExpressionNode(token); Right.Parse(parser); }
public override void Parse(Parser parser) { Token = new NullToken(); Left = new ExpressionNode(this.Token); Left.Parse(parser); }