コード例 #1
0
 //marshall version
 public ModuleScope(GlobalScope globs)
     : base(globs)
 {
 }
コード例 #2
0
        void InitBuiltins(GlobalScope globs)
        {
            globs.Define(Int);
            globs.Define(Float);
            globs.Define(Bool);
            globs.Define(String);
            globs.Define(Void);
            globs.Define(Any);
            globs.Define(ClassType);

            {
                var fn = new FuncSymbolNative("suspend", Type("void"),
                                              delegate(VM.Frame frm, FuncArgsInfo args_info, ref BHS status)
                {
                    return(CoroutineSuspend.Instance);
                }
                                              );
                globs.Define(fn);
            }

            {
                var fn = new FuncSymbolNative("yield", Type("void"),
                                              delegate(VM.Frame frm, FuncArgsInfo args_info, ref BHS status)
                {
                    return(CoroutinePool.New <CoroutineYield>(frm.vm));
                }
                                              );
                globs.Define(fn);
            }

            //TODO: this one is controversary, it's defined for BC for now
            {
                var fn = new FuncSymbolNative("fail", Type("void"),
                                              delegate(VM.Frame frm, FuncArgsInfo args_info, ref BHS status)
                {
                    status = BHS.FAILURE;
                    return(null);
                }
                                              );
                globs.Define(fn);
            }

            {
                var fn = new FuncSymbolNative("start", Type("int"),
                                              delegate(VM.Frame frm, FuncArgsInfo args_info, ref BHS status)
                {
                    var val_ptr = frm.stack.Pop();
                    int id      = frm.vm.Start((VM.FuncPtr)val_ptr._obj, frm).id;
                    val_ptr.Release();
                    frm.stack.Push(Val.NewNum(frm.vm, id));
                    return(null);
                },
                                              new FuncArgSymbol("p", TypeFunc("void"))
                                              );
                globs.Define(fn);
            }

            {
                var fn = new FuncSymbolNative("stop", Type("void"),
                                              delegate(VM.Frame frm, FuncArgsInfo args_info, ref BHS status)
                {
                    var fid = (int)frm.stack.PopRelease().num;
                    frm.vm.Stop(fid);
                    return(null);
                },
                                              new FuncArgSymbol("fid", Type("int"))
                                              );
                globs.Define(fn);
            }

            {
                var fn = new FuncSymbolNative("type", Type("Type"),
                                              delegate(VM.Frame frm, FuncArgsInfo args_info, ref BHS status)
                {
                    var o = frm.stack.Pop();
                    frm.stack.Push(Val.NewObj(frm.vm, o.type, ClassType));
                    o.Release();
                    return(null);
                },
                                              new FuncArgSymbol("o", Type("any"))
                                              );
                globs.Define(fn);
            }
        }
コード例 #3
0
 public ModuleScope(string module_name, GlobalScope globs)
     : base(globs)
 {
     this.module_name = module_name;
 }