示例#1
0
        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);
        }
示例#2
0
        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));
        }
示例#3
0
        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));
        }
示例#4
0
        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));
        }
示例#5
0
 public override IElement Action(ArgumentContainer Args)
 {
     Console.WriteLine($"{String.Join(" ", Args.GetVisitedRestArguments().Value.Select(c => c.Repr()))}");
     return(new Noop());
 }
示例#6
0
 public override IElement Action(ArgumentContainer Args)
 {
     new Print().OnAction(Args.GetVisitedRestArguments().Value);
     return(new Str().Initialize(Console.ReadLine()));
 }