public void InsideIf() { var TAC = GenerateTAC( @" { if a > b { x = 0 + x; x = x - x; x = x * 1; } } "); var AIOptimizer = new AlgebraicIdentitiesOptimizer(TAC); AIOptimizer.Run(); var expected = new List <string>() { "#t0 = a > b", "if #t0 goto #L0", "goto #L1", "#L0", "x = x", "x = 0", "x = x", "#L1" }; var actual = AIOptimizer.TAC.Instructions.Select(instruction => instruction.ToString().Trim()); CollectionAssert.AreEqual(expected, actual); }
public void SimpleExample() { var TAC = GenerateTAC( @" { x = 7; x = x + 0; x = x / x; x = x * 0; x = x - 0; } "); var AIOptimizer = new AlgebraicIdentitiesOptimizer(TAC); AIOptimizer.Run(); var expected = new List <string>() { "x = 7", "x = x", "x = 1", "x = 0", "x = x" }; var actual = AIOptimizer.TAC.Instructions.Select(instruction => instruction.ToString().Trim()); CollectionAssert.AreEqual(expected, actual); }
public void TrueIfAndAlgebraicIdentities() { var Text = @" { if true { x = x / 1; x = 1 * x; } } "; Scanner scanner = new Scanner(); scanner.SetSource(Text, 0); Parser parser = new Parser(scanner); parser.Parse(); var parentFiller = new FillParentsVisitor(); parser.root.Visit(parentFiller); var trueIfOpt = new TrueIfOptVisitor(); parser.root.Visit(trueIfOpt); var prettyPrinter = new PrettyPrinterVisitor(); parser.root.Visit(prettyPrinter); var TACGenerator = new TACGenerationVisitor(); parser.root.Visit(TACGenerator); var TAC = TACGenerator.TAC; var AIOptimizer = new AlgebraicIdentitiesOptimizer(TAC); AIOptimizer.Run(); var expected = new List <string>() { "x = x", "x = x" }; var actual = AIOptimizer.TAC.Instructions.Select(instruction => instruction.ToString().Trim()); CollectionAssert.AreEqual(expected, actual); }