Ejemplo n.º 1
0
        public override void Execute(Context context)
        {
            var lhs = context.Stack.Pop();
            var rhs = context.Stack.Pop();

            switch (lhs.Type)
            {
            case LoLa.Runtime.Type.Array:
            {
                var result = new LoLa.Runtime.Array();
                foreach (var val in lhs.ToArray())
                {
                    result.Add(val);
                }
                foreach (var val in rhs.ToArray())
                {
                    result.Add(val);
                }
                context.Stack.Push(result);
                break;
            }

            case LoLa.Runtime.Type.Number:
                context.Stack.Push(lhs.ToNumber() + rhs.ToNumber());
                break;

            case LoLa.Runtime.Type.String:
                context.Stack.Push(lhs.ToString() + rhs.ToString());
                break;

            default:
                throw new NotSupportedException($"Addition for {lhs.Type} not supported!");
            }
        }
Ejemplo n.º 2
0
        public override void Execute(Context context)
        {
            var array = new LoLa.Runtime.Array();

            for (int i = 0; i < array.Count; i++)
            {
                array[i] = context.Stack.Pop();
            }
            context.Stack.Push(array);
        }