public void PresentationConstant()
        {
            var TAC = GenerateTAC(
                @"
{
a = b;
c = 0;
d = c + 1;
e = d * b;
a = x - y;
k = c + a;
}
");
            var expectedTac = GenerateTAC(
                @"
{
a = b;
c = 0;
d = 0 + 1;
e = d * b;
a = x - y;
k = 0 + a;
}
");
            var cAndC = new CopyAndConstantsOptimizer(TAC);

            cAndC.Run();
            Assert.AreEqual(expectedTac.ToString(), cAndC.TAC.ToString());
        }
        public void Test1()
        {
            var TAC = GenerateTAC(
                @"
{
a = 1;
b = a;
c = 3;
c = b;
z = a;
}
");
            var expectedTac = GenerateTAC(
                @"
{
a = 1;
b = 1;
c = 3;
c = 1;
z = 1;
}
");
            var cAndC = new CopyAndConstantsOptimizer(TAC);

            cAndC.Run();
            Assert.AreEqual(cAndC.TAC.ToString(), expectedTac.ToString());
        }
        public void Test2()
        {
            var TAC = GenerateTAC(
                @"
{
a = 1;
b = 2;
c = a + b;
d = 3 + b;
e = 1 / 2;
f = e;
}
");
            var expectedTac = GenerateTAC(
                @"
{
a = 1;
b = 2;
c = 1 + 2;
d = 3 + 2;
e = 1 / 2;
f = e;
}
");
            var cAndC = new CopyAndConstantsOptimizer(TAC);

            cAndC.Run();
            Assert.AreEqual(cAndC.TAC.ToString(), expectedTac.ToString());
        }
Beispiel #4
0
        static void TacConstantsAndCopies(Parser parser) // 14.04
        {
            var pf = new FillParentVisitor();

            parser.root.Visit(pf);
            var taco = new ThreeAddressCodeVisitor();

            parser.root.Visit(taco);

            var tacCode = taco.TACodeContainer;

            Console.WriteLine("Tac code before: \n");
            Console.WriteLine(tacCode.ToString());
            var cc = new CopyAndConstantsOptimizer(tacCode);

            Console.WriteLine("Tac code after: \n");
            Console.WriteLine(tacCode.ToString());
        }