internal static Step.Interpreter.Step Sequence(params object[] steps) { Step.Interpreter.Step next = null; for (var i = steps.Length - 1; i >= 0; i--) { var step = steps[i]; switch (step) { case string[] tokens: next = new EmitStep(tokens, next); break; case object[] call: next = new Call(call[0], call.Skip(1).ToArray(), next); break; default: throw new ArgumentException($"Unknown step argument in Step.Sequence: {step}"); } } return(next); }
public void Emit1() { var s = new EmitStep(new [] { "this", "is", "a", "test" }, null); Assert.AreEqual("This is a test", s.Expand()); }