コード例 #1
0
ファイル: Interpreter.cs プロジェクト: basp/xil
 private void Execterm(Value.List p)
 {
     foreach (var fac in p.Elements)
     {
         this.Exec(fac);
     }
 }
コード例 #2
0
ファイル: Interpreter.cs プロジェクト: basp/xil
        private void Infra_()
        {
            new Validator("infra")
            .TwoParameters()
            .OneQuote()
            .ListAsSecond()
            .Validate(this.stack);

            var p     = this.Pop <Value.List>();
            var l1    = this.Pop <Value.List>();
            var saved = this.stack.Clone();

            this.stack = new Stack <IValue>(l1.Elements.Reverse().ToArray());
            this.Execterm(p);
            var l2 = new Value.List(this.stack.ToArray());

            this.stack = saved;
            this.Push(l2);
        }
コード例 #3
0
ファイル: Interpreter.cs プロジェクト: basp/xil
        private void Name_()
        {
            new Validator("name")
            .OneParameter()
            .Validate(this.stack);

            var sym  = this.Pop();
            var name = sym switch
            {
                Value.Int x => "int",
                Value.Float x => "float",
                Value.Bool x => "bool",
                Value.Char x => "char",
                Value.String x => "string",
                Value.List x => "list",
                Value.Set x => "set",
                Value.Stream x => "stream",
                Value.Symbol x => x.Value,
                _ => throw new NotSupportedException(),
            };

            this.Push(new Value.String(name));
        }
コード例 #4
0
ファイル: Interpreter.cs プロジェクト: basp/xil
 public void AddUsrdef(string name, Value.List body)
 {
     this.usrdefs[name] = body;
 }