コード例 #1
0
        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);
        }
コード例 #2
0
 public override void Parse(Parser parser)
 {
     Token = new NullToken();
     Left  = new ExpressionNode(this.Token);
     Left.Parse(parser);
 }