示例#1
0
        public static void Main()
        {
            //TaCodeTest();
            //ASTTest();

            //Test Moving declarations
            //var Test = new DeclarationTest();
            //Test.DeclarationOptimizationTest();

            //Test subexpression tree
            //var sTest = new SubexprTest();
            //sTest.SubexpressionOptimizationTest();

            //APC
            //CFGReducibility_DominatorTree_PrettyPrinter_Demonstration();

            string fileName = @"..\..\sample.txt";

            astRoot = AST(fileName);
            if (astRoot == null)
            {
                return;
            }

            var tacodeVisitor = new TACodeVisitor();

            astRoot.Visit(tacodeVisitor);
            tacodeInstance = tacodeVisitor.Code;

            var allOpt = new AllOptimizations();

            tacodeInstance = allOpt.ApplyAllOptimizations(tacodeInstance);

            TAcode2ILcodeTranslator trans = new TAcode2ILcodeTranslator();

            Console.WriteLine(tacodeInstance.ToString());

            trans.Translate(tacodeInstance);
            var temp = trans.PrintCommands();

            trans.RunProgram();
        }
        public void Run()
        {
            if (_runTask != null && _runTask.Status == TaskStatus.Running)
            {
                AlreadyRunningErrored(null, null);
                return;
            }

            RuntimeStarted(null, null);

            ts = new CancellationTokenSource();

            _runTask = Task.Factory.StartNew(() =>
            {
                Thread t = Thread.CurrentThread;
                using (ts.Token.Register(t.Abort))
                {
                    _ilProgram.RunProgram();
                }
            }, ts.Token);
        }