Beispiel #1
0
        private static ExpressionNode ParseSuffix(ContextNode context, IAbstractSyntaxTree lexerNode)
        {
            var opType = lexerNode.Children[1].Type;

            switch (opType)
            {
            case Lexer.TokenType.PlusPlus:
                return(Create(context, ExpressionNode.Parse(context, lexerNode.Children[0]), InternalUnaryOperatorType.PostIncrement));

            case Lexer.TokenType.MinusMinus:
                return(Create(context, ExpressionNode.Parse(context, lexerNode.Children[0]), InternalUnaryOperatorType.PostDecrement));

            case Lexer.TokenType.FunctionArgumentsList:
                return(MethodCallNode.Parse(context, lexerNode));

            case Lexer.TokenType.IndexNode:
                return(ArrayAccessNode.Parse(context, lexerNode));

            default:
                ContractsHelper.AssertUnreachable("Unknown postfix op {0}", opType);
                return(null);   //unreachable
            }
        }