public FirstPass(Node treeNode, ScopeManager mgr) { _root = treeNode; _scopeMgr = mgr; var globalClass = new TypeClass("__global"); globalClass.Descriptor = _scopeMgr.AddClass(globalClass.ClassName, globalClass); //setup built in system methods foreach (var m in InternalMethodManager.Methods) { m.FuncInfo.Scope = _scopeMgr.TopScope; _scopeMgr.AddMethod(m.Name.ToLower(), m.FuncInfo, globalClass, null, true); } }
public SecondPass(Node n, ScopeManager mgr) { _mgr = mgr; _root = n; }
private static void RunSemanticPasses(Node root) { var mgr = new ScopeManager(); var first = new FirstPass(root, mgr); var second = new SecondPass(root, mgr); first.Run(); second.Run(); }
private static void CompileAndBuildExecutable() { var scan = new Scanner(); scan.SetSource(File.ReadAllText(FILE_LOCATION), 0); var parser = new Parser(scan); parser.Parse(); var root = parser.SyntaxTreeRoot; var mgr = new ScopeManager(); var first = new FirstPass(root, mgr); var second = new SecondPass(root, mgr); first.Run(); second.Run(); const string asmName = "sample1-test"; var cg = new CodeGenerator(asmName); cg.Generate(root); cg.WriteAssembly(); }