From 18868128e18d38b706e7df14e8e683e1a9739c17 Mon Sep 17 00:00:00 2001
From: Melodi <62381002+Melodi17@users.noreply.github.com>
Date: Tue, 17 Mar 2026 20:49:22 +1000
Subject: chore: Initial commit
---
.idea/.idea.Chip8Emu2/.idea/.gitignore | 13 -
.idea/.idea.Chip8Emu2/.idea/.name | 1 -
.idea/.idea.Chip8Emu2/.idea/encodings.xml | 4 -
.idea/.idea.Chip8Emu2/.idea/indexLayout.xml | 8 -
.idea/.idea.Chip8Emu2/.idea/vcs.xml | 6 -
.idea/.idea.Q1/.idea/.gitignore | 13 -
.../.idea/ANTLRv4ToolGrammarProperties.xml | 42 -
.idea/.idea.Q1/.idea/encodings.xml | 4 -
.idea/.idea.Q1/.idea/misc.xml | 10 -
.idea/.idea.Q1/.idea/vcs.xml | 1 +
.idea/.idea.Q1/.idea/workspace.xml | 184 ++
.idea/.idea.Q1Emu/.idea/.gitignore | 13 -
.idea/.idea.Q1Emu/.idea/encodings.xml | 4 -
.idea/.idea.Q1Emu/.idea/indexLayout.xml | 8 -
.idea/.idea.Q1Emu/.idea/misc.xml | 10 -
.idea/.idea.Q1Emu/.idea/vcs.xml | 6 -
Assembler/Assembler.cs | 450 ----
Assembler/Assembler.csproj | 19 -
Assembler/Extensions.cs | 15 -
Assembler/GlobalUsings.cs | 12 -
Assembler/Options.cs | 12 -
Assembler/Program.cs | 37 -
Compiler.Testing/Compiler.Testing.csproj | 28 -
Compiler.Testing/SanityTests.cs | 43 -
Compiler.Testing/TestingHelpers.cs | 14 -
Compiler/CGrammar.g4 | 133 -
Compiler/CType.cs | 31 -
Compiler/CommentCompilationMode.cs | 10 -
Compiler/Compiler.csproj | 20 -
Compiler/CompilerException.cs | 4 -
Compiler/CompilerExtensions.cs | 12 -
Compiler/CompilerOptions.cs | 18 -
Compiler/Context.cs | 23 -
Compiler/FunctionReference.cs | 129 -
Compiler/Optimizer.cs | 28 -
Compiler/PreprocessingCharStream.cs | 25 -
Compiler/Preprocessor.cs | 57 -
Compiler/Program.cs | 73 -
Compiler/Target.cs | 15 -
Compiler/VariableReference.cs | 15 -
Compiler/gen/CGrammar.interp | 145 -
Compiler/gen/CGrammar.tokens | 116 -
Compiler/gen/CGrammarBaseVisitor.cs | 781 ------
Compiler/gen/CGrammarLexer.cs | 238 --
Compiler/gen/CGrammarLexer.interp | 203 --
Compiler/gen/CGrammarLexer.tokens | 116 -
Compiler/gen/CGrammarParser.cs | 2821 --------------------
Compiler/gen/CGrammarVisitor.cs | 506 ----
Compiler/visitors/Constants.cs | 50 -
Compiler/visitors/Definitions.cs | 132 -
Compiler/visitors/Expressions.cs | 154 --
Compiler/visitors/FlowControl.cs | 177 --
Compiler/visitors/Main.cs | 183 --
Compiler/visitors/Operations.cs | 305 ---
Compiler/visitors/Targets.cs | 40 -
Emulator/Assembler/Disassembler.cs | 74 -
Emulator/Chip/Bus.cs | 37 -
Emulator/Chip/BusDevice.cs | 49 -
Emulator/Chip/DisplayDevice.cs | 94 -
Emulator/Chip/GraphicsDevice.cs | 6 -
Emulator/Chip/HIDDevice.cs | 49 -
Emulator/Chip/Q1Cpu.cs | 167 --
Emulator/Chip/Q1CpuAddressingModes.cs | 187 --
Emulator/Chip/Q1CpuInstructions.cs | 278 --
Emulator/Chip/RamDevice.cs | 33 -
Emulator/Content/Content.mgcb | 15 -
Emulator/DisplayEngine.cs | 116 -
Emulator/Emulator.csproj | 32 -
Emulator/Extensions.cs | 23 -
Emulator/GlobalUsings.cs | 12 -
Emulator/Icon.bmp | Bin 262282 -> 0 bytes
Emulator/Icon.ico | Bin 147541 -> 0 bytes
Emulator/Make.cs | 58 -
Emulator/Options.cs | 7 -
Emulator/Program.cs | 98 -
Emulator/Q1Layout.cs | 23 -
Orchestrator/Orchestrator.csproj | 20 -
Orchestrator/Program.cs | 74 -
Q1.core/Arch/AddressingMode.cs | 13 +
Q1.core/Arch/AddressingModes.cs | 331 +++
Q1.core/Arch/Chip.cs | 143 +
Q1.core/Arch/ChipLayout.cs | 12 +
Q1.core/Arch/IInstruction.cs | 35 +
Q1.core/Arch/InstructionSet.cs | 203 ++
Q1.core/GlobalUsings.cs | 12 +
Q1.core/IAddressable.cs | 26 +
Q1.core/Memory.cs | 15 +
Q1.core/Q1.core.csproj | 9 +
Q1.sln | 44 +-
Q1.tests/Core/AddressingModesTests.cs | 20 +
Q1.tests/Core/InstructionsTests.cs | 20 +
Q1.tests/Q1.tests.csproj | 27 +
ROMs/_old/hello_world.asm | 42 -
ROMs/_old/hello_world.q1 | Bin 2151 -> 0 bytes
ROMs/_old/manual.q1 | Bin 10 -> 0 bytes
ROMs/_old/write_display_direct.asm | 21 -
ROMs/_old/write_display_direct.q1 | Bin 51 -> 0 bytes
ROMs/font.bin | Bin 2048 -> 0 bytes
ROMs/hello_c.asm | 215 --
ROMs/hello_c.c | 55 -
ROMs/hello_c.q1 | Bin 2842 -> 0 bytes
ROMs/hid.c | 80 -
ROMs/logictest.asm | 140 -
ROMs/logictest.c | 37 -
ROMs/logictest.q1 | Bin 477 -> 0 bytes
ROMs/paint.asm | 264 --
ROMs/paint.c | 25 -
ROMs/paint.q1 | Bin 872 -> 0 bytes
ROMs/screen.c | 48 -
ROMs/std.c | 4 -
ROMs/typewriter.asm | 461 ----
ROMs/typewriter.c | 75 -
ROMs/typewriter.q1 | Bin 3627 -> 0 bytes
RegionVisualiser/BoxDrawer.cs | 49 -
RegionVisualiser/Program.cs | 74 -
RegionVisualiser/Region.cs | 10 -
RegionVisualiser/RegionVisualiser.csproj | 14 -
RegionVisualiser/SizeFormatter.cs | 25 -
RegionVisualiser/output.txt | 24 -
119 files changed, 1061 insertions(+), 10481 deletions(-)
delete mode 100644 .idea/.idea.Chip8Emu2/.idea/.gitignore
delete mode 100644 .idea/.idea.Chip8Emu2/.idea/.name
delete mode 100644 .idea/.idea.Chip8Emu2/.idea/encodings.xml
delete mode 100644 .idea/.idea.Chip8Emu2/.idea/indexLayout.xml
delete mode 100644 .idea/.idea.Chip8Emu2/.idea/vcs.xml
delete mode 100644 .idea/.idea.Q1/.idea/.gitignore
delete mode 100644 .idea/.idea.Q1/.idea/ANTLRv4ToolGrammarProperties.xml
delete mode 100644 .idea/.idea.Q1/.idea/encodings.xml
delete mode 100644 .idea/.idea.Q1/.idea/misc.xml
create mode 100644 .idea/.idea.Q1/.idea/workspace.xml
delete mode 100644 .idea/.idea.Q1Emu/.idea/.gitignore
delete mode 100644 .idea/.idea.Q1Emu/.idea/encodings.xml
delete mode 100644 .idea/.idea.Q1Emu/.idea/indexLayout.xml
delete mode 100644 .idea/.idea.Q1Emu/.idea/misc.xml
delete mode 100644 .idea/.idea.Q1Emu/.idea/vcs.xml
delete mode 100644 Assembler/Assembler.cs
delete mode 100644 Assembler/Assembler.csproj
delete mode 100644 Assembler/Extensions.cs
delete mode 100644 Assembler/GlobalUsings.cs
delete mode 100644 Assembler/Options.cs
delete mode 100644 Assembler/Program.cs
delete mode 100644 Compiler.Testing/Compiler.Testing.csproj
delete mode 100644 Compiler.Testing/SanityTests.cs
delete mode 100644 Compiler.Testing/TestingHelpers.cs
delete mode 100644 Compiler/CGrammar.g4
delete mode 100644 Compiler/CType.cs
delete mode 100644 Compiler/CommentCompilationMode.cs
delete mode 100644 Compiler/Compiler.csproj
delete mode 100644 Compiler/CompilerException.cs
delete mode 100644 Compiler/CompilerExtensions.cs
delete mode 100644 Compiler/CompilerOptions.cs
delete mode 100644 Compiler/Context.cs
delete mode 100644 Compiler/FunctionReference.cs
delete mode 100644 Compiler/Optimizer.cs
delete mode 100644 Compiler/PreprocessingCharStream.cs
delete mode 100644 Compiler/Preprocessor.cs
delete mode 100644 Compiler/Program.cs
delete mode 100644 Compiler/Target.cs
delete mode 100644 Compiler/VariableReference.cs
delete mode 100644 Compiler/gen/CGrammar.interp
delete mode 100644 Compiler/gen/CGrammar.tokens
delete mode 100644 Compiler/gen/CGrammarBaseVisitor.cs
delete mode 100644 Compiler/gen/CGrammarLexer.cs
delete mode 100644 Compiler/gen/CGrammarLexer.interp
delete mode 100644 Compiler/gen/CGrammarLexer.tokens
delete mode 100644 Compiler/gen/CGrammarParser.cs
delete mode 100644 Compiler/gen/CGrammarVisitor.cs
delete mode 100644 Compiler/visitors/Constants.cs
delete mode 100644 Compiler/visitors/Definitions.cs
delete mode 100644 Compiler/visitors/Expressions.cs
delete mode 100644 Compiler/visitors/FlowControl.cs
delete mode 100644 Compiler/visitors/Main.cs
delete mode 100644 Compiler/visitors/Operations.cs
delete mode 100644 Compiler/visitors/Targets.cs
delete mode 100644 Emulator/Assembler/Disassembler.cs
delete mode 100644 Emulator/Chip/Bus.cs
delete mode 100644 Emulator/Chip/BusDevice.cs
delete mode 100644 Emulator/Chip/DisplayDevice.cs
delete mode 100644 Emulator/Chip/GraphicsDevice.cs
delete mode 100644 Emulator/Chip/HIDDevice.cs
delete mode 100644 Emulator/Chip/Q1Cpu.cs
delete mode 100644 Emulator/Chip/Q1CpuAddressingModes.cs
delete mode 100644 Emulator/Chip/Q1CpuInstructions.cs
delete mode 100644 Emulator/Chip/RamDevice.cs
delete mode 100644 Emulator/Content/Content.mgcb
delete mode 100644 Emulator/DisplayEngine.cs
delete mode 100644 Emulator/Emulator.csproj
delete mode 100644 Emulator/Extensions.cs
delete mode 100644 Emulator/GlobalUsings.cs
delete mode 100644 Emulator/Icon.bmp
delete mode 100644 Emulator/Icon.ico
delete mode 100644 Emulator/Make.cs
delete mode 100644 Emulator/Options.cs
delete mode 100644 Emulator/Program.cs
delete mode 100644 Emulator/Q1Layout.cs
delete mode 100644 Orchestrator/Orchestrator.csproj
delete mode 100644 Orchestrator/Program.cs
create mode 100644 Q1.core/Arch/AddressingMode.cs
create mode 100644 Q1.core/Arch/AddressingModes.cs
create mode 100644 Q1.core/Arch/Chip.cs
create mode 100644 Q1.core/Arch/ChipLayout.cs
create mode 100644 Q1.core/Arch/IInstruction.cs
create mode 100644 Q1.core/Arch/InstructionSet.cs
create mode 100644 Q1.core/GlobalUsings.cs
create mode 100644 Q1.core/IAddressable.cs
create mode 100644 Q1.core/Memory.cs
create mode 100644 Q1.core/Q1.core.csproj
create mode 100644 Q1.tests/Core/AddressingModesTests.cs
create mode 100644 Q1.tests/Core/InstructionsTests.cs
create mode 100644 Q1.tests/Q1.tests.csproj
delete mode 100644 ROMs/_old/hello_world.asm
delete mode 100644 ROMs/_old/hello_world.q1
delete mode 100644 ROMs/_old/manual.q1
delete mode 100644 ROMs/_old/write_display_direct.asm
delete mode 100644 ROMs/_old/write_display_direct.q1
delete mode 100644 ROMs/font.bin
delete mode 100644 ROMs/hello_c.asm
delete mode 100644 ROMs/hello_c.c
delete mode 100644 ROMs/hello_c.q1
delete mode 100644 ROMs/hid.c
delete mode 100644 ROMs/logictest.asm
delete mode 100644 ROMs/logictest.c
delete mode 100644 ROMs/logictest.q1
delete mode 100644 ROMs/paint.asm
delete mode 100644 ROMs/paint.c
delete mode 100644 ROMs/paint.q1
delete mode 100644 ROMs/screen.c
delete mode 100644 ROMs/std.c
delete mode 100644 ROMs/typewriter.asm
delete mode 100644 ROMs/typewriter.c
delete mode 100644 ROMs/typewriter.q1
delete mode 100644 RegionVisualiser/BoxDrawer.cs
delete mode 100644 RegionVisualiser/Program.cs
delete mode 100644 RegionVisualiser/Region.cs
delete mode 100644 RegionVisualiser/RegionVisualiser.csproj
delete mode 100644 RegionVisualiser/SizeFormatter.cs
delete mode 100644 RegionVisualiser/output.txt
diff --git a/.idea/.idea.Chip8Emu2/.idea/.gitignore b/.idea/.idea.Chip8Emu2/.idea/.gitignore
deleted file mode 100644
index f0180a3..0000000
--- a/.idea/.idea.Chip8Emu2/.idea/.gitignore
+++ /dev/null
@@ -1,13 +0,0 @@
-# Default ignored files
-/shelf/
-/workspace.xml
-# Rider ignored files
-/contentModel.xml
-/projectSettingsUpdater.xml
-/.idea.Chip8Emu2.iml
-/modules.xml
-# Editor-based HTTP Client requests
-/httpRequests/
-# Datasource local storage ignored files
-/dataSources/
-/dataSources.local.xml
diff --git a/.idea/.idea.Chip8Emu2/.idea/.name b/.idea/.idea.Chip8Emu2/.idea/.name
deleted file mode 100644
index 95e8088..0000000
--- a/.idea/.idea.Chip8Emu2/.idea/.name
+++ /dev/null
@@ -1 +0,0 @@
-Chip8Emu2
\ No newline at end of file
diff --git a/.idea/.idea.Chip8Emu2/.idea/encodings.xml b/.idea/.idea.Chip8Emu2/.idea/encodings.xml
deleted file mode 100644
index df87cf9..0000000
--- a/.idea/.idea.Chip8Emu2/.idea/encodings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/.idea/.idea.Chip8Emu2/.idea/indexLayout.xml b/.idea/.idea.Chip8Emu2/.idea/indexLayout.xml
deleted file mode 100644
index 7b08163..0000000
--- a/.idea/.idea.Chip8Emu2/.idea/indexLayout.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/.idea.Chip8Emu2/.idea/vcs.xml b/.idea/.idea.Chip8Emu2/.idea/vcs.xml
deleted file mode 100644
index 94a25f7..0000000
--- a/.idea/.idea.Chip8Emu2/.idea/vcs.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/.idea.Q1/.idea/.gitignore b/.idea/.idea.Q1/.idea/.gitignore
deleted file mode 100644
index 842bf41..0000000
--- a/.idea/.idea.Q1/.idea/.gitignore
+++ /dev/null
@@ -1,13 +0,0 @@
-# Default ignored files
-/shelf/
-/workspace.xml
-# Rider ignored files
-/contentModel.xml
-/projectSettingsUpdater.xml
-/.idea.Q1.iml
-/modules.xml
-# Editor-based HTTP Client requests
-/httpRequests/
-# Datasource local storage ignored files
-/dataSources/
-/dataSources.local.xml
diff --git a/.idea/.idea.Q1/.idea/ANTLRv4ToolGrammarProperties.xml b/.idea/.idea.Q1/.idea/ANTLRv4ToolGrammarProperties.xml
deleted file mode 100644
index bb8d49b..0000000
--- a/.idea/.idea.Q1/.idea/ANTLRv4ToolGrammarProperties.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/.idea.Q1/.idea/encodings.xml b/.idea/.idea.Q1/.idea/encodings.xml
deleted file mode 100644
index df87cf9..0000000
--- a/.idea/.idea.Q1/.idea/encodings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/.idea/.idea.Q1/.idea/misc.xml b/.idea/.idea.Q1/.idea/misc.xml
deleted file mode 100644
index 5207dea..0000000
--- a/.idea/.idea.Q1/.idea/misc.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/.idea.Q1/.idea/vcs.xml b/.idea/.idea.Q1/.idea/vcs.xml
index 35eb1dd..8306744 100644
--- a/.idea/.idea.Q1/.idea/vcs.xml
+++ b/.idea/.idea.Q1/.idea/vcs.xml
@@ -2,5 +2,6 @@
+
\ No newline at end of file
diff --git a/.idea/.idea.Q1/.idea/workspace.xml b/.idea/.idea.Q1/.idea/workspace.xml
new file mode 100644
index 0000000..0fc9e8c
--- /dev/null
+++ b/.idea/.idea.Q1/.idea/workspace.xml
@@ -0,0 +1,184 @@
+
+
+
+ Assembler/Assembler.csproj
+ Compiler/Compiler.csproj
+ Emulator/Q1Emu.csproj
+ Orchestrator/Orchestrator.csproj
+ RegionVisualiser/RegionVisualiser.csproj
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/.idea.Q1Emu/.idea/.gitignore b/.idea/.idea.Q1Emu/.idea/.gitignore
deleted file mode 100644
index 99ea8f4..0000000
--- a/.idea/.idea.Q1Emu/.idea/.gitignore
+++ /dev/null
@@ -1,13 +0,0 @@
-# Default ignored files
-/shelf/
-/workspace.xml
-# Rider ignored files
-/.idea.Q1Emu.iml
-/projectSettingsUpdater.xml
-/modules.xml
-/contentModel.xml
-# Editor-based HTTP Client requests
-/httpRequests/
-# Datasource local storage ignored files
-/dataSources/
-/dataSources.local.xml
diff --git a/.idea/.idea.Q1Emu/.idea/encodings.xml b/.idea/.idea.Q1Emu/.idea/encodings.xml
deleted file mode 100644
index df87cf9..0000000
--- a/.idea/.idea.Q1Emu/.idea/encodings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/.idea/.idea.Q1Emu/.idea/indexLayout.xml b/.idea/.idea.Q1Emu/.idea/indexLayout.xml
deleted file mode 100644
index 7b08163..0000000
--- a/.idea/.idea.Q1Emu/.idea/indexLayout.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/.idea.Q1Emu/.idea/misc.xml b/.idea/.idea.Q1Emu/.idea/misc.xml
deleted file mode 100644
index 5207dea..0000000
--- a/.idea/.idea.Q1Emu/.idea/misc.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/.idea.Q1Emu/.idea/vcs.xml b/.idea/.idea.Q1Emu/.idea/vcs.xml
deleted file mode 100644
index 35eb1dd..0000000
--- a/.idea/.idea.Q1Emu/.idea/vcs.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Assembler/Assembler.cs b/Assembler/Assembler.cs
deleted file mode 100644
index 71436c4..0000000
--- a/Assembler/Assembler.cs
+++ /dev/null
@@ -1,450 +0,0 @@
-namespace Q1.Assembler;
-
-using System.Diagnostics;
-using Emulator;
-using Emulator.Chip;
-
-public class Assembler
-{
- public static Dictionary RegisterLookup = new()
- {
- { 0x40, "AX" },
- { 0x41, "AH" },
- { 0x42, "AL" },
- { 0x43, "DX" },
- { 0x44, "DH" },
- { 0x45, "DL" },
- { 0x46, "LX" },
- { 0x50, "PC" },
- { 0x51, "SP" }
- };
- private readonly string[] InputLines;
-
- private readonly Dictionary _labels = new();
-
- public Assembler(string[] inputLines)
- {
- this.InputLines = inputLines;
- }
-
- private void ResolveLabels()
- {
- int offset = Q1Layout.ProgramStart;
- int pos = 0;
- foreach (string line in this.InputLines)
- {
- string trimmedLine = line.Split(";")[0].Trim();
- if (string.IsNullOrEmpty(trimmedLine) || trimmedLine.StartsWith(';'))
- continue;
-
- if (trimmedLine.StartsWith(".org"))
- {
- string orgValue = trimmedLine[5..].Trim();
- offset = this.GetConstant(orgValue);
- }
-
- else if (trimmedLine.StartsWith(".ascii"))
- {
- string asciiValue = trimmedLine[7..].Trim()
- [1..^1]; // Remove quotes
-
- for (int i = 0; i < asciiValue.Length; i++)
- {
- char c = asciiValue[i];
- if (c == '\\')
- {
- c = asciiValue[++i] switch
- {
- 'n' => '\n',
- 't' => '\t',
- '\\' => '\\',
- '\'' => '\'',
- '"' => '"',
- _ => throw new AssemblerException($"Unknown escape sequence: \\{asciiValue[i]}")
- };
- }
-
- pos++;
- }
- }
-
- else if (trimmedLine.StartsWith(".raw"))
- {
- string[] values = trimmedLine[5..].Split(',');
- pos += values.Length * 2; // Each value is 2 bytes
- }
-
- else if (trimmedLine.StartsWith(".include"))
- {
- string includeFile = trimmedLine[9..].Trim()[1..^1];
- if (!File.Exists(includeFile))
- throw new AssemblerException($"Include file '{includeFile}' not found");
-
- pos += File.ReadAllBytes(includeFile).Length;
- }
-
- else if (trimmedLine.EndsWith(":"))
- {
- string label = trimmedLine[..^1].Trim();
- if (this._labels.ContainsKey(label))
- throw new AssemblerException($"Label '{label}' already defined");
- this._labels[label] = (u16) (pos + offset);
- }
-
- else
- pos += this.GetInstructionLength(trimmedLine);
- }
- }
-
- public IEnumerable Assemble()
- {
- this.ResolveLabels();
-
- foreach (string line in this.InputLines)
- {
- string trimmedLine = line.Split(";")[0].Trim(); // Remove comments
- if (string.IsNullOrEmpty(trimmedLine) || trimmedLine.StartsWith(';'))
- continue;
-
- if (trimmedLine.StartsWith(".org"))
- {
- // Already handled in ResolveLabels
- }
-
- else if (trimmedLine.StartsWith(".ascii"))
- {
- string asciiValue = trimmedLine[7..].Trim()
- [1..^1]; // Remove quotes
-
- for (int i = 0; i < asciiValue.Length; i++)
- {
- char c = asciiValue[i];
- if (c == '\\')
- {
- c = asciiValue[++i] switch
- {
- 'n' => '\n',
- 't' => '\t',
- '\\' => '\\',
- '\'' => '\'',
- '"' => '"',
- _ => throw new AssemblerException($"Unknown escape sequence: \\{asciiValue[i]}")
- };
- }
-
- yield return (byte) c;
- }
- }
-
- else if (trimmedLine.StartsWith(".raw"))
- {
- string[] values = trimmedLine[5..].Split(',');
- foreach (string value in values)
- {
- u16 c = this.GetConstant(value.Trim());
-
- yield return c.High();
- yield return c.Low();
- }
- }
-
- else if (trimmedLine.StartsWith(".include"))
- {
- string includeFile = trimmedLine[9..].Trim()[1..^1];
- if (!File.Exists(includeFile))
- throw new AssemblerException($"Include file '{includeFile}' not found");
-
- foreach (byte b in File.ReadAllBytes(includeFile))
- yield return b;
- }
-
- else if (trimmedLine.EndsWith(":"))
- {
- // Handled in ResolveLabels
- }
-
- else
- foreach (byte b in this.GetInstructionBytes(trimmedLine))
- yield return b;
- }
- }
-
- private int GetInstructionLength(string instruction)
- {
- string[] parts = instruction.Split(' ', 2);
- string opcode = parts[0].ToUpperInvariant();
-
- parts = parts.Length > 1 ? parts[1].Split(',') : [];
- if (parts.Length > 2)
- throw new AssemblerException("Invalid instruction format");
-
- u8 opcodeValue = this.ResolveOpcode(opcode, parts.Length, out u8 addressingIndex);
- (u8 m1, u8 m2) = this.ResolveAddressingModes(addressingIndex, parts);
-
- int length = 2; // Opcode + mode byte
-
- if (parts.Length > 0)
- length += this.GetModeLength(m1);
-
- if (parts.Length > 1)
- length += this.GetModeLength(m2);
-
- return length;
- }
-
- private IEnumerable GetInstructionBytes(string instruction)
- {
- string[] parts = instruction.Split(' ', 2);
- string opcode = parts[0].ToUpperInvariant();
-
- parts = parts.Length > 1 ? parts[1].Split(',') : [];
- if (parts.Length > 2)
- throw new AssemblerException("Invalid instruction format");
-
- u8 opcodeValue = this.ResolveOpcode(opcode, parts.Length, out u8 addressingIndex);
- (u8 m1, u8 m2) = this.ResolveAddressingModes(addressingIndex, parts);
-
- yield return opcodeValue;
- yield return (u8) ((m1 << 4) | m2); // Combine m1 and m2 into a single byte
-
- if (parts.Length > 0)
- {
- foreach (byte b in this.GetModeBytes(m1, parts[0]))
- yield return b;
- }
-
- if (parts.Length > 1)
- {
- foreach (byte b in this.GetModeBytes(m2, parts[1]))
- yield return b;
- }
- }
- private (u8 m1, u8 m2) ResolveAddressingModes(u8 addressingIndex, string[] parts)
- {
- u8 m1, m2;
- switch (addressingIndex)
- {
- case 0: // Implicit
- if (parts.Length > 0)
- throw new AssemblerException("Implicit instruction should not have operands");
-
- m1 = 0x00;
- m2 = 0x00;
- break;
-
- case 1: // Simple addressing mode
- if (parts.Length > 2)
- throw new AssemblerException("Simple addressing mode should have at most one operand");
- if (parts.Length == 0)
- throw new AssemblerException("Simple addressing mode requires an operand");
-
- m1 = this.ResolveMode(parts[0]);
- m2 = 0x00;
- break;
-
- case 2: // Extended implicit
- if (parts.Length > 0)
- throw new AssemblerException("Extended implicit instruction should not have operands");
-
- m1 = 0x00;
- m2 = 0x01;
- break;
-
- case 3: // Dual addressing mode
- if (parts.Length != 2)
- throw new AssemblerException("Dual addressing mode requires exactly two operands");
-
- m1 = this.ResolveMode(parts[0]);
- m2 = this.ResolveMode(parts[1]);
- break;
-
- default:
- throw new UnreachableException("Invalid addressing index: " + addressingIndex);
- }
- return (m1, m2);
- }
-
- private u8 ResolveOpcode(string opcode, int parts, out u8 addressingIndex)
- {
- List addressingIndices = new();
- u8? opCode = null;
- foreach ((u8 key, string[] value) in Q1Cpu.InstructionLookupStrings)
- {
- if (value.Contains(opcode))
- {
- addressingIndices.AddRange(value.AllIndexesOf(opcode));
- if (opCode is not null && opCode != key)
- throw new AssemblerException($"Ambiguous opcode '{opcode}' matches multiple instructions: {opCode:X4} and {key:X4}");
-
- opCode = key;
- }
- }
-
- if (opCode is null)
- throw new AssemblerException($"Unknown opcode '{opcode}'");
-
- int Parts(int index)
- => index switch
- {
- 0 => 0, // Implicit
- 1 => 1, // Simple addressing mode
- 2 => 0, // Extended implicit
- 3 => 2, // Dual addressing mode
- _ => throw new UnreachableException("Invalid addressing index: " + index)
- };
-
- if (addressingIndices.All(x => Parts(x) != parts))
- throw new AssemblerException($"Opcode '{opcode}' does not match the expected number of operands: {parts}");
-
- addressingIndex = (u8) addressingIndices.First(x => Parts(x) == parts);
- return opCode.Value;
- }
-
- private u8 ResolveMode(string mode)
- {
- mode = mode.Trim();
-
- bool IsRegister(string text)
- {
- if (text.Length > 1 && text[0] == 'V')
- return true;
-
- return Assembler.RegisterLookup.ContainsValue(text);
- }
-
- if (this._labels.ContainsKey(mode))
- return 0x01; // Immediate
-
- if (mode.StartsWith("@"))
- return 0x03; // Indirect
-
- if (mode.StartsWith("[") && mode.EndsWith("]"))
- {
- string inner = mode[1..^1].Trim();
- if (inner.Contains("+"))
- return 0x07; // Register indirect with offset
-
- if (IsRegister(inner))
- return 0x06; // Register indirect
-
- return 0x02; // Direct
- }
-
- if (IsRegister(mode))
- return 0x05; // Register
-
- return 0x01; // Immediate
- }
-
- private byte[] GetModeBytes(u8 mode, string operand)
- {
- operand = operand.Trim();
-
- switch (mode)
- {
- case 0x00: // Implicit
- // No additional data needed
- return [];
-
- case 0x01: // Immediate
- u16 immediateValue = this.GetConstant(operand);
- return [immediateValue.High(), immediateValue.Low()];
-
- case 0x02: // Direct
- u16 directAddress = this.GetConstant(operand); // Remove brackets
- return [directAddress.High(), directAddress.Low()];
-
- case 0x03: // Indirect
- u16 indirectAddress = this.GetConstant(operand); // Remove brackets and @
- return [indirectAddress.High(), indirectAddress.Low()];
-
- case 0x04: // Relative
- u16 relativeOffset = this.GetConstant(operand);
- return [relativeOffset.High(), relativeOffset.Low()];
-
- case 0x05: // Register
- u8 regIndex = this.GetRegisterIndex(operand);
- return [regIndex];
-
- case 0x06: // Register Indirect
- u8 indirectRegIndex = this.GetRegisterIndex(operand); // Remove brackets
- return [indirectRegIndex];
-
- case 0x07: // Register Indirect with Offset
- u8 offsetRegIndex = this.GetRegisterIndex(operand[1..^1].Split('+')[0].Trim());
- u16 offsetValue = this.GetConstant(operand[1..^1].Split('+')[1].Trim());
- return [offsetRegIndex, offsetValue.High(), offsetValue.Low()];
-
- default:
- throw new AssemblerException($"Unknown addressing mode: {mode:X2}");
- }
- }
-
- private int GetModeLength(u8 mode)
- {
- return mode switch
- {
- 0x00 => 0, // Implicit
- 0x01 => 2, // Immediate
- 0x02 => 2, // Direct
- 0x03 => 2, // Indirect
- 0x04 => 2, // Relative
- 0x05 => 1, // Register
- 0x06 => 1, // Register indirect
- 0x07 => 3, // Register indirect with offset
- _ => throw new AssemblerException($"Unknown addressing mode: {mode:X2}")
- };
- }
- private u8 GetRegisterIndex(string reg)
- {
- reg = this.Clean(reg);
-
- if (reg.StartsWith("V"))
- {
- if (u8.TryParse(reg[1..], out u8 index) && index < 0x3F)
- return index;
- }
-
- if (Assembler.RegisterLookup.ContainsValue(reg))
- {
- // Find the register index by value
- return (u8) Assembler.RegisterLookup.FirstOrDefault(x => x.Value == reg).Key;
- }
-
- throw new AssemblerException($"Invalid register: {reg}");
- }
- private u16 GetConstant(string value)
- {
- value = this.Clean(value);
-
- if (value.StartsWith("$"))
- {
- // Hexadecimal constant (backwards) $1FFF
- u16 x = Convert.ToUInt16(value[1..], 16);
- return x;
- }
- if (u16.TryParse(value, out u16 result))
- // Decimal constant
- return result;
-
- if (this._labels.TryGetValue(value, out u16 labelAddress))
- // Label reference
- return labelAddress;
-
- return 0;
- }
-
- private string Clean(string value)
- {
- if (value.StartsWith("@"))
- value = value[1..]; // Remove @ for indirect addressing
-
- if (value.StartsWith("[") && value.EndsWith("]"))
- value = value[1..^1].Trim(); // Remove brackets for direct addressing
-
- return value.Trim();
- }
-}
-
-public class AssemblerException(string message)
- : Exception(message);
\ No newline at end of file
diff --git a/Assembler/Assembler.csproj b/Assembler/Assembler.csproj
deleted file mode 100644
index fd4f4fa..0000000
--- a/Assembler/Assembler.csproj
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
- Exe
- net9.0
- enable
- enable
- Q1.Assembler
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Assembler/Extensions.cs b/Assembler/Extensions.cs
deleted file mode 100644
index fd4ea1f..0000000
--- a/Assembler/Extensions.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-namespace Q1.Assembler;
-
-public static class Extensions
-{
-
- public static u8 High(this u16 value)
- {
- return (u8)(value >> 8);
- }
-
- public static u8 Low(this u16 value)
- {
- return (u8)(value & 0xFF);
- }
-}
\ No newline at end of file
diff --git a/Assembler/GlobalUsings.cs b/Assembler/GlobalUsings.cs
deleted file mode 100644
index ff38a75..0000000
--- a/Assembler/GlobalUsings.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-// Integer type aliases
-global using i8 = sbyte; // -128 to 127
-global using u8 = byte; // 0 to 255
-global using i16 = short; // -32,768 to 32,767
-global using u16 = ushort; // 0 to 65,535
-global using i32 = int; // -2,147,483,648 to 2,147,483,647
-global using u32 = uint; // 0 to 4,294,967,295
-global using i64 = long; // -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
-global using u64 = ulong; // 0 to 18,446,744,073,709,551,615
-
-global using ref8 = System.Span;
-global using data8 = byte[];
diff --git a/Assembler/Options.cs b/Assembler/Options.cs
deleted file mode 100644
index 5b8c618..0000000
--- a/Assembler/Options.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-namespace Q1.Assembler;
-
-using CommandLine;
-
-public class AssemblerOptions
-{
- [Option('i', "input", Required = true, HelpText = "Input file to assemble.")]
- public string InputFile { get; set; }
-
- [Option('o', "output", Required = true, HelpText = "Output file to write the assembled code.")]
- public string OutputFile { get; set; }
-}
\ No newline at end of file
diff --git a/Assembler/Program.cs b/Assembler/Program.cs
deleted file mode 100644
index 0493057..0000000
--- a/Assembler/Program.cs
+++ /dev/null
@@ -1,37 +0,0 @@
-namespace Q1.Assembler;
-
-using CommandLine;
-
-public class Program
-{
- static void Main(string[] args)
- {
- Parser.Default.ParseArguments(args).WithParsed(Program.Main);
- }
-
- public static void Main(AssemblerOptions assemblerOptions)
- {
- assemblerOptions.InputFile = assemblerOptions.InputFile;
-
- string[] input = File.ReadAllLines(assemblerOptions.InputFile);
-
- try
- {
- Assembler assembler = new(input);
- byte[] bin = assembler.Assemble().ToArray();
- if (bin.Length > 8 * 1024)
- throw new AssemblerException("Assembled binary exceeds maximum size of 8KB.");
-
- File.WriteAllBytes(assemblerOptions.OutputFile, bin);
-
- Console.WriteLine($"Assembled {assemblerOptions.InputFile} -> {assemblerOptions.OutputFile}. ({bin.Length} bytes)");
- }
- catch (AssemblerException ex)
- {
- Console.ForegroundColor = ConsoleColor.Red;
- Console.Error.WriteLine($"Error: {ex.Message}");
- Console.ResetColor();
- Environment.Exit(1);
- }
- }
-}
\ No newline at end of file
diff --git a/Compiler.Testing/Compiler.Testing.csproj b/Compiler.Testing/Compiler.Testing.csproj
deleted file mode 100644
index ed9c322..0000000
--- a/Compiler.Testing/Compiler.Testing.csproj
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
- net9.0
- latest
- enable
- enable
- false
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Compiler.Testing/SanityTests.cs b/Compiler.Testing/SanityTests.cs
deleted file mode 100644
index 46c0323..0000000
--- a/Compiler.Testing/SanityTests.cs
+++ /dev/null
@@ -1,43 +0,0 @@
-namespace Compiler.Testing;
-
-using Q1;
-
-[TestFixture]
-public class SanityTests
-{
- [Test]
- public void BlankProgram()
- {
- string program = """
- int main() { }
- """;
-
- string result = TestingHelpers.CompileString(program).Trim();
- Assert.That(
- result, Is.EqualTo(
- """
- jmp _main
- _main:
- mov 0, V0
- ret
- """));
- }
-
- [Test]
- public void ReturnConstant()
- {
- string program = """
- int main() { return 42; }
- """;
-
- string result = TestingHelpers.CompileString(program).Trim();
- Assert.That(
- result, Is.EqualTo(
- """
- jmp _main
- _main:
- mov 42, V0
- ret
- """));
- }
-}
\ No newline at end of file
diff --git a/Compiler.Testing/TestingHelpers.cs b/Compiler.Testing/TestingHelpers.cs
deleted file mode 100644
index a3d85fe..0000000
--- a/Compiler.Testing/TestingHelpers.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-namespace Compiler.Testing;
-
-using Antlr4.Runtime;
-using Q1.Compiler;
-
-public class TestingHelpers
-{
- public static string CompileString(string input)
- {
- CompilerOptions options = new() { CommentCompilationMode = CommentCompilationMode.None };
- IEnumerable lines = Program.Compile(options, new AntlrInputStream(input));
- return Program.Optimize(lines);
- }
-}
\ No newline at end of file
diff --git a/Compiler/CGrammar.g4 b/Compiler/CGrammar.g4
deleted file mode 100644
index 4bb1342..0000000
--- a/Compiler/CGrammar.g4
+++ /dev/null
@@ -1,133 +0,0 @@
-grammar CGrammar;
-
-options {
- contextSuperClass = Q1.Compiler.Context;
-}
-
-HEX: '0x' [0-9a-fA-F]+;
-
-ID: [a-zA-Z_][a-zA-Z0-9_]*;
-INT: [0-9]+;
-WS: [ \t\r\n]+ -> skip;
-COMMENT: '//' .*? ([\n] | EOF) -> channel(HIDDEN);
-DIRECTIVE: '#' .*? ([\n] | EOF) -> channel(HIDDEN);
-
-LETTER: '\'' . '\'';
-STRING: '"' .*? '"';
-
-program
- : function+ EOF
- ;
-
-function
- : rtype=type name=ID '(' ( types+=type params+=ID (',' types+=type params+=ID )* )? ')' ';' #functionPrototype
- | rtype=type name=ID '(' ( types+=type params+=ID (',' types+=type params+=ID )* )? ')' block #functionDefinition
- ;
-
-block
- : '{' block_item* '}'
- ;
-
-block_item
- : statement
- | declaration
- ;
-
-statement
- : 'return' expression ';' #returnStatement
- | 'if' '(' expression ')' then=statement ('else' else=statement)? #ifStatement
- | 'for' '(' (initializer=expression)? ';' cond=expression? ';' post=expression? ')' body=statement #forExprStatement
- | 'for' '(' initializer=declaration cond=expression? ';' post=expression? ')' body=statement #forDeclStatement
- | 'while' '(' cond=expression ')' body=statement #whileStatement
- | 'do' body=statement 'while' '(' cond=expression ')' ';' #doWhileStatement
- | 'break' ';' #breakStatement
- | 'continue' ';' #continueStatement
- | expression ';' #expressionStatement
- | block #blockStatement
- | ';' #nullStatement
- ;
-
-
-declaration
- : type name=ID ('=' value=expression)? ';' #variableDeclaration
- ;
-
-expression
- : '(' expression ')' #parenthesizedExpression
-// | left=expression ',' right=expression #commaExpression
- | 'new' type '[' INT? ']' ('{' ( params+=expression (',' params+=expression )* )? '}')? #arrayExpression
- | constant #constantExpression
- | target '=' expression #assignmentExpression
- | '*' expression #dereferenceExpression
- | '&' target #addressOfExpression
- | ID #variableExpression
-
- | ID '(' ( params+=expression (',' params+=expression )* )? ')' #callExpression
- | obj=target '[' indexer=expression ']' #indexExpression
-
- | '!' expression #notExpression
- | '~' expression #invertExpression
-
- | '++' target #incrementPrefixExpression
- | '--' target #decrementPrefixExpression
- | target '++' #incrementPostfixExpression
- | target '--' #decrementPostfixExpression
-
- | left=expression '*' right=expression #multiplyExpression
- | left=expression '/' right=expression #divideExpression
- | left=expression '%' right=expression #modulusExpression
-
- | left=expression '+' right=expression #addExpression
- | left=expression '-' right=expression #subtractExpression
-
- | left=expression '<' right=expression #lessThanExpression
- | left=expression '>' right=expression #greaterThanExpression
- | left=expression '<=' right=expression #lessThanOrEqualExpression
- | left=expression '>=' right=expression #greaterThanOrEqualExpression
- | left=expression '==' right=expression #equalExpression
- | left=expression '!=' right=expression #notEqualExpression
-
- | left=expression '&' right=expression #bitwiseAndExpression
- | left=expression '|' right=expression #bitwiseOrExpression
- | left=expression '^' right=expression #bitwiseXorExpression
-
- | left=expression '<<' right=expression #bitwiseLeftShiftExpression
- | left=expression '>>' right=expression #bitwiseRightShiftExpression
-
- | left=expression '&&' right=expression #logicalAndExpression
- | left=expression '||' right=expression #logicalOrExpression
-
- | target '*=' expression #compoundMultiplyExpression
- | target '/=' expression #compoundDivideExpression
- | target '%=' expression #compoundModulusExpression
-
- | target '+=' expression #compoundAddExpression
- | target '-=' expression #compoundSubtractExpression
-
- | target '&=' expression #compoundBitwiseAndExpression
- | target '|=' expression #compoundBitwiseOrExpression
- | target '^=' expression #compoundBitwiseXorExpression
-
- | target '<<=' expression #compoundBitwiseLeftShiftExpression
- | target '>>=' expression #compoundBitwiseRightShiftExpression
-
- | cond=expression '?' then=expression ':' else=expression #ternaryExpression
- ;
-
-constant
- : INT # intConstant
- | HEX # hexConstant
- | LETTER # charConstant
- | STRING # stringConstant
- ;
-
-type
- : 'int'
- | 'char'
- | type '*'
- ;
-
-target
- : ID # variableTarget
- | obj=target '[' indexer=expression ']' #indexerTarget
- ;
\ No newline at end of file
diff --git a/Compiler/CType.cs b/Compiler/CType.cs
deleted file mode 100644
index 61b5108..0000000
--- a/Compiler/CType.cs
+++ /dev/null
@@ -1,31 +0,0 @@
-namespace Q1.Compiler.visitors;
-
-public class CType
-{
- public string Name;
- public int Size;
-
- public CType(string name, int size)
- {
- this.Name = name;
- this.Size = size;
-
- if (size > 2)
- throw new CompilerException("Types that take up more than 2 bytes are not supported");
- }
-
- public override string ToString() => this.Name;
-
- public static readonly CType Int = new("int", 2);
- public static readonly CType Char = new("char", 1);
-}
-
-public class CTypePtr : CType
-{
- public CType Sub;
-
- public CTypePtr(CType sub) : base($"{sub.Name}*",2)
- {
- this.Sub = sub;
- }
-}
\ No newline at end of file
diff --git a/Compiler/CommentCompilationMode.cs b/Compiler/CommentCompilationMode.cs
deleted file mode 100644
index 0ee20fd..0000000
--- a/Compiler/CommentCompilationMode.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-namespace Q1.Compiler;
-
-[Flags]
-public enum CommentCompilationMode
-{
- None = 0,
- UserDefined = 1 << 0,
- Generated = 1 << 1,
- All = CommentCompilationMode.UserDefined | CommentCompilationMode.Generated
-}
\ No newline at end of file
diff --git a/Compiler/Compiler.csproj b/Compiler/Compiler.csproj
deleted file mode 100644
index 623282e..0000000
--- a/Compiler/Compiler.csproj
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
- Exe
- net9.0
- enable
- enable
- Q1.Compiler
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Compiler/CompilerException.cs b/Compiler/CompilerException.cs
deleted file mode 100644
index f5a78f1..0000000
--- a/Compiler/CompilerException.cs
+++ /dev/null
@@ -1,4 +0,0 @@
-namespace Q1.Compiler;
-
-public class CompilerException(string message)
- : Exception(message);
\ No newline at end of file
diff --git a/Compiler/CompilerExtensions.cs b/Compiler/CompilerExtensions.cs
deleted file mode 100644
index f1f0ee6..0000000
--- a/Compiler/CompilerExtensions.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-namespace Q1.Compiler;
-
-public static class CompilerExtensions
-{
- public static string TrimStart(this string source, string search)
- {
- if (source.StartsWith(search))
- return source[search.Length..];
-
- return source;
- }
-}
\ No newline at end of file
diff --git a/Compiler/CompilerOptions.cs b/Compiler/CompilerOptions.cs
deleted file mode 100644
index 87ec384..0000000
--- a/Compiler/CompilerOptions.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-namespace Q1.Compiler;
-
-using CommandLine;
-
-public class CompilerOptions
-{
- [Option('i', "input", Required = true, HelpText = "Input file to compile.")]
- public string InputFile { get; set; }
-
- [Option('o', "output", Required = true, HelpText = "Output file to write the compiled code.")]
- public string OutputFile { get; set; }
-
- [Option('c', "comment-compilation", Required = false, HelpText = "Comments to preserve in the compiled result")]
- public CommentCompilationMode CommentCompilationMode { get; set; } = CommentCompilationMode.UserDefined;
-
- [Option('v', "verbose", Required = false, HelpText = "Enable verbose output during compilation.")]
- public bool Verbose { get; set; } = false;
-}
\ No newline at end of file
diff --git a/Compiler/Context.cs b/Compiler/Context.cs
deleted file mode 100644
index 52e577f..0000000
--- a/Compiler/Context.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-namespace Q1.Compiler;
-
-using Antlr4.Runtime;
-
-public class Context : ParserRuleContext
-{
- public string? LoopEndBranch;
- public string? LoopBodyBranch;
-
- public Context() { }
-
- public Context(ParserRuleContext parent, int invokingStateNumber)
- : base((Context) parent, invokingStateNumber)
- {
- }
-
-
- public void SyncProps(Context childCtx)
- {
- childCtx.LoopBodyBranch = this.LoopBodyBranch;
- childCtx.LoopEndBranch = this.LoopEndBranch;
- }
-}
\ No newline at end of file
diff --git a/Compiler/FunctionReference.cs b/Compiler/FunctionReference.cs
deleted file mode 100644
index b63247a..0000000
--- a/Compiler/FunctionReference.cs
+++ /dev/null
@@ -1,129 +0,0 @@
-namespace Q1.Compiler;
-
-using System.Reflection.Metadata;
-using System.Text;
-using visitors;
-
-public class FunctionReference
-{
- // TODO: Implement return type
- public string Name;
- public CType Type;
- public List Overloads = new();
-
- public FunctionReference(string name, CType type)
- {
- this.Type = type;
- this.Name = name;
- }
-
- public string GetBranchName(FunctionOverload overload)
- {
- List<(string paramName, CType paramType)> parameters = overload
- .ParameterNames
- .Zip(overload.ParameterTypes)
- .ToList();
-
- StringBuilder branchName = new();
- branchName.Append($"_{this.Name}");
-
- if (parameters.Count > 0)
- {
- branchName.Append($"_{string.Join("__", parameters
- .Select(x => $"{x.paramType}_{x.paramName}"))}");
- }
-
- return branchName.ToString();
- }
-
- public string GetBranchFriendlyName(FunctionOverload overload)
- {
- List<(string paramName, CType paramType)> parameters = overload
- .ParameterNames
- .Zip(overload.ParameterTypes)
- .ToList();
-
- StringBuilder branchName = new();
- branchName.Append($"{this.Type} {this.Name}");
- branchName.Append("(");
-
- branchName.Append(string.Join(", ", parameters
- .Select(x => $"{x.paramType} {x.paramName}")));
-
- branchName.Append(")");
-
- return branchName.ToString();
- }
-
- public FunctionOverload CreateOverloadWithBody(List parameterNames, List parameterTypes)
- {
- FunctionOverload? existingOverload = this.Overloads
- .FirstOrDefault(x => x.ParamsMatch(parameterNames, parameterTypes));
-
- if (existingOverload != null)
- {
- if (existingOverload.BodyImplemented)
- throw new CompilerException($"Cannot define another overload for {this.Name},"
- + $" as one with an identical signature and body already exists.");
-
- existingOverload.BodyImplemented = true;
- return existingOverload;
- }
- else
- {
- FunctionOverload newOverload = new(parameterNames, parameterTypes, true);
- this.Overloads.Add(newOverload);
- return newOverload;
- }
- }
-
- public FunctionOverload CreateOverloadWithoutBody(List parameterNames, List parameterTypes)
- {
- FunctionOverload? existingOverload = this.Overloads
- .FirstOrDefault(x => x.ParamsMatch(parameterNames, parameterTypes));
-
- if (existingOverload != null)
- {
- if (!existingOverload.BodyImplemented)
- throw new CompilerException($"Cannot prototype another overload for {this.Name},"
- + $" as one with an identical signature already exists.");
- return existingOverload;
- }
- else
- {
- FunctionOverload newOverload = new(parameterNames, parameterTypes, false);
- this.Overloads.Add(newOverload);
- return newOverload;
- }
- }
- public FunctionOverload GetOverload(int paramsCount)
- {
- FunctionOverload? overload = this.Overloads
- .FirstOrDefault(x => x.ParameterTypes.Count == paramsCount);
-
- if (overload != null)
- return overload;
-
- throw new CompilerException($"Overload for {this.Name} with {paramsCount} arguments could not be found.");
- }
-}
-
-public class FunctionOverload
-{
- public List ParameterTypes;
- public List ParameterNames;
- public bool BodyImplemented;
-
- public FunctionOverload(List parameterNames, List parameterTypes, bool bodyImplemented)
- {
- this.ParameterTypes = parameterTypes;
- this.ParameterNames = parameterNames;
- this.BodyImplemented = bodyImplemented;
- }
-
- public bool ParamsMatch(List parameterNames, List parameterTypes)
- {
- return this.ParameterNames.SequenceEqual(parameterNames)
- && this.ParameterTypes.SequenceEqual(parameterTypes);
- }
-}
\ No newline at end of file
diff --git a/Compiler/Optimizer.cs b/Compiler/Optimizer.cs
deleted file mode 100644
index 4646c1c..0000000
--- a/Compiler/Optimizer.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-namespace Q1.Compiler;
-
-using System.Text.RegularExpressions;
-
-public class Optimizer
-{
- private string _instructions;
- private int _currentIndex = 0;
-
- public Optimizer(List instructions)
- {
- this._instructions = string.Join(Environment.NewLine, instructions);
- }
-
- public string Optimize()
- {
- string output = this._instructions;
- output = this.RemoveRedundantFallbackReturns(output);
-
- return output;
- }
-
- private string RemoveRedundantFallbackReturns(string input)
- {
- string pattern = @"(mov .*, V0\n\s*ret\n)\s*mov 0, V0\n\s*ret";
- return Regex.Replace(input, pattern, "$1");
- }
-}
\ No newline at end of file
diff --git a/Compiler/PreprocessingCharStream.cs b/Compiler/PreprocessingCharStream.cs
deleted file mode 100644
index 428cbff..0000000
--- a/Compiler/PreprocessingCharStream.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-namespace Q1.Compiler;
-
-using Antlr4.Runtime;
-using Antlr4.Runtime.Misc;
-
-public class PreprocessingCharStream : ICharStream
-{
- private readonly AntlrInputStream inner;
-
- public PreprocessingCharStream(string filePath)
- {
- string preprocessed = Preprocessor.Process(filePath);
- this.inner = new AntlrInputStream(preprocessed);
- }
-
- public int Index => this.inner.Index;
- public int Size => this.inner.Size;
- public string SourceName => this.inner.SourceName;
- public void Consume() => this.inner.Consume();
- public int LA(int i) => this.inner.LA(i);
- public int Mark() => this.inner.Mark();
- public void Release(int marker) => this.inner.Release(marker);
- public void Seek(int index) => this.inner.Seek(index);
- public string GetText(Interval interval) => this.inner.GetText(interval);
-}
\ No newline at end of file
diff --git a/Compiler/Preprocessor.cs b/Compiler/Preprocessor.cs
deleted file mode 100644
index f11ae3a..0000000
--- a/Compiler/Preprocessor.cs
+++ /dev/null
@@ -1,57 +0,0 @@
-namespace Q1.Compiler;
-
-using System.Text.RegularExpressions;
-
-public static class Preprocessor
-{
- private static readonly Dictionary Defines = new();
-
- public static string Process(string filePath)
- {
- List lines = [];
- ProcessFile(filePath, lines, []);
- return string.Join(Environment.NewLine, lines);
- }
-
- private static void ProcessFile(string filePath, List output, HashSet includeGuard)
- {
- if (includeGuard.Contains(Path.GetFullPath(filePath)))
- return; // prevent recursive includes
-
- includeGuard.Add(Path.GetFullPath(filePath));
-
- foreach (string rawLine in File.ReadAllLines(filePath))
- {
- string line = rawLine.Trim();
-
- if (line.StartsWith("#include"))
- {
- Match match = Regex.Match(line, "#include\\s+\"([^\"]+)\"");
- if (match.Success)
- {
- string includePath = Path.Combine(Path.GetDirectoryName(filePath)!, match.Groups[1].Value);
- ProcessFile(includePath, output, includeGuard);
- }
- continue;
- }
- else if (line.StartsWith("#define"))
- {
- Match match = Regex.Match(line, "#define\\s+(\\w+)\\s+(.*)");
- if (match.Success)
- Defines[match.Groups[1].Value] = match.Groups[2].Value;
- continue;
- }
- else if (line.StartsWith("#load"))
- {
- output.Add(line.Replace("#load", "#.include"));
- continue;
- }
-
- // expand macros
- foreach (KeyValuePair kvp in Defines.OrderByDescending(k => k.Key.Length))
- line = line.Replace(kvp.Key, kvp.Value);
-
- output.Add(line);
- }
- }
-}
\ No newline at end of file
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(args)
- .WithParsed(Program.Main);
- }
-
- public static void Main(CompilerOptions options)
- {
- options.InputFile = options.InputFile;
-
- try
- {
- ICharStream inputStream = new PreprocessingCharStream(options.InputFile);
- IEnumerable 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 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
diff --git a/Compiler/Target.cs b/Compiler/Target.cs
deleted file mode 100644
index 84d055d..0000000
--- a/Compiler/Target.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-namespace Q1.Compiler.visitors;
-
-public class Target
-{
- public string Value;
- public string Address;
- public CType Type;
-
- public Target(CType type, string value, string address)
- {
- this.Value = value;
- this.Address = address;
- this.Type = type;
- }
-}
\ No newline at end of file
diff --git a/Compiler/VariableReference.cs b/Compiler/VariableReference.cs
deleted file mode 100644
index 4682d40..0000000
--- a/Compiler/VariableReference.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-namespace Q1.Compiler;
-
-using visitors;
-
-public class VariableReference
-{
- public int Address;
- public CType Type;
-
- public VariableReference(int address, CType type)
- {
- this.Address = address;
- this.Type = type;
- }
-}
\ No newline at end of file
diff --git a/Compiler/gen/CGrammar.interp b/Compiler/gen/CGrammar.interp
deleted file mode 100644
index e1368df..0000000
--- a/Compiler/gen/CGrammar.interp
+++ /dev/null
@@ -1,145 +0,0 @@
-token literal names:
-null
-'('
-','
-')'
-';'
-'{'
-'}'
-'return'
-'if'
-'else'
-'for'
-'while'
-'do'
-'break'
-'continue'
-'='
-'new'
-'['
-']'
-'*'
-'&'
-'!'
-'~'
-'++'
-'--'
-'/'
-'%'
-'+'
-'-'
-'<'
-'>'
-'<='
-'>='
-'=='
-'!='
-'|'
-'^'
-'<<'
-'>>'
-'&&'
-'||'
-'*='
-'/='
-'%='
-'+='
-'-='
-'&='
-'|='
-'^='
-'<<='
-'>>='
-'?'
-':'
-'int'
-'char'
-null
-null
-null
-null
-null
-null
-null
-null
-
-token symbolic names:
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-HEX
-ID
-INT
-WS
-COMMENT
-DIRECTIVE
-LETTER
-STRING
-
-rule names:
-program
-function
-block
-block_item
-statement
-declaration
-expression
-constant
-type
-target
-
-
-atn:
-[4, 1, 62, 361, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 1, 0, 4, 0, 22, 8, 0, 11, 0, 12, 0, 23, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 37, 8, 1, 10, 1, 12, 1, 40, 9, 1, 3, 1, 42, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 56, 8, 1, 10, 1, 12, 1, 59, 9, 1, 3, 1, 61, 8, 1, 1, 1, 1, 1, 1, 1, 3, 1, 66, 8, 1, 1, 2, 1, 2, 5, 2, 70, 8, 2, 10, 2, 12, 2, 73, 9, 2, 1, 2, 1, 2, 1, 3, 1, 3, 3, 3, 79, 8, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 92, 8, 4, 1, 4, 1, 4, 1, 4, 3, 4, 97, 8, 4, 1, 4, 1, 4, 3, 4, 101, 8, 4, 1, 4, 1, 4, 3, 4, 105, 8, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 113, 8, 4, 1, 4, 1, 4, 3, 4, 117, 8, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 145, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 151, 8, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 164, 8, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 5, 6, 171, 8, 6, 10, 6, 12, 6, 174, 9, 6, 3, 6, 176, 8, 6, 1, 6, 3, 6, 179, 8, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 5, 6, 196, 8, 6, 10, 6, 12, 6, 199, 9, 6, 3, 6, 201, 8, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 263, 8, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 5, 6, 325, 8, 6, 10, 6, 12, 6, 328, 9, 6, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 334, 8, 7, 1, 8, 1, 8, 1, 8, 3, 8, 339, 8, 8, 1, 8, 1, 8, 5, 8, 343, 8, 8, 10, 8, 12, 8, 346, 9, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 5, 9, 356, 8, 9, 10, 9, 12, 9, 359, 9, 9, 1, 9, 0, 3, 12, 16, 18, 10, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 0, 0, 430, 0, 21, 1, 0, 0, 0, 2, 65, 1, 0, 0, 0, 4, 67, 1, 0, 0, 0, 6, 78, 1, 0, 0, 0, 8, 144, 1, 0, 0, 0, 10, 146, 1, 0, 0, 0, 12, 262, 1, 0, 0, 0, 14, 333, 1, 0, 0, 0, 16, 338, 1, 0, 0, 0, 18, 347, 1, 0, 0, 0, 20, 22, 3, 2, 1, 0, 21, 20, 1, 0, 0, 0, 22, 23, 1, 0, 0, 0, 23, 21, 1, 0, 0, 0, 23, 24, 1, 0, 0, 0, 24, 25, 1, 0, 0, 0, 25, 26, 5, 0, 0, 1, 26, 1, 1, 0, 0, 0, 27, 28, 3, 16, 8, 0, 28, 29, 5, 56, 0, 0, 29, 41, 5, 1, 0, 0, 30, 31, 3, 16, 8, 0, 31, 38, 5, 56, 0, 0, 32, 33, 5, 2, 0, 0, 33, 34, 3, 16, 8, 0, 34, 35, 5, 56, 0, 0, 35, 37, 1, 0, 0, 0, 36, 32, 1, 0, 0, 0, 37, 40, 1, 0, 0, 0, 38, 36, 1, 0, 0, 0, 38, 39, 1, 0, 0, 0, 39, 42, 1, 0, 0, 0, 40, 38, 1, 0, 0, 0, 41, 30, 1, 0, 0, 0, 41, 42, 1, 0, 0, 0, 42, 43, 1, 0, 0, 0, 43, 44, 5, 3, 0, 0, 44, 45, 5, 4, 0, 0, 45, 66, 1, 0, 0, 0, 46, 47, 3, 16, 8, 0, 47, 48, 5, 56, 0, 0, 48, 60, 5, 1, 0, 0, 49, 50, 3, 16, 8, 0, 50, 57, 5, 56, 0, 0, 51, 52, 5, 2, 0, 0, 52, 53, 3, 16, 8, 0, 53, 54, 5, 56, 0, 0, 54, 56, 1, 0, 0, 0, 55, 51, 1, 0, 0, 0, 56, 59, 1, 0, 0, 0, 57, 55, 1, 0, 0, 0, 57, 58, 1, 0, 0, 0, 58, 61, 1, 0, 0, 0, 59, 57, 1, 0, 0, 0, 60, 49, 1, 0, 0, 0, 60, 61, 1, 0, 0, 0, 61, 62, 1, 0, 0, 0, 62, 63, 5, 3, 0, 0, 63, 64, 3, 4, 2, 0, 64, 66, 1, 0, 0, 0, 65, 27, 1, 0, 0, 0, 65, 46, 1, 0, 0, 0, 66, 3, 1, 0, 0, 0, 67, 71, 5, 5, 0, 0, 68, 70, 3, 6, 3, 0, 69, 68, 1, 0, 0, 0, 70, 73, 1, 0, 0, 0, 71, 69, 1, 0, 0, 0, 71, 72, 1, 0, 0, 0, 72, 74, 1, 0, 0, 0, 73, 71, 1, 0, 0, 0, 74, 75, 5, 6, 0, 0, 75, 5, 1, 0, 0, 0, 76, 79, 3, 8, 4, 0, 77, 79, 3, 10, 5, 0, 78, 76, 1, 0, 0, 0, 78, 77, 1, 0, 0, 0, 79, 7, 1, 0, 0, 0, 80, 81, 5, 7, 0, 0, 81, 82, 3, 12, 6, 0, 82, 83, 5, 4, 0, 0, 83, 145, 1, 0, 0, 0, 84, 85, 5, 8, 0, 0, 85, 86, 5, 1, 0, 0, 86, 87, 3, 12, 6, 0, 87, 88, 5, 3, 0, 0, 88, 91, 3, 8, 4, 0, 89, 90, 5, 9, 0, 0, 90, 92, 3, 8, 4, 0, 91, 89, 1, 0, 0, 0, 91, 92, 1, 0, 0, 0, 92, 145, 1, 0, 0, 0, 93, 94, 5, 10, 0, 0, 94, 96, 5, 1, 0, 0, 95, 97, 3, 12, 6, 0, 96, 95, 1, 0, 0, 0, 96, 97, 1, 0, 0, 0, 97, 98, 1, 0, 0, 0, 98, 100, 5, 4, 0, 0, 99, 101, 3, 12, 6, 0, 100, 99, 1, 0, 0, 0, 100, 101, 1, 0, 0, 0, 101, 102, 1, 0, 0, 0, 102, 104, 5, 4, 0, 0, 103, 105, 3, 12, 6, 0, 104, 103, 1, 0, 0, 0, 104, 105, 1, 0, 0, 0, 105, 106, 1, 0, 0, 0, 106, 107, 5, 3, 0, 0, 107, 145, 3, 8, 4, 0, 108, 109, 5, 10, 0, 0, 109, 110, 5, 1, 0, 0, 110, 112, 3, 10, 5, 0, 111, 113, 3, 12, 6, 0, 112, 111, 1, 0, 0, 0, 112, 113, 1, 0, 0, 0, 113, 114, 1, 0, 0, 0, 114, 116, 5, 4, 0, 0, 115, 117, 3, 12, 6, 0, 116, 115, 1, 0, 0, 0, 116, 117, 1, 0, 0, 0, 117, 118, 1, 0, 0, 0, 118, 119, 5, 3, 0, 0, 119, 120, 3, 8, 4, 0, 120, 145, 1, 0, 0, 0, 121, 122, 5, 11, 0, 0, 122, 123, 5, 1, 0, 0, 123, 124, 3, 12, 6, 0, 124, 125, 5, 3, 0, 0, 125, 126, 3, 8, 4, 0, 126, 145, 1, 0, 0, 0, 127, 128, 5, 12, 0, 0, 128, 129, 3, 8, 4, 0, 129, 130, 5, 11, 0, 0, 130, 131, 5, 1, 0, 0, 131, 132, 3, 12, 6, 0, 132, 133, 5, 3, 0, 0, 133, 134, 5, 4, 0, 0, 134, 145, 1, 0, 0, 0, 135, 136, 5, 13, 0, 0, 136, 145, 5, 4, 0, 0, 137, 138, 5, 14, 0, 0, 138, 145, 5, 4, 0, 0, 139, 140, 3, 12, 6, 0, 140, 141, 5, 4, 0, 0, 141, 145, 1, 0, 0, 0, 142, 145, 3, 4, 2, 0, 143, 145, 5, 4, 0, 0, 144, 80, 1, 0, 0, 0, 144, 84, 1, 0, 0, 0, 144, 93, 1, 0, 0, 0, 144, 108, 1, 0, 0, 0, 144, 121, 1, 0, 0, 0, 144, 127, 1, 0, 0, 0, 144, 135, 1, 0, 0, 0, 144, 137, 1, 0, 0, 0, 144, 139, 1, 0, 0, 0, 144, 142, 1, 0, 0, 0, 144, 143, 1, 0, 0, 0, 145, 9, 1, 0, 0, 0, 146, 147, 3, 16, 8, 0, 147, 150, 5, 56, 0, 0, 148, 149, 5, 15, 0, 0, 149, 151, 3, 12, 6, 0, 150, 148, 1, 0, 0, 0, 150, 151, 1, 0, 0, 0, 151, 152, 1, 0, 0, 0, 152, 153, 5, 4, 0, 0, 153, 11, 1, 0, 0, 0, 154, 155, 6, 6, -1, 0, 155, 156, 5, 1, 0, 0, 156, 157, 3, 12, 6, 0, 157, 158, 5, 3, 0, 0, 158, 263, 1, 0, 0, 0, 159, 160, 5, 16, 0, 0, 160, 161, 3, 16, 8, 0, 161, 163, 5, 17, 0, 0, 162, 164, 5, 57, 0, 0, 163, 162, 1, 0, 0, 0, 163, 164, 1, 0, 0, 0, 164, 165, 1, 0, 0, 0, 165, 178, 5, 18, 0, 0, 166, 175, 5, 5, 0, 0, 167, 172, 3, 12, 6, 0, 168, 169, 5, 2, 0, 0, 169, 171, 3, 12, 6, 0, 170, 168, 1, 0, 0, 0, 171, 174, 1, 0, 0, 0, 172, 170, 1, 0, 0, 0, 172, 173, 1, 0, 0, 0, 173, 176, 1, 0, 0, 0, 174, 172, 1, 0, 0, 0, 175, 167, 1, 0, 0, 0, 175, 176, 1, 0, 0, 0, 176, 177, 1, 0, 0, 0, 177, 179, 5, 6, 0, 0, 178, 166, 1, 0, 0, 0, 178, 179, 1, 0, 0, 0, 179, 263, 1, 0, 0, 0, 180, 263, 3, 14, 7, 0, 181, 182, 3, 18, 9, 0, 182, 183, 5, 15, 0, 0, 183, 184, 3, 12, 6, 41, 184, 263, 1, 0, 0, 0, 185, 186, 5, 19, 0, 0, 186, 263, 3, 12, 6, 40, 187, 188, 5, 20, 0, 0, 188, 263, 3, 18, 9, 0, 189, 263, 5, 56, 0, 0, 190, 191, 5, 56, 0, 0, 191, 200, 5, 1, 0, 0, 192, 197, 3, 12, 6, 0, 193, 194, 5, 2, 0, 0, 194, 196, 3, 12, 6, 0, 195, 193, 1, 0, 0, 0, 196, 199, 1, 0, 0, 0, 197, 195, 1, 0, 0, 0, 197, 198, 1, 0, 0, 0, 198, 201, 1, 0, 0, 0, 199, 197, 1, 0, 0, 0, 200, 192, 1, 0, 0, 0, 200, 201, 1, 0, 0, 0, 201, 202, 1, 0, 0, 0, 202, 263, 5, 3, 0, 0, 203, 204, 3, 18, 9, 0, 204, 205, 5, 17, 0, 0, 205, 206, 3, 12, 6, 0, 206, 207, 5, 18, 0, 0, 207, 263, 1, 0, 0, 0, 208, 209, 5, 21, 0, 0, 209, 263, 3, 12, 6, 35, 210, 211, 5, 22, 0, 0, 211, 263, 3, 12, 6, 34, 212, 213, 5, 23, 0, 0, 213, 263, 3, 18, 9, 0, 214, 215, 5, 24, 0, 0, 215, 263, 3, 18, 9, 0, 216, 217, 3, 18, 9, 0, 217, 218, 5, 23, 0, 0, 218, 263, 1, 0, 0, 0, 219, 220, 3, 18, 9, 0, 220, 221, 5, 24, 0, 0, 221, 263, 1, 0, 0, 0, 222, 223, 3, 18, 9, 0, 223, 224, 5, 41, 0, 0, 224, 225, 3, 12, 6, 11, 225, 263, 1, 0, 0, 0, 226, 227, 3, 18, 9, 0, 227, 228, 5, 42, 0, 0, 228, 229, 3, 12, 6, 10, 229, 263, 1, 0, 0, 0, 230, 231, 3, 18, 9, 0, 231, 232, 5, 43, 0, 0, 232, 233, 3, 12, 6, 9, 233, 263, 1, 0, 0, 0, 234, 235, 3, 18, 9, 0, 235, 236, 5, 44, 0, 0, 236, 237, 3, 12, 6, 8, 237, 263, 1, 0, 0, 0, 238, 239, 3, 18, 9, 0, 239, 240, 5, 45, 0, 0, 240, 241, 3, 12, 6, 7, 241, 263, 1, 0, 0, 0, 242, 243, 3, 18, 9, 0, 243, 244, 5, 46, 0, 0, 244, 245, 3, 12, 6, 6, 245, 263, 1, 0, 0, 0, 246, 247, 3, 18, 9, 0, 247, 248, 5, 47, 0, 0, 248, 249, 3, 12, 6, 5, 249, 263, 1, 0, 0, 0, 250, 251, 3, 18, 9, 0, 251, 252, 5, 48, 0, 0, 252, 253, 3, 12, 6, 4, 253, 263, 1, 0, 0, 0, 254, 255, 3, 18, 9, 0, 255, 256, 5, 49, 0, 0, 256, 257, 3, 12, 6, 3, 257, 263, 1, 0, 0, 0, 258, 259, 3, 18, 9, 0, 259, 260, 5, 50, 0, 0, 260, 261, 3, 12, 6, 2, 261, 263, 1, 0, 0, 0, 262, 154, 1, 0, 0, 0, 262, 159, 1, 0, 0, 0, 262, 180, 1, 0, 0, 0, 262, 181, 1, 0, 0, 0, 262, 185, 1, 0, 0, 0, 262, 187, 1, 0, 0, 0, 262, 189, 1, 0, 0, 0, 262, 190, 1, 0, 0, 0, 262, 203, 1, 0, 0, 0, 262, 208, 1, 0, 0, 0, 262, 210, 1, 0, 0, 0, 262, 212, 1, 0, 0, 0, 262, 214, 1, 0, 0, 0, 262, 216, 1, 0, 0, 0, 262, 219, 1, 0, 0, 0, 262, 222, 1, 0, 0, 0, 262, 226, 1, 0, 0, 0, 262, 230, 1, 0, 0, 0, 262, 234, 1, 0, 0, 0, 262, 238, 1, 0, 0, 0, 262, 242, 1, 0, 0, 0, 262, 246, 1, 0, 0, 0, 262, 250, 1, 0, 0, 0, 262, 254, 1, 0, 0, 0, 262, 258, 1, 0, 0, 0, 263, 326, 1, 0, 0, 0, 264, 265, 10, 29, 0, 0, 265, 266, 5, 19, 0, 0, 266, 325, 3, 12, 6, 30, 267, 268, 10, 28, 0, 0, 268, 269, 5, 25, 0, 0, 269, 325, 3, 12, 6, 29, 270, 271, 10, 27, 0, 0, 271, 272, 5, 26, 0, 0, 272, 325, 3, 12, 6, 28, 273, 274, 10, 26, 0, 0, 274, 275, 5, 27, 0, 0, 275, 325, 3, 12, 6, 27, 276, 277, 10, 25, 0, 0, 277, 278, 5, 28, 0, 0, 278, 325, 3, 12, 6, 26, 279, 280, 10, 24, 0, 0, 280, 281, 5, 29, 0, 0, 281, 325, 3, 12, 6, 25, 282, 283, 10, 23, 0, 0, 283, 284, 5, 30, 0, 0, 284, 325, 3, 12, 6, 24, 285, 286, 10, 22, 0, 0, 286, 287, 5, 31, 0, 0, 287, 325, 3, 12, 6, 23, 288, 289, 10, 21, 0, 0, 289, 290, 5, 32, 0, 0, 290, 325, 3, 12, 6, 22, 291, 292, 10, 20, 0, 0, 292, 293, 5, 33, 0, 0, 293, 325, 3, 12, 6, 21, 294, 295, 10, 19, 0, 0, 295, 296, 5, 34, 0, 0, 296, 325, 3, 12, 6, 20, 297, 298, 10, 18, 0, 0, 298, 299, 5, 20, 0, 0, 299, 325, 3, 12, 6, 19, 300, 301, 10, 17, 0, 0, 301, 302, 5, 35, 0, 0, 302, 325, 3, 12, 6, 18, 303, 304, 10, 16, 0, 0, 304, 305, 5, 36, 0, 0, 305, 325, 3, 12, 6, 17, 306, 307, 10, 15, 0, 0, 307, 308, 5, 37, 0, 0, 308, 325, 3, 12, 6, 16, 309, 310, 10, 14, 0, 0, 310, 311, 5, 38, 0, 0, 311, 325, 3, 12, 6, 15, 312, 313, 10, 13, 0, 0, 313, 314, 5, 39, 0, 0, 314, 325, 3, 12, 6, 14, 315, 316, 10, 12, 0, 0, 316, 317, 5, 40, 0, 0, 317, 325, 3, 12, 6, 13, 318, 319, 10, 1, 0, 0, 319, 320, 5, 51, 0, 0, 320, 321, 3, 12, 6, 0, 321, 322, 5, 52, 0, 0, 322, 323, 3, 12, 6, 2, 323, 325, 1, 0, 0, 0, 324, 264, 1, 0, 0, 0, 324, 267, 1, 0, 0, 0, 324, 270, 1, 0, 0, 0, 324, 273, 1, 0, 0, 0, 324, 276, 1, 0, 0, 0, 324, 279, 1, 0, 0, 0, 324, 282, 1, 0, 0, 0, 324, 285, 1, 0, 0, 0, 324, 288, 1, 0, 0, 0, 324, 291, 1, 0, 0, 0, 324, 294, 1, 0, 0, 0, 324, 297, 1, 0, 0, 0, 324, 300, 1, 0, 0, 0, 324, 303, 1, 0, 0, 0, 324, 306, 1, 0, 0, 0, 324, 309, 1, 0, 0, 0, 324, 312, 1, 0, 0, 0, 324, 315, 1, 0, 0, 0, 324, 318, 1, 0, 0, 0, 325, 328, 1, 0, 0, 0, 326, 324, 1, 0, 0, 0, 326, 327, 1, 0, 0, 0, 327, 13, 1, 0, 0, 0, 328, 326, 1, 0, 0, 0, 329, 334, 5, 57, 0, 0, 330, 334, 5, 55, 0, 0, 331, 334, 5, 61, 0, 0, 332, 334, 5, 62, 0, 0, 333, 329, 1, 0, 0, 0, 333, 330, 1, 0, 0, 0, 333, 331, 1, 0, 0, 0, 333, 332, 1, 0, 0, 0, 334, 15, 1, 0, 0, 0, 335, 336, 6, 8, -1, 0, 336, 339, 5, 53, 0, 0, 337, 339, 5, 54, 0, 0, 338, 335, 1, 0, 0, 0, 338, 337, 1, 0, 0, 0, 339, 344, 1, 0, 0, 0, 340, 341, 10, 1, 0, 0, 341, 343, 5, 19, 0, 0, 342, 340, 1, 0, 0, 0, 343, 346, 1, 0, 0, 0, 344, 342, 1, 0, 0, 0, 344, 345, 1, 0, 0, 0, 345, 17, 1, 0, 0, 0, 346, 344, 1, 0, 0, 0, 347, 348, 6, 9, -1, 0, 348, 349, 5, 56, 0, 0, 349, 357, 1, 0, 0, 0, 350, 351, 10, 1, 0, 0, 351, 352, 5, 17, 0, 0, 352, 353, 3, 12, 6, 0, 353, 354, 5, 18, 0, 0, 354, 356, 1, 0, 0, 0, 355, 350, 1, 0, 0, 0, 356, 359, 1, 0, 0, 0, 357, 355, 1, 0, 0, 0, 357, 358, 1, 0, 0, 0, 358, 19, 1, 0, 0, 0, 359, 357, 1, 0, 0, 0, 29, 23, 38, 41, 57, 60, 65, 71, 78, 91, 96, 100, 104, 112, 116, 144, 150, 163, 172, 175, 178, 197, 200, 262, 324, 326, 333, 338, 344, 357]
\ No newline at end of file
diff --git a/Compiler/gen/CGrammar.tokens b/Compiler/gen/CGrammar.tokens
deleted file mode 100644
index b6c3179..0000000
--- a/Compiler/gen/CGrammar.tokens
+++ /dev/null
@@ -1,116 +0,0 @@
-T__0=1
-T__1=2
-T__2=3
-T__3=4
-T__4=5
-T__5=6
-T__6=7
-T__7=8
-T__8=9
-T__9=10
-T__10=11
-T__11=12
-T__12=13
-T__13=14
-T__14=15
-T__15=16
-T__16=17
-T__17=18
-T__18=19
-T__19=20
-T__20=21
-T__21=22
-T__22=23
-T__23=24
-T__24=25
-T__25=26
-T__26=27
-T__27=28
-T__28=29
-T__29=30
-T__30=31
-T__31=32
-T__32=33
-T__33=34
-T__34=35
-T__35=36
-T__36=37
-T__37=38
-T__38=39
-T__39=40
-T__40=41
-T__41=42
-T__42=43
-T__43=44
-T__44=45
-T__45=46
-T__46=47
-T__47=48
-T__48=49
-T__49=50
-T__50=51
-T__51=52
-T__52=53
-T__53=54
-HEX=55
-ID=56
-INT=57
-WS=58
-COMMENT=59
-DIRECTIVE=60
-LETTER=61
-STRING=62
-'('=1
-','=2
-')'=3
-';'=4
-'{'=5
-'}'=6
-'return'=7
-'if'=8
-'else'=9
-'for'=10
-'while'=11
-'do'=12
-'break'=13
-'continue'=14
-'='=15
-'new'=16
-'['=17
-']'=18
-'*'=19
-'&'=20
-'!'=21
-'~'=22
-'++'=23
-'--'=24
-'/'=25
-'%'=26
-'+'=27
-'-'=28
-'<'=29
-'>'=30
-'<='=31
-'>='=32
-'=='=33
-'!='=34
-'|'=35
-'^'=36
-'<<'=37
-'>>'=38
-'&&'=39
-'||'=40
-'*='=41
-'/='=42
-'%='=43
-'+='=44
-'-='=45
-'&='=46
-'|='=47
-'^='=48
-'<<='=49
-'>>='=50
-'?'=51
-':'=52
-'int'=53
-'char'=54
diff --git a/Compiler/gen/CGrammarBaseVisitor.cs b/Compiler/gen/CGrammarBaseVisitor.cs
deleted file mode 100644
index a9dde6b..0000000
--- a/Compiler/gen/CGrammarBaseVisitor.cs
+++ /dev/null
@@ -1,781 +0,0 @@
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-// ANTLR Version: 4.13.2
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-// Generated from /Users/melodidey/Source/csharp/Q1/Compiler/CGrammar.g4 by ANTLR 4.13.2
-
-// Unreachable code detected
-#pragma warning disable 0162
-// The variable '...' is assigned but its value is never used
-#pragma warning disable 0219
-// Missing XML comment for publicly visible type or member '...'
-#pragma warning disable 1591
-// Ambiguous reference in cref attribute
-#pragma warning disable 419
-
-using Antlr4.Runtime.Misc;
-using Antlr4.Runtime.Tree;
-using IToken = Antlr4.Runtime.IToken;
-using ParserRuleContext = Antlr4.Runtime.ParserRuleContext;
-
-///
-/// This class provides an empty implementation of ,
-/// which can be extended to create a visitor which only needs to handle a subset
-/// of the available methods.
-///
-/// The return type of the visit operation.
-[System.CodeDom.Compiler.GeneratedCode("ANTLR", "4.13.2")]
-[System.Diagnostics.DebuggerNonUserCode]
-[System.CLSCompliant(false)]
-public partial class CGrammarBaseVisitor : AbstractParseTreeVisitor, ICGrammarVisitor {
- ///
- /// Visit a parse tree produced by .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitProgram([NotNull] CGrammarParser.ProgramContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the functionPrototype
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitFunctionPrototype([NotNull] CGrammarParser.FunctionPrototypeContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the functionDefinition
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitFunctionDefinition([NotNull] CGrammarParser.FunctionDefinitionContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitBlock([NotNull] CGrammarParser.BlockContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitBlock_item([NotNull] CGrammarParser.Block_itemContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the returnStatement
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitReturnStatement([NotNull] CGrammarParser.ReturnStatementContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the ifStatement
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitIfStatement([NotNull] CGrammarParser.IfStatementContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the forExprStatement
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitForExprStatement([NotNull] CGrammarParser.ForExprStatementContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the forDeclStatement
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitForDeclStatement([NotNull] CGrammarParser.ForDeclStatementContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the whileStatement
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitWhileStatement([NotNull] CGrammarParser.WhileStatementContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the doWhileStatement
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitDoWhileStatement([NotNull] CGrammarParser.DoWhileStatementContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the breakStatement
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitBreakStatement([NotNull] CGrammarParser.BreakStatementContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the continueStatement
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitContinueStatement([NotNull] CGrammarParser.ContinueStatementContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the expressionStatement
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitExpressionStatement([NotNull] CGrammarParser.ExpressionStatementContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the blockStatement
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitBlockStatement([NotNull] CGrammarParser.BlockStatementContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the nullStatement
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitNullStatement([NotNull] CGrammarParser.NullStatementContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the variableDeclaration
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitVariableDeclaration([NotNull] CGrammarParser.VariableDeclarationContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the addressOfExpression
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitAddressOfExpression([NotNull] CGrammarParser.AddressOfExpressionContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the compoundSubtractExpression
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitCompoundSubtractExpression([NotNull] CGrammarParser.CompoundSubtractExpressionContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the modulusExpression
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitModulusExpression([NotNull] CGrammarParser.ModulusExpressionContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the notExpression
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitNotExpression([NotNull] CGrammarParser.NotExpressionContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the decrementPrefixExpression
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitDecrementPrefixExpression([NotNull] CGrammarParser.DecrementPrefixExpressionContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the multiplyExpression
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitMultiplyExpression([NotNull] CGrammarParser.MultiplyExpressionContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the greaterThanExpression
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitGreaterThanExpression([NotNull] CGrammarParser.GreaterThanExpressionContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the bitwiseLeftShiftExpression
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitBitwiseLeftShiftExpression([NotNull] CGrammarParser.BitwiseLeftShiftExpressionContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the bitwiseRightShiftExpression
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitBitwiseRightShiftExpression([NotNull] CGrammarParser.BitwiseRightShiftExpressionContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the variableExpression
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitVariableExpression([NotNull] CGrammarParser.VariableExpressionContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the compoundDivideExpression
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitCompoundDivideExpression([NotNull] CGrammarParser.CompoundDivideExpressionContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the parenthesizedExpression
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitParenthesizedExpression([NotNull] CGrammarParser.ParenthesizedExpressionContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the compoundAddExpression
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitCompoundAddExpression([NotNull] CGrammarParser.CompoundAddExpressionContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the compoundMultiplyExpression
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitCompoundMultiplyExpression([NotNull] CGrammarParser.CompoundMultiplyExpressionContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the compoundBitwiseXorExpression
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitCompoundBitwiseXorExpression([NotNull] CGrammarParser.CompoundBitwiseXorExpressionContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the bitwiseAndExpression
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitBitwiseAndExpression([NotNull] CGrammarParser.BitwiseAndExpressionContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the lessThanExpression
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitLessThanExpression([NotNull] CGrammarParser.LessThanExpressionContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the logicalAndExpression
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitLogicalAndExpression([NotNull] CGrammarParser.LogicalAndExpressionContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the indexExpression
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitIndexExpression([NotNull] CGrammarParser.IndexExpressionContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the invertExpression
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitInvertExpression([NotNull] CGrammarParser.InvertExpressionContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the dereferenceExpression
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitDereferenceExpression([NotNull] CGrammarParser.DereferenceExpressionContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the equalExpression
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitEqualExpression([NotNull] CGrammarParser.EqualExpressionContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the bitwiseXorExpression
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitBitwiseXorExpression([NotNull] CGrammarParser.BitwiseXorExpressionContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the arrayExpression
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitArrayExpression([NotNull] CGrammarParser.ArrayExpressionContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the constantExpression
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitConstantExpression([NotNull] CGrammarParser.ConstantExpressionContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the compoundModulusExpression
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitCompoundModulusExpression([NotNull] CGrammarParser.CompoundModulusExpressionContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the lessThanOrEqualExpression
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitLessThanOrEqualExpression([NotNull] CGrammarParser.LessThanOrEqualExpressionContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the incrementPostfixExpression
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitIncrementPostfixExpression([NotNull] CGrammarParser.IncrementPostfixExpressionContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the compoundBitwiseRightShiftExpression
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitCompoundBitwiseRightShiftExpression([NotNull] CGrammarParser.CompoundBitwiseRightShiftExpressionContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the assignmentExpression
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitAssignmentExpression([NotNull] CGrammarParser.AssignmentExpressionContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the notEqualExpression
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitNotEqualExpression([NotNull] CGrammarParser.NotEqualExpressionContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the compoundBitwiseAndExpression
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitCompoundBitwiseAndExpression([NotNull] CGrammarParser.CompoundBitwiseAndExpressionContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the logicalOrExpression
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitLogicalOrExpression([NotNull] CGrammarParser.LogicalOrExpressionContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the incrementPrefixExpression
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitIncrementPrefixExpression([NotNull] CGrammarParser.IncrementPrefixExpressionContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the greaterThanOrEqualExpression
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitGreaterThanOrEqualExpression([NotNull] CGrammarParser.GreaterThanOrEqualExpressionContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the divideExpression
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitDivideExpression([NotNull] CGrammarParser.DivideExpressionContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the bitwiseOrExpression
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitBitwiseOrExpression([NotNull] CGrammarParser.BitwiseOrExpressionContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the callExpression
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitCallExpression([NotNull] CGrammarParser.CallExpressionContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the addExpression
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitAddExpression([NotNull] CGrammarParser.AddExpressionContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the subtractExpression
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitSubtractExpression([NotNull] CGrammarParser.SubtractExpressionContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the compoundBitwiseOrExpression
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitCompoundBitwiseOrExpression([NotNull] CGrammarParser.CompoundBitwiseOrExpressionContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the decrementPostfixExpression
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitDecrementPostfixExpression([NotNull] CGrammarParser.DecrementPostfixExpressionContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the ternaryExpression
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitTernaryExpression([NotNull] CGrammarParser.TernaryExpressionContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the compoundBitwiseLeftShiftExpression
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitCompoundBitwiseLeftShiftExpression([NotNull] CGrammarParser.CompoundBitwiseLeftShiftExpressionContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the intConstant
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitIntConstant([NotNull] CGrammarParser.IntConstantContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the hexConstant
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitHexConstant([NotNull] CGrammarParser.HexConstantContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the charConstant
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitCharConstant([NotNull] CGrammarParser.CharConstantContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the stringConstant
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitStringConstant([NotNull] CGrammarParser.StringConstantContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitType([NotNull] CGrammarParser.TypeContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the indexerTarget
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitIndexerTarget([NotNull] CGrammarParser.IndexerTargetContext context) { return VisitChildren(context); }
- ///
- /// Visit a parse tree produced by the variableTarget
- /// labeled alternative in .
- ///
- /// The default implementation returns the result of calling
- /// on .
- ///
- ///
- /// The parse tree.
- /// The visitor result.
- public virtual Result VisitVariableTarget([NotNull] CGrammarParser.VariableTargetContext context) { return VisitChildren(context); }
-}
diff --git a/Compiler/gen/CGrammarLexer.cs b/Compiler/gen/CGrammarLexer.cs
deleted file mode 100644
index 368ad2c..0000000
--- a/Compiler/gen/CGrammarLexer.cs
+++ /dev/null
@@ -1,238 +0,0 @@
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-// ANTLR Version: 4.13.2
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-// Generated from /Users/melodidey/Source/csharp/Q1/Compiler/CGrammar.g4 by ANTLR 4.13.2
-
-// Unreachable code detected
-#pragma warning disable 0162
-// The variable '...' is assigned but its value is never used
-#pragma warning disable 0219
-// Missing XML comment for publicly visible type or member '...'
-#pragma warning disable 1591
-// Ambiguous reference in cref attribute
-#pragma warning disable 419
-
-using System;
-using System.IO;
-using System.Text;
-using Antlr4.Runtime;
-using Antlr4.Runtime.Atn;
-using Antlr4.Runtime.Misc;
-using DFA = Antlr4.Runtime.Dfa.DFA;
-
-[System.CodeDom.Compiler.GeneratedCode("ANTLR", "4.13.2")]
-[System.CLSCompliant(false)]
-public partial class CGrammarLexer : Lexer {
- protected static DFA[] decisionToDFA;
- protected static PredictionContextCache sharedContextCache = new PredictionContextCache();
- public const int
- T__0=1, T__1=2, T__2=3, T__3=4, T__4=5, T__5=6, T__6=7, T__7=8, T__8=9,
- T__9=10, T__10=11, T__11=12, T__12=13, T__13=14, T__14=15, T__15=16, T__16=17,
- T__17=18, T__18=19, T__19=20, T__20=21, T__21=22, T__22=23, T__23=24,
- T__24=25, T__25=26, T__26=27, T__27=28, T__28=29, T__29=30, T__30=31,
- T__31=32, T__32=33, T__33=34, T__34=35, T__35=36, T__36=37, T__37=38,
- T__38=39, T__39=40, T__40=41, T__41=42, T__42=43, T__43=44, T__44=45,
- T__45=46, T__46=47, T__47=48, T__48=49, T__49=50, T__50=51, T__51=52,
- T__52=53, T__53=54, HEX=55, ID=56, INT=57, WS=58, COMMENT=59, DIRECTIVE=60,
- LETTER=61, STRING=62;
- public static string[] channelNames = {
- "DEFAULT_TOKEN_CHANNEL", "HIDDEN"
- };
-
- public static string[] modeNames = {
- "DEFAULT_MODE"
- };
-
- public static readonly string[] ruleNames = {
- "T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6", "T__7", "T__8",
- "T__9", "T__10", "T__11", "T__12", "T__13", "T__14", "T__15", "T__16",
- "T__17", "T__18", "T__19", "T__20", "T__21", "T__22", "T__23", "T__24",
- "T__25", "T__26", "T__27", "T__28", "T__29", "T__30", "T__31", "T__32",
- "T__33", "T__34", "T__35", "T__36", "T__37", "T__38", "T__39", "T__40",
- "T__41", "T__42", "T__43", "T__44", "T__45", "T__46", "T__47", "T__48",
- "T__49", "T__50", "T__51", "T__52", "T__53", "HEX", "ID", "INT", "WS",
- "COMMENT", "DIRECTIVE", "LETTER", "STRING"
- };
-
-
- public CGrammarLexer(ICharStream input)
- : this(input, Console.Out, Console.Error) { }
-
- public CGrammarLexer(ICharStream input, TextWriter output, TextWriter errorOutput)
- : base(input, output, errorOutput)
- {
- Interpreter = new LexerATNSimulator(this, _ATN, decisionToDFA, sharedContextCache);
- }
-
- private static readonly string[] _LiteralNames = {
- null, "'('", "','", "')'", "';'", "'{'", "'}'", "'return'", "'if'", "'else'",
- "'for'", "'while'", "'do'", "'break'", "'continue'", "'='", "'new'", "'['",
- "']'", "'*'", "'&'", "'!'", "'~'", "'++'", "'--'", "'/'", "'%'", "'+'",
- "'-'", "'<'", "'>'", "'<='", "'>='", "'=='", "'!='", "'|'", "'^'", "'<<'",
- "'>>'", "'&&'", "'||'", "'*='", "'/='", "'%='", "'+='", "'-='", "'&='",
- "'|='", "'^='", "'<<='", "'>>='", "'?'", "':'", "'int'", "'char'"
- };
- private static readonly string[] _SymbolicNames = {
- null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, null, null, "HEX", "ID", "INT", "WS", "COMMENT",
- "DIRECTIVE", "LETTER", "STRING"
- };
- public static readonly IVocabulary DefaultVocabulary = new Vocabulary(_LiteralNames, _SymbolicNames);
-
- [NotNull]
- public override IVocabulary Vocabulary
- {
- get
- {
- return DefaultVocabulary;
- }
- }
-
- public override string GrammarFileName { get { return "CGrammar.g4"; } }
-
- public override string[] RuleNames { get { return ruleNames; } }
-
- public override string[] ChannelNames { get { return channelNames; } }
-
- public override string[] ModeNames { get { return modeNames; } }
-
- public override int[] SerializedAtn { get { return _serializedATN; } }
-
- static CGrammarLexer() {
- decisionToDFA = new DFA[_ATN.NumberOfDecisions];
- for (int i = 0; i < _ATN.NumberOfDecisions; i++) {
- decisionToDFA[i] = new DFA(_ATN.GetDecisionState(i), i);
- }
- }
- private static int[] _serializedATN = {
- 4,0,62,355,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,
- 6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14,
- 7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21,
- 7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28,
- 7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,32,2,33,7,33,2,34,7,34,2,35,
- 7,35,2,36,7,36,2,37,7,37,2,38,7,38,2,39,7,39,2,40,7,40,2,41,7,41,2,42,
- 7,42,2,43,7,43,2,44,7,44,2,45,7,45,2,46,7,46,2,47,7,47,2,48,7,48,2,49,
- 7,49,2,50,7,50,2,51,7,51,2,52,7,52,2,53,7,53,2,54,7,54,2,55,7,55,2,56,
- 7,56,2,57,7,57,2,58,7,58,2,59,7,59,2,60,7,60,2,61,7,61,1,0,1,0,1,1,1,1,
- 1,2,1,2,1,3,1,3,1,4,1,4,1,5,1,5,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,7,1,7,1,
- 7,1,8,1,8,1,8,1,8,1,8,1,9,1,9,1,9,1,9,1,10,1,10,1,10,1,10,1,10,1,10,1,
- 11,1,11,1,11,1,12,1,12,1,12,1,12,1,12,1,12,1,13,1,13,1,13,1,13,1,13,1,
- 13,1,13,1,13,1,13,1,14,1,14,1,15,1,15,1,15,1,15,1,16,1,16,1,17,1,17,1,
- 18,1,18,1,19,1,19,1,20,1,20,1,21,1,21,1,22,1,22,1,22,1,23,1,23,1,23,1,
- 24,1,24,1,25,1,25,1,26,1,26,1,27,1,27,1,28,1,28,1,29,1,29,1,30,1,30,1,
- 30,1,31,1,31,1,31,1,32,1,32,1,32,1,33,1,33,1,33,1,34,1,34,1,35,1,35,1,
- 36,1,36,1,36,1,37,1,37,1,37,1,38,1,38,1,38,1,39,1,39,1,39,1,40,1,40,1,
- 40,1,41,1,41,1,41,1,42,1,42,1,42,1,43,1,43,1,43,1,44,1,44,1,44,1,45,1,
- 45,1,45,1,46,1,46,1,46,1,47,1,47,1,47,1,48,1,48,1,48,1,48,1,49,1,49,1,
- 49,1,49,1,50,1,50,1,51,1,51,1,52,1,52,1,52,1,52,1,53,1,53,1,53,1,53,1,
- 53,1,54,1,54,1,54,1,54,4,54,294,8,54,11,54,12,54,295,1,55,1,55,5,55,300,
- 8,55,10,55,12,55,303,9,55,1,56,4,56,306,8,56,11,56,12,56,307,1,57,4,57,
- 311,8,57,11,57,12,57,312,1,57,1,57,1,58,1,58,1,58,1,58,5,58,321,8,58,10,
- 58,12,58,324,9,58,1,58,3,58,327,8,58,1,58,1,58,1,59,1,59,5,59,333,8,59,
- 10,59,12,59,336,9,59,1,59,3,59,339,8,59,1,59,1,59,1,60,1,60,1,60,1,60,
- 1,61,1,61,5,61,349,8,61,10,61,12,61,352,9,61,1,61,1,61,3,322,334,350,0,
- 62,1,1,3,2,5,3,7,4,9,5,11,6,13,7,15,8,17,9,19,10,21,11,23,12,25,13,27,
- 14,29,15,31,16,33,17,35,18,37,19,39,20,41,21,43,22,45,23,47,24,49,25,51,
- 26,53,27,55,28,57,29,59,30,61,31,63,32,65,33,67,34,69,35,71,36,73,37,75,
- 38,77,39,79,40,81,41,83,42,85,43,87,44,89,45,91,46,93,47,95,48,97,49,99,
- 50,101,51,103,52,105,53,107,54,109,55,111,56,113,57,115,58,117,59,119,
- 60,121,61,123,62,1,0,6,3,0,48,57,65,70,97,102,3,0,65,90,95,95,97,122,4,
- 0,48,57,65,90,95,95,97,122,1,0,48,57,3,0,9,10,13,13,32,32,1,1,10,10,361,
- 0,1,1,0,0,0,0,3,1,0,0,0,0,5,1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,
- 0,0,13,1,0,0,0,0,15,1,0,0,0,0,17,1,0,0,0,0,19,1,0,0,0,0,21,1,0,0,0,0,23,
- 1,0,0,0,0,25,1,0,0,0,0,27,1,0,0,0,0,29,1,0,0,0,0,31,1,0,0,0,0,33,1,0,0,
- 0,0,35,1,0,0,0,0,37,1,0,0,0,0,39,1,0,0,0,0,41,1,0,0,0,0,43,1,0,0,0,0,45,
- 1,0,0,0,0,47,1,0,0,0,0,49,1,0,0,0,0,51,1,0,0,0,0,53,1,0,0,0,0,55,1,0,0,
- 0,0,57,1,0,0,0,0,59,1,0,0,0,0,61,1,0,0,0,0,63,1,0,0,0,0,65,1,0,0,0,0,67,
- 1,0,0,0,0,69,1,0,0,0,0,71,1,0,0,0,0,73,1,0,0,0,0,75,1,0,0,0,0,77,1,0,0,
- 0,0,79,1,0,0,0,0,81,1,0,0,0,0,83,1,0,0,0,0,85,1,0,0,0,0,87,1,0,0,0,0,89,
- 1,0,0,0,0,91,1,0,0,0,0,93,1,0,0,0,0,95,1,0,0,0,0,97,1,0,0,0,0,99,1,0,0,
- 0,0,101,1,0,0,0,0,103,1,0,0,0,0,105,1,0,0,0,0,107,1,0,0,0,0,109,1,0,0,
- 0,0,111,1,0,0,0,0,113,1,0,0,0,0,115,1,0,0,0,0,117,1,0,0,0,0,119,1,0,0,
- 0,0,121,1,0,0,0,0,123,1,0,0,0,1,125,1,0,0,0,3,127,1,0,0,0,5,129,1,0,0,
- 0,7,131,1,0,0,0,9,133,1,0,0,0,11,135,1,0,0,0,13,137,1,0,0,0,15,144,1,0,
- 0,0,17,147,1,0,0,0,19,152,1,0,0,0,21,156,1,0,0,0,23,162,1,0,0,0,25,165,
- 1,0,0,0,27,171,1,0,0,0,29,180,1,0,0,0,31,182,1,0,0,0,33,186,1,0,0,0,35,
- 188,1,0,0,0,37,190,1,0,0,0,39,192,1,0,0,0,41,194,1,0,0,0,43,196,1,0,0,
- 0,45,198,1,0,0,0,47,201,1,0,0,0,49,204,1,0,0,0,51,206,1,0,0,0,53,208,1,
- 0,0,0,55,210,1,0,0,0,57,212,1,0,0,0,59,214,1,0,0,0,61,216,1,0,0,0,63,219,
- 1,0,0,0,65,222,1,0,0,0,67,225,1,0,0,0,69,228,1,0,0,0,71,230,1,0,0,0,73,
- 232,1,0,0,0,75,235,1,0,0,0,77,238,1,0,0,0,79,241,1,0,0,0,81,244,1,0,0,
- 0,83,247,1,0,0,0,85,250,1,0,0,0,87,253,1,0,0,0,89,256,1,0,0,0,91,259,1,
- 0,0,0,93,262,1,0,0,0,95,265,1,0,0,0,97,268,1,0,0,0,99,272,1,0,0,0,101,
- 276,1,0,0,0,103,278,1,0,0,0,105,280,1,0,0,0,107,284,1,0,0,0,109,289,1,
- 0,0,0,111,297,1,0,0,0,113,305,1,0,0,0,115,310,1,0,0,0,117,316,1,0,0,0,
- 119,330,1,0,0,0,121,342,1,0,0,0,123,346,1,0,0,0,125,126,5,40,0,0,126,2,
- 1,0,0,0,127,128,5,44,0,0,128,4,1,0,0,0,129,130,5,41,0,0,130,6,1,0,0,0,
- 131,132,5,59,0,0,132,8,1,0,0,0,133,134,5,123,0,0,134,10,1,0,0,0,135,136,
- 5,125,0,0,136,12,1,0,0,0,137,138,5,114,0,0,138,139,5,101,0,0,139,140,5,
- 116,0,0,140,141,5,117,0,0,141,142,5,114,0,0,142,143,5,110,0,0,143,14,1,
- 0,0,0,144,145,5,105,0,0,145,146,5,102,0,0,146,16,1,0,0,0,147,148,5,101,
- 0,0,148,149,5,108,0,0,149,150,5,115,0,0,150,151,5,101,0,0,151,18,1,0,0,
- 0,152,153,5,102,0,0,153,154,5,111,0,0,154,155,5,114,0,0,155,20,1,0,0,0,
- 156,157,5,119,0,0,157,158,5,104,0,0,158,159,5,105,0,0,159,160,5,108,0,
- 0,160,161,5,101,0,0,161,22,1,0,0,0,162,163,5,100,0,0,163,164,5,111,0,0,
- 164,24,1,0,0,0,165,166,5,98,0,0,166,167,5,114,0,0,167,168,5,101,0,0,168,
- 169,5,97,0,0,169,170,5,107,0,0,170,26,1,0,0,0,171,172,5,99,0,0,172,173,
- 5,111,0,0,173,174,5,110,0,0,174,175,5,116,0,0,175,176,5,105,0,0,176,177,
- 5,110,0,0,177,178,5,117,0,0,178,179,5,101,0,0,179,28,1,0,0,0,180,181,5,
- 61,0,0,181,30,1,0,0,0,182,183,5,110,0,0,183,184,5,101,0,0,184,185,5,119,
- 0,0,185,32,1,0,0,0,186,187,5,91,0,0,187,34,1,0,0,0,188,189,5,93,0,0,189,
- 36,1,0,0,0,190,191,5,42,0,0,191,38,1,0,0,0,192,193,5,38,0,0,193,40,1,0,
- 0,0,194,195,5,33,0,0,195,42,1,0,0,0,196,197,5,126,0,0,197,44,1,0,0,0,198,
- 199,5,43,0,0,199,200,5,43,0,0,200,46,1,0,0,0,201,202,5,45,0,0,202,203,
- 5,45,0,0,203,48,1,0,0,0,204,205,5,47,0,0,205,50,1,0,0,0,206,207,5,37,0,
- 0,207,52,1,0,0,0,208,209,5,43,0,0,209,54,1,0,0,0,210,211,5,45,0,0,211,
- 56,1,0,0,0,212,213,5,60,0,0,213,58,1,0,0,0,214,215,5,62,0,0,215,60,1,0,
- 0,0,216,217,5,60,0,0,217,218,5,61,0,0,218,62,1,0,0,0,219,220,5,62,0,0,
- 220,221,5,61,0,0,221,64,1,0,0,0,222,223,5,61,0,0,223,224,5,61,0,0,224,
- 66,1,0,0,0,225,226,5,33,0,0,226,227,5,61,0,0,227,68,1,0,0,0,228,229,5,
- 124,0,0,229,70,1,0,0,0,230,231,5,94,0,0,231,72,1,0,0,0,232,233,5,60,0,
- 0,233,234,5,60,0,0,234,74,1,0,0,0,235,236,5,62,0,0,236,237,5,62,0,0,237,
- 76,1,0,0,0,238,239,5,38,0,0,239,240,5,38,0,0,240,78,1,0,0,0,241,242,5,
- 124,0,0,242,243,5,124,0,0,243,80,1,0,0,0,244,245,5,42,0,0,245,246,5,61,
- 0,0,246,82,1,0,0,0,247,248,5,47,0,0,248,249,5,61,0,0,249,84,1,0,0,0,250,
- 251,5,37,0,0,251,252,5,61,0,0,252,86,1,0,0,0,253,254,5,43,0,0,254,255,
- 5,61,0,0,255,88,1,0,0,0,256,257,5,45,0,0,257,258,5,61,0,0,258,90,1,0,0,
- 0,259,260,5,38,0,0,260,261,5,61,0,0,261,92,1,0,0,0,262,263,5,124,0,0,263,
- 264,5,61,0,0,264,94,1,0,0,0,265,266,5,94,0,0,266,267,5,61,0,0,267,96,1,
- 0,0,0,268,269,5,60,0,0,269,270,5,60,0,0,270,271,5,61,0,0,271,98,1,0,0,
- 0,272,273,5,62,0,0,273,274,5,62,0,0,274,275,5,61,0,0,275,100,1,0,0,0,276,
- 277,5,63,0,0,277,102,1,0,0,0,278,279,5,58,0,0,279,104,1,0,0,0,280,281,
- 5,105,0,0,281,282,5,110,0,0,282,283,5,116,0,0,283,106,1,0,0,0,284,285,
- 5,99,0,0,285,286,5,104,0,0,286,287,5,97,0,0,287,288,5,114,0,0,288,108,
- 1,0,0,0,289,290,5,48,0,0,290,291,5,120,0,0,291,293,1,0,0,0,292,294,7,0,
- 0,0,293,292,1,0,0,0,294,295,1,0,0,0,295,293,1,0,0,0,295,296,1,0,0,0,296,
- 110,1,0,0,0,297,301,7,1,0,0,298,300,7,2,0,0,299,298,1,0,0,0,300,303,1,
- 0,0,0,301,299,1,0,0,0,301,302,1,0,0,0,302,112,1,0,0,0,303,301,1,0,0,0,
- 304,306,7,3,0,0,305,304,1,0,0,0,306,307,1,0,0,0,307,305,1,0,0,0,307,308,
- 1,0,0,0,308,114,1,0,0,0,309,311,7,4,0,0,310,309,1,0,0,0,311,312,1,0,0,
- 0,312,310,1,0,0,0,312,313,1,0,0,0,313,314,1,0,0,0,314,315,6,57,0,0,315,
- 116,1,0,0,0,316,317,5,47,0,0,317,318,5,47,0,0,318,322,1,0,0,0,319,321,
- 9,0,0,0,320,319,1,0,0,0,321,324,1,0,0,0,322,323,1,0,0,0,322,320,1,0,0,
- 0,323,326,1,0,0,0,324,322,1,0,0,0,325,327,7,5,0,0,326,325,1,0,0,0,327,
- 328,1,0,0,0,328,329,6,58,1,0,329,118,1,0,0,0,330,334,5,35,0,0,331,333,
- 9,0,0,0,332,331,1,0,0,0,333,336,1,0,0,0,334,335,1,0,0,0,334,332,1,0,0,
- 0,335,338,1,0,0,0,336,334,1,0,0,0,337,339,7,5,0,0,338,337,1,0,0,0,339,
- 340,1,0,0,0,340,341,6,59,1,0,341,120,1,0,0,0,342,343,5,39,0,0,343,344,
- 9,0,0,0,344,345,5,39,0,0,345,122,1,0,0,0,346,350,5,34,0,0,347,349,9,0,
- 0,0,348,347,1,0,0,0,349,352,1,0,0,0,350,351,1,0,0,0,350,348,1,0,0,0,351,
- 353,1,0,0,0,352,350,1,0,0,0,353,354,5,34,0,0,354,124,1,0,0,0,10,0,295,
- 301,307,312,322,326,334,338,350,2,6,0,0,0,1,0
- };
-
- public static readonly ATN _ATN =
- new ATNDeserializer().Deserialize(_serializedATN);
-
-
-}
diff --git a/Compiler/gen/CGrammarLexer.interp b/Compiler/gen/CGrammarLexer.interp
deleted file mode 100644
index 4aea344..0000000
--- a/Compiler/gen/CGrammarLexer.interp
+++ /dev/null
@@ -1,203 +0,0 @@
-token literal names:
-null
-'('
-','
-')'
-';'
-'{'
-'}'
-'return'
-'if'
-'else'
-'for'
-'while'
-'do'
-'break'
-'continue'
-'='
-'new'
-'['
-']'
-'*'
-'&'
-'!'
-'~'
-'++'
-'--'
-'/'
-'%'
-'+'
-'-'
-'<'
-'>'
-'<='
-'>='
-'=='
-'!='
-'|'
-'^'
-'<<'
-'>>'
-'&&'
-'||'
-'*='
-'/='
-'%='
-'+='
-'-='
-'&='
-'|='
-'^='
-'<<='
-'>>='
-'?'
-':'
-'int'
-'char'
-null
-null
-null
-null
-null
-null
-null
-null
-
-token symbolic names:
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-HEX
-ID
-INT
-WS
-COMMENT
-DIRECTIVE
-LETTER
-STRING
-
-rule names:
-T__0
-T__1
-T__2
-T__3
-T__4
-T__5
-T__6
-T__7
-T__8
-T__9
-T__10
-T__11
-T__12
-T__13
-T__14
-T__15
-T__16
-T__17
-T__18
-T__19
-T__20
-T__21
-T__22
-T__23
-T__24
-T__25
-T__26
-T__27
-T__28
-T__29
-T__30
-T__31
-T__32
-T__33
-T__34
-T__35
-T__36
-T__37
-T__38
-T__39
-T__40
-T__41
-T__42
-T__43
-T__44
-T__45
-T__46
-T__47
-T__48
-T__49
-T__50
-T__51
-T__52
-T__53
-HEX
-ID
-INT
-WS
-COMMENT
-DIRECTIVE
-LETTER
-STRING
-
-channel names:
-DEFAULT_TOKEN_CHANNEL
-HIDDEN
-
-mode names:
-DEFAULT_MODE
-
-atn:
-[4, 0, 62, 355, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 20, 1, 20, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 25, 1, 25, 1, 26, 1, 26, 1, 27, 1, 27, 1, 28, 1, 28, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 4, 54, 294, 8, 54, 11, 54, 12, 54, 295, 1, 55, 1, 55, 5, 55, 300, 8, 55, 10, 55, 12, 55, 303, 9, 55, 1, 56, 4, 56, 306, 8, 56, 11, 56, 12, 56, 307, 1, 57, 4, 57, 311, 8, 57, 11, 57, 12, 57, 312, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 5, 58, 321, 8, 58, 10, 58, 12, 58, 324, 9, 58, 1, 58, 3, 58, 327, 8, 58, 1, 58, 1, 58, 1, 59, 1, 59, 5, 59, 333, 8, 59, 10, 59, 12, 59, 336, 9, 59, 1, 59, 3, 59, 339, 8, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 5, 61, 349, 8, 61, 10, 61, 12, 61, 352, 9, 61, 1, 61, 1, 61, 3, 322, 334, 350, 0, 62, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 43, 87, 44, 89, 45, 91, 46, 93, 47, 95, 48, 97, 49, 99, 50, 101, 51, 103, 52, 105, 53, 107, 54, 109, 55, 111, 56, 113, 57, 115, 58, 117, 59, 119, 60, 121, 61, 123, 62, 1, 0, 6, 3, 0, 48, 57, 65, 70, 97, 102, 3, 0, 65, 90, 95, 95, 97, 122, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 1, 0, 48, 57, 3, 0, 9, 10, 13, 13, 32, 32, 1, 1, 10, 10, 361, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 1, 125, 1, 0, 0, 0, 3, 127, 1, 0, 0, 0, 5, 129, 1, 0, 0, 0, 7, 131, 1, 0, 0, 0, 9, 133, 1, 0, 0, 0, 11, 135, 1, 0, 0, 0, 13, 137, 1, 0, 0, 0, 15, 144, 1, 0, 0, 0, 17, 147, 1, 0, 0, 0, 19, 152, 1, 0, 0, 0, 21, 156, 1, 0, 0, 0, 23, 162, 1, 0, 0, 0, 25, 165, 1, 0, 0, 0, 27, 171, 1, 0, 0, 0, 29, 180, 1, 0, 0, 0, 31, 182, 1, 0, 0, 0, 33, 186, 1, 0, 0, 0, 35, 188, 1, 0, 0, 0, 37, 190, 1, 0, 0, 0, 39, 192, 1, 0, 0, 0, 41, 194, 1, 0, 0, 0, 43, 196, 1, 0, 0, 0, 45, 198, 1, 0, 0, 0, 47, 201, 1, 0, 0, 0, 49, 204, 1, 0, 0, 0, 51, 206, 1, 0, 0, 0, 53, 208, 1, 0, 0, 0, 55, 210, 1, 0, 0, 0, 57, 212, 1, 0, 0, 0, 59, 214, 1, 0, 0, 0, 61, 216, 1, 0, 0, 0, 63, 219, 1, 0, 0, 0, 65, 222, 1, 0, 0, 0, 67, 225, 1, 0, 0, 0, 69, 228, 1, 0, 0, 0, 71, 230, 1, 0, 0, 0, 73, 232, 1, 0, 0, 0, 75, 235, 1, 0, 0, 0, 77, 238, 1, 0, 0, 0, 79, 241, 1, 0, 0, 0, 81, 244, 1, 0, 0, 0, 83, 247, 1, 0, 0, 0, 85, 250, 1, 0, 0, 0, 87, 253, 1, 0, 0, 0, 89, 256, 1, 0, 0, 0, 91, 259, 1, 0, 0, 0, 93, 262, 1, 0, 0, 0, 95, 265, 1, 0, 0, 0, 97, 268, 1, 0, 0, 0, 99, 272, 1, 0, 0, 0, 101, 276, 1, 0, 0, 0, 103, 278, 1, 0, 0, 0, 105, 280, 1, 0, 0, 0, 107, 284, 1, 0, 0, 0, 109, 289, 1, 0, 0, 0, 111, 297, 1, 0, 0, 0, 113, 305, 1, 0, 0, 0, 115, 310, 1, 0, 0, 0, 117, 316, 1, 0, 0, 0, 119, 330, 1, 0, 0, 0, 121, 342, 1, 0, 0, 0, 123, 346, 1, 0, 0, 0, 125, 126, 5, 40, 0, 0, 126, 2, 1, 0, 0, 0, 127, 128, 5, 44, 0, 0, 128, 4, 1, 0, 0, 0, 129, 130, 5, 41, 0, 0, 130, 6, 1, 0, 0, 0, 131, 132, 5, 59, 0, 0, 132, 8, 1, 0, 0, 0, 133, 134, 5, 123, 0, 0, 134, 10, 1, 0, 0, 0, 135, 136, 5, 125, 0, 0, 136, 12, 1, 0, 0, 0, 137, 138, 5, 114, 0, 0, 138, 139, 5, 101, 0, 0, 139, 140, 5, 116, 0, 0, 140, 141, 5, 117, 0, 0, 141, 142, 5, 114, 0, 0, 142, 143, 5, 110, 0, 0, 143, 14, 1, 0, 0, 0, 144, 145, 5, 105, 0, 0, 145, 146, 5, 102, 0, 0, 146, 16, 1, 0, 0, 0, 147, 148, 5, 101, 0, 0, 148, 149, 5, 108, 0, 0, 149, 150, 5, 115, 0, 0, 150, 151, 5, 101, 0, 0, 151, 18, 1, 0, 0, 0, 152, 153, 5, 102, 0, 0, 153, 154, 5, 111, 0, 0, 154, 155, 5, 114, 0, 0, 155, 20, 1, 0, 0, 0, 156, 157, 5, 119, 0, 0, 157, 158, 5, 104, 0, 0, 158, 159, 5, 105, 0, 0, 159, 160, 5, 108, 0, 0, 160, 161, 5, 101, 0, 0, 161, 22, 1, 0, 0, 0, 162, 163, 5, 100, 0, 0, 163, 164, 5, 111, 0, 0, 164, 24, 1, 0, 0, 0, 165, 166, 5, 98, 0, 0, 166, 167, 5, 114, 0, 0, 167, 168, 5, 101, 0, 0, 168, 169, 5, 97, 0, 0, 169, 170, 5, 107, 0, 0, 170, 26, 1, 0, 0, 0, 171, 172, 5, 99, 0, 0, 172, 173, 5, 111, 0, 0, 173, 174, 5, 110, 0, 0, 174, 175, 5, 116, 0, 0, 175, 176, 5, 105, 0, 0, 176, 177, 5, 110, 0, 0, 177, 178, 5, 117, 0, 0, 178, 179, 5, 101, 0, 0, 179, 28, 1, 0, 0, 0, 180, 181, 5, 61, 0, 0, 181, 30, 1, 0, 0, 0, 182, 183, 5, 110, 0, 0, 183, 184, 5, 101, 0, 0, 184, 185, 5, 119, 0, 0, 185, 32, 1, 0, 0, 0, 186, 187, 5, 91, 0, 0, 187, 34, 1, 0, 0, 0, 188, 189, 5, 93, 0, 0, 189, 36, 1, 0, 0, 0, 190, 191, 5, 42, 0, 0, 191, 38, 1, 0, 0, 0, 192, 193, 5, 38, 0, 0, 193, 40, 1, 0, 0, 0, 194, 195, 5, 33, 0, 0, 195, 42, 1, 0, 0, 0, 196, 197, 5, 126, 0, 0, 197, 44, 1, 0, 0, 0, 198, 199, 5, 43, 0, 0, 199, 200, 5, 43, 0, 0, 200, 46, 1, 0, 0, 0, 201, 202, 5, 45, 0, 0, 202, 203, 5, 45, 0, 0, 203, 48, 1, 0, 0, 0, 204, 205, 5, 47, 0, 0, 205, 50, 1, 0, 0, 0, 206, 207, 5, 37, 0, 0, 207, 52, 1, 0, 0, 0, 208, 209, 5, 43, 0, 0, 209, 54, 1, 0, 0, 0, 210, 211, 5, 45, 0, 0, 211, 56, 1, 0, 0, 0, 212, 213, 5, 60, 0, 0, 213, 58, 1, 0, 0, 0, 214, 215, 5, 62, 0, 0, 215, 60, 1, 0, 0, 0, 216, 217, 5, 60, 0, 0, 217, 218, 5, 61, 0, 0, 218, 62, 1, 0, 0, 0, 219, 220, 5, 62, 0, 0, 220, 221, 5, 61, 0, 0, 221, 64, 1, 0, 0, 0, 222, 223, 5, 61, 0, 0, 223, 224, 5, 61, 0, 0, 224, 66, 1, 0, 0, 0, 225, 226, 5, 33, 0, 0, 226, 227, 5, 61, 0, 0, 227, 68, 1, 0, 0, 0, 228, 229, 5, 124, 0, 0, 229, 70, 1, 0, 0, 0, 230, 231, 5, 94, 0, 0, 231, 72, 1, 0, 0, 0, 232, 233, 5, 60, 0, 0, 233, 234, 5, 60, 0, 0, 234, 74, 1, 0, 0, 0, 235, 236, 5, 62, 0, 0, 236, 237, 5, 62, 0, 0, 237, 76, 1, 0, 0, 0, 238, 239, 5, 38, 0, 0, 239, 240, 5, 38, 0, 0, 240, 78, 1, 0, 0, 0, 241, 242, 5, 124, 0, 0, 242, 243, 5, 124, 0, 0, 243, 80, 1, 0, 0, 0, 244, 245, 5, 42, 0, 0, 245, 246, 5, 61, 0, 0, 246, 82, 1, 0, 0, 0, 247, 248, 5, 47, 0, 0, 248, 249, 5, 61, 0, 0, 249, 84, 1, 0, 0, 0, 250, 251, 5, 37, 0, 0, 251, 252, 5, 61, 0, 0, 252, 86, 1, 0, 0, 0, 253, 254, 5, 43, 0, 0, 254, 255, 5, 61, 0, 0, 255, 88, 1, 0, 0, 0, 256, 257, 5, 45, 0, 0, 257, 258, 5, 61, 0, 0, 258, 90, 1, 0, 0, 0, 259, 260, 5, 38, 0, 0, 260, 261, 5, 61, 0, 0, 261, 92, 1, 0, 0, 0, 262, 263, 5, 124, 0, 0, 263, 264, 5, 61, 0, 0, 264, 94, 1, 0, 0, 0, 265, 266, 5, 94, 0, 0, 266, 267, 5, 61, 0, 0, 267, 96, 1, 0, 0, 0, 268, 269, 5, 60, 0, 0, 269, 270, 5, 60, 0, 0, 270, 271, 5, 61, 0, 0, 271, 98, 1, 0, 0, 0, 272, 273, 5, 62, 0, 0, 273, 274, 5, 62, 0, 0, 274, 275, 5, 61, 0, 0, 275, 100, 1, 0, 0, 0, 276, 277, 5, 63, 0, 0, 277, 102, 1, 0, 0, 0, 278, 279, 5, 58, 0, 0, 279, 104, 1, 0, 0, 0, 280, 281, 5, 105, 0, 0, 281, 282, 5, 110, 0, 0, 282, 283, 5, 116, 0, 0, 283, 106, 1, 0, 0, 0, 284, 285, 5, 99, 0, 0, 285, 286, 5, 104, 0, 0, 286, 287, 5, 97, 0, 0, 287, 288, 5, 114, 0, 0, 288, 108, 1, 0, 0, 0, 289, 290, 5, 48, 0, 0, 290, 291, 5, 120, 0, 0, 291, 293, 1, 0, 0, 0, 292, 294, 7, 0, 0, 0, 293, 292, 1, 0, 0, 0, 294, 295, 1, 0, 0, 0, 295, 293, 1, 0, 0, 0, 295, 296, 1, 0, 0, 0, 296, 110, 1, 0, 0, 0, 297, 301, 7, 1, 0, 0, 298, 300, 7, 2, 0, 0, 299, 298, 1, 0, 0, 0, 300, 303, 1, 0, 0, 0, 301, 299, 1, 0, 0, 0, 301, 302, 1, 0, 0, 0, 302, 112, 1, 0, 0, 0, 303, 301, 1, 0, 0, 0, 304, 306, 7, 3, 0, 0, 305, 304, 1, 0, 0, 0, 306, 307, 1, 0, 0, 0, 307, 305, 1, 0, 0, 0, 307, 308, 1, 0, 0, 0, 308, 114, 1, 0, 0, 0, 309, 311, 7, 4, 0, 0, 310, 309, 1, 0, 0, 0, 311, 312, 1, 0, 0, 0, 312, 310, 1, 0, 0, 0, 312, 313, 1, 0, 0, 0, 313, 314, 1, 0, 0, 0, 314, 315, 6, 57, 0, 0, 315, 116, 1, 0, 0, 0, 316, 317, 5, 47, 0, 0, 317, 318, 5, 47, 0, 0, 318, 322, 1, 0, 0, 0, 319, 321, 9, 0, 0, 0, 320, 319, 1, 0, 0, 0, 321, 324, 1, 0, 0, 0, 322, 323, 1, 0, 0, 0, 322, 320, 1, 0, 0, 0, 323, 326, 1, 0, 0, 0, 324, 322, 1, 0, 0, 0, 325, 327, 7, 5, 0, 0, 326, 325, 1, 0, 0, 0, 327, 328, 1, 0, 0, 0, 328, 329, 6, 58, 1, 0, 329, 118, 1, 0, 0, 0, 330, 334, 5, 35, 0, 0, 331, 333, 9, 0, 0, 0, 332, 331, 1, 0, 0, 0, 333, 336, 1, 0, 0, 0, 334, 335, 1, 0, 0, 0, 334, 332, 1, 0, 0, 0, 335, 338, 1, 0, 0, 0, 336, 334, 1, 0, 0, 0, 337, 339, 7, 5, 0, 0, 338, 337, 1, 0, 0, 0, 339, 340, 1, 0, 0, 0, 340, 341, 6, 59, 1, 0, 341, 120, 1, 0, 0, 0, 342, 343, 5, 39, 0, 0, 343, 344, 9, 0, 0, 0, 344, 345, 5, 39, 0, 0, 345, 122, 1, 0, 0, 0, 346, 350, 5, 34, 0, 0, 347, 349, 9, 0, 0, 0, 348, 347, 1, 0, 0, 0, 349, 352, 1, 0, 0, 0, 350, 351, 1, 0, 0, 0, 350, 348, 1, 0, 0, 0, 351, 353, 1, 0, 0, 0, 352, 350, 1, 0, 0, 0, 353, 354, 5, 34, 0, 0, 354, 124, 1, 0, 0, 0, 10, 0, 295, 301, 307, 312, 322, 326, 334, 338, 350, 2, 6, 0, 0, 0, 1, 0]
\ No newline at end of file
diff --git a/Compiler/gen/CGrammarLexer.tokens b/Compiler/gen/CGrammarLexer.tokens
deleted file mode 100644
index b6c3179..0000000
--- a/Compiler/gen/CGrammarLexer.tokens
+++ /dev/null
@@ -1,116 +0,0 @@
-T__0=1
-T__1=2
-T__2=3
-T__3=4
-T__4=5
-T__5=6
-T__6=7
-T__7=8
-T__8=9
-T__9=10
-T__10=11
-T__11=12
-T__12=13
-T__13=14
-T__14=15
-T__15=16
-T__16=17
-T__17=18
-T__18=19
-T__19=20
-T__20=21
-T__21=22
-T__22=23
-T__23=24
-T__24=25
-T__25=26
-T__26=27
-T__27=28
-T__28=29
-T__29=30
-T__30=31
-T__31=32
-T__32=33
-T__33=34
-T__34=35
-T__35=36
-T__36=37
-T__37=38
-T__38=39
-T__39=40
-T__40=41
-T__41=42
-T__42=43
-T__43=44
-T__44=45
-T__45=46
-T__46=47
-T__47=48
-T__48=49
-T__49=50
-T__50=51
-T__51=52
-T__52=53
-T__53=54
-HEX=55
-ID=56
-INT=57
-WS=58
-COMMENT=59
-DIRECTIVE=60
-LETTER=61
-STRING=62
-'('=1
-','=2
-')'=3
-';'=4
-'{'=5
-'}'=6
-'return'=7
-'if'=8
-'else'=9
-'for'=10
-'while'=11
-'do'=12
-'break'=13
-'continue'=14
-'='=15
-'new'=16
-'['=17
-']'=18
-'*'=19
-'&'=20
-'!'=21
-'~'=22
-'++'=23
-'--'=24
-'/'=25
-'%'=26
-'+'=27
-'-'=28
-'<'=29
-'>'=30
-'<='=31
-'>='=32
-'=='=33
-'!='=34
-'|'=35
-'^'=36
-'<<'=37
-'>>'=38
-'&&'=39
-'||'=40
-'*='=41
-'/='=42
-'%='=43
-'+='=44
-'-='=45
-'&='=46
-'|='=47
-'^='=48
-'<<='=49
-'>>='=50
-'?'=51
-':'=52
-'int'=53
-'char'=54
diff --git a/Compiler/gen/CGrammarParser.cs b/Compiler/gen/CGrammarParser.cs
deleted file mode 100644
index d090921..0000000
--- a/Compiler/gen/CGrammarParser.cs
+++ /dev/null
@@ -1,2821 +0,0 @@
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-// ANTLR Version: 4.13.2
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-// Generated from /Users/melodidey/Source/csharp/Q1/Compiler/CGrammar.g4 by ANTLR 4.13.2
-
-// Unreachable code detected
-#pragma warning disable 0162
-// The variable '...' is assigned but its value is never used
-#pragma warning disable 0219
-// Missing XML comment for publicly visible type or member '...'
-#pragma warning disable 1591
-// Ambiguous reference in cref attribute
-#pragma warning disable 419
-
-using System;
-using System.IO;
-using System.Text;
-using System.Diagnostics;
-using System.Collections.Generic;
-using Antlr4.Runtime;
-using Antlr4.Runtime.Atn;
-using Antlr4.Runtime.Misc;
-using Antlr4.Runtime.Tree;
-using DFA = Antlr4.Runtime.Dfa.DFA;
-
-[System.CodeDom.Compiler.GeneratedCode("ANTLR", "4.13.2")]
-[System.CLSCompliant(false)]
-public partial class CGrammarParser : Parser {
- protected static DFA[] decisionToDFA;
- protected static PredictionContextCache sharedContextCache = new PredictionContextCache();
- public const int
- T__0=1, T__1=2, T__2=3, T__3=4, T__4=5, T__5=6, T__6=7, T__7=8, T__8=9,
- T__9=10, T__10=11, T__11=12, T__12=13, T__13=14, T__14=15, T__15=16, T__16=17,
- T__17=18, T__18=19, T__19=20, T__20=21, T__21=22, T__22=23, T__23=24,
- T__24=25, T__25=26, T__26=27, T__27=28, T__28=29, T__29=30, T__30=31,
- T__31=32, T__32=33, T__33=34, T__34=35, T__35=36, T__36=37, T__37=38,
- T__38=39, T__39=40, T__40=41, T__41=42, T__42=43, T__43=44, T__44=45,
- T__45=46, T__46=47, T__47=48, T__48=49, T__49=50, T__50=51, T__51=52,
- T__52=53, T__53=54, HEX=55, ID=56, INT=57, WS=58, COMMENT=59, DIRECTIVE=60,
- LETTER=61, STRING=62;
- public const int
- RULE_program = 0, RULE_function = 1, RULE_block = 2, RULE_block_item = 3,
- RULE_statement = 4, RULE_declaration = 5, RULE_expression = 6, RULE_constant = 7,
- RULE_type = 8, RULE_target = 9;
- public static readonly string[] ruleNames = {
- "program", "function", "block", "block_item", "statement", "declaration",
- "expression", "constant", "type", "target"
- };
-
- private static readonly string[] _LiteralNames = {
- null, "'('", "','", "')'", "';'", "'{'", "'}'", "'return'", "'if'", "'else'",
- "'for'", "'while'", "'do'", "'break'", "'continue'", "'='", "'new'", "'['",
- "']'", "'*'", "'&'", "'!'", "'~'", "'++'", "'--'", "'/'", "'%'", "'+'",
- "'-'", "'<'", "'>'", "'<='", "'>='", "'=='", "'!='", "'|'", "'^'", "'<<'",
- "'>>'", "'&&'", "'||'", "'*='", "'/='", "'%='", "'+='", "'-='", "'&='",
- "'|='", "'^='", "'<<='", "'>>='", "'?'", "':'", "'int'", "'char'"
- };
- private static readonly string[] _SymbolicNames = {
- null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, null, null, "HEX", "ID", "INT", "WS", "COMMENT",
- "DIRECTIVE", "LETTER", "STRING"
- };
- public static readonly IVocabulary DefaultVocabulary = new Vocabulary(_LiteralNames, _SymbolicNames);
-
- [NotNull]
- public override IVocabulary Vocabulary
- {
- get
- {
- return DefaultVocabulary;
- }
- }
-
- public override string GrammarFileName { get { return "CGrammar.g4"; } }
-
- public override string[] RuleNames { get { return ruleNames; } }
-
- public override int[] SerializedAtn { get { return _serializedATN; } }
-
- static CGrammarParser() {
- decisionToDFA = new DFA[_ATN.NumberOfDecisions];
- for (int i = 0; i < _ATN.NumberOfDecisions; i++) {
- decisionToDFA[i] = new DFA(_ATN.GetDecisionState(i), i);
- }
- }
-
- public CGrammarParser(ITokenStream input) : this(input, Console.Out, Console.Error) { }
-
- public CGrammarParser(ITokenStream input, TextWriter output, TextWriter errorOutput)
- : base(input, output, errorOutput)
- {
- Interpreter = new ParserATNSimulator(this, _ATN, decisionToDFA, sharedContextCache);
- }
-
- public partial class ProgramContext : Q1.Compiler.Context {
- [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode Eof() { return GetToken(CGrammarParser.Eof, 0); }
- [System.Diagnostics.DebuggerNonUserCode] public FunctionContext[] function() {
- return GetRuleContexts();
- }
- [System.Diagnostics.DebuggerNonUserCode] public FunctionContext function(int i) {
- return GetRuleContext(i);
- }
- public ProgramContext(ParserRuleContext parent, int invokingState)
- : base(parent, invokingState)
- {
- }
- public override int RuleIndex { get { return RULE_program; } }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept(IParseTreeVisitor visitor) {
- ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
- if (typedVisitor != null) return typedVisitor.VisitProgram(this);
- else return visitor.VisitChildren(this);
- }
- }
-
- [RuleVersion(0)]
- public ProgramContext program() {
- ProgramContext _localctx = new ProgramContext(Context, State);
- EnterRule(_localctx, 0, RULE_program);
- int _la;
- try {
- EnterOuterAlt(_localctx, 1);
- {
- State = 21;
- ErrorHandler.Sync(this);
- _la = TokenStream.LA(1);
- do {
- {
- {
- State = 20;
- function();
- }
- }
- State = 23;
- ErrorHandler.Sync(this);
- _la = TokenStream.LA(1);
- } while ( _la==T__52 || _la==T__53 );
- State = 25;
- Match(Eof);
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- ErrorHandler.ReportError(this, re);
- ErrorHandler.Recover(this, re);
- }
- finally {
- ExitRule();
- }
- return _localctx;
- }
-
- public partial class FunctionContext : Q1.Compiler.Context {
- public FunctionContext(ParserRuleContext parent, int invokingState)
- : base(parent, invokingState)
- {
- }
- public override int RuleIndex { get { return RULE_function; } }
-
- public FunctionContext() { }
- public virtual void CopyFrom(FunctionContext context) {
- base.CopyFrom(context);
- }
- }
- public partial class FunctionPrototypeContext : FunctionContext {
- public TypeContext rtype;
- public IToken name;
- public TypeContext _type;
- public IList _types = new List();
- public IToken _ID;
- public IList _params = new List();
- [System.Diagnostics.DebuggerNonUserCode] public TypeContext[] type() {
- return GetRuleContexts();
- }
- [System.Diagnostics.DebuggerNonUserCode] public TypeContext type(int i) {
- return GetRuleContext(i);
- }
- [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] ID() { return GetTokens(CGrammarParser.ID); }
- [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ID(int i) {
- return GetToken(CGrammarParser.ID, i);
- }
- public FunctionPrototypeContext(FunctionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept(IParseTreeVisitor visitor) {
- ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
- if (typedVisitor != null) return typedVisitor.VisitFunctionPrototype(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class FunctionDefinitionContext : FunctionContext {
- public TypeContext rtype;
- public IToken name;
- public TypeContext _type;
- public IList _types = new List();
- public IToken _ID;
- public IList _params = new List();
- [System.Diagnostics.DebuggerNonUserCode] public BlockContext block() {
- return GetRuleContext(0);
- }
- [System.Diagnostics.DebuggerNonUserCode] public TypeContext[] type() {
- return GetRuleContexts();
- }
- [System.Diagnostics.DebuggerNonUserCode] public TypeContext type(int i) {
- return GetRuleContext(i);
- }
- [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] ID() { return GetTokens(CGrammarParser.ID); }
- [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ID(int i) {
- return GetToken(CGrammarParser.ID, i);
- }
- public FunctionDefinitionContext(FunctionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept(IParseTreeVisitor visitor) {
- ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
- if (typedVisitor != null) return typedVisitor.VisitFunctionDefinition(this);
- else return visitor.VisitChildren(this);
- }
- }
-
- [RuleVersion(0)]
- public FunctionContext function() {
- FunctionContext _localctx = new FunctionContext(Context, State);
- EnterRule(_localctx, 2, RULE_function);
- int _la;
- try {
- State = 65;
- ErrorHandler.Sync(this);
- switch ( Interpreter.AdaptivePredict(TokenStream,5,Context) ) {
- case 1:
- _localctx = new FunctionPrototypeContext(_localctx);
- EnterOuterAlt(_localctx, 1);
- {
- State = 27;
- ((FunctionPrototypeContext)_localctx).rtype = type(0);
- State = 28;
- ((FunctionPrototypeContext)_localctx).name = Match(ID);
- State = 29;
- Match(T__0);
- State = 41;
- ErrorHandler.Sync(this);
- _la = TokenStream.LA(1);
- if (_la==T__52 || _la==T__53) {
- {
- State = 30;
- ((FunctionPrototypeContext)_localctx)._type = type(0);
- ((FunctionPrototypeContext)_localctx)._types.Add(((FunctionPrototypeContext)_localctx)._type);
- State = 31;
- ((FunctionPrototypeContext)_localctx)._ID = Match(ID);
- ((FunctionPrototypeContext)_localctx)._params.Add(((FunctionPrototypeContext)_localctx)._ID);
- State = 38;
- ErrorHandler.Sync(this);
- _la = TokenStream.LA(1);
- while (_la==T__1) {
- {
- {
- State = 32;
- Match(T__1);
- State = 33;
- ((FunctionPrototypeContext)_localctx)._type = type(0);
- ((FunctionPrototypeContext)_localctx)._types.Add(((FunctionPrototypeContext)_localctx)._type);
- State = 34;
- ((FunctionPrototypeContext)_localctx)._ID = Match(ID);
- ((FunctionPrototypeContext)_localctx)._params.Add(((FunctionPrototypeContext)_localctx)._ID);
- }
- }
- State = 40;
- ErrorHandler.Sync(this);
- _la = TokenStream.LA(1);
- }
- }
- }
-
- State = 43;
- Match(T__2);
- State = 44;
- Match(T__3);
- }
- break;
- case 2:
- _localctx = new FunctionDefinitionContext(_localctx);
- EnterOuterAlt(_localctx, 2);
- {
- State = 46;
- ((FunctionDefinitionContext)_localctx).rtype = type(0);
- State = 47;
- ((FunctionDefinitionContext)_localctx).name = Match(ID);
- State = 48;
- Match(T__0);
- State = 60;
- ErrorHandler.Sync(this);
- _la = TokenStream.LA(1);
- if (_la==T__52 || _la==T__53) {
- {
- State = 49;
- ((FunctionDefinitionContext)_localctx)._type = type(0);
- ((FunctionDefinitionContext)_localctx)._types.Add(((FunctionDefinitionContext)_localctx)._type);
- State = 50;
- ((FunctionDefinitionContext)_localctx)._ID = Match(ID);
- ((FunctionDefinitionContext)_localctx)._params.Add(((FunctionDefinitionContext)_localctx)._ID);
- State = 57;
- ErrorHandler.Sync(this);
- _la = TokenStream.LA(1);
- while (_la==T__1) {
- {
- {
- State = 51;
- Match(T__1);
- State = 52;
- ((FunctionDefinitionContext)_localctx)._type = type(0);
- ((FunctionDefinitionContext)_localctx)._types.Add(((FunctionDefinitionContext)_localctx)._type);
- State = 53;
- ((FunctionDefinitionContext)_localctx)._ID = Match(ID);
- ((FunctionDefinitionContext)_localctx)._params.Add(((FunctionDefinitionContext)_localctx)._ID);
- }
- }
- State = 59;
- ErrorHandler.Sync(this);
- _la = TokenStream.LA(1);
- }
- }
- }
-
- State = 62;
- Match(T__2);
- State = 63;
- block();
- }
- break;
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- ErrorHandler.ReportError(this, re);
- ErrorHandler.Recover(this, re);
- }
- finally {
- ExitRule();
- }
- return _localctx;
- }
-
- public partial class BlockContext : Q1.Compiler.Context {
- [System.Diagnostics.DebuggerNonUserCode] public Block_itemContext[] block_item() {
- return GetRuleContexts();
- }
- [System.Diagnostics.DebuggerNonUserCode] public Block_itemContext block_item(int i) {
- return GetRuleContext(i);
- }
- public BlockContext(ParserRuleContext parent, int invokingState)
- : base(parent, invokingState)
- {
- }
- public override int RuleIndex { get { return RULE_block; } }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept(IParseTreeVisitor visitor) {
- ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
- if (typedVisitor != null) return typedVisitor.VisitBlock(this);
- else return visitor.VisitChildren(this);
- }
- }
-
- [RuleVersion(0)]
- public BlockContext block() {
- BlockContext _localctx = new BlockContext(Context, State);
- EnterRule(_localctx, 4, RULE_block);
- int _la;
- try {
- EnterOuterAlt(_localctx, 1);
- {
- State = 67;
- Match(T__4);
- State = 71;
- ErrorHandler.Sync(this);
- _la = TokenStream.LA(1);
- while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 7196752204571180466L) != 0)) {
- {
- {
- State = 68;
- block_item();
- }
- }
- State = 73;
- ErrorHandler.Sync(this);
- _la = TokenStream.LA(1);
- }
- State = 74;
- Match(T__5);
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- ErrorHandler.ReportError(this, re);
- ErrorHandler.Recover(this, re);
- }
- finally {
- ExitRule();
- }
- return _localctx;
- }
-
- public partial class Block_itemContext : Q1.Compiler.Context {
- [System.Diagnostics.DebuggerNonUserCode] public StatementContext statement() {
- return GetRuleContext(0);
- }
- [System.Diagnostics.DebuggerNonUserCode] public DeclarationContext declaration() {
- return GetRuleContext(0);
- }
- public Block_itemContext(ParserRuleContext parent, int invokingState)
- : base(parent, invokingState)
- {
- }
- public override int RuleIndex { get { return RULE_block_item; } }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept(IParseTreeVisitor visitor) {
- ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
- if (typedVisitor != null) return typedVisitor.VisitBlock_item(this);
- else return visitor.VisitChildren(this);
- }
- }
-
- [RuleVersion(0)]
- public Block_itemContext block_item() {
- Block_itemContext _localctx = new Block_itemContext(Context, State);
- EnterRule(_localctx, 6, RULE_block_item);
- try {
- State = 78;
- ErrorHandler.Sync(this);
- switch (TokenStream.LA(1)) {
- case T__0:
- case T__3:
- case T__4:
- case T__6:
- case T__7:
- case T__9:
- case T__10:
- case T__11:
- case T__12:
- case T__13:
- case T__15:
- case T__18:
- case T__19:
- case T__20:
- case T__21:
- case T__22:
- case T__23:
- case HEX:
- case ID:
- case INT:
- case LETTER:
- case STRING:
- EnterOuterAlt(_localctx, 1);
- {
- State = 76;
- statement();
- }
- break;
- case T__52:
- case T__53:
- EnterOuterAlt(_localctx, 2);
- {
- State = 77;
- declaration();
- }
- break;
- default:
- throw new NoViableAltException(this);
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- ErrorHandler.ReportError(this, re);
- ErrorHandler.Recover(this, re);
- }
- finally {
- ExitRule();
- }
- return _localctx;
- }
-
- public partial class StatementContext : Q1.Compiler.Context {
- public StatementContext(ParserRuleContext parent, int invokingState)
- : base(parent, invokingState)
- {
- }
- public override int RuleIndex { get { return RULE_statement; } }
-
- public StatementContext() { }
- public virtual void CopyFrom(StatementContext context) {
- base.CopyFrom(context);
- }
- }
- public partial class WhileStatementContext : StatementContext {
- public ExpressionContext cond;
- public StatementContext body;
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression() {
- return GetRuleContext(0);
- }
- [System.Diagnostics.DebuggerNonUserCode] public StatementContext statement() {
- return GetRuleContext(0);
- }
- public WhileStatementContext(StatementContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept(IParseTreeVisitor visitor) {
- ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
- if (typedVisitor != null) return typedVisitor.VisitWhileStatement(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class ForDeclStatementContext : StatementContext {
- public DeclarationContext initializer;
- public ExpressionContext cond;
- public ExpressionContext post;
- public StatementContext body;
- [System.Diagnostics.DebuggerNonUserCode] public DeclarationContext declaration() {
- return GetRuleContext(0);
- }
- [System.Diagnostics.DebuggerNonUserCode] public StatementContext statement() {
- return GetRuleContext(0);
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext[] expression() {
- return GetRuleContexts();
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression(int i) {
- return GetRuleContext(i);
- }
- public ForDeclStatementContext(StatementContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept(IParseTreeVisitor visitor) {
- ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
- if (typedVisitor != null) return typedVisitor.VisitForDeclStatement(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class BlockStatementContext : StatementContext {
- [System.Diagnostics.DebuggerNonUserCode] public BlockContext block() {
- return GetRuleContext(0);
- }
- public BlockStatementContext(StatementContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept(IParseTreeVisitor visitor) {
- ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
- if (typedVisitor != null) return typedVisitor.VisitBlockStatement(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class NullStatementContext : StatementContext {
- public NullStatementContext(StatementContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept(IParseTreeVisitor visitor) {
- ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
- if (typedVisitor != null) return typedVisitor.VisitNullStatement(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class ForExprStatementContext : StatementContext {
- public ExpressionContext initializer;
- public ExpressionContext cond;
- public ExpressionContext post;
- public StatementContext body;
- [System.Diagnostics.DebuggerNonUserCode] public StatementContext statement() {
- return GetRuleContext(0);
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext[] expression() {
- return GetRuleContexts();
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression(int i) {
- return GetRuleContext(i);
- }
- public ForExprStatementContext(StatementContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept(IParseTreeVisitor visitor) {
- ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
- if (typedVisitor != null) return typedVisitor.VisitForExprStatement(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class BreakStatementContext : StatementContext {
- public BreakStatementContext(StatementContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept(IParseTreeVisitor visitor) {
- ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
- if (typedVisitor != null) return typedVisitor.VisitBreakStatement(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class DoWhileStatementContext : StatementContext {
- public StatementContext body;
- public ExpressionContext cond;
- [System.Diagnostics.DebuggerNonUserCode] public StatementContext statement() {
- return GetRuleContext(0);
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression() {
- return GetRuleContext(0);
- }
- public DoWhileStatementContext(StatementContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept(IParseTreeVisitor visitor) {
- ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
- if (typedVisitor != null) return typedVisitor.VisitDoWhileStatement(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class ContinueStatementContext : StatementContext {
- public ContinueStatementContext(StatementContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept(IParseTreeVisitor visitor) {
- ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
- if (typedVisitor != null) return typedVisitor.VisitContinueStatement(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class ExpressionStatementContext : StatementContext {
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression() {
- return GetRuleContext(0);
- }
- public ExpressionStatementContext(StatementContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept(IParseTreeVisitor visitor) {
- ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
- if (typedVisitor != null) return typedVisitor.VisitExpressionStatement(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class ReturnStatementContext : StatementContext {
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression() {
- return GetRuleContext(0);
- }
- public ReturnStatementContext(StatementContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept(IParseTreeVisitor visitor) {
- ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
- if (typedVisitor != null) return typedVisitor.VisitReturnStatement(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class IfStatementContext : StatementContext {
- public StatementContext then;
- public StatementContext @else;
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression() {
- return GetRuleContext(0);
- }
- [System.Diagnostics.DebuggerNonUserCode] public StatementContext[] statement() {
- return GetRuleContexts();
- }
- [System.Diagnostics.DebuggerNonUserCode] public StatementContext statement(int i) {
- return GetRuleContext(i);
- }
- public IfStatementContext(StatementContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept(IParseTreeVisitor visitor) {
- ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
- if (typedVisitor != null) return typedVisitor.VisitIfStatement(this);
- else return visitor.VisitChildren(this);
- }
- }
-
- [RuleVersion(0)]
- public StatementContext statement() {
- StatementContext _localctx = new StatementContext(Context, State);
- EnterRule(_localctx, 8, RULE_statement);
- int _la;
- try {
- State = 144;
- ErrorHandler.Sync(this);
- switch ( Interpreter.AdaptivePredict(TokenStream,14,Context) ) {
- case 1:
- _localctx = new ReturnStatementContext(_localctx);
- EnterOuterAlt(_localctx, 1);
- {
- State = 80;
- Match(T__6);
- State = 81;
- expression(0);
- State = 82;
- Match(T__3);
- }
- break;
- case 2:
- _localctx = new IfStatementContext(_localctx);
- EnterOuterAlt(_localctx, 2);
- {
- State = 84;
- Match(T__7);
- State = 85;
- Match(T__0);
- State = 86;
- expression(0);
- State = 87;
- Match(T__2);
- State = 88;
- ((IfStatementContext)_localctx).then = statement();
- State = 91;
- ErrorHandler.Sync(this);
- switch ( Interpreter.AdaptivePredict(TokenStream,8,Context) ) {
- case 1:
- {
- State = 89;
- Match(T__8);
- State = 90;
- ((IfStatementContext)_localctx).@else = statement();
- }
- break;
- }
- }
- break;
- case 3:
- _localctx = new ForExprStatementContext(_localctx);
- EnterOuterAlt(_localctx, 3);
- {
- State = 93;
- Match(T__9);
- State = 94;
- Match(T__0);
- State = 96;
- ErrorHandler.Sync(this);
- _la = TokenStream.LA(1);
- if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 7169730606806925314L) != 0)) {
- {
- State = 95;
- ((ForExprStatementContext)_localctx).initializer = expression(0);
- }
- }
-
- State = 98;
- Match(T__3);
- State = 100;
- ErrorHandler.Sync(this);
- _la = TokenStream.LA(1);
- if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 7169730606806925314L) != 0)) {
- {
- State = 99;
- ((ForExprStatementContext)_localctx).cond = expression(0);
- }
- }
-
- State = 102;
- Match(T__3);
- State = 104;
- ErrorHandler.Sync(this);
- _la = TokenStream.LA(1);
- if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 7169730606806925314L) != 0)) {
- {
- State = 103;
- ((ForExprStatementContext)_localctx).post = expression(0);
- }
- }
-
- State = 106;
- Match(T__2);
- State = 107;
- ((ForExprStatementContext)_localctx).body = statement();
- }
- break;
- case 4:
- _localctx = new ForDeclStatementContext(_localctx);
- EnterOuterAlt(_localctx, 4);
- {
- State = 108;
- Match(T__9);
- State = 109;
- Match(T__0);
- State = 110;
- ((ForDeclStatementContext)_localctx).initializer = declaration();
- State = 112;
- ErrorHandler.Sync(this);
- _la = TokenStream.LA(1);
- if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 7169730606806925314L) != 0)) {
- {
- State = 111;
- ((ForDeclStatementContext)_localctx).cond = expression(0);
- }
- }
-
- State = 114;
- Match(T__3);
- State = 116;
- ErrorHandler.Sync(this);
- _la = TokenStream.LA(1);
- if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 7169730606806925314L) != 0)) {
- {
- State = 115;
- ((ForDeclStatementContext)_localctx).post = expression(0);
- }
- }
-
- State = 118;
- Match(T__2);
- State = 119;
- ((ForDeclStatementContext)_localctx).body = statement();
- }
- break;
- case 5:
- _localctx = new WhileStatementContext(_localctx);
- EnterOuterAlt(_localctx, 5);
- {
- State = 121;
- Match(T__10);
- State = 122;
- Match(T__0);
- State = 123;
- ((WhileStatementContext)_localctx).cond = expression(0);
- State = 124;
- Match(T__2);
- State = 125;
- ((WhileStatementContext)_localctx).body = statement();
- }
- break;
- case 6:
- _localctx = new DoWhileStatementContext(_localctx);
- EnterOuterAlt(_localctx, 6);
- {
- State = 127;
- Match(T__11);
- State = 128;
- ((DoWhileStatementContext)_localctx).body = statement();
- State = 129;
- Match(T__10);
- State = 130;
- Match(T__0);
- State = 131;
- ((DoWhileStatementContext)_localctx).cond = expression(0);
- State = 132;
- Match(T__2);
- State = 133;
- Match(T__3);
- }
- break;
- case 7:
- _localctx = new BreakStatementContext(_localctx);
- EnterOuterAlt(_localctx, 7);
- {
- State = 135;
- Match(T__12);
- State = 136;
- Match(T__3);
- }
- break;
- case 8:
- _localctx = new ContinueStatementContext(_localctx);
- EnterOuterAlt(_localctx, 8);
- {
- State = 137;
- Match(T__13);
- State = 138;
- Match(T__3);
- }
- break;
- case 9:
- _localctx = new ExpressionStatementContext(_localctx);
- EnterOuterAlt(_localctx, 9);
- {
- State = 139;
- expression(0);
- State = 140;
- Match(T__3);
- }
- break;
- case 10:
- _localctx = new BlockStatementContext(_localctx);
- EnterOuterAlt(_localctx, 10);
- {
- State = 142;
- block();
- }
- break;
- case 11:
- _localctx = new NullStatementContext(_localctx);
- EnterOuterAlt(_localctx, 11);
- {
- State = 143;
- Match(T__3);
- }
- break;
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- ErrorHandler.ReportError(this, re);
- ErrorHandler.Recover(this, re);
- }
- finally {
- ExitRule();
- }
- return _localctx;
- }
-
- public partial class DeclarationContext : Q1.Compiler.Context {
- public DeclarationContext(ParserRuleContext parent, int invokingState)
- : base(parent, invokingState)
- {
- }
- public override int RuleIndex { get { return RULE_declaration; } }
-
- public DeclarationContext() { }
- public virtual void CopyFrom(DeclarationContext context) {
- base.CopyFrom(context);
- }
- }
- public partial class VariableDeclarationContext : DeclarationContext {
- public IToken name;
- public ExpressionContext value;
- [System.Diagnostics.DebuggerNonUserCode] public TypeContext type() {
- return GetRuleContext(0);
- }
- [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ID() { return GetToken(CGrammarParser.ID, 0); }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression() {
- return GetRuleContext(0);
- }
- public VariableDeclarationContext(DeclarationContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept(IParseTreeVisitor visitor) {
- ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
- if (typedVisitor != null) return typedVisitor.VisitVariableDeclaration(this);
- else return visitor.VisitChildren(this);
- }
- }
-
- [RuleVersion(0)]
- public DeclarationContext declaration() {
- DeclarationContext _localctx = new DeclarationContext(Context, State);
- EnterRule(_localctx, 10, RULE_declaration);
- int _la;
- try {
- _localctx = new VariableDeclarationContext(_localctx);
- EnterOuterAlt(_localctx, 1);
- {
- State = 146;
- type(0);
- State = 147;
- ((VariableDeclarationContext)_localctx).name = Match(ID);
- State = 150;
- ErrorHandler.Sync(this);
- _la = TokenStream.LA(1);
- if (_la==T__14) {
- {
- State = 148;
- Match(T__14);
- State = 149;
- ((VariableDeclarationContext)_localctx).value = expression(0);
- }
- }
-
- State = 152;
- Match(T__3);
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- ErrorHandler.ReportError(this, re);
- ErrorHandler.Recover(this, re);
- }
- finally {
- ExitRule();
- }
- return _localctx;
- }
-
- public partial class ExpressionContext : Q1.Compiler.Context {
- public ExpressionContext(ParserRuleContext parent, int invokingState)
- : base(parent, invokingState)
- {
- }
- public override int RuleIndex { get { return RULE_expression; } }
-
- public ExpressionContext() { }
- public virtual void CopyFrom(ExpressionContext context) {
- base.CopyFrom(context);
- }
- }
- public partial class AddressOfExpressionContext : ExpressionContext {
- [System.Diagnostics.DebuggerNonUserCode] public TargetContext target() {
- return GetRuleContext(0);
- }
- public AddressOfExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept(IParseTreeVisitor visitor) {
- ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
- if (typedVisitor != null) return typedVisitor.VisitAddressOfExpression(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class CompoundSubtractExpressionContext : ExpressionContext {
- [System.Diagnostics.DebuggerNonUserCode] public TargetContext target() {
- return GetRuleContext(0);
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression() {
- return GetRuleContext(0);
- }
- public CompoundSubtractExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept(IParseTreeVisitor visitor) {
- ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
- if (typedVisitor != null) return typedVisitor.VisitCompoundSubtractExpression(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class ModulusExpressionContext : ExpressionContext {
- public ExpressionContext left;
- public ExpressionContext right;
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext[] expression() {
- return GetRuleContexts();
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression(int i) {
- return GetRuleContext(i);
- }
- public ModulusExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept(IParseTreeVisitor visitor) {
- ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
- if (typedVisitor != null) return typedVisitor.VisitModulusExpression(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class NotExpressionContext : ExpressionContext {
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression() {
- return GetRuleContext(0);
- }
- public NotExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept(IParseTreeVisitor visitor) {
- ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
- if (typedVisitor != null) return typedVisitor.VisitNotExpression(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class DecrementPrefixExpressionContext : ExpressionContext {
- [System.Diagnostics.DebuggerNonUserCode] public TargetContext target() {
- return GetRuleContext(0);
- }
- public DecrementPrefixExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept(IParseTreeVisitor visitor) {
- ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
- if (typedVisitor != null) return typedVisitor.VisitDecrementPrefixExpression(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class MultiplyExpressionContext : ExpressionContext {
- public ExpressionContext left;
- public ExpressionContext right;
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext[] expression() {
- return GetRuleContexts();
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression(int i) {
- return GetRuleContext(i);
- }
- public MultiplyExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept(IParseTreeVisitor visitor) {
- ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
- if (typedVisitor != null) return typedVisitor.VisitMultiplyExpression(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class GreaterThanExpressionContext : ExpressionContext {
- public ExpressionContext left;
- public ExpressionContext right;
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext[] expression() {
- return GetRuleContexts();
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression(int i) {
- return GetRuleContext(i);
- }
- public GreaterThanExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept(IParseTreeVisitor visitor) {
- ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
- if (typedVisitor != null) return typedVisitor.VisitGreaterThanExpression(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class BitwiseLeftShiftExpressionContext : ExpressionContext {
- public ExpressionContext left;
- public ExpressionContext right;
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext[] expression() {
- return GetRuleContexts();
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression(int i) {
- return GetRuleContext(i);
- }
- public BitwiseLeftShiftExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept(IParseTreeVisitor visitor) {
- ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
- if (typedVisitor != null) return typedVisitor.VisitBitwiseLeftShiftExpression(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class BitwiseRightShiftExpressionContext : ExpressionContext {
- public ExpressionContext left;
- public ExpressionContext right;
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext[] expression() {
- return GetRuleContexts();
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression(int i) {
- return GetRuleContext(i);
- }
- public BitwiseRightShiftExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept(IParseTreeVisitor visitor) {
- ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
- if (typedVisitor != null) return typedVisitor.VisitBitwiseRightShiftExpression(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class VariableExpressionContext : ExpressionContext {
- [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ID() { return GetToken(CGrammarParser.ID, 0); }
- public VariableExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept(IParseTreeVisitor visitor) {
- ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
- if (typedVisitor != null) return typedVisitor.VisitVariableExpression(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class CompoundDivideExpressionContext : ExpressionContext {
- [System.Diagnostics.DebuggerNonUserCode] public TargetContext target() {
- return GetRuleContext(0);
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression() {
- return GetRuleContext(0);
- }
- public CompoundDivideExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept(IParseTreeVisitor visitor) {
- ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
- if (typedVisitor != null) return typedVisitor.VisitCompoundDivideExpression(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class ParenthesizedExpressionContext : ExpressionContext {
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression() {
- return GetRuleContext(0);
- }
- public ParenthesizedExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept(IParseTreeVisitor visitor) {
- ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
- if (typedVisitor != null) return typedVisitor.VisitParenthesizedExpression(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class CompoundAddExpressionContext : ExpressionContext {
- [System.Diagnostics.DebuggerNonUserCode] public TargetContext target() {
- return GetRuleContext(0);
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression() {
- return GetRuleContext(0);
- }
- public CompoundAddExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept(IParseTreeVisitor visitor) {
- ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
- if (typedVisitor != null) return typedVisitor.VisitCompoundAddExpression(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class CompoundMultiplyExpressionContext : ExpressionContext {
- [System.Diagnostics.DebuggerNonUserCode] public TargetContext target() {
- return GetRuleContext(0);
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression() {
- return GetRuleContext(0);
- }
- public CompoundMultiplyExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept(IParseTreeVisitor visitor) {
- ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
- if (typedVisitor != null) return typedVisitor.VisitCompoundMultiplyExpression(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class CompoundBitwiseXorExpressionContext : ExpressionContext {
- [System.Diagnostics.DebuggerNonUserCode] public TargetContext target() {
- return GetRuleContext(0);
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression() {
- return GetRuleContext(0);
- }
- public CompoundBitwiseXorExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept(IParseTreeVisitor visitor) {
- ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
- if (typedVisitor != null) return typedVisitor.VisitCompoundBitwiseXorExpression(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class BitwiseAndExpressionContext : ExpressionContext {
- public ExpressionContext left;
- public ExpressionContext right;
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext[] expression() {
- return GetRuleContexts();
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression(int i) {
- return GetRuleContext(i);
- }
- public BitwiseAndExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept(IParseTreeVisitor visitor) {
- ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
- if (typedVisitor != null) return typedVisitor.VisitBitwiseAndExpression(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class LessThanExpressionContext : ExpressionContext {
- public ExpressionContext left;
- public ExpressionContext right;
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext[] expression() {
- return GetRuleContexts();
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression(int i) {
- return GetRuleContext(i);
- }
- public LessThanExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept(IParseTreeVisitor visitor) {
- ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
- if (typedVisitor != null) return typedVisitor.VisitLessThanExpression(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class LogicalAndExpressionContext : ExpressionContext {
- public ExpressionContext left;
- public ExpressionContext right;
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext[] expression() {
- return GetRuleContexts();
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression(int i) {
- return GetRuleContext(i);
- }
- public LogicalAndExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept(IParseTreeVisitor visitor) {
- ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
- if (typedVisitor != null) return typedVisitor.VisitLogicalAndExpression(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class IndexExpressionContext : ExpressionContext {
- public TargetContext obj;
- public ExpressionContext indexer;
- [System.Diagnostics.DebuggerNonUserCode] public TargetContext target() {
- return GetRuleContext(0);
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression() {
- return GetRuleContext(0);
- }
- public IndexExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept(IParseTreeVisitor visitor) {
- ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
- if (typedVisitor != null) return typedVisitor.VisitIndexExpression(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class InvertExpressionContext : ExpressionContext {
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression() {
- return GetRuleContext(0);
- }
- public InvertExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept(IParseTreeVisitor visitor) {
- ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
- if (typedVisitor != null) return typedVisitor.VisitInvertExpression(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class DereferenceExpressionContext : ExpressionContext {
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression() {
- return GetRuleContext(0);
- }
- public DereferenceExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept(IParseTreeVisitor