Skip to content
Snippets Groups Projects
Main.cs 1.76 KiB
Newer Older
using System;
using System.IO;
using System.Collections.Generic;
using SimpleScanner;
using SimpleParser;
using System.Text;
using Newtonsoft.Json;

namespace SimpleCompiler
{
    public class SimpleCompilerMain
    {
        public static void Main()
        {
            string FileName = @"..\..\a.txt";
            string OutputFileName = @"..\..\a.json";
            try
            {
                string Text = File.ReadAllText(FileName);

                Scanner scanner = new Scanner();
                scanner.SetSource(Text, 0);

                Parser parser = new Parser(scanner);

                var b = parser.Parse();
                if (!b)
                    Console.WriteLine("Ошибка");
                else
                {
                    Console.WriteLine("Синтаксическое дерево построено");
                    JsonSerializerSettings jsonSettings = new JsonSerializerSettings();
                    jsonSettings.Formatting = Newtonsoft.Json.Formatting.Indented;
                    jsonSettings.TypeNameHandling = TypeNameHandling.All;
                    string output = JsonConvert.SerializeObject(parser.root, jsonSettings);
                    File.WriteAllText(OutputFileName, output);
                }
            }
            catch (FileNotFoundException)
            {
                Console.WriteLine("Файл {0} не найден", FileName);
            }
            catch (LexException e)
            {
                Console.WriteLine("Лексическая ошибка. " + e.Message);
            }
            catch (SyntaxException e)
            {
                Console.WriteLine("Синтаксическая ошибка. " + e.Message);
            }

            Console.ReadLine();
        }

    }
}