diff options
| author | Melodi <62381002+Melodi17@users.noreply.github.com> | 2025-09-05 10:20:03 +1000 |
|---|---|---|
| committer | Melodi <62381002+Melodi17@users.noreply.github.com> | 2025-09-05 10:20:03 +1000 |
| commit | 9e8ba6e00dc4a4137a5187dbe5fe5b1394219735 (patch) | |
| tree | e5a54706a8a85243fdb0fe0f2ed73fb7b7566bcd /Compiler/Program.cs | |
| parent | 4ea967c6089bbcaba5d71145546d288e186fba40 (diff) | |
stuff
Diffstat (limited to 'Compiler/Program.cs')
| -rw-r--r-- | Compiler/Program.cs | 34 |
1 files changed, 23 insertions, 11 deletions
diff --git a/Compiler/Program.cs b/Compiler/Program.cs index cde49a5..7ecbf8e 100644 --- a/Compiler/Program.cs +++ b/Compiler/Program.cs @@ -27,17 +27,7 @@ public class Program try { ICharStream inputStream = new PreprocessingCharStream(options.InputFile); - 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()); + IEnumerable<string> result = Program.Compile(options, inputStream); File.WriteAllLines(options.OutputFile, result); if (options.Verbose) @@ -58,4 +48,26 @@ public class Program 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 |
