summaryrefslogtreecommitdiff
path: root/Compiler/Program.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Compiler/Program.cs')
-rw-r--r--Compiler/Program.cs24
1 files changed, 23 insertions, 1 deletions
diff --git a/Compiler/Program.cs b/Compiler/Program.cs
index 3a277a1..09f7127 100644
--- a/Compiler/Program.cs
+++ b/Compiler/Program.cs
@@ -2,6 +2,7 @@
using System.Text;
using Antlr4.Runtime;
+using Antlr4.Runtime.Misc;
using CommandLine;
using visitors;
using Parser = CommandLine.Parser;
@@ -26,7 +27,7 @@ public class Program
try
{
- AntlrFileStream inputStream = new(options.InputFile);
+ ICharStream inputStream = new PreprocessingCharStream(options.InputFile);
CGrammarLexer lexer = new(inputStream);
lexer.RemoveErrorListeners();
@@ -48,4 +49,25 @@ public class Program
Console.WriteLine($"{ex.Message}");
}
}
+}
+
+public class PreprocessingCharStream : ICharStream
+{
+ private readonly AntlrInputStream inner;
+
+ public PreprocessingCharStream(string filePath)
+ {
+ string preprocessed = Preprocessor.Process(filePath);
+ inner = new AntlrInputStream(preprocessed);
+ }
+
+ public int Index => inner.Index;
+ public int Size => inner.Size;
+ public string SourceName => inner.SourceName;
+ public void Consume() => inner.Consume();
+ public int LA(int i) => inner.LA(i);
+ public int Mark() => inner.Mark();
+ public void Release(int marker) => inner.Release(marker);
+ public void Seek(int index) => inner.Seek(index);
+ public string GetText(Interval interval) => inner.GetText(interval);
} \ No newline at end of file