From 9e8ba6e00dc4a4137a5187dbe5fe5b1394219735 Mon Sep 17 00:00:00 2001 From: Melodi <62381002+Melodi17@users.noreply.github.com> Date: Fri, 5 Sep 2025 10:20:03 +1000 Subject: stuff --- Compiler/Program.cs | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) (limited to 'Compiler/Program.cs') 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 result = compiler.Compile(parser.program()); + IEnumerable 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 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 result = compiler.Compile(parser.program()); + + return result; + } + + public static string Optimize(IEnumerable instructions) + { + Optimizer optimizer = new(instructions.ToList()); + return optimizer.Optimize(); + } } \ No newline at end of file -- cgit v1.3.1