public void Optimize_ArithmeticExpression_CorrectOptimization() { var triadsOptimizer = new TriadsOptimizer(); var program = new TestProgramBuilder() .WithTriads(TestSourceKey.Simple) .WithOptimizedTriads(TestSourceKey.Simple) .Build(); var actual = triadsOptimizer.Optimize(program.Triads, program.TriadsConditionIndexes); Assert.AreEqual(program.OptimizedTriads, actual); }
static void Main(string[] args) { var main_code_text = File.ReadAllText(args[2]); //Console.WriteLine(main_code_text.GetHashCode()); Console.WriteLine("-------------------------------------------------"); Console.WriteLine("Сode received in the Gonozov's language: "); Console.WriteLine("- - - - - - - - - - - - - - - - - - - - - - - - -"); Console.WriteLine(main_code_text); Console.WriteLine("-------------------------------------------------"); VariableTable <Function> globalFuncTable = new VariableTable <Function>(); PrecedenceBasedRegexTokenizer tokenizer = new PrecedenceBasedRegexTokenizer(); PrecedenceBasedRPNParser parser = new PrecedenceBasedRPNParser(ref globalFuncTable); TriadsOptimizer triadsOptimizer = new TriadsOptimizer(); StackMachine stackMachine = new StackMachine(globalFuncTable); var tokenSeqence = tokenizer.Tokenize(main_code_text).ToList(); foreach (var token in tokenSeqence) { Console.Write(token.ToString() + " , "); } Console.WriteLine("\n-------------------------------------------------"); var parseSequence = parser.Parse(tokenSeqence); foreach (var result in parseSequence) { Console.Write(result.ToString() + " , "); } Console.WriteLine("\n-------------------------------------------------"); globalFuncTable.Print(); //parseSequence = triadsOptimizer.Optimize(parseSequence); //Console.WriteLine("\n-------------------------------------------------"); //foreach (var result in parseSequence) //{ // Console.Write(result.ToString() + " , "); //} //Console.WriteLine("\n-------------------------------------------------"); stackMachine.Execute(parseSequence); }
public Compiler() { SyntacticalAnalyzer = new SyntacticalAnalyzer(); TriadsConverter = new TriadsConverter(); TriadsOptimizer = new TriadsOptimizer(); }