summaryrefslogtreecommitdiff
path: root/Compiler
diff options
context:
space:
mode:
Diffstat (limited to 'Compiler')
-rw-r--r--Compiler/CGrammar.g4133
-rw-r--r--Compiler/CType.cs31
-rw-r--r--Compiler/CommentCompilationMode.cs10
-rw-r--r--Compiler/Compiler.csproj20
-rw-r--r--Compiler/CompilerException.cs4
-rw-r--r--Compiler/CompilerExtensions.cs12
-rw-r--r--Compiler/CompilerOptions.cs18
-rw-r--r--Compiler/Context.cs23
-rw-r--r--Compiler/FunctionReference.cs129
-rw-r--r--Compiler/Optimizer.cs28
-rw-r--r--Compiler/PreprocessingCharStream.cs25
-rw-r--r--Compiler/Preprocessor.cs57
-rw-r--r--Compiler/Program.cs73
-rw-r--r--Compiler/Target.cs15
-rw-r--r--Compiler/VariableReference.cs15
-rw-r--r--Compiler/gen/CGrammar.interp145
-rw-r--r--Compiler/gen/CGrammar.tokens116
-rw-r--r--Compiler/gen/CGrammarBaseVisitor.cs781
-rw-r--r--Compiler/gen/CGrammarLexer.cs238
-rw-r--r--Compiler/gen/CGrammarLexer.interp203
-rw-r--r--Compiler/gen/CGrammarLexer.tokens116
-rw-r--r--Compiler/gen/CGrammarParser.cs2821
-rw-r--r--Compiler/gen/CGrammarVisitor.cs506
-rw-r--r--Compiler/visitors/Constants.cs50
-rw-r--r--Compiler/visitors/Definitions.cs132
-rw-r--r--Compiler/visitors/Expressions.cs154
-rw-r--r--Compiler/visitors/FlowControl.cs177
-rw-r--r--Compiler/visitors/Main.cs183
-rw-r--r--Compiler/visitors/Operations.cs305
-rw-r--r--Compiler/visitors/Targets.cs40
30 files changed, 0 insertions, 6560 deletions
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 @@
-<Project Sdk="Microsoft.NET.Sdk">
-
- <PropertyGroup>
- <OutputType>Exe</OutputType>
- <TargetFramework>net9.0</TargetFramework>
- <ImplicitUsings>enable</ImplicitUsings>
- <Nullable>enable</Nullable>
- <RootNamespace>Q1.Compiler</RootNamespace>
- </PropertyGroup>
-
- <ItemGroup>
- <PackageReference Include="Antlr4.Runtime.Standard" Version="4.13.1" />
- <PackageReference Include="CommandLineParser" Version="2.9.1" />
- </ItemGroup>
-
- <ItemGroup>
- <ProjectReference Include="..\Emulator\Emulator.csproj" />
- </ItemGroup>
-
-</Project>
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<FunctionOverload> 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<string> parameterNames, List<CType> 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<string> parameterNames, List<CType> 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<CType> ParameterTypes;
- public List<string> ParameterNames;
- public bool BodyImplemented;
-
- public FunctionOverload(List<string> parameterNames, List<CType> parameterTypes, bool bodyImplemented)
- {
- this.ParameterTypes = parameterTypes;
- this.ParameterNames = parameterNames;
- this.BodyImplemented = bodyImplemented;
- }
-
- public bool ParamsMatch(List<string> parameterNames, List<CType> 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<string> 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<string, string> Defines = new();
-
- public static string Process(string filePath)
- {
- List<string> lines = [];
- ProcessFile(filePath, lines, []);
- return string.Join(Environment.NewLine, lines);
- }
-
- private static void ProcessFile(string filePath, List<string> output, HashSet<string> 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<string, string> 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<CompilerOptions>(args)
- .WithParsed(Program.Main);
- }
-
- public static void Main(CompilerOptions options)
- {
- options.InputFile = options.InputFile;
-
- try
- {
- ICharStream inputStream = new PreprocessingCharStream(options.InputFile);
- IEnumerable<string> result = Program.Compile(options, inputStream);
-
- File.WriteAllLines(options.OutputFile, result);
- if (options.Verbose)
- {
- Console.WriteLine();
- foreach (string line in result)
- Console.WriteLine(line);
- Console.WriteLine();
- }
-
- Console.WriteLine($"Compilation successful. ({result.Count(x=>x != string.Empty)} instructions)");
- }
- catch (CompilerException ex)
- {
- Console.ForegroundColor = ConsoleColor.Red;
- Console.Error.WriteLine($"Error: {ex.Message}");
- Console.ResetColor();
- Environment.Exit(1);
- }
- }
- public static IEnumerable<string> Compile(CompilerOptions options, ICharStream inputStream)
- {
- CGrammarLexer lexer = new(inputStream);
- lexer.RemoveErrorListeners();
-
- ITokenStream tokenStream = new BufferedTokenStream(lexer);
- CGrammarParser parser = new(tokenStream);
- parser.RemoveErrorListeners();
-
- Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
- Encoding encoding = Encoding.GetEncoding(437);
- CCompilerVisitor compiler = new(options.CommentCompilationMode, encoding);
- IEnumerable<string> result = compiler.Compile(parser.program());
-
- return result;
- }
-
- public static string Optimize(IEnumerable<string> instructions)
- {
- Optimizer optimizer = new(instructions.ToList());
- return optimizer.Optimize();
- }
-} \ No newline at end of file
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 @@
-//------------------------------------------------------------------------------
-// <auto-generated>
-// 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.
-// </auto-generated>
-//------------------------------------------------------------------------------
-
-// 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;
-
-/// <summary>
-/// This class provides an empty implementation of <see cref="ICGrammarVisitor{Result}"/>,
-/// which can be extended to create a visitor which only needs to handle a subset
-/// of the available methods.
-/// </summary>
-/// <typeparam name="Result">The return type of the visit operation.</typeparam>
-[System.CodeDom.Compiler.GeneratedCode("ANTLR", "4.13.2")]
-[System.Diagnostics.DebuggerNonUserCode]
-[System.CLSCompliant(false)]
-public partial class CGrammarBaseVisitor<Result> : AbstractParseTreeVisitor<Result>, ICGrammarVisitor<Result> {
- /// <summary>
- /// Visit a parse tree produced by <see cref="CGrammarParser.program"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitProgram([NotNull] CGrammarParser.ProgramContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>functionPrototype</c>
- /// labeled alternative in <see cref="CGrammarParser.function"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitFunctionPrototype([NotNull] CGrammarParser.FunctionPrototypeContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>functionDefinition</c>
- /// labeled alternative in <see cref="CGrammarParser.function"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitFunctionDefinition([NotNull] CGrammarParser.FunctionDefinitionContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by <see cref="CGrammarParser.block"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitBlock([NotNull] CGrammarParser.BlockContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by <see cref="CGrammarParser.block_item"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitBlock_item([NotNull] CGrammarParser.Block_itemContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>returnStatement</c>
- /// labeled alternative in <see cref="CGrammarParser.statement"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitReturnStatement([NotNull] CGrammarParser.ReturnStatementContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>ifStatement</c>
- /// labeled alternative in <see cref="CGrammarParser.statement"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitIfStatement([NotNull] CGrammarParser.IfStatementContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>forExprStatement</c>
- /// labeled alternative in <see cref="CGrammarParser.statement"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitForExprStatement([NotNull] CGrammarParser.ForExprStatementContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>forDeclStatement</c>
- /// labeled alternative in <see cref="CGrammarParser.statement"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitForDeclStatement([NotNull] CGrammarParser.ForDeclStatementContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>whileStatement</c>
- /// labeled alternative in <see cref="CGrammarParser.statement"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitWhileStatement([NotNull] CGrammarParser.WhileStatementContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>doWhileStatement</c>
- /// labeled alternative in <see cref="CGrammarParser.statement"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitDoWhileStatement([NotNull] CGrammarParser.DoWhileStatementContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>breakStatement</c>
- /// labeled alternative in <see cref="CGrammarParser.statement"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitBreakStatement([NotNull] CGrammarParser.BreakStatementContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>continueStatement</c>
- /// labeled alternative in <see cref="CGrammarParser.statement"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitContinueStatement([NotNull] CGrammarParser.ContinueStatementContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>expressionStatement</c>
- /// labeled alternative in <see cref="CGrammarParser.statement"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitExpressionStatement([NotNull] CGrammarParser.ExpressionStatementContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>blockStatement</c>
- /// labeled alternative in <see cref="CGrammarParser.statement"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitBlockStatement([NotNull] CGrammarParser.BlockStatementContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>nullStatement</c>
- /// labeled alternative in <see cref="CGrammarParser.statement"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitNullStatement([NotNull] CGrammarParser.NullStatementContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>variableDeclaration</c>
- /// labeled alternative in <see cref="CGrammarParser.declaration"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitVariableDeclaration([NotNull] CGrammarParser.VariableDeclarationContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>addressOfExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitAddressOfExpression([NotNull] CGrammarParser.AddressOfExpressionContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>compoundSubtractExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitCompoundSubtractExpression([NotNull] CGrammarParser.CompoundSubtractExpressionContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>modulusExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitModulusExpression([NotNull] CGrammarParser.ModulusExpressionContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>notExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitNotExpression([NotNull] CGrammarParser.NotExpressionContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>decrementPrefixExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitDecrementPrefixExpression([NotNull] CGrammarParser.DecrementPrefixExpressionContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>multiplyExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitMultiplyExpression([NotNull] CGrammarParser.MultiplyExpressionContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>greaterThanExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitGreaterThanExpression([NotNull] CGrammarParser.GreaterThanExpressionContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>bitwiseLeftShiftExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitBitwiseLeftShiftExpression([NotNull] CGrammarParser.BitwiseLeftShiftExpressionContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>bitwiseRightShiftExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitBitwiseRightShiftExpression([NotNull] CGrammarParser.BitwiseRightShiftExpressionContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>variableExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitVariableExpression([NotNull] CGrammarParser.VariableExpressionContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>compoundDivideExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitCompoundDivideExpression([NotNull] CGrammarParser.CompoundDivideExpressionContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>parenthesizedExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitParenthesizedExpression([NotNull] CGrammarParser.ParenthesizedExpressionContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>compoundAddExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitCompoundAddExpression([NotNull] CGrammarParser.CompoundAddExpressionContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>compoundMultiplyExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitCompoundMultiplyExpression([NotNull] CGrammarParser.CompoundMultiplyExpressionContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>compoundBitwiseXorExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitCompoundBitwiseXorExpression([NotNull] CGrammarParser.CompoundBitwiseXorExpressionContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>bitwiseAndExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitBitwiseAndExpression([NotNull] CGrammarParser.BitwiseAndExpressionContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>lessThanExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitLessThanExpression([NotNull] CGrammarParser.LessThanExpressionContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>logicalAndExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitLogicalAndExpression([NotNull] CGrammarParser.LogicalAndExpressionContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>indexExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitIndexExpression([NotNull] CGrammarParser.IndexExpressionContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>invertExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitInvertExpression([NotNull] CGrammarParser.InvertExpressionContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>dereferenceExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitDereferenceExpression([NotNull] CGrammarParser.DereferenceExpressionContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>equalExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitEqualExpression([NotNull] CGrammarParser.EqualExpressionContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>bitwiseXorExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitBitwiseXorExpression([NotNull] CGrammarParser.BitwiseXorExpressionContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>arrayExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitArrayExpression([NotNull] CGrammarParser.ArrayExpressionContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>constantExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitConstantExpression([NotNull] CGrammarParser.ConstantExpressionContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>compoundModulusExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitCompoundModulusExpression([NotNull] CGrammarParser.CompoundModulusExpressionContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>lessThanOrEqualExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitLessThanOrEqualExpression([NotNull] CGrammarParser.LessThanOrEqualExpressionContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>incrementPostfixExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitIncrementPostfixExpression([NotNull] CGrammarParser.IncrementPostfixExpressionContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>compoundBitwiseRightShiftExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitCompoundBitwiseRightShiftExpression([NotNull] CGrammarParser.CompoundBitwiseRightShiftExpressionContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>assignmentExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitAssignmentExpression([NotNull] CGrammarParser.AssignmentExpressionContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>notEqualExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitNotEqualExpression([NotNull] CGrammarParser.NotEqualExpressionContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>compoundBitwiseAndExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitCompoundBitwiseAndExpression([NotNull] CGrammarParser.CompoundBitwiseAndExpressionContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>logicalOrExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitLogicalOrExpression([NotNull] CGrammarParser.LogicalOrExpressionContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>incrementPrefixExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitIncrementPrefixExpression([NotNull] CGrammarParser.IncrementPrefixExpressionContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>greaterThanOrEqualExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitGreaterThanOrEqualExpression([NotNull] CGrammarParser.GreaterThanOrEqualExpressionContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>divideExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitDivideExpression([NotNull] CGrammarParser.DivideExpressionContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>bitwiseOrExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitBitwiseOrExpression([NotNull] CGrammarParser.BitwiseOrExpressionContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>callExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitCallExpression([NotNull] CGrammarParser.CallExpressionContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>addExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitAddExpression([NotNull] CGrammarParser.AddExpressionContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>subtractExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitSubtractExpression([NotNull] CGrammarParser.SubtractExpressionContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>compoundBitwiseOrExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitCompoundBitwiseOrExpression([NotNull] CGrammarParser.CompoundBitwiseOrExpressionContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>decrementPostfixExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitDecrementPostfixExpression([NotNull] CGrammarParser.DecrementPostfixExpressionContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>ternaryExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitTernaryExpression([NotNull] CGrammarParser.TernaryExpressionContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>compoundBitwiseLeftShiftExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitCompoundBitwiseLeftShiftExpression([NotNull] CGrammarParser.CompoundBitwiseLeftShiftExpressionContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>intConstant</c>
- /// labeled alternative in <see cref="CGrammarParser.constant"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitIntConstant([NotNull] CGrammarParser.IntConstantContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>hexConstant</c>
- /// labeled alternative in <see cref="CGrammarParser.constant"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitHexConstant([NotNull] CGrammarParser.HexConstantContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>charConstant</c>
- /// labeled alternative in <see cref="CGrammarParser.constant"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitCharConstant([NotNull] CGrammarParser.CharConstantContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>stringConstant</c>
- /// labeled alternative in <see cref="CGrammarParser.constant"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitStringConstant([NotNull] CGrammarParser.StringConstantContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by <see cref="CGrammarParser.type"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitType([NotNull] CGrammarParser.TypeContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>indexerTarget</c>
- /// labeled alternative in <see cref="CGrammarParser.target"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- public virtual Result VisitIndexerTarget([NotNull] CGrammarParser.IndexerTargetContext context) { return VisitChildren(context); }
- /// <summary>
- /// Visit a parse tree produced by the <c>variableTarget</c>
- /// labeled alternative in <see cref="CGrammarParser.target"/>.
- /// <para>
- /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
- /// on <paramref name="context"/>.
- /// </para>
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- 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 @@
-//------------------------------------------------------------------------------
-// <auto-generated>
-// 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.
-// </auto-generated>
-//------------------------------------------------------------------------------
-
-// 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 @@
-//------------------------------------------------------------------------------
-// <auto-generated>
-// 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.
-// </auto-generated>
-//------------------------------------------------------------------------------
-
-// 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<FunctionContext>();
- }
- [System.Diagnostics.DebuggerNonUserCode] public FunctionContext function(int i) {
- return GetRuleContext<FunctionContext>(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<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- 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<TypeContext> _types = new List<TypeContext>();
- public IToken _ID;
- public IList<IToken> _params = new List<IToken>();
- [System.Diagnostics.DebuggerNonUserCode] public TypeContext[] type() {
- return GetRuleContexts<TypeContext>();
- }
- [System.Diagnostics.DebuggerNonUserCode] public TypeContext type(int i) {
- return GetRuleContext<TypeContext>(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<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- 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<TypeContext> _types = new List<TypeContext>();
- public IToken _ID;
- public IList<IToken> _params = new List<IToken>();
- [System.Diagnostics.DebuggerNonUserCode] public BlockContext block() {
- return GetRuleContext<BlockContext>(0);
- }
- [System.Diagnostics.DebuggerNonUserCode] public TypeContext[] type() {
- return GetRuleContexts<TypeContext>();
- }
- [System.Diagnostics.DebuggerNonUserCode] public TypeContext type(int i) {
- return GetRuleContext<TypeContext>(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<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- 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<Block_itemContext>();
- }
- [System.Diagnostics.DebuggerNonUserCode] public Block_itemContext block_item(int i) {
- return GetRuleContext<Block_itemContext>(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<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- 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<StatementContext>(0);
- }
- [System.Diagnostics.DebuggerNonUserCode] public DeclarationContext declaration() {
- return GetRuleContext<DeclarationContext>(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<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- 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<ExpressionContext>(0);
- }
- [System.Diagnostics.DebuggerNonUserCode] public StatementContext statement() {
- return GetRuleContext<StatementContext>(0);
- }
- public WhileStatementContext(StatementContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- 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<DeclarationContext>(0);
- }
- [System.Diagnostics.DebuggerNonUserCode] public StatementContext statement() {
- return GetRuleContext<StatementContext>(0);
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext[] expression() {
- return GetRuleContexts<ExpressionContext>();
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression(int i) {
- return GetRuleContext<ExpressionContext>(i);
- }
- public ForDeclStatementContext(StatementContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- 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<BlockContext>(0);
- }
- public BlockStatementContext(StatementContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- 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<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- 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<StatementContext>(0);
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext[] expression() {
- return GetRuleContexts<ExpressionContext>();
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression(int i) {
- return GetRuleContext<ExpressionContext>(i);
- }
- public ForExprStatementContext(StatementContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- 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<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- 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<StatementContext>(0);
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression() {
- return GetRuleContext<ExpressionContext>(0);
- }
- public DoWhileStatementContext(StatementContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- 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<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- 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<ExpressionContext>(0);
- }
- public ExpressionStatementContext(StatementContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- 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<ExpressionContext>(0);
- }
- public ReturnStatementContext(StatementContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- 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<ExpressionContext>(0);
- }
- [System.Diagnostics.DebuggerNonUserCode] public StatementContext[] statement() {
- return GetRuleContexts<StatementContext>();
- }
- [System.Diagnostics.DebuggerNonUserCode] public StatementContext statement(int i) {
- return GetRuleContext<StatementContext>(i);
- }
- public IfStatementContext(StatementContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- 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<TypeContext>(0);
- }
- [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ID() { return GetToken(CGrammarParser.ID, 0); }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression() {
- return GetRuleContext<ExpressionContext>(0);
- }
- public VariableDeclarationContext(DeclarationContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- 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<TargetContext>(0);
- }
- public AddressOfExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- 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<TargetContext>(0);
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression() {
- return GetRuleContext<ExpressionContext>(0);
- }
- public CompoundSubtractExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- 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<ExpressionContext>();
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression(int i) {
- return GetRuleContext<ExpressionContext>(i);
- }
- public ModulusExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- 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<ExpressionContext>(0);
- }
- public NotExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- 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<TargetContext>(0);
- }
- public DecrementPrefixExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- 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<ExpressionContext>();
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression(int i) {
- return GetRuleContext<ExpressionContext>(i);
- }
- public MultiplyExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- 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<ExpressionContext>();
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression(int i) {
- return GetRuleContext<ExpressionContext>(i);
- }
- public GreaterThanExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- 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<ExpressionContext>();
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression(int i) {
- return GetRuleContext<ExpressionContext>(i);
- }
- public BitwiseLeftShiftExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- 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<ExpressionContext>();
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression(int i) {
- return GetRuleContext<ExpressionContext>(i);
- }
- public BitwiseRightShiftExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- 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<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- 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<TargetContext>(0);
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression() {
- return GetRuleContext<ExpressionContext>(0);
- }
- public CompoundDivideExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- 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<ExpressionContext>(0);
- }
- public ParenthesizedExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- 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<TargetContext>(0);
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression() {
- return GetRuleContext<ExpressionContext>(0);
- }
- public CompoundAddExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- 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<TargetContext>(0);
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression() {
- return GetRuleContext<ExpressionContext>(0);
- }
- public CompoundMultiplyExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- 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<TargetContext>(0);
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression() {
- return GetRuleContext<ExpressionContext>(0);
- }
- public CompoundBitwiseXorExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- 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<ExpressionContext>();
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression(int i) {
- return GetRuleContext<ExpressionContext>(i);
- }
- public BitwiseAndExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- 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<ExpressionContext>();
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression(int i) {
- return GetRuleContext<ExpressionContext>(i);
- }
- public LessThanExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- 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<ExpressionContext>();
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression(int i) {
- return GetRuleContext<ExpressionContext>(i);
- }
- public LogicalAndExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- 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<TargetContext>(0);
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression() {
- return GetRuleContext<ExpressionContext>(0);
- }
- public IndexExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- 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<ExpressionContext>(0);
- }
- public InvertExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- 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<ExpressionContext>(0);
- }
- public DereferenceExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- if (typedVisitor != null) return typedVisitor.VisitDereferenceExpression(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class EqualExpressionContext : ExpressionContext {
- public ExpressionContext left;
- public ExpressionContext right;
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext[] expression() {
- return GetRuleContexts<ExpressionContext>();
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression(int i) {
- return GetRuleContext<ExpressionContext>(i);
- }
- public EqualExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- if (typedVisitor != null) return typedVisitor.VisitEqualExpression(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class BitwiseXorExpressionContext : ExpressionContext {
- public ExpressionContext left;
- public ExpressionContext right;
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext[] expression() {
- return GetRuleContexts<ExpressionContext>();
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression(int i) {
- return GetRuleContext<ExpressionContext>(i);
- }
- public BitwiseXorExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- if (typedVisitor != null) return typedVisitor.VisitBitwiseXorExpression(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class ArrayExpressionContext : ExpressionContext {
- public ExpressionContext _expression;
- public IList<ExpressionContext> _params = new List<ExpressionContext>();
- [System.Diagnostics.DebuggerNonUserCode] public TypeContext type() {
- return GetRuleContext<TypeContext>(0);
- }
- [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INT() { return GetToken(CGrammarParser.INT, 0); }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext[] expression() {
- return GetRuleContexts<ExpressionContext>();
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression(int i) {
- return GetRuleContext<ExpressionContext>(i);
- }
- public ArrayExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- if (typedVisitor != null) return typedVisitor.VisitArrayExpression(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class ConstantExpressionContext : ExpressionContext {
- [System.Diagnostics.DebuggerNonUserCode] public ConstantContext constant() {
- return GetRuleContext<ConstantContext>(0);
- }
- public ConstantExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- if (typedVisitor != null) return typedVisitor.VisitConstantExpression(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class CompoundModulusExpressionContext : ExpressionContext {
- [System.Diagnostics.DebuggerNonUserCode] public TargetContext target() {
- return GetRuleContext<TargetContext>(0);
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression() {
- return GetRuleContext<ExpressionContext>(0);
- }
- public CompoundModulusExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- if (typedVisitor != null) return typedVisitor.VisitCompoundModulusExpression(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class LessThanOrEqualExpressionContext : ExpressionContext {
- public ExpressionContext left;
- public ExpressionContext right;
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext[] expression() {
- return GetRuleContexts<ExpressionContext>();
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression(int i) {
- return GetRuleContext<ExpressionContext>(i);
- }
- public LessThanOrEqualExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- if (typedVisitor != null) return typedVisitor.VisitLessThanOrEqualExpression(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class IncrementPostfixExpressionContext : ExpressionContext {
- [System.Diagnostics.DebuggerNonUserCode] public TargetContext target() {
- return GetRuleContext<TargetContext>(0);
- }
- public IncrementPostfixExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- if (typedVisitor != null) return typedVisitor.VisitIncrementPostfixExpression(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class CompoundBitwiseRightShiftExpressionContext : ExpressionContext {
- [System.Diagnostics.DebuggerNonUserCode] public TargetContext target() {
- return GetRuleContext<TargetContext>(0);
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression() {
- return GetRuleContext<ExpressionContext>(0);
- }
- public CompoundBitwiseRightShiftExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- if (typedVisitor != null) return typedVisitor.VisitCompoundBitwiseRightShiftExpression(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class AssignmentExpressionContext : ExpressionContext {
- [System.Diagnostics.DebuggerNonUserCode] public TargetContext target() {
- return GetRuleContext<TargetContext>(0);
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression() {
- return GetRuleContext<ExpressionContext>(0);
- }
- public AssignmentExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- if (typedVisitor != null) return typedVisitor.VisitAssignmentExpression(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class NotEqualExpressionContext : ExpressionContext {
- public ExpressionContext left;
- public ExpressionContext right;
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext[] expression() {
- return GetRuleContexts<ExpressionContext>();
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression(int i) {
- return GetRuleContext<ExpressionContext>(i);
- }
- public NotEqualExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- if (typedVisitor != null) return typedVisitor.VisitNotEqualExpression(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class CompoundBitwiseAndExpressionContext : ExpressionContext {
- [System.Diagnostics.DebuggerNonUserCode] public TargetContext target() {
- return GetRuleContext<TargetContext>(0);
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression() {
- return GetRuleContext<ExpressionContext>(0);
- }
- public CompoundBitwiseAndExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- if (typedVisitor != null) return typedVisitor.VisitCompoundBitwiseAndExpression(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class LogicalOrExpressionContext : ExpressionContext {
- public ExpressionContext left;
- public ExpressionContext right;
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext[] expression() {
- return GetRuleContexts<ExpressionContext>();
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression(int i) {
- return GetRuleContext<ExpressionContext>(i);
- }
- public LogicalOrExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- if (typedVisitor != null) return typedVisitor.VisitLogicalOrExpression(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class IncrementPrefixExpressionContext : ExpressionContext {
- [System.Diagnostics.DebuggerNonUserCode] public TargetContext target() {
- return GetRuleContext<TargetContext>(0);
- }
- public IncrementPrefixExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- if (typedVisitor != null) return typedVisitor.VisitIncrementPrefixExpression(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class GreaterThanOrEqualExpressionContext : ExpressionContext {
- public ExpressionContext left;
- public ExpressionContext right;
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext[] expression() {
- return GetRuleContexts<ExpressionContext>();
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression(int i) {
- return GetRuleContext<ExpressionContext>(i);
- }
- public GreaterThanOrEqualExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- if (typedVisitor != null) return typedVisitor.VisitGreaterThanOrEqualExpression(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class DivideExpressionContext : ExpressionContext {
- public ExpressionContext left;
- public ExpressionContext right;
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext[] expression() {
- return GetRuleContexts<ExpressionContext>();
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression(int i) {
- return GetRuleContext<ExpressionContext>(i);
- }
- public DivideExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- if (typedVisitor != null) return typedVisitor.VisitDivideExpression(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class BitwiseOrExpressionContext : ExpressionContext {
- public ExpressionContext left;
- public ExpressionContext right;
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext[] expression() {
- return GetRuleContexts<ExpressionContext>();
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression(int i) {
- return GetRuleContext<ExpressionContext>(i);
- }
- public BitwiseOrExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- if (typedVisitor != null) return typedVisitor.VisitBitwiseOrExpression(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class CallExpressionContext : ExpressionContext {
- public ExpressionContext _expression;
- public IList<ExpressionContext> _params = new List<ExpressionContext>();
- [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ID() { return GetToken(CGrammarParser.ID, 0); }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext[] expression() {
- return GetRuleContexts<ExpressionContext>();
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression(int i) {
- return GetRuleContext<ExpressionContext>(i);
- }
- public CallExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- if (typedVisitor != null) return typedVisitor.VisitCallExpression(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class AddExpressionContext : ExpressionContext {
- public ExpressionContext left;
- public ExpressionContext right;
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext[] expression() {
- return GetRuleContexts<ExpressionContext>();
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression(int i) {
- return GetRuleContext<ExpressionContext>(i);
- }
- public AddExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- if (typedVisitor != null) return typedVisitor.VisitAddExpression(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class SubtractExpressionContext : ExpressionContext {
- public ExpressionContext left;
- public ExpressionContext right;
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext[] expression() {
- return GetRuleContexts<ExpressionContext>();
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression(int i) {
- return GetRuleContext<ExpressionContext>(i);
- }
- public SubtractExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- if (typedVisitor != null) return typedVisitor.VisitSubtractExpression(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class CompoundBitwiseOrExpressionContext : ExpressionContext {
- [System.Diagnostics.DebuggerNonUserCode] public TargetContext target() {
- return GetRuleContext<TargetContext>(0);
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression() {
- return GetRuleContext<ExpressionContext>(0);
- }
- public CompoundBitwiseOrExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- if (typedVisitor != null) return typedVisitor.VisitCompoundBitwiseOrExpression(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class DecrementPostfixExpressionContext : ExpressionContext {
- [System.Diagnostics.DebuggerNonUserCode] public TargetContext target() {
- return GetRuleContext<TargetContext>(0);
- }
- public DecrementPostfixExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- if (typedVisitor != null) return typedVisitor.VisitDecrementPostfixExpression(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class TernaryExpressionContext : ExpressionContext {
- public ExpressionContext cond;
- public ExpressionContext then;
- public ExpressionContext @else;
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext[] expression() {
- return GetRuleContexts<ExpressionContext>();
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression(int i) {
- return GetRuleContext<ExpressionContext>(i);
- }
- public TernaryExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- if (typedVisitor != null) return typedVisitor.VisitTernaryExpression(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class CompoundBitwiseLeftShiftExpressionContext : ExpressionContext {
- [System.Diagnostics.DebuggerNonUserCode] public TargetContext target() {
- return GetRuleContext<TargetContext>(0);
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression() {
- return GetRuleContext<ExpressionContext>(0);
- }
- public CompoundBitwiseLeftShiftExpressionContext(ExpressionContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- if (typedVisitor != null) return typedVisitor.VisitCompoundBitwiseLeftShiftExpression(this);
- else return visitor.VisitChildren(this);
- }
- }
-
- [RuleVersion(0)]
- public ExpressionContext expression() {
- return expression(0);
- }
-
- private ExpressionContext expression(int _p) {
- ParserRuleContext _parentctx = Context;
- int _parentState = State;
- ExpressionContext _localctx = new ExpressionContext(Context, _parentState);
- ExpressionContext _prevctx = _localctx;
- int _startState = 12;
- EnterRecursionRule(_localctx, 12, RULE_expression, _p);
- int _la;
- try {
- int _alt;
- EnterOuterAlt(_localctx, 1);
- {
- State = 262;
- ErrorHandler.Sync(this);
- switch ( Interpreter.AdaptivePredict(TokenStream,22,Context) ) {
- case 1:
- {
- _localctx = new ParenthesizedExpressionContext(_localctx);
- Context = _localctx;
- _prevctx = _localctx;
-
- State = 155;
- Match(T__0);
- State = 156;
- expression(0);
- State = 157;
- Match(T__2);
- }
- break;
- case 2:
- {
- _localctx = new ArrayExpressionContext(_localctx);
- Context = _localctx;
- _prevctx = _localctx;
- State = 159;
- Match(T__15);
- State = 160;
- type(0);
- State = 161;
- Match(T__16);
- State = 163;
- ErrorHandler.Sync(this);
- _la = TokenStream.LA(1);
- if (_la==INT) {
- {
- State = 162;
- Match(INT);
- }
- }
-
- State = 165;
- Match(T__17);
- State = 178;
- ErrorHandler.Sync(this);
- switch ( Interpreter.AdaptivePredict(TokenStream,19,Context) ) {
- case 1:
- {
- State = 166;
- Match(T__4);
- State = 175;
- ErrorHandler.Sync(this);
- _la = TokenStream.LA(1);
- if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 7169730606806925314L) != 0)) {
- {
- State = 167;
- ((ArrayExpressionContext)_localctx)._expression = expression(0);
- ((ArrayExpressionContext)_localctx)._params.Add(((ArrayExpressionContext)_localctx)._expression);
- State = 172;
- ErrorHandler.Sync(this);
- _la = TokenStream.LA(1);
- while (_la==T__1) {
- {
- {
- State = 168;
- Match(T__1);
- State = 169;
- ((ArrayExpressionContext)_localctx)._expression = expression(0);
- ((ArrayExpressionContext)_localctx)._params.Add(((ArrayExpressionContext)_localctx)._expression);
- }
- }
- State = 174;
- ErrorHandler.Sync(this);
- _la = TokenStream.LA(1);
- }
- }
- }
-
- State = 177;
- Match(T__5);
- }
- break;
- }
- }
- break;
- case 3:
- {
- _localctx = new ConstantExpressionContext(_localctx);
- Context = _localctx;
- _prevctx = _localctx;
- State = 180;
- constant();
- }
- break;
- case 4:
- {
- _localctx = new AssignmentExpressionContext(_localctx);
- Context = _localctx;
- _prevctx = _localctx;
- State = 181;
- target(0);
- State = 182;
- Match(T__14);
- State = 183;
- expression(41);
- }
- break;
- case 5:
- {
- _localctx = new DereferenceExpressionContext(_localctx);
- Context = _localctx;
- _prevctx = _localctx;
- State = 185;
- Match(T__18);
- State = 186;
- expression(40);
- }
- break;
- case 6:
- {
- _localctx = new AddressOfExpressionContext(_localctx);
- Context = _localctx;
- _prevctx = _localctx;
- State = 187;
- Match(T__19);
- State = 188;
- target(0);
- }
- break;
- case 7:
- {
- _localctx = new VariableExpressionContext(_localctx);
- Context = _localctx;
- _prevctx = _localctx;
- State = 189;
- Match(ID);
- }
- break;
- case 8:
- {
- _localctx = new CallExpressionContext(_localctx);
- Context = _localctx;
- _prevctx = _localctx;
- State = 190;
- Match(ID);
- State = 191;
- Match(T__0);
- State = 200;
- ErrorHandler.Sync(this);
- _la = TokenStream.LA(1);
- if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 7169730606806925314L) != 0)) {
- {
- State = 192;
- ((CallExpressionContext)_localctx)._expression = expression(0);
- ((CallExpressionContext)_localctx)._params.Add(((CallExpressionContext)_localctx)._expression);
- State = 197;
- ErrorHandler.Sync(this);
- _la = TokenStream.LA(1);
- while (_la==T__1) {
- {
- {
- State = 193;
- Match(T__1);
- State = 194;
- ((CallExpressionContext)_localctx)._expression = expression(0);
- ((CallExpressionContext)_localctx)._params.Add(((CallExpressionContext)_localctx)._expression);
- }
- }
- State = 199;
- ErrorHandler.Sync(this);
- _la = TokenStream.LA(1);
- }
- }
- }
-
- State = 202;
- Match(T__2);
- }
- break;
- case 9:
- {
- _localctx = new IndexExpressionContext(_localctx);
- Context = _localctx;
- _prevctx = _localctx;
- State = 203;
- ((IndexExpressionContext)_localctx).obj = target(0);
- State = 204;
- Match(T__16);
- State = 205;
- ((IndexExpressionContext)_localctx).indexer = expression(0);
- State = 206;
- Match(T__17);
- }
- break;
- case 10:
- {
- _localctx = new NotExpressionContext(_localctx);
- Context = _localctx;
- _prevctx = _localctx;
- State = 208;
- Match(T__20);
- State = 209;
- expression(35);
- }
- break;
- case 11:
- {
- _localctx = new InvertExpressionContext(_localctx);
- Context = _localctx;
- _prevctx = _localctx;
- State = 210;
- Match(T__21);
- State = 211;
- expression(34);
- }
- break;
- case 12:
- {
- _localctx = new IncrementPrefixExpressionContext(_localctx);
- Context = _localctx;
- _prevctx = _localctx;
- State = 212;
- Match(T__22);
- State = 213;
- target(0);
- }
- break;
- case 13:
- {
- _localctx = new DecrementPrefixExpressionContext(_localctx);
- Context = _localctx;
- _prevctx = _localctx;
- State = 214;
- Match(T__23);
- State = 215;
- target(0);
- }
- break;
- case 14:
- {
- _localctx = new IncrementPostfixExpressionContext(_localctx);
- Context = _localctx;
- _prevctx = _localctx;
- State = 216;
- target(0);
- State = 217;
- Match(T__22);
- }
- break;
- case 15:
- {
- _localctx = new DecrementPostfixExpressionContext(_localctx);
- Context = _localctx;
- _prevctx = _localctx;
- State = 219;
- target(0);
- State = 220;
- Match(T__23);
- }
- break;
- case 16:
- {
- _localctx = new CompoundMultiplyExpressionContext(_localctx);
- Context = _localctx;
- _prevctx = _localctx;
- State = 222;
- target(0);
- State = 223;
- Match(T__40);
- State = 224;
- expression(11);
- }
- break;
- case 17:
- {
- _localctx = new CompoundDivideExpressionContext(_localctx);
- Context = _localctx;
- _prevctx = _localctx;
- State = 226;
- target(0);
- State = 227;
- Match(T__41);
- State = 228;
- expression(10);
- }
- break;
- case 18:
- {
- _localctx = new CompoundModulusExpressionContext(_localctx);
- Context = _localctx;
- _prevctx = _localctx;
- State = 230;
- target(0);
- State = 231;
- Match(T__42);
- State = 232;
- expression(9);
- }
- break;
- case 19:
- {
- _localctx = new CompoundAddExpressionContext(_localctx);
- Context = _localctx;
- _prevctx = _localctx;
- State = 234;
- target(0);
- State = 235;
- Match(T__43);
- State = 236;
- expression(8);
- }
- break;
- case 20:
- {
- _localctx = new CompoundSubtractExpressionContext(_localctx);
- Context = _localctx;
- _prevctx = _localctx;
- State = 238;
- target(0);
- State = 239;
- Match(T__44);
- State = 240;
- expression(7);
- }
- break;
- case 21:
- {
- _localctx = new CompoundBitwiseAndExpressionContext(_localctx);
- Context = _localctx;
- _prevctx = _localctx;
- State = 242;
- target(0);
- State = 243;
- Match(T__45);
- State = 244;
- expression(6);
- }
- break;
- case 22:
- {
- _localctx = new CompoundBitwiseOrExpressionContext(_localctx);
- Context = _localctx;
- _prevctx = _localctx;
- State = 246;
- target(0);
- State = 247;
- Match(T__46);
- State = 248;
- expression(5);
- }
- break;
- case 23:
- {
- _localctx = new CompoundBitwiseXorExpressionContext(_localctx);
- Context = _localctx;
- _prevctx = _localctx;
- State = 250;
- target(0);
- State = 251;
- Match(T__47);
- State = 252;
- expression(4);
- }
- break;
- case 24:
- {
- _localctx = new CompoundBitwiseLeftShiftExpressionContext(_localctx);
- Context = _localctx;
- _prevctx = _localctx;
- State = 254;
- target(0);
- State = 255;
- Match(T__48);
- State = 256;
- expression(3);
- }
- break;
- case 25:
- {
- _localctx = new CompoundBitwiseRightShiftExpressionContext(_localctx);
- Context = _localctx;
- _prevctx = _localctx;
- State = 258;
- target(0);
- State = 259;
- Match(T__49);
- State = 260;
- expression(2);
- }
- break;
- }
- Context.Stop = TokenStream.LT(-1);
- State = 326;
- ErrorHandler.Sync(this);
- _alt = Interpreter.AdaptivePredict(TokenStream,24,Context);
- while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) {
- if ( _alt==1 ) {
- if ( ParseListeners!=null )
- TriggerExitRuleEvent();
- _prevctx = _localctx;
- {
- State = 324;
- ErrorHandler.Sync(this);
- switch ( Interpreter.AdaptivePredict(TokenStream,23,Context) ) {
- case 1:
- {
- _localctx = new MultiplyExpressionContext(new ExpressionContext(_parentctx, _parentState));
- ((MultiplyExpressionContext)_localctx).left = _prevctx;
- PushNewRecursionContext(_localctx, _startState, RULE_expression);
- State = 264;
- if (!(Precpred(Context, 29))) throw new FailedPredicateException(this, "Precpred(Context, 29)");
- State = 265;
- Match(T__18);
- State = 266;
- ((MultiplyExpressionContext)_localctx).right = expression(30);
- }
- break;
- case 2:
- {
- _localctx = new DivideExpressionContext(new ExpressionContext(_parentctx, _parentState));
- ((DivideExpressionContext)_localctx).left = _prevctx;
- PushNewRecursionContext(_localctx, _startState, RULE_expression);
- State = 267;
- if (!(Precpred(Context, 28))) throw new FailedPredicateException(this, "Precpred(Context, 28)");
- State = 268;
- Match(T__24);
- State = 269;
- ((DivideExpressionContext)_localctx).right = expression(29);
- }
- break;
- case 3:
- {
- _localctx = new ModulusExpressionContext(new ExpressionContext(_parentctx, _parentState));
- ((ModulusExpressionContext)_localctx).left = _prevctx;
- PushNewRecursionContext(_localctx, _startState, RULE_expression);
- State = 270;
- if (!(Precpred(Context, 27))) throw new FailedPredicateException(this, "Precpred(Context, 27)");
- State = 271;
- Match(T__25);
- State = 272;
- ((ModulusExpressionContext)_localctx).right = expression(28);
- }
- break;
- case 4:
- {
- _localctx = new AddExpressionContext(new ExpressionContext(_parentctx, _parentState));
- ((AddExpressionContext)_localctx).left = _prevctx;
- PushNewRecursionContext(_localctx, _startState, RULE_expression);
- State = 273;
- if (!(Precpred(Context, 26))) throw new FailedPredicateException(this, "Precpred(Context, 26)");
- State = 274;
- Match(T__26);
- State = 275;
- ((AddExpressionContext)_localctx).right = expression(27);
- }
- break;
- case 5:
- {
- _localctx = new SubtractExpressionContext(new ExpressionContext(_parentctx, _parentState));
- ((SubtractExpressionContext)_localctx).left = _prevctx;
- PushNewRecursionContext(_localctx, _startState, RULE_expression);
- State = 276;
- if (!(Precpred(Context, 25))) throw new FailedPredicateException(this, "Precpred(Context, 25)");
- State = 277;
- Match(T__27);
- State = 278;
- ((SubtractExpressionContext)_localctx).right = expression(26);
- }
- break;
- case 6:
- {
- _localctx = new LessThanExpressionContext(new ExpressionContext(_parentctx, _parentState));
- ((LessThanExpressionContext)_localctx).left = _prevctx;
- PushNewRecursionContext(_localctx, _startState, RULE_expression);
- State = 279;
- if (!(Precpred(Context, 24))) throw new FailedPredicateException(this, "Precpred(Context, 24)");
- State = 280;
- Match(T__28);
- State = 281;
- ((LessThanExpressionContext)_localctx).right = expression(25);
- }
- break;
- case 7:
- {
- _localctx = new GreaterThanExpressionContext(new ExpressionContext(_parentctx, _parentState));
- ((GreaterThanExpressionContext)_localctx).left = _prevctx;
- PushNewRecursionContext(_localctx, _startState, RULE_expression);
- State = 282;
- if (!(Precpred(Context, 23))) throw new FailedPredicateException(this, "Precpred(Context, 23)");
- State = 283;
- Match(T__29);
- State = 284;
- ((GreaterThanExpressionContext)_localctx).right = expression(24);
- }
- break;
- case 8:
- {
- _localctx = new LessThanOrEqualExpressionContext(new ExpressionContext(_parentctx, _parentState));
- ((LessThanOrEqualExpressionContext)_localctx).left = _prevctx;
- PushNewRecursionContext(_localctx, _startState, RULE_expression);
- State = 285;
- if (!(Precpred(Context, 22))) throw new FailedPredicateException(this, "Precpred(Context, 22)");
- State = 286;
- Match(T__30);
- State = 287;
- ((LessThanOrEqualExpressionContext)_localctx).right = expression(23);
- }
- break;
- case 9:
- {
- _localctx = new GreaterThanOrEqualExpressionContext(new ExpressionContext(_parentctx, _parentState));
- ((GreaterThanOrEqualExpressionContext)_localctx).left = _prevctx;
- PushNewRecursionContext(_localctx, _startState, RULE_expression);
- State = 288;
- if (!(Precpred(Context, 21))) throw new FailedPredicateException(this, "Precpred(Context, 21)");
- State = 289;
- Match(T__31);
- State = 290;
- ((GreaterThanOrEqualExpressionContext)_localctx).right = expression(22);
- }
- break;
- case 10:
- {
- _localctx = new EqualExpressionContext(new ExpressionContext(_parentctx, _parentState));
- ((EqualExpressionContext)_localctx).left = _prevctx;
- PushNewRecursionContext(_localctx, _startState, RULE_expression);
- State = 291;
- if (!(Precpred(Context, 20))) throw new FailedPredicateException(this, "Precpred(Context, 20)");
- State = 292;
- Match(T__32);
- State = 293;
- ((EqualExpressionContext)_localctx).right = expression(21);
- }
- break;
- case 11:
- {
- _localctx = new NotEqualExpressionContext(new ExpressionContext(_parentctx, _parentState));
- ((NotEqualExpressionContext)_localctx).left = _prevctx;
- PushNewRecursionContext(_localctx, _startState, RULE_expression);
- State = 294;
- if (!(Precpred(Context, 19))) throw new FailedPredicateException(this, "Precpred(Context, 19)");
- State = 295;
- Match(T__33);
- State = 296;
- ((NotEqualExpressionContext)_localctx).right = expression(20);
- }
- break;
- case 12:
- {
- _localctx = new BitwiseAndExpressionContext(new ExpressionContext(_parentctx, _parentState));
- ((BitwiseAndExpressionContext)_localctx).left = _prevctx;
- PushNewRecursionContext(_localctx, _startState, RULE_expression);
- State = 297;
- if (!(Precpred(Context, 18))) throw new FailedPredicateException(this, "Precpred(Context, 18)");
- State = 298;
- Match(T__19);
- State = 299;
- ((BitwiseAndExpressionContext)_localctx).right = expression(19);
- }
- break;
- case 13:
- {
- _localctx = new BitwiseOrExpressionContext(new ExpressionContext(_parentctx, _parentState));
- ((BitwiseOrExpressionContext)_localctx).left = _prevctx;
- PushNewRecursionContext(_localctx, _startState, RULE_expression);
- State = 300;
- if (!(Precpred(Context, 17))) throw new FailedPredicateException(this, "Precpred(Context, 17)");
- State = 301;
- Match(T__34);
- State = 302;
- ((BitwiseOrExpressionContext)_localctx).right = expression(18);
- }
- break;
- case 14:
- {
- _localctx = new BitwiseXorExpressionContext(new ExpressionContext(_parentctx, _parentState));
- ((BitwiseXorExpressionContext)_localctx).left = _prevctx;
- PushNewRecursionContext(_localctx, _startState, RULE_expression);
- State = 303;
- if (!(Precpred(Context, 16))) throw new FailedPredicateException(this, "Precpred(Context, 16)");
- State = 304;
- Match(T__35);
- State = 305;
- ((BitwiseXorExpressionContext)_localctx).right = expression(17);
- }
- break;
- case 15:
- {
- _localctx = new BitwiseLeftShiftExpressionContext(new ExpressionContext(_parentctx, _parentState));
- ((BitwiseLeftShiftExpressionContext)_localctx).left = _prevctx;
- PushNewRecursionContext(_localctx, _startState, RULE_expression);
- State = 306;
- if (!(Precpred(Context, 15))) throw new FailedPredicateException(this, "Precpred(Context, 15)");
- State = 307;
- Match(T__36);
- State = 308;
- ((BitwiseLeftShiftExpressionContext)_localctx).right = expression(16);
- }
- break;
- case 16:
- {
- _localctx = new BitwiseRightShiftExpressionContext(new ExpressionContext(_parentctx, _parentState));
- ((BitwiseRightShiftExpressionContext)_localctx).left = _prevctx;
- PushNewRecursionContext(_localctx, _startState, RULE_expression);
- State = 309;
- if (!(Precpred(Context, 14))) throw new FailedPredicateException(this, "Precpred(Context, 14)");
- State = 310;
- Match(T__37);
- State = 311;
- ((BitwiseRightShiftExpressionContext)_localctx).right = expression(15);
- }
- break;
- case 17:
- {
- _localctx = new LogicalAndExpressionContext(new ExpressionContext(_parentctx, _parentState));
- ((LogicalAndExpressionContext)_localctx).left = _prevctx;
- PushNewRecursionContext(_localctx, _startState, RULE_expression);
- State = 312;
- if (!(Precpred(Context, 13))) throw new FailedPredicateException(this, "Precpred(Context, 13)");
- State = 313;
- Match(T__38);
- State = 314;
- ((LogicalAndExpressionContext)_localctx).right = expression(14);
- }
- break;
- case 18:
- {
- _localctx = new LogicalOrExpressionContext(new ExpressionContext(_parentctx, _parentState));
- ((LogicalOrExpressionContext)_localctx).left = _prevctx;
- PushNewRecursionContext(_localctx, _startState, RULE_expression);
- State = 315;
- if (!(Precpred(Context, 12))) throw new FailedPredicateException(this, "Precpred(Context, 12)");
- State = 316;
- Match(T__39);
- State = 317;
- ((LogicalOrExpressionContext)_localctx).right = expression(13);
- }
- break;
- case 19:
- {
- _localctx = new TernaryExpressionContext(new ExpressionContext(_parentctx, _parentState));
- ((TernaryExpressionContext)_localctx).cond = _prevctx;
- PushNewRecursionContext(_localctx, _startState, RULE_expression);
- State = 318;
- if (!(Precpred(Context, 1))) throw new FailedPredicateException(this, "Precpred(Context, 1)");
- State = 319;
- Match(T__50);
- State = 320;
- ((TernaryExpressionContext)_localctx).then = expression(0);
- State = 321;
- Match(T__51);
- State = 322;
- ((TernaryExpressionContext)_localctx).@else = expression(2);
- }
- break;
- }
- }
- }
- State = 328;
- ErrorHandler.Sync(this);
- _alt = Interpreter.AdaptivePredict(TokenStream,24,Context);
- }
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- ErrorHandler.ReportError(this, re);
- ErrorHandler.Recover(this, re);
- }
- finally {
- UnrollRecursionContexts(_parentctx);
- }
- return _localctx;
- }
-
- public partial class ConstantContext : Q1.Compiler.Context {
- public ConstantContext(ParserRuleContext parent, int invokingState)
- : base(parent, invokingState)
- {
- }
- public override int RuleIndex { get { return RULE_constant; } }
-
- public ConstantContext() { }
- public virtual void CopyFrom(ConstantContext context) {
- base.CopyFrom(context);
- }
- }
- public partial class CharConstantContext : ConstantContext {
- [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode LETTER() { return GetToken(CGrammarParser.LETTER, 0); }
- public CharConstantContext(ConstantContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- if (typedVisitor != null) return typedVisitor.VisitCharConstant(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class IntConstantContext : ConstantContext {
- [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INT() { return GetToken(CGrammarParser.INT, 0); }
- public IntConstantContext(ConstantContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- if (typedVisitor != null) return typedVisitor.VisitIntConstant(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class StringConstantContext : ConstantContext {
- [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode STRING() { return GetToken(CGrammarParser.STRING, 0); }
- public StringConstantContext(ConstantContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- if (typedVisitor != null) return typedVisitor.VisitStringConstant(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class HexConstantContext : ConstantContext {
- [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode HEX() { return GetToken(CGrammarParser.HEX, 0); }
- public HexConstantContext(ConstantContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- if (typedVisitor != null) return typedVisitor.VisitHexConstant(this);
- else return visitor.VisitChildren(this);
- }
- }
-
- [RuleVersion(0)]
- public ConstantContext constant() {
- ConstantContext _localctx = new ConstantContext(Context, State);
- EnterRule(_localctx, 14, RULE_constant);
- try {
- State = 333;
- ErrorHandler.Sync(this);
- switch (TokenStream.LA(1)) {
- case INT:
- _localctx = new IntConstantContext(_localctx);
- EnterOuterAlt(_localctx, 1);
- {
- State = 329;
- Match(INT);
- }
- break;
- case HEX:
- _localctx = new HexConstantContext(_localctx);
- EnterOuterAlt(_localctx, 2);
- {
- State = 330;
- Match(HEX);
- }
- break;
- case LETTER:
- _localctx = new CharConstantContext(_localctx);
- EnterOuterAlt(_localctx, 3);
- {
- State = 331;
- Match(LETTER);
- }
- break;
- case STRING:
- _localctx = new StringConstantContext(_localctx);
- EnterOuterAlt(_localctx, 4);
- {
- State = 332;
- Match(STRING);
- }
- 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 TypeContext : Q1.Compiler.Context {
- [System.Diagnostics.DebuggerNonUserCode] public TypeContext type() {
- return GetRuleContext<TypeContext>(0);
- }
- public TypeContext(ParserRuleContext parent, int invokingState)
- : base(parent, invokingState)
- {
- }
- public override int RuleIndex { get { return RULE_type; } }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- if (typedVisitor != null) return typedVisitor.VisitType(this);
- else return visitor.VisitChildren(this);
- }
- }
-
- [RuleVersion(0)]
- public TypeContext type() {
- return type(0);
- }
-
- private TypeContext type(int _p) {
- ParserRuleContext _parentctx = Context;
- int _parentState = State;
- TypeContext _localctx = new TypeContext(Context, _parentState);
- TypeContext _prevctx = _localctx;
- int _startState = 16;
- EnterRecursionRule(_localctx, 16, RULE_type, _p);
- try {
- int _alt;
- EnterOuterAlt(_localctx, 1);
- {
- State = 338;
- ErrorHandler.Sync(this);
- switch (TokenStream.LA(1)) {
- case T__52:
- {
- State = 336;
- Match(T__52);
- }
- break;
- case T__53:
- {
- State = 337;
- Match(T__53);
- }
- break;
- default:
- throw new NoViableAltException(this);
- }
- Context.Stop = TokenStream.LT(-1);
- State = 344;
- ErrorHandler.Sync(this);
- _alt = Interpreter.AdaptivePredict(TokenStream,27,Context);
- while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) {
- if ( _alt==1 ) {
- if ( ParseListeners!=null )
- TriggerExitRuleEvent();
- _prevctx = _localctx;
- {
- {
- _localctx = new TypeContext(_parentctx, _parentState);
- PushNewRecursionContext(_localctx, _startState, RULE_type);
- State = 340;
- if (!(Precpred(Context, 1))) throw new FailedPredicateException(this, "Precpred(Context, 1)");
- State = 341;
- Match(T__18);
- }
- }
- }
- State = 346;
- ErrorHandler.Sync(this);
- _alt = Interpreter.AdaptivePredict(TokenStream,27,Context);
- }
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- ErrorHandler.ReportError(this, re);
- ErrorHandler.Recover(this, re);
- }
- finally {
- UnrollRecursionContexts(_parentctx);
- }
- return _localctx;
- }
-
- public partial class TargetContext : Q1.Compiler.Context {
- public TargetContext(ParserRuleContext parent, int invokingState)
- : base(parent, invokingState)
- {
- }
- public override int RuleIndex { get { return RULE_target; } }
-
- public TargetContext() { }
- public virtual void CopyFrom(TargetContext context) {
- base.CopyFrom(context);
- }
- }
- public partial class IndexerTargetContext : TargetContext {
- public TargetContext obj;
- public ExpressionContext indexer;
- [System.Diagnostics.DebuggerNonUserCode] public TargetContext target() {
- return GetRuleContext<TargetContext>(0);
- }
- [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression() {
- return GetRuleContext<ExpressionContext>(0);
- }
- public IndexerTargetContext(TargetContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- if (typedVisitor != null) return typedVisitor.VisitIndexerTarget(this);
- else return visitor.VisitChildren(this);
- }
- }
- public partial class VariableTargetContext : TargetContext {
- [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ID() { return GetToken(CGrammarParser.ID, 0); }
- public VariableTargetContext(TargetContext context) { CopyFrom(context); }
- [System.Diagnostics.DebuggerNonUserCode]
- public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
- ICGrammarVisitor<TResult> typedVisitor = visitor as ICGrammarVisitor<TResult>;
- if (typedVisitor != null) return typedVisitor.VisitVariableTarget(this);
- else return visitor.VisitChildren(this);
- }
- }
-
- [RuleVersion(0)]
- public TargetContext target() {
- return target(0);
- }
-
- private TargetContext target(int _p) {
- ParserRuleContext _parentctx = Context;
- int _parentState = State;
- TargetContext _localctx = new TargetContext(Context, _parentState);
- TargetContext _prevctx = _localctx;
- int _startState = 18;
- EnterRecursionRule(_localctx, 18, RULE_target, _p);
- try {
- int _alt;
- EnterOuterAlt(_localctx, 1);
- {
- {
- _localctx = new VariableTargetContext(_localctx);
- Context = _localctx;
- _prevctx = _localctx;
-
- State = 348;
- Match(ID);
- }
- Context.Stop = TokenStream.LT(-1);
- State = 357;
- ErrorHandler.Sync(this);
- _alt = Interpreter.AdaptivePredict(TokenStream,28,Context);
- while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) {
- if ( _alt==1 ) {
- if ( ParseListeners!=null )
- TriggerExitRuleEvent();
- _prevctx = _localctx;
- {
- {
- _localctx = new IndexerTargetContext(new TargetContext(_parentctx, _parentState));
- ((IndexerTargetContext)_localctx).obj = _prevctx;
- PushNewRecursionContext(_localctx, _startState, RULE_target);
- State = 350;
- if (!(Precpred(Context, 1))) throw new FailedPredicateException(this, "Precpred(Context, 1)");
- State = 351;
- Match(T__16);
- State = 352;
- ((IndexerTargetContext)_localctx).indexer = expression(0);
- State = 353;
- Match(T__17);
- }
- }
- }
- State = 359;
- ErrorHandler.Sync(this);
- _alt = Interpreter.AdaptivePredict(TokenStream,28,Context);
- }
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- ErrorHandler.ReportError(this, re);
- ErrorHandler.Recover(this, re);
- }
- finally {
- UnrollRecursionContexts(_parentctx);
- }
- return _localctx;
- }
-
- public override bool Sempred(RuleContext _localctx, int ruleIndex, int predIndex) {
- switch (ruleIndex) {
- case 6: return expression_sempred((ExpressionContext)_localctx, predIndex);
- case 8: return type_sempred((TypeContext)_localctx, predIndex);
- case 9: return target_sempred((TargetContext)_localctx, predIndex);
- }
- return true;
- }
- private bool expression_sempred(ExpressionContext _localctx, int predIndex) {
- switch (predIndex) {
- case 0: return Precpred(Context, 29);
- case 1: return Precpred(Context, 28);
- case 2: return Precpred(Context, 27);
- case 3: return Precpred(Context, 26);
- case 4: return Precpred(Context, 25);
- case 5: return Precpred(Context, 24);
- case 6: return Precpred(Context, 23);
- case 7: return Precpred(Context, 22);
- case 8: return Precpred(Context, 21);
- case 9: return Precpred(Context, 20);
- case 10: return Precpred(Context, 19);
- case 11: return Precpred(Context, 18);
- case 12: return Precpred(Context, 17);
- case 13: return Precpred(Context, 16);
- case 14: return Precpred(Context, 15);
- case 15: return Precpred(Context, 14);
- case 16: return Precpred(Context, 13);
- case 17: return Precpred(Context, 12);
- case 18: return Precpred(Context, 1);
- }
- return true;
- }
- private bool type_sempred(TypeContext _localctx, int predIndex) {
- switch (predIndex) {
- case 19: return Precpred(Context, 1);
- }
- return true;
- }
- private bool target_sempred(TargetContext _localctx, int predIndex) {
- switch (predIndex) {
- case 20: return Precpred(Context, 1);
- }
- return true;
- }
-
- private static int[] _serializedATN = {
- 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
- };
-
- public static readonly ATN _ATN =
- new ATNDeserializer().Deserialize(_serializedATN);
-
-
-}
diff --git a/Compiler/gen/CGrammarVisitor.cs b/Compiler/gen/CGrammarVisitor.cs
deleted file mode 100644
index be6f92e..0000000
--- a/Compiler/gen/CGrammarVisitor.cs
+++ /dev/null
@@ -1,506 +0,0 @@
-//------------------------------------------------------------------------------
-// <auto-generated>
-// 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.
-// </auto-generated>
-//------------------------------------------------------------------------------
-
-// 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;
-
-/// <summary>
-/// This interface defines a complete generic visitor for a parse tree produced
-/// by <see cref="CGrammarParser"/>.
-/// </summary>
-/// <typeparam name="Result">The return type of the visit operation.</typeparam>
-[System.CodeDom.Compiler.GeneratedCode("ANTLR", "4.13.2")]
-[System.CLSCompliant(false)]
-public interface ICGrammarVisitor<Result> : IParseTreeVisitor<Result> {
- /// <summary>
- /// Visit a parse tree produced by <see cref="CGrammarParser.program"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitProgram([NotNull] CGrammarParser.ProgramContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>functionPrototype</c>
- /// labeled alternative in <see cref="CGrammarParser.function"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitFunctionPrototype([NotNull] CGrammarParser.FunctionPrototypeContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>functionDefinition</c>
- /// labeled alternative in <see cref="CGrammarParser.function"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitFunctionDefinition([NotNull] CGrammarParser.FunctionDefinitionContext context);
- /// <summary>
- /// Visit a parse tree produced by <see cref="CGrammarParser.block"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitBlock([NotNull] CGrammarParser.BlockContext context);
- /// <summary>
- /// Visit a parse tree produced by <see cref="CGrammarParser.block_item"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitBlock_item([NotNull] CGrammarParser.Block_itemContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>returnStatement</c>
- /// labeled alternative in <see cref="CGrammarParser.statement"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitReturnStatement([NotNull] CGrammarParser.ReturnStatementContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>ifStatement</c>
- /// labeled alternative in <see cref="CGrammarParser.statement"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitIfStatement([NotNull] CGrammarParser.IfStatementContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>forExprStatement</c>
- /// labeled alternative in <see cref="CGrammarParser.statement"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitForExprStatement([NotNull] CGrammarParser.ForExprStatementContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>forDeclStatement</c>
- /// labeled alternative in <see cref="CGrammarParser.statement"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitForDeclStatement([NotNull] CGrammarParser.ForDeclStatementContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>whileStatement</c>
- /// labeled alternative in <see cref="CGrammarParser.statement"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitWhileStatement([NotNull] CGrammarParser.WhileStatementContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>doWhileStatement</c>
- /// labeled alternative in <see cref="CGrammarParser.statement"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitDoWhileStatement([NotNull] CGrammarParser.DoWhileStatementContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>breakStatement</c>
- /// labeled alternative in <see cref="CGrammarParser.statement"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitBreakStatement([NotNull] CGrammarParser.BreakStatementContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>continueStatement</c>
- /// labeled alternative in <see cref="CGrammarParser.statement"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitContinueStatement([NotNull] CGrammarParser.ContinueStatementContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>expressionStatement</c>
- /// labeled alternative in <see cref="CGrammarParser.statement"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitExpressionStatement([NotNull] CGrammarParser.ExpressionStatementContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>blockStatement</c>
- /// labeled alternative in <see cref="CGrammarParser.statement"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitBlockStatement([NotNull] CGrammarParser.BlockStatementContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>nullStatement</c>
- /// labeled alternative in <see cref="CGrammarParser.statement"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitNullStatement([NotNull] CGrammarParser.NullStatementContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>variableDeclaration</c>
- /// labeled alternative in <see cref="CGrammarParser.declaration"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitVariableDeclaration([NotNull] CGrammarParser.VariableDeclarationContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>addressOfExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitAddressOfExpression([NotNull] CGrammarParser.AddressOfExpressionContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>compoundSubtractExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitCompoundSubtractExpression([NotNull] CGrammarParser.CompoundSubtractExpressionContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>modulusExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitModulusExpression([NotNull] CGrammarParser.ModulusExpressionContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>notExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitNotExpression([NotNull] CGrammarParser.NotExpressionContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>decrementPrefixExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitDecrementPrefixExpression([NotNull] CGrammarParser.DecrementPrefixExpressionContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>multiplyExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitMultiplyExpression([NotNull] CGrammarParser.MultiplyExpressionContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>greaterThanExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitGreaterThanExpression([NotNull] CGrammarParser.GreaterThanExpressionContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>bitwiseLeftShiftExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitBitwiseLeftShiftExpression([NotNull] CGrammarParser.BitwiseLeftShiftExpressionContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>bitwiseRightShiftExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitBitwiseRightShiftExpression([NotNull] CGrammarParser.BitwiseRightShiftExpressionContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>variableExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitVariableExpression([NotNull] CGrammarParser.VariableExpressionContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>compoundDivideExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitCompoundDivideExpression([NotNull] CGrammarParser.CompoundDivideExpressionContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>parenthesizedExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitParenthesizedExpression([NotNull] CGrammarParser.ParenthesizedExpressionContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>compoundAddExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitCompoundAddExpression([NotNull] CGrammarParser.CompoundAddExpressionContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>compoundMultiplyExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitCompoundMultiplyExpression([NotNull] CGrammarParser.CompoundMultiplyExpressionContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>compoundBitwiseXorExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitCompoundBitwiseXorExpression([NotNull] CGrammarParser.CompoundBitwiseXorExpressionContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>bitwiseAndExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitBitwiseAndExpression([NotNull] CGrammarParser.BitwiseAndExpressionContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>lessThanExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitLessThanExpression([NotNull] CGrammarParser.LessThanExpressionContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>logicalAndExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitLogicalAndExpression([NotNull] CGrammarParser.LogicalAndExpressionContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>indexExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitIndexExpression([NotNull] CGrammarParser.IndexExpressionContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>invertExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitInvertExpression([NotNull] CGrammarParser.InvertExpressionContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>dereferenceExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitDereferenceExpression([NotNull] CGrammarParser.DereferenceExpressionContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>equalExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitEqualExpression([NotNull] CGrammarParser.EqualExpressionContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>bitwiseXorExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitBitwiseXorExpression([NotNull] CGrammarParser.BitwiseXorExpressionContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>arrayExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitArrayExpression([NotNull] CGrammarParser.ArrayExpressionContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>constantExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitConstantExpression([NotNull] CGrammarParser.ConstantExpressionContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>compoundModulusExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitCompoundModulusExpression([NotNull] CGrammarParser.CompoundModulusExpressionContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>lessThanOrEqualExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitLessThanOrEqualExpression([NotNull] CGrammarParser.LessThanOrEqualExpressionContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>incrementPostfixExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitIncrementPostfixExpression([NotNull] CGrammarParser.IncrementPostfixExpressionContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>compoundBitwiseRightShiftExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitCompoundBitwiseRightShiftExpression([NotNull] CGrammarParser.CompoundBitwiseRightShiftExpressionContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>assignmentExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitAssignmentExpression([NotNull] CGrammarParser.AssignmentExpressionContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>notEqualExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitNotEqualExpression([NotNull] CGrammarParser.NotEqualExpressionContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>compoundBitwiseAndExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitCompoundBitwiseAndExpression([NotNull] CGrammarParser.CompoundBitwiseAndExpressionContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>logicalOrExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitLogicalOrExpression([NotNull] CGrammarParser.LogicalOrExpressionContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>incrementPrefixExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitIncrementPrefixExpression([NotNull] CGrammarParser.IncrementPrefixExpressionContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>greaterThanOrEqualExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitGreaterThanOrEqualExpression([NotNull] CGrammarParser.GreaterThanOrEqualExpressionContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>divideExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitDivideExpression([NotNull] CGrammarParser.DivideExpressionContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>bitwiseOrExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitBitwiseOrExpression([NotNull] CGrammarParser.BitwiseOrExpressionContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>callExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitCallExpression([NotNull] CGrammarParser.CallExpressionContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>addExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitAddExpression([NotNull] CGrammarParser.AddExpressionContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>subtractExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitSubtractExpression([NotNull] CGrammarParser.SubtractExpressionContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>compoundBitwiseOrExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitCompoundBitwiseOrExpression([NotNull] CGrammarParser.CompoundBitwiseOrExpressionContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>decrementPostfixExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitDecrementPostfixExpression([NotNull] CGrammarParser.DecrementPostfixExpressionContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>ternaryExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitTernaryExpression([NotNull] CGrammarParser.TernaryExpressionContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>compoundBitwiseLeftShiftExpression</c>
- /// labeled alternative in <see cref="CGrammarParser.expression"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitCompoundBitwiseLeftShiftExpression([NotNull] CGrammarParser.CompoundBitwiseLeftShiftExpressionContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>intConstant</c>
- /// labeled alternative in <see cref="CGrammarParser.constant"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitIntConstant([NotNull] CGrammarParser.IntConstantContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>hexConstant</c>
- /// labeled alternative in <see cref="CGrammarParser.constant"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitHexConstant([NotNull] CGrammarParser.HexConstantContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>charConstant</c>
- /// labeled alternative in <see cref="CGrammarParser.constant"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitCharConstant([NotNull] CGrammarParser.CharConstantContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>stringConstant</c>
- /// labeled alternative in <see cref="CGrammarParser.constant"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitStringConstant([NotNull] CGrammarParser.StringConstantContext context);
- /// <summary>
- /// Visit a parse tree produced by <see cref="CGrammarParser.type"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitType([NotNull] CGrammarParser.TypeContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>indexerTarget</c>
- /// labeled alternative in <see cref="CGrammarParser.target"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitIndexerTarget([NotNull] CGrammarParser.IndexerTargetContext context);
- /// <summary>
- /// Visit a parse tree produced by the <c>variableTarget</c>
- /// labeled alternative in <see cref="CGrammarParser.target"/>.
- /// </summary>
- /// <param name="context">The parse tree.</param>
- /// <return>The visitor result.</return>
- Result VisitVariableTarget([NotNull] CGrammarParser.VariableTargetContext context);
-}
diff --git a/Compiler/visitors/Constants.cs b/Compiler/visitors/Constants.cs
deleted file mode 100644
index 598c642..0000000
--- a/Compiler/visitors/Constants.cs
+++ /dev/null
@@ -1,50 +0,0 @@
-namespace Q1.Compiler.visitors;
-
-using System.Text;
-
-public partial class CCompilerVisitor
-{
- public Encoding Encoding;
- public override string VisitIntConstant(CGrammarParser.IntConstantContext context)
- {
- string valueString = context.INT().GetText();
- if (int.TryParse(valueString, out int value))
- return $"{value}";
- else
- throw new CompilerException($"Invalid integer value: {valueString}");
- }
- public override string VisitHexConstant(CGrammarParser.HexConstantContext context)
- {
- string valueString = context.HEX().GetText();
- valueString = valueString[2..]; // Remove 0x
- return $"${valueString}";
- }
-
- public override object? VisitCharConstant(CGrammarParser.CharConstantContext context)
- {
- char c = context.LETTER().GetText()[1];
- return $"{this.Encoding.GetBytes(c.ToString())[0]}";
- }
-
- public override object? VisitStringConstant(CGrammarParser.StringConstantContext context)
- {
- string text = context.STRING().GetText()[1..^1];
-
- int? arrPtr = null;
-
- if (text.Length == 0)
- throw new CompilerException("Cannot create empty string");
-
- foreach (char c in text)
- {
- int itemPtr = Alloc(CType.Int.Size);
-
- if (arrPtr == null)
- arrPtr = itemPtr;
-
- this.DynamicMove(CType.Int, $"{this.Encoding.GetBytes(c.ToString())[0]}", $"[${itemPtr:X4}]");
- }
-
- return $"${arrPtr:X4}";
- }
-} \ No newline at end of file
diff --git a/Compiler/visitors/Definitions.cs b/Compiler/visitors/Definitions.cs
deleted file mode 100644
index c27405e..0000000
--- a/Compiler/visitors/Definitions.cs
+++ /dev/null
@@ -1,132 +0,0 @@
-namespace Q1.Compiler.visitors;
-
-public partial class CCompilerVisitor
-{
- private List<(CGrammarParser.FunctionDefinitionContext context,
- FunctionReference function, FunctionOverload overload,
- List<string> paramNames, List<CType> paramTypes)> _functionBodies = new();
-
- private VariableReference FindVariable(string varName)
- {
- foreach (Dictionary<string, VariableReference> variables in this._variableStack)
- {
- if (variables.TryGetValue(varName, out VariableReference? reference))
- return reference;
- }
-
- throw new CompilerException($"Variable {varName} could not be found in current scope.");
- }
- private int Alloc(int size)
- {
- int loc = CCompilerVisitor._memPointer;
- CCompilerVisitor._memPointer += size;
-
- return loc;
- }
- private FunctionReference CreateOrGetFunctionReference(string name, CType type)
- {
- FunctionReference? function = this._methods.FirstOrDefault(x => x.Name == name);
- if (function != null)
- return function;
-
- function = new FunctionReference(name, type);
- this._methods.Add(function);
-
- return function;
- }
- private FunctionReference GetFunctionReference(string name)
- {
- FunctionReference? function = this._methods.FirstOrDefault(x => x.Name == name);
- if (function != null)
- return function;
-
- throw new CompilerException($"Function '{name}' has not been defined or prototyped.");
- }
-
- public override string? VisitFunctionPrototype(CGrammarParser.FunctionPrototypeContext context)
- {
- string functionName = context.name.Text;
- CType type = this.VisitCType(context._type);
-
- List<CType> parameterTypes = context._types.Select(this.VisitCType).ToList();
- List<string> parameterNames = context._params.Select(x => x.Text).ToList();
-
- FunctionReference function = this.CreateOrGetFunctionReference(functionName, type);
- FunctionOverload overload =
- function.CreateOverloadWithoutBody(parameterNames, parameterTypes);
-
- function.Overloads.Add(overload);
-
- return null;
- }
- public override string? VisitFunctionDefinition(
- CGrammarParser.FunctionDefinitionContext context)
- {
- string functionName = context.name.Text;
- CType type = this.VisitCType(context.rtype);
-
- List<CType> paramTypes = context._types.Select(this.VisitCType).ToList();
- List<string> paramNames = context._params.Select(x => x.Text).ToList();
-
- FunctionReference function = this.CreateOrGetFunctionReference(functionName, type);
- FunctionOverload overload = function.CreateOverloadWithBody(paramNames, paramTypes);
-
- this._functionBodies.Add((context, function, overload, paramNames, paramTypes));
-
- return null;
- }
- private void VisitFunctionBody(
- CGrammarParser.FunctionDefinitionContext context,
- FunctionReference function,
- FunctionOverload overload,
- List<string> paramNames,
- List<CType> paramTypes)
- {
- this.Branch(function.GetBranchName(overload), function.GetBranchFriendlyName(overload));
-
- if (paramNames.Count > 0)
- this.Instruction("pop V0", "preserve function return address");
-
- Dictionary<string, VariableReference> scope = this.EnterScope();
- foreach ((string paramName, CType paramType) in paramNames.Zip(paramTypes))
- {
- int addr = this.Alloc(paramType.Size);
- scope[paramName] = new(addr, paramType);
- this.Instruction($"pop [${addr:X4}]", $"param {paramType} {paramName}");
- }
-
- if (paramNames.Count > 0)
- this.Instruction("push V0", "restore function return address");
-
- this.VisitChildren(context);
- this.ExitScope();
-
- this.Instruction("mov 0, V0", "fallback return 0");
- this.Instruction("ret");
-
- this.Blank();
- }
- public override string? VisitVariableDeclaration(
- CGrammarParser.VariableDeclarationContext context)
- {
- CType type = this.VisitCType(context.type());
- int addr = this.Alloc(CType.Int.Size);
- string name = context.name.Text;
-
- Dictionary<string, VariableReference> scope = this._variableStack.Peek();
- if (scope.ContainsKey(name))
- throw new CompilerException($"Variable {name} already exists in current scope.");
-
- scope[name] = new VariableReference(addr, type);
- string initialValue = "0";
-
- if (context.value != null)
- {
- initialValue = this.VisitExpression(context.value);
- }
-
- this.DynamicMove(CType.Int, initialValue, $"[${addr:X4}]", $"int {name} = {initialValue}");
-
- return null;
- }
-} \ No newline at end of file
diff --git a/Compiler/visitors/Expressions.cs b/Compiler/visitors/Expressions.cs
deleted file mode 100644
index 1cc4291..0000000
--- a/Compiler/visitors/Expressions.cs
+++ /dev/null
@@ -1,154 +0,0 @@
-namespace Q1.Compiler.visitors;
-
-public partial class CCompilerVisitor
-{
- private string VisitExpression(CGrammarParser.ExpressionContext expression)
- {
- string? expressionString = this.Visit(expression) as string;
- if (expressionString == null)
- throw new CompilerException("Expression did not return a string");
-
- return expressionString;
- }
-
- public override string VisitCallExpression(CGrammarParser.CallExpressionContext context)
- {
- string functionName = context.ID().GetText();
-
- FunctionReference function = this.GetFunctionReference(functionName);
- FunctionOverload overload = function.GetOverload(context._params.Count);
-
- // We reverse arugments so when we perform pop, its in the right order
- CGrammarParser.ExpressionContext[] argumentsReversed = context._params.Reverse().ToArray();
-
- for (int i = 0; i < argumentsReversed.Length; i++)
- {
- CGrammarParser.ExpressionContext argument = argumentsReversed[i];
- string result = this.VisitExpression(argument);
-
- int indexReverse = argumentsReversed.Length - i - 1;
-
- this.Instruction(
- $"push {result}", $"arg {overload.ParameterTypes[indexReverse]} {overload.ParameterNames[indexReverse]}");
- }
-
- this.Instruction(
- $"call {function.GetBranchName(overload)}", function.GetBranchFriendlyName(overload));
-
- return "V0";
- }
- public override string VisitParenthesizedExpression(
- CGrammarParser.ParenthesizedExpressionContext context)
- {
- return this.VisitExpression(context.expression());
- }
- public override string VisitVariableExpression(CGrammarParser.VariableExpressionContext context)
- {
- string varName = context.ID().GetText();
- VariableReference reference = this.FindVariable(varName);
-
- return $"[${reference.Address:X4}]";
- }
- public override string VisitAssignmentExpression(
- CGrammarParser.AssignmentExpressionContext context)
- {
- Target target = this.VisitTarget(context.target());
- string value = this.VisitExpression(context.expression());
-
- this.DynamicMove(target.Type, value, target.Value, $"{target.Value} = {value}");
- return target.Value;
- }
- public override string VisitTernaryExpression(CGrammarParser.TernaryExpressionContext context)
- {
- string cond = this.VisitExpression(context.cond);
-
- string thenBranch = this.GenerateBranchLabel("then");
- string endBranch = this.GenerateBranchLabel("end");
- string result;
-
- // Else branch is first since it saves us from having to perform a NOT operation.
- // If cond, jump to then, else fall through to else, then jump to end
-
- this.Instruction($"bz {cond}", "check ternary condition");
- this.Instruction($"jmp {thenBranch}");
-
- result = this.VisitExpression(context.@else);
- this.Instruction($"mov {result}, V0", "store ternary fail result");
- this.Instruction($"jmp {endBranch}");
-
- this.Branch(thenBranch);
- result = this.VisitExpression(context.then);
- this.Instruction($"mov {result}, V0", "store ternary success result");
-
- this.Branch(endBranch);
-
- return "V0";
- }
- public override string VisitAddressOfExpression(
- CGrammarParser.AddressOfExpressionContext context)
- {
- Target target = this.VisitTarget(context.target());
-
- return target.Address;
- }
- public override string VisitDereferenceExpression(
- CGrammarParser.DereferenceExpressionContext context)
- {
- string value = this.VisitExpression(context.expression());
-
- this.Instruction($"mov {value}, V0", "move pointer into register for dereference");
- return "[V0]";
- }
-
- public override object? VisitIndexExpression(CGrammarParser.IndexExpressionContext context)
- {
- Target obj = this.VisitTarget(context.obj);
- if (obj.Type is not CTypePtr ptr)
- throw new CompilerException("Indexer target was not a pointer!");
-
- this.Instruction($"push {obj.Value}", "store index obj");
-
- string indexer = this.VisitExpression(context.indexer);
-
- this.Instruction($"mov {indexer}, V1", "store indexer");
- this.Instruction($"pop V0", "restore index obj");
- this.Instruction($"mul V1, {ptr.Sub.Size}", $"multiply indexer by {ptr.Sub.Size}");
- this.Instruction($"add AX, V0", "add indexer and index obj");
- this.Instruction($"mov AX, V0", "move to general purpose register");
- return "[V0]";
- }
-
- public override object? VisitArrayExpression(CGrammarParser.ArrayExpressionContext context)
- {
- CType type = this.VisitCType(context.type());
- int? arrPtr = null;
-
- int length = context.INT() != null
- ? int.Parse(context.INT().GetText())
- : context._params.Count;
-
- if (length == 0)
- throw new CompilerException("Cannot create empty array");
-
- foreach (CGrammarParser.ExpressionContext? param in context._params)
- {
- int itemPtr = Alloc(type.Size);
-
- if (arrPtr == null)
- arrPtr = itemPtr;
-
- string value = this.VisitExpression(param);
- this.DynamicMove(type, value, $"[${itemPtr:X4}]");
- }
-
- int remainingSize = (length - context._params.Count) * type.Size;
- if (remainingSize < 0)
- throw new CompilerException("Array length larger than specified length");
- int blockPtr = Alloc(remainingSize);
-
- if (arrPtr == null)
- arrPtr = blockPtr;
-
- return $"${arrPtr:X4}";
- }
-} \ No newline at end of file
diff --git a/Compiler/visitors/FlowControl.cs b/Compiler/visitors/FlowControl.cs
deleted file mode 100644
index 944595d..0000000
--- a/Compiler/visitors/FlowControl.cs
+++ /dev/null
@@ -1,177 +0,0 @@
-namespace Q1.Compiler.visitors;
-
-public partial class CCompilerVisitor
-{
- public override string? VisitBlock(CGrammarParser.BlockContext context)
- {
- this.EnterScope();
-
- this.VisitChildren(context);
-
- this.ExitScope();
-
- return null;
- }
- public override string? VisitReturnStatement(CGrammarParser.ReturnStatementContext context)
- {
- if (context.expression() != null)
- {
- string expression = this.VisitExpression(context.expression());
- this.Instruction($"mov {expression}, V0", "return value");
- this.Instruction($"ret");
- }
- else
- this.Instruction("ret");
-
- return null;
- }
- public override string? VisitIfStatement(CGrammarParser.IfStatementContext context)
- {
- string cond = this.VisitExpression(context.expression());
- string endBranch = this.GenerateBranchLabel("end");
-
- if (context.@else != null)
- {
- this.Instruction($"bz {cond}", "check if condition");
- // Else branch is first since it saves us from having to perform a NOT operation.
- // If cond, jump to then, else fall through to else, then jump to end
-
- string thenBranch = this.GenerateBranchLabel("then");
-
- this.Instruction($"jmp {thenBranch}");
-
- this.GeneratedComment("if failed");
- if (context.@else != null)
- this.Visit(context.@else);
- this.Instruction($"jmp {endBranch}");
-
- this.Branch(thenBranch, "if succeeded");
- this.Visit(context.then);
- }
- else
- {
- this.Instruction($"not {cond}");
- this.Instruction($"bz", "check if condition");
- this.Instruction($"jmp {endBranch}", "if succeeds, continue, else jump to end");
- this.Visit(context.then);
- }
-
- this.Branch(endBranch);
-
- return null;
- }
- public override string? VisitForExprStatement(CGrammarParser.ForExprStatementContext context)
- {
- string bodyBranch = this.GenerateBranchLabel("body");
- string endBranch = this.GenerateBranchLabel("end");
-
- context.LoopBodyBranch = bodyBranch;
- context.LoopEndBranch = endBranch;
-
- this.EnterScope();
- this.Visit(context.initializer);
-
- this.Branch(bodyBranch);
- string cond = this.VisitExpression(context.cond);
-
- this.Instruction($"not {cond}");
- this.Instruction($"bz");
- this.Instruction($"jmp {endBranch}", "if for condition fails, jump to end");
-
- this.Visit(context.body);
- this.Visit(context.post);
-
- this.Branch(endBranch);
- this.ExitScope();
-
- return null;
- }
- public override string? VisitForDeclStatement(CGrammarParser.ForDeclStatementContext context)
- {
- string bodyBranch = this.GenerateBranchLabel("body");
- string endBranch = this.GenerateBranchLabel("end");
-
- context.LoopBodyBranch = bodyBranch;
- context.LoopEndBranch = endBranch;
-
- this.EnterScope();
- this.Visit(context.initializer);
-
- this.Branch(bodyBranch);
- string cond = this.VisitExpression(context.cond);
-
- this.Instruction($"not {cond}");
- this.Instruction($"bz");
- this.Instruction($"jmp {endBranch}", "if for condition fails, jump to end");
-
- this.Visit(context.body);
- this.Visit(context.post);
-
- this.Instruction($"jmp {bodyBranch}");
-
- this.Branch(endBranch);
- this.ExitScope();
-
- return null;
- }
- public override string? VisitWhileStatement(CGrammarParser.WhileStatementContext context)
- {
- string bodyBranch = this.GenerateBranchLabel("body");
- string endBranch = this.GenerateBranchLabel("end");
-
- context.LoopBodyBranch = bodyBranch;
- context.LoopEndBranch = endBranch;
-
- this.Branch(bodyBranch);
- string cond = this.VisitExpression(context.cond);
-
- this.Instruction($"not {cond}");
- this.Instruction($"bz");
- this.Instruction($"jmp {endBranch}", "if while condition fails, jump to end");
-
- this.Visit(context.body);
- this.Instruction($"jmp {bodyBranch}");
-
- this.Branch(endBranch);
-
- return null;
- }
- public override string? VisitDoWhileStatement(CGrammarParser.DoWhileStatementContext context)
- {
- string bodyBranch = this.GenerateBranchLabel("body");
- string endBranch = this.GenerateBranchLabel("end");
-
- context.LoopBodyBranch = bodyBranch;
- context.LoopEndBranch = endBranch;
-
- this.Branch(bodyBranch);
- this.Visit(context.body);
-
- string cond = this.VisitExpression(context.cond);
-
- this.Instruction($"bz {cond}");
- this.Instruction($"jmp {bodyBranch}", "if while condition succeeds, jump back to start");
-
- this.Branch(endBranch);
-
- return null;
- }
- public override string? VisitBreakStatement(CGrammarParser.BreakStatementContext context)
- {
- if (context.LoopEndBranch == null)
- throw new CompilerException("Cannot break, not inside loop with end");
-
- this.Instruction($"jmp {context.LoopEndBranch}", "break");
-
- return null;
- }
- public override string? VisitContinueStatement(CGrammarParser.ContinueStatementContext context)
- {
- if (context.LoopBodyBranch == null)
- throw new CompilerException("Cannot skip body (continue), not inside loop with body");
-
- this.Instruction($"jmp {context.LoopBodyBranch}", "continue");
-
- return null;
- }
-} \ No newline at end of file
diff --git a/Compiler/visitors/Main.cs b/Compiler/visitors/Main.cs
deleted file mode 100644
index 3b32399..0000000
--- a/Compiler/visitors/Main.cs
+++ /dev/null
@@ -1,183 +0,0 @@
-namespace Q1.Compiler.visitors;
-
-using System.Text;
-using Antlr4.Runtime.Tree;
-using Q1.Emulator;
-
-public partial class CCompilerVisitor : CGrammarBaseVisitor<object?>
-{
- private int _branchCount = 1;
- private List<string> _instructions = new();
- private Stack<Dictionary<string, VariableReference>> _variableStack = new();
- private List<FunctionReference> _methods = new();
- private static int _memLowest = Q1Layout.FreeMemoryStart;
- private static int _memPointer = CCompilerVisitor._memLowest;
-
- private const int ColumnWidth = 30;
-
- public readonly CommentCompilationMode CommentMode;
-
- public CCompilerVisitor(CommentCompilationMode commentMode, Encoding encoding)
- {
- this.CommentMode = commentMode;
- this.Encoding = encoding;
- }
-
- private string GenerateBranchLabel(string type)
- {
- return $"_{type}_{this._branchCount++}";
- }
- private void Instruction(string instruction, string? generatedComment = null)
- {
- this._instructions.Add($" {instruction}");
- if (generatedComment != null)
- this.CommentLastInstruction(generatedComment);
- }
- private void Blank()
- {
- this._instructions.Add("");
- }
- private void Branch(string name, string? generatedComment = null)
- {
- this._instructions.Add($"{name}:");
- if (generatedComment != null)
- this.CommentLastInstruction(generatedComment);
- }
- private void UserComment(string comment)
- {
- if (this.CommentMode.HasFlag(CommentCompilationMode.UserDefined))
- this._instructions.Add($" ; {comment}");
- }
-
- private void GeneratedComment(string comment)
- {
- if (this.CommentMode.HasFlag(CommentCompilationMode.Generated))
- this._instructions.Add($"{"".PadRight(CCompilerVisitor.ColumnWidth)}; {comment}");
- }
-
- private void CommentLastInstruction(string comment)
- {
- if (!this.CommentMode.HasFlag(CommentCompilationMode.Generated))
- return;
-
- if (this._instructions.Count == 0)
- throw new Exception("Cannot add comment to last instruction, there are none");
-
- string lastInstruction = this._instructions[^1];
- lastInstruction = $"{lastInstruction.PadRight(CCompilerVisitor.ColumnWidth)}; {comment}";
-
- this._instructions[^1] = lastInstruction;
- }
-
-
- public IEnumerable<string> Compile(CGrammarParser.ProgramContext program)
- {
- this.Instruction("jmp _main");
- this.Visit(program);
-
- foreach ((CGrammarParser.FunctionDefinitionContext context,
- FunctionReference function, FunctionOverload overload,
- List<string> paramNames, List<CType> paramTypes) in this._functionBodies)
- this.VisitFunctionBody(context, function, overload, paramNames, paramTypes);
-
- return this._instructions;
- }
-
- private Dictionary<string, VariableReference> EnterScope()
- {
- Dictionary<string, VariableReference> scope = new();
- this._variableStack.Push(scope);
-
- return scope;
- }
- private void ExitScope()
- {
- foreach ((string key, VariableReference value) in this._variableStack.Peek())
- {
- // CCompilerVisitor._memPointer -= value.Type.Size;
- // if (CCompilerVisitor._memPointer < CCompilerVisitor._memLowest)
- // throw new CompilerException("Memory pointer is lower than mem lowest!");
- }
-
- // Delete scope
- this._variableStack.Pop();
- }
-
- public void DynamicMove(CType type, string source, string dest, string? comment = null)
- {
- if (type.Size == 1)
- this.Instruction($"movb {source}, {dest}", comment);
- else if (type.Size == 2)
- this.Instruction($"mov {source}, {dest}", comment);
- else
- throw new CompilerException($"Cannot move {type.Size} bytes {source} to {dest}");
- }
-
- private CType VisitCType(CGrammarParser.TypeContext typeContext)
- {
- return GetCType(typeContext.GetText().Trim());
- }
-
- private CType GetCType(string type)
- {
- return type switch
- {
- "int" => CType.Int,
- "char" => CType.Char,
- _ when type.EndsWith("*") => new CTypePtr(this.GetCType(type[..^1])),
- _ => throw new CompilerException($"Unknown CTYPE '{type}'")
- };
- }
-
- public override object? VisitErrorNode(IErrorNode node)
- {
- if (node.Symbol.Type == CGrammarParser.COMMENT)
- {
- // strip // and \n and whitespace
- string comment = node
- .Symbol.Text
- .TrimStart("//")
- .TrimEnd('\n')
- .Trim();
-
- this.UserComment(comment);
- }
-
- if (node.Symbol.Type == CGrammarParser.DIRECTIVE)
- {
- // strip // and \n and whitespace
- string directive = node
- .Symbol.Text
- .TrimStart("#")
- .TrimEnd('\n')
- .Trim();
-
- this.Instruction(directive);
- }
-
- return base.VisitErrorNode(node);
- }
-
- public override object? Visit(IParseTree tree)
- {
- if (tree is Context childCtx && tree.Parent is Context ctx)
- ctx.SyncProps(childCtx);
-
- return base.Visit(tree);
- }
-
- /// <summary>
- /// Basically identical to base version, except calls Visit on each child, making Visit not redundant.
- /// </summary>
- public override object? VisitChildren(IRuleNode node)
- {
- object? result = this.DefaultResult;
- int childCount = node.ChildCount;
- for (int i = 0; i < childCount && this.ShouldVisitNextChild(node, result); ++i)
- {
- object? nextResult = this.Visit(node.GetChild(i));
- result = this.AggregateResult(result, nextResult);
- }
- return result;
- }
-} \ No newline at end of file
diff --git a/Compiler/visitors/Operations.cs b/Compiler/visitors/Operations.cs
deleted file mode 100644
index 8483747..0000000
--- a/Compiler/visitors/Operations.cs
+++ /dev/null
@@ -1,305 +0,0 @@
-namespace Q1.Compiler.visitors;
-
-public partial class CCompilerVisitor
-{
- private void BaseBinaryOperation(CGrammarParser.ExpressionContext leftExpr, CGrammarParser.ExpressionContext rightExpr, string operation, string operationFriendlyName)
- {
- string left = this.VisitExpression(leftExpr);
-
- this.Instruction($"push {left}", "left operand");
-
- string right = this.VisitExpression(rightExpr);
-
- this.Instruction($"mov {right}, V1", "right operand");
- this.Instruction($"pop V0", "get left operand back");
- this.Instruction($"{operation} V0, V1", $"compute {operationFriendlyName}");
- }
-
- private string BaseBinaryCompoundOperation(CGrammarParser.TargetContext leftTarget, CGrammarParser.ExpressionContext rightExpr, string operation, string operationFriendlyName, string operationOutput)
- {
- Target left = this.VisitTarget(leftTarget);
-
- this.Instruction($"push {left.Value}", "left operand");
-
- string? right = this.VisitExpression(rightExpr);
- if (right == null)
- throw new CompilerException($"Right operand for {operationFriendlyName} was not an expression.");
-
- this.Instruction($"mov {right}, V1", "right operand");
- this.Instruction($"pop V0", "get left operand back");
- this.Instruction($"{operation} V0, V1", $"compute {operationFriendlyName}");
-
- this.Instruction($"push {operationOutput}", "computation results");
-
- left = this.VisitTarget(leftTarget);
- this.Instruction("pop V1", "get computation results back");
- this.DynamicMove(left.Type, "V1", left.Value, "store back into left param");
-
- return left.Value;
- }
-
- public override string VisitNotExpression(CGrammarParser.NotExpressionContext context)
- {
- string value = this.VisitExpression(context.expression());
-
- this.Instruction($"not {value}");
- return "LX";
- }
- public override string VisitInvertExpression(CGrammarParser.InvertExpressionContext context)
- {
- string value = this.VisitExpression(context.expression());
-
- this.Instruction($"inv {value}");
- return "DX";
- }
- public override string VisitAddExpression(CGrammarParser.AddExpressionContext context)
- {
- this.BaseBinaryOperation(context.left, context.right, "add", "addition");
- return "AX";
- }
- public override string VisitSubtractExpression(CGrammarParser.SubtractExpressionContext context)
- {
- this.BaseBinaryOperation(context.left, context.right, "sub", "subtraction");
- return "AX";
- }
- public override string VisitMultiplyExpression(CGrammarParser.MultiplyExpressionContext context)
- {
- this.BaseBinaryOperation(context.left, context.right, "mul", "multiplication");
- return "AX";
- }
- public override string VisitDivideExpression(CGrammarParser.DivideExpressionContext context)
- {
- this.BaseBinaryOperation(context.left, context.right, "div", "division");
- return "AX";
- }
- public override string VisitModulusExpression(CGrammarParser.ModulusExpressionContext context)
- {
- this.BaseBinaryOperation(context.left, context.right, "mod", "modulus");
- return "AX";
- }
- public override string VisitEqualExpression(CGrammarParser.EqualExpressionContext context)
- {
- this.BaseBinaryOperation(context.left, context.right, "cmp", "equality check");
- return "LX";
- }
- public override string VisitNotEqualExpression(CGrammarParser.NotEqualExpressionContext context)
- {
- this.BaseBinaryOperation(context.left, context.right, "cmp", "inequality check");
- this.Instruction($"not"); // lx is implicit
- return "LX";
- }
- public override string VisitGreaterThanExpression(CGrammarParser.GreaterThanExpressionContext context)
- {
- this.BaseBinaryOperation(context.left, context.right, "gt", "greater than check");
- return "LX";
- }
- public override string VisitLessThanExpression(CGrammarParser.LessThanExpressionContext context)
- {
- this.BaseBinaryOperation(context.left, context.right, "lt", "less than check");
- return "LX";
- }
- public override string VisitLogicalOrExpression(CGrammarParser.LogicalOrExpressionContext context)
- {
- string left = this.VisitExpression(context.left);
-
- string clauseBranch = this.GenerateBranchLabel("clause");
- string endBranch = this.GenerateBranchLabel("end");
-
- this.Instruction($"cmp {left}, 0", "logical or");
- this.Instruction("bz"); // implicit LX
- this.Instruction($"jmp {clauseBranch}"); // only if bz is not 0
- this.Instruction("mov 1, V0", "first operand succeeded, store 1 and skip second operand");
- this.Instruction($"jmp {endBranch}");
- this.Branch(clauseBranch);
-
- string right = this.VisitExpression(context.right);
-
- this.Instruction($"cmp {right}, 0", "compare result from second operand to 0");
- this.Instruction("not");
- this.Instruction("mov LX, V0", "store second operand result");
- this.Branch(endBranch);
-
- return "V0";
- }
- public override string VisitLogicalAndExpression(CGrammarParser.LogicalAndExpressionContext context)
- {
- string left = this.VisitExpression(context.left);
-
- string clauseBranch = this.GenerateBranchLabel("clause");
- string endBranch = this.GenerateBranchLabel("end");
-
- this.Instruction($"cmp {left}, 0", "logical and");
- this.Instruction("not");
- this.Instruction("bz"); // implicit LX
- this.Instruction($"jmp {clauseBranch}"); // only if bz is not 0
- this.Instruction("mov 0, V0", "first operand failed, store 0 and skip second");
- this.Instruction($"jmp {endBranch}");
- this.Branch(clauseBranch);
-
- string right = this.VisitExpression(context.right);
-
- this.Instruction($"cmp {right}, 0", "compare result from second operand to 0");
- this.Instruction("not");
- this.Instruction("mov LX, V0", "store second operand result");
- this.Branch(endBranch);
-
- return "V0";
- }
- public override string VisitGreaterThanOrEqualExpression(CGrammarParser.GreaterThanOrEqualExpressionContext context)
- {
- this.BaseBinaryOperation(context.left, context.right, "cmp", "equality check");
- string endBranch = this.GenerateBranchLabel("end");
-
- this.Instruction("bz");
- this.Instruction($"jmp {endBranch}");
- this.Instruction($"gt V0, V1");
- this.Branch(endBranch);
-
- return "LX";
- }
- public override string VisitLessThanOrEqualExpression(CGrammarParser.LessThanOrEqualExpressionContext context)
- {
- this.BaseBinaryOperation(context.left, context.right, "cmp", "equality check");
- string endBranch = this.GenerateBranchLabel("end");
-
- this.Instruction("bz");
- this.Instruction($"jmp {endBranch}");
- this.Instruction($"lt V0, V1");
- this.Branch(endBranch);
-
- return "LX";
- }
- public override string VisitBitwiseXorExpression(CGrammarParser.BitwiseXorExpressionContext context)
- {
- this.BaseBinaryOperation(context.left, context.right, "xor", "exclusive or");
- return "DX";
- }
- public override string VisitBitwiseOrExpression(CGrammarParser.BitwiseOrExpressionContext context)
- {
- this.BaseBinaryOperation(context.left, context.right, "or", "or");
- return "DX";
- }
- public override string VisitBitwiseAndExpression(CGrammarParser.BitwiseAndExpressionContext context)
- {
- this.BaseBinaryOperation(context.left, context.right, "and", "and");
- return "DX";
- }
- public override string VisitBitwiseLeftShiftExpression(CGrammarParser.BitwiseLeftShiftExpressionContext context)
- {
- this.BaseBinaryOperation(context.left, context.right, "shl", "left shift");
- return "DX";
- }
- public override string VisitBitwiseRightShiftExpression(CGrammarParser.BitwiseRightShiftExpressionContext context)
- {
- this.BaseBinaryOperation(context.left, context.right, "shr", "right shift");
- return "DX";
- }
- public override string VisitCompoundAddExpression(CGrammarParser.CompoundAddExpressionContext context)
- {
- return this.BaseBinaryCompoundOperation(context.target(),
- context.expression(),
- "add",
- "addition",
- "AX");
- }
- public override string VisitCompoundSubtractExpression(CGrammarParser.CompoundSubtractExpressionContext context)
- {
- return this.BaseBinaryCompoundOperation(context.target(),
- context.expression(),
- "sub",
- "subtraction",
- "AX");
- }
- public override string VisitCompoundMultiplyExpression(CGrammarParser.CompoundMultiplyExpressionContext context)
- {
- return this.BaseBinaryCompoundOperation(context.target(),
- context.expression(),
- "mul",
- "multiplication",
- "AX");
- }
- public override string VisitCompoundDivideExpression(CGrammarParser.CompoundDivideExpressionContext context)
- {
- return this.BaseBinaryCompoundOperation(context.target(),
- context.expression(),
- "div",
- "division",
- "AX");
- }
- public override string VisitCompoundModulusExpression(CGrammarParser.CompoundModulusExpressionContext context)
- {
- return this.BaseBinaryCompoundOperation(context.target(),
- context.expression(),
- "mod",
- "modulus",
- "AX");
- }
- public override string VisitCompoundBitwiseOrExpression(CGrammarParser.CompoundBitwiseOrExpressionContext context)
- {
- return this.BaseBinaryCompoundOperation(context.target(),
- context.expression(),
- "or",
- "or",
- "DX");
- }
- public override string VisitCompoundBitwiseXorExpression(CGrammarParser.CompoundBitwiseXorExpressionContext context)
- {
- return this.BaseBinaryCompoundOperation(context.target(),
- context.expression(),
- "xor",
- "exclusive or",
- "DX");
- }
- public override string VisitCompoundBitwiseAndExpression(CGrammarParser.CompoundBitwiseAndExpressionContext context)
- {
- return this.BaseBinaryCompoundOperation(context.target(),
- context.expression(),
- "and",
- "and",
- "DX");
- }
- public override string VisitCompoundBitwiseLeftShiftExpression(CGrammarParser.CompoundBitwiseLeftShiftExpressionContext context)
- {
- return this.BaseBinaryCompoundOperation(context.target(),
- context.expression(),
- "shl",
- "left shift",
- "DX");
- }
- public override string VisitCompoundBitwiseRightShiftExpression(CGrammarParser.CompoundBitwiseRightShiftExpressionContext context)
- {
- return this.BaseBinaryCompoundOperation(context.target(),
- context.expression(),
- "shr",
- "right shift",
- "DX");
- }
- public override string VisitIncrementPrefixExpression(CGrammarParser.IncrementPrefixExpressionContext context)
- {
- Target target = this.VisitTarget(context.target());
- this.Instruction($"inc {target.Value}", "++i");
- return target.Value;
- }
- public override string VisitDecrementPrefixExpression(CGrammarParser.DecrementPrefixExpressionContext context)
- {
- Target target = this.VisitTarget(context.target());
- this.Instruction($"dec {target.Value}", "--i");
- return target.Value;
- }
- public override string VisitIncrementPostfixExpression(CGrammarParser.IncrementPostfixExpressionContext context)
- {
- Target target = this.VisitTarget(context.target());
- this.Instruction($"push {target.Value}", "i++");
- this.Instruction($"inc {target.Value}");
- this.Instruction("pop V0");
- return "V0";
- }
- public override string VisitDecrementPostfixExpression(CGrammarParser.DecrementPostfixExpressionContext context)
- {
- Target target = this.VisitTarget(context.target());
- this.Instruction($"push {target.Value}", "i--");
- this.Instruction($"dec {target.Value}");
- this.Instruction($"pop V0");
- return "V0";
- }
-} \ No newline at end of file
diff --git a/Compiler/visitors/Targets.cs b/Compiler/visitors/Targets.cs
deleted file mode 100644
index 10d97f4..0000000
--- a/Compiler/visitors/Targets.cs
+++ /dev/null
@@ -1,40 +0,0 @@
-namespace Q1.Compiler.visitors;
-
-public partial class CCompilerVisitor
-{
- private Target VisitTarget(CGrammarParser.TargetContext target)
- {
- Target? expressionString = this.Visit(target) as Target;
- if (expressionString == null)
- throw new CompilerException("Target did not return a target");
-
- return expressionString;
- }
-
- public override Target VisitVariableTarget(CGrammarParser.VariableTargetContext context)
- {
- string varName = context.ID().GetText();
- VariableReference reference = this.FindVariable(varName);
-
- return new Target(reference.Type, $"[${reference.Address:X4}]", $"${reference.Address:X4}");
- }
-
- public override object? VisitIndexerTarget(CGrammarParser.IndexerTargetContext context)
- {
- Target obj = this.VisitTarget(context.obj);
- if (obj.Type is not CTypePtr ptr)
- throw new CompilerException("Indexer target was not a pointer!");
-
- this.Instruction($"push {obj.Value}", "store index obj");
-
- string indexer = this.VisitExpression(context.indexer);
-
- this.Instruction($"mov {indexer}, V1", "store indexer");
- this.Instruction($"pop V0", "restore index obj");
- this.Instruction($"mul V1, {ptr.Sub.Size}", $"multiply indexer by {ptr.Sub.Size}");
- this.Instruction($"add AX, V0", "add indexer and index obj");
- this.Instruction($"mov AX, V0", "move to general purpose register");
-
- return new Target(ptr.Sub, $"[V0]", $"V0");
- }
-} \ No newline at end of file