Пример #1
0
 public static IList <Inferred> Infer(Module module, Node node, Scope scope, bool global)
 {
     return(new Engine(module, global).Infer(node, scope));
 }
Пример #2
0
 public static IList <FunctionInfo> InferMethods(Module module, SymbolId name, Scope scope)
 {
     return(new Engine(module, false).InferMethods(name, scope));
 }
Пример #3
0
 public static IList <Inferred> Infer(Module module, Node node, Scope scope)
 {
     return(Infer(module, node, scope, true));
 }
Пример #4
0
 public static Engine Create(Module module, bool global)
 {
     return(new Engine(module, global));
 }
Пример #5
0
 private Engine(Module module, bool global)
 {
     this.module = module;
     this.global = global;
 }
Пример #6
0
        public void Infer(Module module)
        {
            Engine e = Engine.Create(module, false);

            IList<Inferred> left = e.Infer(fe.Target, anchor);

            if (left != null)
            {
                foreach (Inferred inf in left)
                {
                    InferredClass ic = inf as InferredClass;
                    if (ic != null)
                    {
                        ic.Define(fe.Name, new IndirectDefinition(rhs, anchor));
                    }
                }
            }
        }
Пример #7
0
        private Module DoAnalyze(Modules modules, string name, Statement root)
        {
            GlobalSuite global = new GlobalSuite(root);
            module = new Module(modules, name, global, scopes);

            ModuleScope modsc;
            module.ModuleScope = modsc = new ModuleScope(module, null, global);

            PushScope(modsc);

            root.Walk(this);

            foreach (FieldAssignment fer in this.fields)
            {
                fer.Infer(module);
            }
            return module;
        }