示例#1
0
 override public void VisitIncDecEx(IncDecEx x)
 {
     _serializer.StartSerialize(typeof(IncDecEx).Name, SerializeSpan(x.Span),
                                new NodeObj("Inc", x.Inc.ToString()), new NodeObj("Post", x.Post.ToString()));
     base.VisitIncDecEx(x);
     _serializer.EndSerialize();
 }
示例#2
0
            public override void VisitIncDecEx(IncDecEx x)
            {
                VisitSpecificElementProlog();

                SerializeToken(nameof(x.Inc), x.Inc.ToString(), null);
                SerializeToken(nameof(x.Post), x.Post.ToString(), null);

                base.VisitIncDecEx(x);
            }
示例#3
0
        /// <summary>
        /// Initializes a new instance of the <see cref="IncDecExPoint" /> class.
        /// </summary>
        /// <param name="incDecEx">Post/pre increment or decrement expression</param>
        /// <param name="incrementedValue">Program point with increment or decrement expression</param>
        internal IncDecExPoint(IncDecEx incDecEx, ValuePoint incrementedValue)
        {
            IncDecEx         = incDecEx;
            IncrementedValue = incrementedValue;
            IncrementTarget  = incrementedValue as LValuePoint;

            if (IncrementTarget == null)
            {
                throw new NotSupportedException("Given incrementedValue doesn't support incrementation");
            }
        }
示例#4
0
        public override void VisitIncDecEx(IncDecEx x)
        {
            if (x.Post == true)
            {
                VisitElement(x.Variable);
            }

            // ++/--
            ConsumeToken(x.Inc ? Tokens.T_INC : Tokens.T_DEC, x.Inc ? "++" : "--");

            if (x.Post == false)
            {
                VisitElement(x.Variable);
            }
        }
示例#5
0
        public override MemoryEntry IncDecEx(IncDecEx operation, MemoryEntry incrementedValue)
        {
            var inc = operation.Inc ? 1 : -1;

            var values = new List <Value>();

            foreach (var incremented in incrementedValue.PossibleValues)
            {
                var integer = incremented as IntegerValue;
                if (integer == null)
                {
                    return(new MemoryEntry(OutSet.AnyValue));
                }

                var result = OutSet.CreateInt(integer.Value + inc);
                values.Add(result);
            }

            return(new MemoryEntry(values));
        }
示例#6
0
 /// <summary>
 /// Visit variable that is incremented (or decremented).
 /// </summary>
 /// <param name="x"></param>
 virtual public void VisitIncDecEx(IncDecEx x)
 {
     VisitElement(x.Variable);
 }
示例#7
0
        public override void VisitIncDecEx(IncDecEx x)
        {
            var variable = CreateRValue(x.Variable);

            Result(new IncDecExPoint(x, variable));
        }
示例#8
0
 /// <inheritdoc />
 public override void VisitIncDecEx(IncDecEx x)
 {
     RValueResult(x);
 }
示例#9
0
 /// <summary>
 /// Process increment or decrement operation, in both prefix and postfix form
 /// </summary>
 /// <remarks>This method doesn't provide assigning into incremented LValue</remarks>
 /// <param name="operation">Increment or decrement operation</param>
 /// <param name="incrementedValue">Value that has to be incremented/decremented</param>
 /// <returns>Result of incremented or decremented</returns>
 public abstract MemoryEntry IncDecEx(IncDecEx operation, MemoryEntry incrementedValue);
示例#10
0
 public override void VisitIncDecEx(IncDecEx x)
 {
     Console.WriteLine("INCDEX");
     base.VisitIncDecEx(x);
 }
示例#11
0
 /// <summary>
 /// Visits IncDecEx.
 /// </summary>
 /// <param name="x">IncDecEx</param>
 public override void VisitIncDecEx(IncDecEx x)
 {
     this.VisitElement(x);
 }
示例#12
0
        /// <inheritdoc />
        override public void VisitIncDecEx(IncDecEx x)
        {
            VisitElement(x.Variable);

            result = new IncDecEx(x.Position, x.Inc, x.Post, (VariableUse)result);
        }