Beispiel #1
0
 public static ArithmeticEvaluationStatement CreatePrefixIncrement(IncrementOperator op,
                                                                   EvaluationStatement operand, StatementInfo info, IStatement parentStatement = null)
 {
     return(new ArithmeticEvaluationStatement(true, null, op, operand, info)
     {
         ParentStatement = parentStatement
     });
 }
Beispiel #2
0
        private IExpression ParseUnaryExpression()
        {
            if (this.TryParse(TokenType.Operator, "+", "-", "!"))
            {
                Token oper = this.lexer.NextToken();

                IExpression unaryExpression = this.ParseUnaryExpression();

                if (oper.Value == "!")
                {
                    return(new NotExpression(unaryExpression));
                }

                ArithmeticOperator op = oper.Value == "+" ? ArithmeticOperator.Plus : ArithmeticOperator.Minus;

                return(new ArithmeticUnaryExpression(op, unaryExpression));
            }

            if (this.TryParse(TokenType.Operator, "++", "--"))
            {
                Token oper = this.lexer.NextToken();

                IExpression expression = this.ParseTermExpression();

                IncrementOperator op = oper.Value == "++" ? IncrementOperator.PreIncrement : IncrementOperator.PreDecrement;

                return(new IncrementExpression(expression, op));
            }

            if (this.TryParse(TokenType.Operator, "<-", "@"))
            {
                this.lexer.NextToken();

                IExpression expression = this.ParseTermExpression();

                return(new GetValueExpression(expression));
            }

            IExpression termexpr = this.ParseTermExpression();

            if (this.TryParse(TokenType.Operator, "++", "--"))
            {
                Token oper = this.lexer.NextToken();

                IncrementOperator op = oper.Value == "++" ? IncrementOperator.PostIncrement : IncrementOperator.PostDecrement;

                return(new IncrementExpression(termexpr, op));
            }

            return(termexpr);
        }
Beispiel #3
0
 public IncrementExpression(IExpression expression, IncrementOperator oper)
     : base(expression)
 {
     this.oper = oper;
 }
 public IncrementExpression(IExpression expression, IncrementOperator oper)
     : base(expression)
 {
     this.oper = oper;
 }