Esempio n. 1
0
        public static void Main(string[] args)
        {
            var program = CreateFibonacciProgram();

            // semantic analysis
            var semanticAnalysisErrors = SemanticAnalysis.Validate(program);

            if (semanticAnalysisErrors.Any())
            {
                Console.WriteLine($"Semantic analysis failed with {semanticAnalysisErrors.Count} errors.");

                foreach (var error in semanticAnalysisErrors)
                {
                    Console.WriteLine(error);
                }

                return;
            }

            // code gen
            Console.WriteLine("Generating C# program...");
            var(generatedCode, codeGenErrors) = CSharpCodeGenerator.GenerateCode(program);

            if (codeGenErrors.Any())
            {
                Console.WriteLine($"Code generation failed with {codeGenErrors.Count} errors.");

                foreach (var error in codeGenErrors)
                {
                    Console.WriteLine(error);
                }

                return;
            }

            // C# compilation
            Console.WriteLine("Compiling C# program...");
            CSharpCompiler.CompileCSharpProgram(generatedCode);

            // run executable
            Console.WriteLine("Starting compiled program...");
            var process = Process.Start("bin/PrestoProgram.exe");

            process.WaitForExit();
        }