summaryrefslogtreecommitdiff
path: root/Compiler/Program.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Compiler/Program.cs')
-rw-r--r--Compiler/Program.cs73
1 files changed, 0 insertions, 73 deletions
diff --git a/Compiler/Program.cs b/Compiler/Program.cs
deleted file mode 100644
index 7ecbf8e..0000000
--- a/Compiler/Program.cs
+++ /dev/null
@@ -1,73 +0,0 @@
-namespace Q1.Compiler;
-
-using System.Text;
-using Antlr4.Runtime;
-using CommandLine;
-using visitors;
-using Parser = CommandLine.Parser;
-
-public class Program
-{
- static void Main(string[] args)
- {
- Parser commandLineParser = new(with =>
- {
- with.CaseInsensitiveEnumValues = true;
- });
-
- commandLineParser
- .ParseArguments<CompilerOptions>(args)
- .WithParsed(Program.Main);
- }
-
- public static void Main(CompilerOptions options)
- {
- options.InputFile = options.InputFile;
-
- try
- {
- ICharStream inputStream = new PreprocessingCharStream(options.InputFile);
- IEnumerable<string> result = Program.Compile(options, inputStream);
-
- File.WriteAllLines(options.OutputFile, result);
- if (options.Verbose)
- {
- Console.WriteLine();
- foreach (string line in result)
- Console.WriteLine(line);
- Console.WriteLine();
- }
-
- Console.WriteLine($"Compilation successful. ({result.Count(x=>x != string.Empty)} instructions)");
- }
- catch (CompilerException ex)
- {
- Console.ForegroundColor = ConsoleColor.Red;
- Console.Error.WriteLine($"Error: {ex.Message}");
- Console.ResetColor();
- Environment.Exit(1);
- }
- }
- public static IEnumerable<string> Compile(CompilerOptions options, ICharStream inputStream)
- {
- CGrammarLexer lexer = new(inputStream);
- lexer.RemoveErrorListeners();
-
- ITokenStream tokenStream = new BufferedTokenStream(lexer);
- CGrammarParser parser = new(tokenStream);
- parser.RemoveErrorListeners();
-
- Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
- Encoding encoding = Encoding.GetEncoding(437);
- CCompilerVisitor compiler = new(options.CommentCompilationMode, encoding);
- IEnumerable<string> result = compiler.Compile(parser.program());
-
- return result;
- }
-
- public static string Optimize(IEnumerable<string> instructions)
- {
- Optimizer optimizer = new(instructions.ToList());
- return optimizer.Optimize();
- }
-} \ No newline at end of file