private void ConductTest(ParseTree tree, Node expected) { Console.Write("\ntree:\n" + tree.ToString()); Console.Write("\nexpected:\n" + expected.ToString()); ProgramNode result = builder.BuildAST <Symbol>(tree); Console.Write("\nresult:\n" + result.ToString() + "\n"); Assert.AreEqual(expected, result); }
static void Main(string[] args) { var rootNode = getRoot(System.IO.File.ReadAllText("test.t"), new TSharpCompiler.TuringGrammarBroken()); if (rootNode == null) Console.WriteLine("Parsing failed"); else { var file = new StreamWriter("parseTree.txt"); dispTree(rootNode, 0, file); file.Close(); //Console.WriteLine(Compile(rootNode)); //CodeGen codeGen = new CodeGen(rootNode, "test.exe"); ASTBuilder builder = new ASTBuilder(); var program = builder.BuildAST(rootNode) as AST.UnitNode; program.CreateProgram("test.exe"); Console.WriteLine("done"); } /* This can be interesting, it allows to embed the assembly within the existing assembly, useful for an editor DynamicMethod meth = new DynamicMethod("", null, null); ILGenerator il = meth.GetILGenerator(); il.EmitWriteLine("Hello, World!"); il.Emit(OpCodes.Ret); Test1 t1 = (Test1)meth.CreateDelegate(typeof(Test1)); t1(); */ Console.ReadKey(); }