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!"); } }
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); }