diff options
| author | Melodi <62381002+Melodi17@users.noreply.github.com> | 2026-03-17 20:49:22 +1000 |
|---|---|---|
| committer | Melodi <62381002+Melodi17@users.noreply.github.com> | 2026-03-17 20:49:22 +1000 |
| commit | 18868128e18d38b706e7df14e8e683e1a9739c17 (patch) | |
| tree | 6f0e0e5eee646f10cbad9c0c89c24d330bc58cc6 /Compiler | |
| parent | d87ab8af4c86a3fc6ee237444e372d87e536e3ef (diff) | |
chore: Initial commit
Diffstat (limited to 'Compiler')
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 |
