public void Convert_ExpressionWithSeveralReturns_CorrectPolis() { var syntacticalAnalyzer = new SyntacticalAnalyzer(); var program = new TestProgramBuilder() .WithTokens(TestSourceKey.SeveralReturnsWithFirstWorking) .WithPolis(TestSourceKey.SeveralReturnsWithFirstWorking) .Build(); var actual = syntacticalAnalyzer.Convert(program.Tokens); Assert.AreEqual(program.Polis, actual); Assert.AreEqual(program.PolisConditionIndexes, syntacticalAnalyzer.PolisConditionsIndexes); }
public void Convert_ExpressionWithCycleWhileInCondition_CorrectPolis() { var syntacticalAnalyzer = new SyntacticalAnalyzer(); var program = new TestProgramBuilder() .WithTokens(TestSourceKey.CycleWhileInCondition) .WithPolis(TestSourceKey.CycleWhileInCondition) .Build(); var actual = syntacticalAnalyzer.Convert(program.Tokens); Assert.AreEqual(program.Polis, actual); Assert.AreEqual(program.PolisConditionIndexes, syntacticalAnalyzer.PolisConditionsIndexes); }
public void Compile(FunctionContext context, List <FunctionDescription> functionDescriptions) { var POLIS = SyntacticalAnalyzer.Convert(context.Tokens); DisplayManager.DisplayExpressionInPolishNotation(POLIS); var triads = TriadsConverter.GetTriadsFromPolis(POLIS, SyntacticalAnalyzer.PolisConditionsIndexes, functionDescriptions); DisplayManager.DisplayTriads(triads, "Triads"); var optimizedTriads = TriadsOptimizer.Optimize(triads, TriadsConverter.TriadsConditionIndexes); DisplayManager.DisplayTriads(optimizedTriads, "Optimized triads"); context.POLIS = POLIS; context.Triads = triads; context.OptimizedTriads = optimizedTriads; }