Bike.Interpreter.Interpreter.Walk C# (CSharp) Метод

Walk() публичный Метод

public Walk ( UnaryExpression node ) : object
node UnaryExpression
Результат object
        public override object Walk(UnaryExpression node)
        {
            var value = node.Expression.Accept(this);
            if (node.Postfix != TokenType.None)
            {
                switch (node.Postfix)
                {
                    case TokenType.DoublePlus:
                        {
                            var id = node.Expression.As<Identifier>("Identifier").Value;
                            Context.CurrentFrame.Assign(id, OpDoublePlus(value));
                            break;
                        }
                    case TokenType.DoubleMinus:
                        {
                            var id = node.Expression.As<Identifier>("Identifier").Value;
                            Context.CurrentFrame.Assign(id, OpDoubleMinus(value));
                            break;
                        }
                    default:
                        throw ErrorFactory.CreateInvalidProgramError("Invalid unary postfix");
                }
            }
            if (node.Prefix != TokenType.None)
            {
                switch(node.Prefix)
                {
                    case TokenType.DoublePlus:
                        {
                            var id = node.Expression.As<Identifier>("Identifier").Value;
                            value = OpDoublePlus(value);
                            Context.CurrentFrame.Assign(id, value);
                            break;
                        }
                    case TokenType.DoubleMinus:
                        {
                            var id = node.Expression.As<Identifier>("Identifier").Value;
                            value = OpDoubleMinus(value);
                            Context.CurrentFrame.Assign(id, value);
                            break;
                        }
                    case TokenType.Plus:
                        value = OpPlus(value);
                        break;
                    case TokenType.Minus:
                        value = OpMinus(value);
                        break;
                    case TokenType.Not:
                        value = OpNot(value);
                        break;
                    default:
                        throw ErrorFactory.CreateInvalidProgramError("Invalid unary prefix");
                }
            }
            return value;
        }

Same methods

Interpreter::Walk ( AdditiveExpression node ) : object
Interpreter::Walk ( AndExpression node ) : object
Interpreter::Walk ( ArrayLiteral node ) : object
Interpreter::Walk ( BreakStatement node ) : object
Interpreter::Walk ( CallExpression node ) : object
Interpreter::Walk ( CaseClause node ) : object
Interpreter::Walk ( ConditionalExpression node ) : object
Interpreter::Walk ( EmptyStatement node ) : object
Interpreter::Walk ( EqualityExpression node ) : object
Interpreter::Walk ( ExecExpression node ) : object
Interpreter::Walk ( Expression node ) : object
Interpreter::Walk ( ExpressionStatement node ) : object
Interpreter::Walk ( ForInStatement node ) : object
Interpreter::Walk ( FunctionDeclaration node ) : object
Interpreter::Walk ( FunctionExpression node ) : object
Interpreter::Walk ( Identifier node ) : object
Interpreter::Walk ( IfStatement node ) : object
Interpreter::Walk ( IndexSuffix node ) : object
Interpreter::Walk ( LeftAssignmentExpression node ) : object
Interpreter::Walk ( LoadStatement node ) : object
Interpreter::Walk ( MemberExpression node ) : object
Interpreter::Walk ( MultiplicativeExpression node ) : object
Interpreter::Walk ( NextStatement node ) : object
Interpreter::Walk ( ObjectLiteral node ) : object
Interpreter::Walk ( OrExpression node ) : object
Interpreter::Walk ( PrimitiveLiteral node ) : object
Interpreter::Walk ( RelationalExpression node ) : object
Interpreter::Walk ( ReturnStatement node ) : object
Interpreter::Walk ( SelfExpression node ) : object
Interpreter::Walk ( SourceElements node ) : object
Interpreter::Walk ( SourceUnitTree node ) : object
Interpreter::Walk ( StatementBlock node ) : object
Interpreter::Walk ( SwitchStatement node ) : object
Interpreter::Walk ( ThrowStatement node ) : object
Interpreter::Walk ( TryStatement node ) : object
Interpreter::Walk ( TypeDescriptor node ) : object
Interpreter::Walk ( TypeDescriptorSuffix node ) : object
Interpreter::Walk ( VariableDeclaration node ) : object
Interpreter::Walk ( VariableStatement node ) : object
Interpreter::Walk ( WhileStatement node ) : object