예제 #1
0
        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);
        }
예제 #2
0
        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();
        }