public override IElement Action(ArgumentContainer Args) { var args = Args.GetVisitedRestArguments(); InnerScope.NewDynamicScope(); InnerScope.AddNamesToDynamicScope(OnEnterBlock(args.Value)); var bodyResult = Interpreter.VisitAndGetResult(Body); InnerScope.PopDynamicScope(); return(bodyResult); }
public override IElement Action(ArgumentContainer Args) { var args = Args.GetVisitedRestArguments().Value; var output = new List <IElement>(); foreach (var item in args) { if (item is IManyData many) { output.AddRange(many.GetInnerValues()); } else { output.Add(item); } } return(new Collection().Initialize(output)); }
public override IElement Action(ArgumentContainer Args) { var args = Args.GetVisitedRestArguments(); double sum = 0; foreach (var p in args.Value) { if (p is Number num) { sum += num.Value; } else { throw new TypeException($"'+' only accepts {nameof(Number)}, not {p.GetType().Name}"); } } return(new Number().Initialize(sum)); }
public override IElement Action(ArgumentContainer Args) { var first = Args.GetVisitedArgument("first"); var rest = Args.GetVisitedRestArguments().Value; if (first == null || rest.Count == 0) { return(new TrueFalse().Initialize(true)); } foreach (var p in rest) { if (!p.Compare(first)) { return(new TrueFalse().Initialize(false)); } } return(new TrueFalse().Initialize(true)); }
public override IElement Action(ArgumentContainer Args) { Console.WriteLine($"{String.Join(" ", Args.GetVisitedRestArguments().Value.Select(c => c.Repr()))}"); return(new Noop()); }
public override IElement Action(ArgumentContainer Args) { new Print().OnAction(Args.GetVisitedRestArguments().Value); return(new Str().Initialize(Console.ReadLine())); }