< Summary

Class:NanoCLang.NanoCParser
Assembly:NanoCLang
File(s):C:\GitLab-Runner\builds\JxAESPd8\0\chenmichael\nanoc\src\NanoCLang\Grammar\NanoCParser.cs
Covered lines:1753
Uncovered lines:772
Coverable lines:2525
Total lines:3127
Line coverage:69.4% (1753 of 2525)
Covered branches:161
Total branches:227
Branch coverage:70.9% (161 of 227)

Metrics

MethodBranch coverage Cyclomatic complexity Line coverage
.cctor()100%2100%
get_Vocabulary()100%10%
get_GrammarFileName()100%10%
get_RuleNames()100%10%
get_SerializedAtn()100%10%
.ctor(...)100%10%
.ctor(...)100%1100%
.ctor(...)100%1100%
get_RuleIndex()100%10%
.ctor()100%1100%
CopyFrom(...)100%1100%
IDENTIFIER()100%10%
.ctor(...)100%1100%
TILDE()100%10%
IDENTIFIER()100%10%
.ctor(...)100%1100%
location()62.5%882.35%
Eof()100%10%
location()100%10%
.ctor(...)100%10%
get_RuleIndex()100%10%
singleLocation()100%10%
.ctor(...)100%1100%
get_RuleIndex()100%10%
.ctor()100%1100%
CopyFrom(...)100%1100%
INTEGER()100%10%
.ctor(...)100%1100%
PLUS()100%10%
INTEGER()100%10%
INTEGER(...)100%10%
.ctor(...)100%1100%
ANY()100%10%
.ctor(...)100%1100%
index()70%1087.8%
Eof()100%10%
index()100%10%
.ctor(...)100%10%
get_RuleIndex()100%10%
singleIndex()100%10%
.ctor(...)100%1100%
get_RuleIndex()100%10%
.ctor()100%1100%
CopyFrom(...)100%1100%
LB()100%10%
RB()100%10%
pureExpression()100%10%
.ctor(...)100%1100%
RETURN()100%10%
.ctor(...)100%1100%
IDENTIFIER()100%10%
.ctor(...)100%1100%
pureExpression()100%10%
pureExpression(...)100%10%
LESS()100%10%
LESSEQUAL()100%10%
GREATER()100%10%
GREATEREQUAL()100%10%
.ctor(...)100%1100%
pureExpression()100%10%
pureExpression(...)100%10%
OR()100%10%
.ctor(...)100%1100%
.ctor(...)100%1100%
LB()100%10%
RB()100%10%
IDENTIFIER()100%10%
pureExpression()100%10%
pureExpression(...)100%10%
COMMA()100%10%
COMMA(...)100%10%
ASSERT()100%10%
LB()100%10%
RB()100%10%
pureExpression()100%10%
.ctor(...)100%1100%
pureExpression()100%10%
pureExpression(...)100%10%
EQUALS()100%10%
UNEQUAL()100%10%
.ctor(...)100%1100%
UNDERSCORE()100%10%
INTEGER()100%10%
INTEGER(...)100%10%
.ctor(...)100%1100%
pureExpression()100%10%
pureExpression(...)100%10%
AND()100%10%
.ctor(...)100%1100%
AT()100%10%
INTEGER()100%10%
.ctor(...)100%1100%
pureExpression()100%10%
pureExpression(...)100%10%
PLUS()100%10%
MINUS()100%10%
.ctor(...)100%1100%
pureExpression()100%10%
pureExpression(...)71.62%7494.54%
Eof()100%10%
pureExpression()100%10%
.ctor(...)100%1100%
get_RuleIndex()100%10%
singlePureExpression()100%176.19%
.ctor(...)100%1100%
get_RuleIndex()100%10%
.ctor()100%1100%
CopyFrom(...)100%1100%
CHAR()100%10%
VOID()100%10%
.ctor(...)100%1100%
INT()100%10%
.ctor(...)100%1100%
LBA()100%10%
RBA()100%10%
INTEGER()100%10%
index()100%10%
.ctor(...)100%1100%
REF()100%10%
LB()100%10%
COMMA()100%10%
RB()100%10%
location()100%10%
index()100%10%
.ctor(...)100%1100%
basicType()58.33%1290.32%
Eof()100%10%
basicType()100%10%
.ctor(...)100%1100%
get_RuleIndex()100%10%
singleBasicType()100%176.19%
.ctor(...)100%1100%
get_RuleIndex()100%10%
.ctor()100%1100%
CopyFrom(...)100%1100%
basicType()100%10%
.ctor(...)100%1100%
LBC()100%10%
COLON()100%10%
PIPE()100%10%
RBC()100%10%
IDENTIFIER()100%10%
basicType()100%10%
pureExpression()100%10%
.ctor(...)100%1100%
refinedType()66.66%1284.61%
Eof()100%10%
refinedType()100%10%
.ctor(...)100%1100%
get_RuleIndex()100%10%
singleRefinedType()100%176.19%
.ctor(...)100%1100%
LBA()100%10%
RBA()100%10%
LB()100%10%
RB()100%10%
identifierList()100%10%
IDENTIFIER()100%10%
pureExpression()100%10%
pureExpression(...)100%10%
COMMA()100%10%
COMMA(...)100%10%
get_RuleIndex()100%10%
functionCall()75%889.79%
.ctor(...)100%1100%
get_RuleIndex()100%10%
.ctor()100%1100%
CopyFrom(...)100%1100%
LETU()100%10%
ASSIGN()100%10%
LBA()100%10%
UNFOLD()100%10%
RBA()100%10%
IN()100%10%
IDENTIFIER()100%10%
IDENTIFIER(...)100%10%
pureExpression()100%10%
expression()100%10%
.ctor(...)100%1100%
DEREF()100%10%
pureExpression()100%10%
.ctor(...)100%1100%
MALLOC()100%10%
LB()100%10%
COMMA()100%10%
RB()100%10%
IDENTIFIER()100%10%
pureExpression()100%10%
.ctor(...)100%1100%
IF()100%10%
THEN()100%10%
ELSE()100%10%
pureExpression()100%10%
expression()100%10%
expression(...)100%10%
.ctor(...)100%1100%
LET()100%10%
ASSIGN()100%10%
IN()100%10%
IDENTIFIER()100%10%
expression()100%10%
expression(...)100%10%
.ctor(...)100%1100%
ARROW()100%10%
ASSIGN()100%10%
pureExpression()100%10%
pureExpression(...)100%10%
IDENTIFIER()100%10%
.ctor(...)100%1100%
DEREF()100%10%
ASSIGN()100%10%
pureExpression()100%10%
pureExpression(...)100%10%
.ctor(...)100%1100%
LBA()100%10%
RBA()100%10%
ASSIGN()100%10%
pureExpression()100%10%
pureExpression(...)100%10%
.ctor(...)100%1100%
pureExpression()100%10%
.ctor(...)100%1100%
LET()100%10%
IN()100%10%
expression()100%10%
expression(...)100%10%
.ctor(...)100%1100%
ARROW()100%10%
pureExpression()100%10%
IDENTIFIER()100%10%
.ctor(...)100%1100%
LBA()100%10%
FOLD()100%10%
RBA()100%10%
IDENTIFIER()100%10%
.ctor(...)100%1100%
functionCall()100%10%
.ctor(...)100%1100%
LBA()100%10%
RBA()100%10%
pureExpression()100%10%
pureExpression(...)100%10%
.ctor(...)100%1100%
expression()75.86%2996.95%
Eof()100%10%
expression()100%10%
.ctor(...)100%1100%
get_RuleIndex()100%10%
singleExpression()100%176.19%
COLON()100%10%
index()100%10%
refinedType()100%10%
.ctor(...)100%1100%
get_RuleIndex()100%10%
blockBinding()100%177.27%
.ctor(...)100%1100%
blockBinding()100%10%
blockBinding(...)100%10%
COMMA()100%10%
COMMA(...)100%10%
get_RuleIndex()100%10%
block()83.33%688.37%
Eof()100%10%
block()100%10%
.ctor(...)100%10%
get_RuleIndex()100%10%
singleBlock()100%10%
TARROW()100%10%
location()100%10%
block()100%10%
.ctor(...)100%1100%
get_RuleIndex()100%10%
locationBinding()100%177.27%
locationBinding()100%10%
functionCall()100%10%
.ctor(...)100%1100%
get_RuleIndex()100%10%
heapElement()83.33%680.64%
.ctor(...)100%1100%
EMP()100%10%
heapElement()100%10%
heapElement(...)100%10%
DEREF()100%10%
DEREF(...)100%10%
get_RuleIndex()100%10%
heap()75%1287.23%
Eof()100%10%
heap()100%10%
.ctor(...)100%1100%
get_RuleIndex()100%10%
singleHeap()100%176.19%
COLON()100%10%
IDENTIFIER()100%10%
refinedType()100%10%
.ctor(...)100%1100%
get_RuleIndex()100%10%
typeArg()50%277.27%
.ctor(...)100%1100%
typeArg()100%10%
typeArg(...)100%10%
COMMA()100%10%
COMMA(...)100%10%
get_RuleIndex()100%10%
typeArgList()100%488.37%
ARROW()100%10%
SLASH()100%10%
refinedType()100%10%
heap()100%10%
.ctor(...)100%1100%
get_RuleIndex()100%10%
world()83.33%681.81%
.ctor(...)100%1100%
IDENTIFIER()100%10%
IDENTIFIER(...)100%10%
COMMA()100%10%
COMMA(...)100%10%
get_RuleIndex()100%10%
identifierList()100%488.37%
LBA()100%10%
RBA()100%10%
LB()100%10%
RB()100%10%
SLASH()100%10%
identifierList()100%10%
typeArgList()100%10%
heap()100%10%
world()100%10%
.ctor(...)100%1100%
get_RuleIndex()100%10%
functionSchema()100%182.14%
Eof()100%10%
functionSchema()100%10%
.ctor(...)100%1100%
get_RuleIndex()100%10%
singleFunctionSchema()100%176.19%
.ctor(...)100%1100%
FUN()100%10%
LB()100%10%
RB()100%10%
LBC()100%10%
RBC()100%10%
COLON()100%10%
expression()100%10%
functionSchema()100%10%
IDENTIFIER()100%10%
IDENTIFIER(...)100%10%
COMMA()100%10%
COMMA(...)100%10%
get_RuleIndex()100%10%
functionDefinition()100%490.19%
Eof()100%10%
functionDefinition()100%10%
.ctor(...)100%10%
get_RuleIndex()100%10%
singleFunctionDefinition()100%10%
ASSIGN()100%10%
IDENTIFIER()100%10%
blockBinding()100%10%
.ctor(...)100%1100%
get_RuleIndex()100%10%
structField()50%277.27%
.ctor(...)100%1100%
STRUCT()100%10%
LB()100%10%
RB()100%10%
LBC()100%10%
RBC()100%10%
COLON()100%10%
COLON(...)100%10%
LBA()100%10%
RBA()100%10%
typeArgList()100%10%
identifierList()100%10%
functionCall()100%10%
functionCall(...)100%10%
structField()100%10%
structField(...)100%10%
COMMA()100%10%
COMMA(...)100%10%
get_RuleIndex()100%10%
structDefinition()83.33%676.47%
.ctor(...)100%1100%
get_RuleIndex()100%10%
.ctor()100%1100%
CopyFrom(...)100%1100%
LB()100%10%
RB()100%10%
IDENTIFIER()100%10%
.ctor(...)100%1100%
LETF()100%10%
ASSIGN()100%10%
IN()100%10%
IDENTIFIER()100%10%
functionDefinition()100%10%
program()100%10%
.ctor(...)100%1100%
LETS()100%10%
ASSIGN()100%10%
IN()100%10%
IDENTIFIER()100%10%
structDefinition()100%10%
program()100%10%
.ctor(...)100%1100%
program()66.66%1288.46%
Eof()100%10%
program()100%10%
.ctor(...)100%1100%
get_RuleIndex()100%10%
singleProgram()100%176.19%
Sempred(...)0%20%
pureExpression_sempred(...)0%60%

File(s)

C:\GitLab-Runner\builds\JxAESPd8\0\chenmichael\nanoc\src\NanoCLang\Grammar\NanoCParser.cs

#LineLine coverage
 1//------------------------------------------------------------------------------
 2// <auto-generated>
 3//     This code was generated by a tool.
 4//     ANTLR Version: 4.9
 5//
 6//     Changes to this file may cause incorrect behavior and will be lost if
 7//     the code is regenerated.
 8// </auto-generated>
 9//------------------------------------------------------------------------------
 10
 11// Generated from NanoCParser.g4 by ANTLR 4.9
 12
 13// Unreachable code detected
 14#pragma warning disable 0162
 15// The variable '...' is assigned but its value is never used
 16#pragma warning disable 0219
 17// Missing XML comment for publicly visible type or member '...'
 18#pragma warning disable 1591
 19// Ambiguous reference in cref attribute
 20#pragma warning disable 419
 21
 22namespace NanoCLang {
 23
 24using System.Linq;
 25using NanoCLang.Entities;
 26#nullable disable
 27#pragma warning disable CS3021
 28
 29using System;
 30using System.IO;
 31using System.Text;
 32using System.Diagnostics;
 33using System.Collections.Generic;
 34using Antlr4.Runtime;
 35using Antlr4.Runtime.Atn;
 36using Antlr4.Runtime.Misc;
 37using Antlr4.Runtime.Tree;
 38using DFA = Antlr4.Runtime.Dfa.DFA;
 39
 40[System.CodeDom.Compiler.GeneratedCode("ANTLR", "4.9")]
 41[System.CLSCompliant(false)]
 42public partial class NanoCParser : Parser {
 43  protected static DFA[] decisionToDFA;
 144  protected static PredictionContextCache sharedContextCache = new PredictionContextCache();
 45  public const int
 46    LET=1, LETF=2, LETS=3, LETU=4, FOLD=5, UNFOLD=6, FUN=7, STRUCT=8, IF=9,
 47    THEN=10, ELSE=11, ANY=12, ASSERT=13, MALLOC=14, INT=15, CHAR=16, VOID=17,
 48    RETURN=18, EMP=19, IN=20, REF=21, AT=22, PLUS=23, MINUS=24, EQUALS=25,
 49    UNEQUAL=26, GREATEREQUAL=27, LESSEQUAL=28, AND=29, OR=30, GREATER=31,
 50    LESS=32, ASSIGN=33, LB=34, RB=35, LBC=36, RBC=37, LBA=38, RBA=39, DEREF=40,
 51    COMMA=41, TARROW=42, TILDE=43, UNDERSCORE=44, COLON=45, SLASH=46, PIPE=47,
 52    ARROW=48, IDENTIFIER=49, INTEGER=50, BLOCKCOMMENT=51, LINECOMMENT=52,
 53    WHITESPACE=53, ERROR=54;
 54  public const int
 55    RULE_location = 0, RULE_singleLocation = 1, RULE_index = 2, RULE_singleIndex = 3,
 56    RULE_pureExpression = 4, RULE_singlePureExpression = 5, RULE_basicType = 6,
 57    RULE_singleBasicType = 7, RULE_refinedType = 8, RULE_singleRefinedType = 9,
 58    RULE_functionCall = 10, RULE_expression = 11, RULE_singleExpression = 12,
 59    RULE_blockBinding = 13, RULE_block = 14, RULE_singleBlock = 15, RULE_locationBinding = 16,
 60    RULE_heapElement = 17, RULE_heap = 18, RULE_singleHeap = 19, RULE_typeArg = 20,
 61    RULE_typeArgList = 21, RULE_world = 22, RULE_identifierList = 23, RULE_functionSchema = 24,
 62    RULE_singleFunctionSchema = 25, RULE_functionDefinition = 26, RULE_singleFunctionDefinition = 27,
 63    RULE_structField = 28, RULE_structDefinition = 29, RULE_program = 30,
 64    RULE_singleProgram = 31;
 165  public static readonly string[] ruleNames = {
 166    "location", "singleLocation", "index", "singleIndex", "pureExpression",
 167    "singlePureExpression", "basicType", "singleBasicType", "refinedType",
 168    "singleRefinedType", "functionCall", "expression", "singleExpression",
 169    "blockBinding", "block", "singleBlock", "locationBinding", "heapElement",
 170    "heap", "singleHeap", "typeArg", "typeArgList", "world", "identifierList",
 171    "functionSchema", "singleFunctionSchema", "functionDefinition", "singleFunctionDefinition",
 172    "structField", "structDefinition", "program", "singleProgram"
 173  };
 74
 175  private static readonly string[] _LiteralNames = {
 176    null, "'let'", "'letf'", "'lets'", "'letu'", "'fold'", "'unfold'", "'fun'",
 177    "'struct'", "'if'", "'then'", "'else'", "'any'", "'assert'", "'malloc'",
 178    "'int'", "'char'", "'void'", "'return'", "'emp'", "'in'", "'ref'", "'@'",
 179    "'+'", "'-'", "'=='", "'!='", "'>='", "'<='", "'&&'", "'||'", "'>'", "'<'",
 180    "'='", "'('", "')'", "'{'", "'}'", "'['", "']'", "'*'", "','", "'~>'",
 181    "'~'", "'_'", "':'", "'/'", "'|'", "'->'"
 182  };
 183  private static readonly string[] _SymbolicNames = {
 184    null, "LET", "LETF", "LETS", "LETU", "FOLD", "UNFOLD", "FUN", "STRUCT",
 185    "IF", "THEN", "ELSE", "ANY", "ASSERT", "MALLOC", "INT", "CHAR", "VOID",
 186    "RETURN", "EMP", "IN", "REF", "AT", "PLUS", "MINUS", "EQUALS", "UNEQUAL",
 187    "GREATEREQUAL", "LESSEQUAL", "AND", "OR", "GREATER", "LESS", "ASSIGN",
 188    "LB", "RB", "LBC", "RBC", "LBA", "RBA", "DEREF", "COMMA", "TARROW", "TILDE",
 189    "UNDERSCORE", "COLON", "SLASH", "PIPE", "ARROW", "IDENTIFIER", "INTEGER",
 190    "BLOCKCOMMENT", "LINECOMMENT", "WHITESPACE", "ERROR"
 191  };
 192  public static readonly IVocabulary DefaultVocabulary = new Vocabulary(_LiteralNames, _SymbolicNames);
 93
 94  [NotNull]
 95  public override IVocabulary Vocabulary
 96  {
 97    get
 098    {
 099      return DefaultVocabulary;
 0100    }
 101  }
 102
 0103  public override string GrammarFileName { get { return "NanoCParser.g4"; } }
 104
 0105  public override string[] RuleNames { get { return ruleNames; } }
 106
 0107  public override string SerializedAtn { get { return new string(_serializedATN); } }
 108
 1109  static NanoCParser() {
 1110    decisionToDFA = new DFA[_ATN.NumberOfDecisions];
 86111    for (int i = 0; i < _ATN.NumberOfDecisions; i++) {
 28112      decisionToDFA[i] = new DFA(_ATN.GetDecisionState(i), i);
 28113    }
 1114  }
 115
 0116    public NanoCParser(ITokenStream input) : this(input, Console.Out, Console.Error) { }
 117
 118    public NanoCParser(ITokenStream input, TextWriter output, TextWriter errorOutput)
 123119    : base(input, output, errorOutput)
 123120  {
 123121    Interpreter = new ParserATNSimulator(this, _ATN, decisionToDFA, sharedContextCache);
 123122  }
 123
 124  public partial class LocationContext : ParserRuleContext {
 125    public Location res;
 126    public LocationContext(ParserRuleContext parent, int invokingState)
 131127      : base(parent, invokingState)
 131128    {
 131129    }
 0130    public override int RuleIndex { get { return RULE_location; } }
 131
 393132    public LocationContext() { }
 131133    public virtual void CopyFrom(LocationContext context) {
 131134      base.CopyFrom(context);
 131135      this.res = context.res;
 131136    }
 137  }
 138  public partial class ConcreteLocationContext : LocationContext {
 139    public IToken name;
 0140    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode IDENTIFIER() { return GetToken(NanoCParser.IDENTIFIER,
 208141    public ConcreteLocationContext(LocationContext context) { CopyFrom(context); }
 142  }
 143  public partial class AbstractLocationContext : LocationContext {
 144    public IToken name;
 0145    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode TILDE() { return GetToken(NanoCParser.TILDE, 0); }
 0146    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode IDENTIFIER() { return GetToken(NanoCParser.IDENTIFIER,
 316147    public AbstractLocationContext(LocationContext context) { CopyFrom(context); }
 148  }
 149
 150  [RuleVersion(0)]
 131151  public LocationContext location() {
 131152    LocationContext _localctx = new LocationContext(Context, State);
 131153    EnterRule(_localctx, 0, RULE_location);
 131154    try {
 131155      State = 69;
 131156      ErrorHandler.Sync(this);
 131157      switch (TokenStream.LA(1)) {
 158      case IDENTIFIER:
 52159        _localctx = new ConcreteLocationContext(_localctx);
 52160        EnterOuterAlt(_localctx, 1);
 52161        {
 104162        State = 64; ((ConcreteLocationContext)_localctx).name = Match(IDENTIFIER);
 52163         ((ConcreteLocationContext)_localctx).res =  new Location((((ConcreteLocationContext)_localctx).name!=null?((Con
 52164        }
 52165        break;
 166      case TILDE:
 79167        _localctx = new AbstractLocationContext(_localctx);
 79168        EnterOuterAlt(_localctx, 2);
 79169        {
 158170        State = 66; Match(TILDE);
 158171        State = 67; ((AbstractLocationContext)_localctx).name = Match(IDENTIFIER);
 79172         ((AbstractLocationContext)_localctx).res =  new Location((((AbstractLocationContext)_localctx).name!=null?((Abs
 79173        }
 79174        break;
 175      default:
 0176        throw new NoViableAltException(this);
 177      }
 131178    }
 0179    catch (RecognitionException re) {
 0180      _localctx.exception = re;
 0181      ErrorHandler.ReportError(this, re);
 0182      ErrorHandler.Recover(this, re);
 0183    }
 131184    finally {
 131185      ExitRule();
 131186    }
 131187    return _localctx;
 131188  }
 189
 190  public partial class SingleLocationContext : ParserRuleContext {
 191    public Location res;
 192    public LocationContext entrypoint;
 0193    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode Eof() { return GetToken(NanoCParser.Eof, 0); }
 0194    [System.Diagnostics.DebuggerNonUserCode] public LocationContext location() {
 0195      return GetRuleContext<LocationContext>(0);
 0196    }
 197    public SingleLocationContext(ParserRuleContext parent, int invokingState)
 0198      : base(parent, invokingState)
 0199    {
 0200    }
 0201    public override int RuleIndex { get { return RULE_singleLocation; } }
 202  }
 203
 204  [RuleVersion(0)]
 0205  public SingleLocationContext singleLocation() {
 0206    SingleLocationContext _localctx = new SingleLocationContext(Context, State);
 0207    EnterRule(_localctx, 2, RULE_singleLocation);
 0208    try {
 0209      EnterOuterAlt(_localctx, 1);
 0210      {
 0211      State = 71; _localctx.entrypoint = location();
 0212      State = 72; Match(Eof);
 0213       _localctx.res =  _localctx.entrypoint.res;
 0214      }
 0215    }
 0216    catch (RecognitionException re) {
 0217      _localctx.exception = re;
 0218      ErrorHandler.ReportError(this, re);
 0219      ErrorHandler.Recover(this, re);
 0220    }
 0221    finally {
 0222      ExitRule();
 0223    }
 0224    return _localctx;
 0225  }
 226
 227  public partial class IndexContext : ParserRuleContext {
 228    public Entities.Index res;
 229    public IndexContext(ParserRuleContext parent, int invokingState)
 245230      : base(parent, invokingState)
 245231    {
 245232    }
 0233    public override int RuleIndex { get { return RULE_index; } }
 234
 735235    public IndexContext() { }
 245236    public virtual void CopyFrom(IndexContext context) {
 245237      base.CopyFrom(context);
 245238      this.res = context.res;
 245239    }
 240  }
 241  public partial class SingletonContext : IndexContext {
 242    public IToken value;
 0243    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INTEGER() { return GetToken(NanoCParser.INTEGER, 0); }
 308244    public SingletonContext(IndexContext context) { CopyFrom(context); }
 245  }
 246  public partial class SequenceContext : IndexContext {
 247    public IToken value;
 248    public IToken step;
 0249    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode PLUS() { return GetToken(NanoCParser.PLUS, 0); }
 0250    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] INTEGER() { return GetTokens(NanoCParser.INTEGER); }
 0251    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INTEGER(int i) {
 0252      return GetToken(NanoCParser.INTEGER, i);
 0253    }
 396254    public SequenceContext(IndexContext context) { CopyFrom(context); }
 255  }
 256  public partial class ArbitraryIndexContext : IndexContext {
 0257    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ANY() { return GetToken(NanoCParser.ANY, 0); }
 276258    public ArbitraryIndexContext(IndexContext context) { CopyFrom(context); }
 259  }
 260
 261  [RuleVersion(0)]
 245262  public IndexContext index() {
 245263    IndexContext _localctx = new IndexContext(Context, State);
 245264    EnterRule(_localctx, 4, RULE_index);
 245265    try {
 245266      State = 83;
 245267      ErrorHandler.Sync(this);
 245268      switch ( Interpreter.AdaptivePredict(TokenStream,1,Context) ) {
 269      case 1:
 77270        _localctx = new SingletonContext(_localctx);
 77271        EnterOuterAlt(_localctx, 1);
 77272        {
 154273        State = 75; ((SingletonContext)_localctx).value = Match(INTEGER);
 77274         ((SingletonContext)_localctx).res =  new SingletonIndex(int.Parse((((SingletonContext)_localctx).value!=null?((
 77275        }
 77276        break;
 277      case 2:
 99278        _localctx = new SequenceContext(_localctx);
 99279        EnterOuterAlt(_localctx, 2);
 99280        {
 198281        State = 77; ((SequenceContext)_localctx).value = Match(INTEGER);
 198282        State = 78; Match(PLUS);
 198283        State = 79; ((SequenceContext)_localctx).step = Match(INTEGER);
 99284         ((SequenceContext)_localctx).res =  new SequenceIndex(int.Parse((((SequenceContext)_localctx).value!=null?((Seq
 99285        }
 99286        break;
 287      case 3:
 69288        _localctx = new ArbitraryIndexContext(_localctx);
 69289        EnterOuterAlt(_localctx, 3);
 69290        {
 138291        State = 81; Match(ANY);
 69292         ((ArbitraryIndexContext)_localctx).res =  new ArbitraryIndex();
 69293        }
 69294        break;
 295      }
 245296    }
 0297    catch (RecognitionException re) {
 0298      _localctx.exception = re;
 0299      ErrorHandler.ReportError(this, re);
 0300      ErrorHandler.Recover(this, re);
 0301    }
 245302    finally {
 245303      ExitRule();
 245304    }
 245305    return _localctx;
 245306  }
 307
 308  public partial class SingleIndexContext : ParserRuleContext {
 309    public Entities.Index res;
 310    public IndexContext entrypoint;
 0311    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode Eof() { return GetToken(NanoCParser.Eof, 0); }
 0312    [System.Diagnostics.DebuggerNonUserCode] public IndexContext index() {
 0313      return GetRuleContext<IndexContext>(0);
 0314    }
 315    public SingleIndexContext(ParserRuleContext parent, int invokingState)
 0316      : base(parent, invokingState)
 0317    {
 0318    }
 0319    public override int RuleIndex { get { return RULE_singleIndex; } }
 320  }
 321
 322  [RuleVersion(0)]
 0323  public SingleIndexContext singleIndex() {
 0324    SingleIndexContext _localctx = new SingleIndexContext(Context, State);
 0325    EnterRule(_localctx, 6, RULE_singleIndex);
 0326    try {
 0327      EnterOuterAlt(_localctx, 1);
 0328      {
 0329      State = 85; _localctx.entrypoint = index();
 0330      State = 86; Match(Eof);
 0331       _localctx.res =  _localctx.entrypoint.res;
 0332      }
 0333    }
 0334    catch (RecognitionException re) {
 0335      _localctx.exception = re;
 0336      ErrorHandler.ReportError(this, re);
 0337      ErrorHandler.Recover(this, re);
 0338    }
 0339    finally {
 0340      ExitRule();
 0341    }
 0342    return _localctx;
 0343  }
 344
 345  public partial class PureExpressionContext : ParserRuleContext {
 346    public PureExpression res;
 347    public PureExpressionContext(ParserRuleContext parent, int invokingState)
 1307348      : base(parent, invokingState)
 1307349    {
 1307350    }
 0351    public override int RuleIndex { get { return RULE_pureExpression; } }
 352
 3921353    public PureExpressionContext() { }
 1307354    public virtual void CopyFrom(PureExpressionContext context) {
 1307355      base.CopyFrom(context);
 1307356      this.res = context.res;
 1307357    }
 358  }
 359  public partial class BracedExpressionContext : PureExpressionContext {
 360    public PureExpressionContext body;
 0361    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode LB() { return GetToken(NanoCParser.LB, 0); }
 0362    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode RB() { return GetToken(NanoCParser.RB, 0); }
 0363    [System.Diagnostics.DebuggerNonUserCode] public PureExpressionContext pureExpression() {
 0364      return GetRuleContext<PureExpressionContext>(0);
 0365    }
 724366    public BracedExpressionContext(PureExpressionContext context) { CopyFrom(context); }
 367  }
 368  public partial class VoidReturnContext : PureExpressionContext {
 0369    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode RETURN() { return GetToken(NanoCParser.RETURN, 0); }
 52370    public VoidReturnContext(PureExpressionContext context) { CopyFrom(context); }
 371  }
 372  public partial class VariableContext : PureExpressionContext {
 373    public IToken name;
 0374    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode IDENTIFIER() { return GetToken(NanoCParser.IDENTIFIER,
 2024375    public VariableContext(PureExpressionContext context) { CopyFrom(context); }
 376  }
 377  public partial class RelationalComparisonContext : PureExpressionContext {
 378    public PureExpressionContext left;
 379    public IToken op;
 380    public PureExpressionContext right;
 0381    [System.Diagnostics.DebuggerNonUserCode] public PureExpressionContext[] pureExpression() {
 0382      return GetRuleContexts<PureExpressionContext>();
 0383    }
 0384    [System.Diagnostics.DebuggerNonUserCode] public PureExpressionContext pureExpression(int i) {
 0385      return GetRuleContext<PureExpressionContext>(i);
 0386    }
 0387    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode LESS() { return GetToken(NanoCParser.LESS, 0); }
 0388    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode LESSEQUAL() { return GetToken(NanoCParser.LESSEQUAL, 0
 0389    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode GREATER() { return GetToken(NanoCParser.GREATER, 0); }
 0390    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode GREATEREQUAL() { return GetToken(NanoCParser.GREATEREQ
 344391    public RelationalComparisonContext(PureExpressionContext context) { CopyFrom(context); }
 392  }
 393  public partial class DisjunctionExpressionContext : PureExpressionContext {
 394    public PureExpressionContext left;
 395    public IToken op;
 396    public PureExpressionContext right;
 0397    [System.Diagnostics.DebuggerNonUserCode] public PureExpressionContext[] pureExpression() {
 0398      return GetRuleContexts<PureExpressionContext>();
 0399    }
 0400    [System.Diagnostics.DebuggerNonUserCode] public PureExpressionContext pureExpression(int i) {
 0401      return GetRuleContext<PureExpressionContext>(i);
 0402    }
 0403    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode OR() { return GetToken(NanoCParser.OR, 0); }
 16404    public DisjunctionExpressionContext(PureExpressionContext context) { CopyFrom(context); }
 405  }
 406  public partial class UnintApplicationContext : PureExpressionContext {
 407    public IToken name;
 408    public PureExpressionContext _pureExpression;
 90409    public IList<PureExpressionContext> _a = new List<PureExpressionContext>();
 0410    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode LB() { return GetToken(NanoCParser.LB, 0); }
 0411    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode RB() { return GetToken(NanoCParser.RB, 0); }
 0412    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode IDENTIFIER() { return GetToken(NanoCParser.IDENTIFIER,
 0413    [System.Diagnostics.DebuggerNonUserCode] public PureExpressionContext[] pureExpression() {
 0414      return GetRuleContexts<PureExpressionContext>();
 0415    }
 0416    [System.Diagnostics.DebuggerNonUserCode] public PureExpressionContext pureExpression(int i) {
 0417      return GetRuleContext<PureExpressionContext>(i);
 0418    }
 0419    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] COMMA() { return GetTokens(NanoCParser.COMMA); }
 0420    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COMMA(int i) {
 0421      return GetToken(NanoCParser.COMMA, i);
 0422    }
 360423    public UnintApplicationContext(PureExpressionContext context) { CopyFrom(context); }
 424  }
 425  public partial class AssertionContext : PureExpressionContext {
 426    public PureExpressionContext body;
 0427    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ASSERT() { return GetToken(NanoCParser.ASSERT, 0); }
 0428    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode LB() { return GetToken(NanoCParser.LB, 0); }
 0429    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode RB() { return GetToken(NanoCParser.RB, 0); }
 0430    [System.Diagnostics.DebuggerNonUserCode] public PureExpressionContext pureExpression() {
 0431      return GetRuleContext<PureExpressionContext>(0);
 0432    }
 52433    public AssertionContext(PureExpressionContext context) { CopyFrom(context); }
 434  }
 435  public partial class EqualityComparisonContext : PureExpressionContext {
 436    public PureExpressionContext left;
 437    public IToken op;
 438    public PureExpressionContext right;
 0439    [System.Diagnostics.DebuggerNonUserCode] public PureExpressionContext[] pureExpression() {
 0440      return GetRuleContexts<PureExpressionContext>();
 0441    }
 0442    [System.Diagnostics.DebuggerNonUserCode] public PureExpressionContext pureExpression(int i) {
 0443      return GetRuleContext<PureExpressionContext>(i);
 0444    }
 0445    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode EQUALS() { return GetToken(NanoCParser.EQUALS, 0); }
 0446    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode UNEQUAL() { return GetToken(NanoCParser.UNEQUAL, 0); }
 140447    public EqualityComparisonContext(PureExpressionContext context) { CopyFrom(context); }
 448  }
 449  public partial class IntegerConstantContext : PureExpressionContext {
 450    public IToken value;
 451    public IToken size;
 0452    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode UNDERSCORE() { return GetToken(NanoCParser.UNDERSCORE,
 0453    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] INTEGER() { return GetTokens(NanoCParser.INTEGER); }
 0454    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INTEGER(int i) {
 0455      return GetToken(NanoCParser.INTEGER, i);
 0456    }
 1000457    public IntegerConstantContext(PureExpressionContext context) { CopyFrom(context); }
 458  }
 459  public partial class ConjunctionExpressionContext : PureExpressionContext {
 460    public PureExpressionContext left;
 461    public IToken op;
 462    public PureExpressionContext right;
 0463    [System.Diagnostics.DebuggerNonUserCode] public PureExpressionContext[] pureExpression() {
 0464      return GetRuleContexts<PureExpressionContext>();
 0465    }
 0466    [System.Diagnostics.DebuggerNonUserCode] public PureExpressionContext pureExpression(int i) {
 0467      return GetRuleContext<PureExpressionContext>(i);
 0468    }
 0469    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode AND() { return GetToken(NanoCParser.AND, 0); }
 248470    public ConjunctionExpressionContext(PureExpressionContext context) { CopyFrom(context); }
 471  }
 472  public partial class BlockOffsetContext : PureExpressionContext {
 473    public IToken offset;
 0474    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode AT() { return GetToken(NanoCParser.AT, 0); }
 0475    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INTEGER() { return GetToken(NanoCParser.INTEGER, 0); }
 36476    public BlockOffsetContext(PureExpressionContext context) { CopyFrom(context); }
 477  }
 478  public partial class IntegerAdditiveContext : PureExpressionContext {
 479    public PureExpressionContext left;
 480    public IToken op;
 481    public PureExpressionContext right;
 0482    [System.Diagnostics.DebuggerNonUserCode] public PureExpressionContext[] pureExpression() {
 0483      return GetRuleContexts<PureExpressionContext>();
 0484    }
 0485    [System.Diagnostics.DebuggerNonUserCode] public PureExpressionContext pureExpression(int i) {
 0486      return GetRuleContext<PureExpressionContext>(i);
 0487    }
 0488    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode PLUS() { return GetToken(NanoCParser.PLUS, 0); }
 0489    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode MINUS() { return GetToken(NanoCParser.MINUS, 0); }
 232490    public IntegerAdditiveContext(PureExpressionContext context) { CopyFrom(context); }
 491  }
 492
 493  [RuleVersion(0)]
 0494  public PureExpressionContext pureExpression() {
 0495    return pureExpression(0);
 0496  }
 497
 1062498  private PureExpressionContext pureExpression(int _p) {
 1062499    ParserRuleContext _parentctx = Context;
 1062500    int _parentState = State;
 1062501    PureExpressionContext _localctx = new PureExpressionContext(Context, _parentState);
 1062502    PureExpressionContext _prevctx = _localctx;
 1062503    int _startState = 8;
 1062504    EnterRecursionRule(_localctx, 8, RULE_pureExpression, _p);
 505    int _la;
 1062506    try {
 507      int _alt;
 1062508      EnterOuterAlt(_localctx, 1);
 1062509      {
 1062510      State = 126;
 1062511      ErrorHandler.Sync(this);
 1062512      switch ( Interpreter.AdaptivePredict(TokenStream,4,Context) ) {
 513      case 1:
 13514        {
 13515        _localctx = new VoidReturnContext(_localctx);
 13516        Context = _localctx;
 13517        _prevctx = _localctx;
 518
 26519        State = 90; Match(RETURN);
 13520         ((VoidReturnContext)_localctx).res =  new IntegerConstant(0, 0);
 13521        }
 13522        break;
 523      case 2:
 181524        {
 181525        _localctx = new BracedExpressionContext(_localctx);
 181526        Context = _localctx;
 181527        _prevctx = _localctx;
 362528        State = 92; Match(LB);
 362529        State = 93; ((BracedExpressionContext)_localctx).body = pureExpression(0);
 362530        State = 94; Match(RB);
 181531         ((BracedExpressionContext)_localctx).res =  ((BracedExpressionContext)_localctx).body.res;
 181532        }
 181533        break;
 534      case 3:
 13535        {
 13536        _localctx = new AssertionContext(_localctx);
 13537        Context = _localctx;
 13538        _prevctx = _localctx;
 26539        State = 97; Match(ASSERT);
 26540        State = 98; Match(LB);
 26541        State = 99; ((AssertionContext)_localctx).body = pureExpression(0);
 26542        State = 100; Match(RB);
 13543         ((AssertionContext)_localctx).res =  new AssertionExpression(((AssertionContext)_localctx).body.res);
 13544        }
 13545        break;
 546      case 4:
 9547        {
 9548        _localctx = new BlockOffsetContext(_localctx);
 9549        Context = _localctx;
 9550        _prevctx = _localctx;
 18551        State = 103; Match(AT);
 18552        State = 104; ((BlockOffsetContext)_localctx).offset = Match(INTEGER);
 9553         ((BlockOffsetContext)_localctx).res =  new BlockOffset(int.Parse((((BlockOffsetContext)_localctx).offset!=null?
 9554        }
 9555        break;
 556      case 5:
 90557        {
 90558        _localctx = new UnintApplicationContext(_localctx);
 90559        Context = _localctx;
 90560        _prevctx = _localctx;
 180561        State = 106; ((UnintApplicationContext)_localctx).name = Match(IDENTIFIER);
 180562        State = 107; Match(LB);
 90563        State = 116;
 90564        ErrorHandler.Sync(this);
 90565        _la = TokenStream.LA(1);
 180566        if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ASSERT) | (1L << RETURN) | (1L << AT) | (1L << LB) | (1L << 
 90567          {
 180568          State = 108; ((UnintApplicationContext)_localctx)._pureExpression = pureExpression(0);
 90569          ((UnintApplicationContext)_localctx)._a.Add(((UnintApplicationContext)_localctx)._pureExpression);
 90570          State = 113;
 90571          ErrorHandler.Sync(this);
 90572          _la = TokenStream.LA(1);
 184573          while (_la==COMMA) {
 47574            {
 47575            {
 94576            State = 109; Match(COMMA);
 94577            State = 110; ((UnintApplicationContext)_localctx)._pureExpression = pureExpression(0);
 47578            ((UnintApplicationContext)_localctx)._a.Add(((UnintApplicationContext)_localctx)._pureExpression);
 47579            }
 47580            }
 47581            State = 115;
 47582            ErrorHandler.Sync(this);
 47583            _la = TokenStream.LA(1);
 47584          }
 90585          }
 90586        }
 587
 180588        State = 118; Match(RB);
 227589         ((UnintApplicationContext)_localctx).res =  new UninterpretedApplicationExpression((((UnintApplicationContext)_
 90590        }
 90591        break;
 592      case 6:
 250593        {
 250594        _localctx = new IntegerConstantContext(_localctx);
 250595        Context = _localctx;
 250596        _prevctx = _localctx;
 500597        State = 120; ((IntegerConstantContext)_localctx).value = Match(INTEGER);
 500598        State = 121; Match(UNDERSCORE);
 500599        State = 122; ((IntegerConstantContext)_localctx).size = Match(INTEGER);
 250600         ((IntegerConstantContext)_localctx).res =  new IntegerConstant(int.Parse((((IntegerConstantContext)_localctx).v
 250601        }
 250602        break;
 603      case 7:
 506604        {
 506605        _localctx = new VariableContext(_localctx);
 506606        Context = _localctx;
 506607        _prevctx = _localctx;
 1012608        State = 124; ((VariableContext)_localctx).name = Match(IDENTIFIER);
 506609         ((VariableContext)_localctx).res =  new VariableExpression((((VariableContext)_localctx).name!=null?((VariableC
 506610        }
 506611        break;
 612      }
 1062613      Context.Stop = TokenStream.LT(-1);
 1062614      State = 155;
 1062615      ErrorHandler.Sync(this);
 1062616      _alt = Interpreter.AdaptivePredict(TokenStream,6,Context);
 1552617      while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) {
 490618        if ( _alt==1 ) {
 245619          if ( ParseListeners!=null )
 245620            TriggerExitRuleEvent();
 245621          _prevctx = _localctx;
 245622          {
 245623          State = 153;
 245624          ErrorHandler.Sync(this);
 245625          switch ( Interpreter.AdaptivePredict(TokenStream,5,Context) ) {
 626          case 1:
 58627            {
 58628            _localctx = new IntegerAdditiveContext(new PureExpressionContext(_parentctx, _parentState));
 58629            ((IntegerAdditiveContext)_localctx).left = _prevctx;
 58630            PushNewRecursionContext(_localctx, _startState, RULE_pureExpression);
 58631            State = 128;
 58632            if (!(Precpred(Context, 12))) throw new FailedPredicateException(this, "Precpred(Context, 12)");
 58633            State = 129;
 58634            ((IntegerAdditiveContext)_localctx).op = TokenStream.LT(1);
 58635            _la = TokenStream.LA(1);
 58636            if ( !(_la==PLUS || _la==MINUS) ) {
 0637              ((IntegerAdditiveContext)_localctx).op = ErrorHandler.RecoverInline(this);
 0638            }
 58639            else {
 58640              ErrorHandler.ReportMatch(this);
 58641                Consume();
 58642            }
 116643            State = 130; ((IntegerAdditiveContext)_localctx).right = pureExpression(13);
 58644             ((IntegerAdditiveContext)_localctx).res =  (((IntegerAdditiveContext)_localctx).op!=null?((IntegerAdditiveC
 37645                                  "+" => new AdditionExpression(((IntegerAdditiveContext)_localctx).left.res, ((IntegerA
 21646                                  "-" => new SubtractionExpression(((IntegerAdditiveContext)_localctx).left.res, ((Integ
 0647                                  _ => throw new ArgumentOutOfRangeException("Invalid additive operator!")
 58648                              };
 58649            }
 58650            break;
 651          case 2:
 86652            {
 86653            _localctx = new RelationalComparisonContext(new PureExpressionContext(_parentctx, _parentState));
 86654            ((RelationalComparisonContext)_localctx).left = _prevctx;
 86655            PushNewRecursionContext(_localctx, _startState, RULE_pureExpression);
 86656            State = 133;
 86657            if (!(Precpred(Context, 10))) throw new FailedPredicateException(this, "Precpred(Context, 10)");
 86658            State = 134;
 86659            ((RelationalComparisonContext)_localctx).op = TokenStream.LT(1);
 86660            _la = TokenStream.LA(1);
 86661            if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << GREATEREQUAL) | (1L << LESSEQUAL) | (1L << GREATER) |
 0662              ((RelationalComparisonContext)_localctx).op = ErrorHandler.RecoverInline(this);
 0663            }
 86664            else {
 86665              ErrorHandler.ReportMatch(this);
 86666                Consume();
 86667            }
 172668            State = 135; ((RelationalComparisonContext)_localctx).right = pureExpression(11);
 86669             ((RelationalComparisonContext)_localctx).res =  new RelationalExpression(((RelationalComparisonContext)_loc
 86670            }
 86671            break;
 672          case 3:
 35673            {
 35674            _localctx = new EqualityComparisonContext(new PureExpressionContext(_parentctx, _parentState));
 35675            ((EqualityComparisonContext)_localctx).left = _prevctx;
 35676            PushNewRecursionContext(_localctx, _startState, RULE_pureExpression);
 35677            State = 138;
 35678            if (!(Precpred(Context, 9))) throw new FailedPredicateException(this, "Precpred(Context, 9)");
 35679            State = 139;
 35680            ((EqualityComparisonContext)_localctx).op = TokenStream.LT(1);
 35681            _la = TokenStream.LA(1);
 35682            if ( !(_la==EQUALS || _la==UNEQUAL) ) {
 0683              ((EqualityComparisonContext)_localctx).op = ErrorHandler.RecoverInline(this);
 0684            }
 35685            else {
 35686              ErrorHandler.ReportMatch(this);
 35687                Consume();
 35688            }
 70689            State = 140; ((EqualityComparisonContext)_localctx).right = pureExpression(10);
 35690             ((EqualityComparisonContext)_localctx).res =  new RelationalExpression(((EqualityComparisonContext)_localct
 35691            }
 35692            break;
 693          case 4:
 62694            {
 62695            _localctx = new ConjunctionExpressionContext(new PureExpressionContext(_parentctx, _parentState));
 62696            ((ConjunctionExpressionContext)_localctx).left = _prevctx;
 62697            PushNewRecursionContext(_localctx, _startState, RULE_pureExpression);
 62698            State = 143;
 62699            if (!(Precpred(Context, 8))) throw new FailedPredicateException(this, "Precpred(Context, 8)");
 124700            State = 144; ((ConjunctionExpressionContext)_localctx).op = Match(AND);
 124701            State = 145; ((ConjunctionExpressionContext)_localctx).right = pureExpression(9);
 62702             ((ConjunctionExpressionContext)_localctx).res =  new BooleanExpression(((ConjunctionExpressionContext)_loca
 62703            }
 62704            break;
 705          case 5:
 4706            {
 4707            _localctx = new DisjunctionExpressionContext(new PureExpressionContext(_parentctx, _parentState));
 4708            ((DisjunctionExpressionContext)_localctx).left = _prevctx;
 4709            PushNewRecursionContext(_localctx, _startState, RULE_pureExpression);
 4710            State = 148;
 4711            if (!(Precpred(Context, 7))) throw new FailedPredicateException(this, "Precpred(Context, 7)");
 8712            State = 149; ((DisjunctionExpressionContext)_localctx).op = Match(OR);
 8713            State = 150; ((DisjunctionExpressionContext)_localctx).right = pureExpression(8);
 4714             ((DisjunctionExpressionContext)_localctx).res =  new BooleanExpression(((DisjunctionExpressionContext)_loca
 4715            }
 4716            break;
 717          }
 245718          }
 245719        }
 245720        State = 157;
 245721        ErrorHandler.Sync(this);
 245722        _alt = Interpreter.AdaptivePredict(TokenStream,6,Context);
 245723      }
 1062724      }
 1062725    }
 0726    catch (RecognitionException re) {
 0727      _localctx.exception = re;
 0728      ErrorHandler.ReportError(this, re);
 0729      ErrorHandler.Recover(this, re);
 0730    }
 1062731    finally {
 1062732      UnrollRecursionContexts(_parentctx);
 1062733    }
 1062734    return _localctx;
 1062735  }
 736
 737  public partial class SinglePureExpressionContext : ParserRuleContext {
 738    public PureExpression res;
 739    public PureExpressionContext entrypoint;
 0740    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode Eof() { return GetToken(NanoCParser.Eof, 0); }
 0741    [System.Diagnostics.DebuggerNonUserCode] public PureExpressionContext pureExpression() {
 0742      return GetRuleContext<PureExpressionContext>(0);
 0743    }
 744    public SinglePureExpressionContext(ParserRuleContext parent, int invokingState)
 25745      : base(parent, invokingState)
 25746    {
 25747    }
 0748    public override int RuleIndex { get { return RULE_singlePureExpression; } }
 749  }
 750
 751  [RuleVersion(0)]
 25752  public SinglePureExpressionContext singlePureExpression() {
 25753    SinglePureExpressionContext _localctx = new SinglePureExpressionContext(Context, State);
 25754    EnterRule(_localctx, 10, RULE_singlePureExpression);
 25755    try {
 25756      EnterOuterAlt(_localctx, 1);
 25757      {
 50758      State = 158; _localctx.entrypoint = pureExpression(0);
 50759      State = 159; Match(Eof);
 25760       _localctx.res =  _localctx.entrypoint.res;
 25761      }
 25762    }
 0763    catch (RecognitionException re) {
 0764      _localctx.exception = re;
 0765      ErrorHandler.ReportError(this, re);
 0766      ErrorHandler.Recover(this, re);
 0767    }
 25768    finally {
 25769      ExitRule();
 25770    }
 25771    return _localctx;
 25772  }
 773
 774  public partial class BasicTypeContext : ParserRuleContext {
 775    public BasicType res;
 776    public BasicTypeContext(ParserRuleContext parent, int invokingState)
 237777      : base(parent, invokingState)
 237778    {
 237779    }
 0780    public override int RuleIndex { get { return RULE_basicType; } }
 781
 711782    public BasicTypeContext() { }
 237783    public virtual void CopyFrom(BasicTypeContext context) {
 237784      base.CopyFrom(context);
 237785      this.res = context.res;
 237786    }
 787  }
 788  public partial class SinglebyteIntContext : BasicTypeContext {
 0789    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode CHAR() { return GetToken(NanoCParser.CHAR, 0); }
 0790    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode VOID() { return GetToken(NanoCParser.VOID, 0); }
 232791    public SinglebyteIntContext(BasicTypeContext context) { CopyFrom(context); }
 792  }
 793  public partial class FourbyteIntContext : BasicTypeContext {
 0794    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INT() { return GetToken(NanoCParser.INT, 0); }
 144795    public FourbyteIntContext(BasicTypeContext context) { CopyFrom(context); }
 796  }
 797  public partial class IntegerTypeContext : BasicTypeContext {
 798    public IToken size;
 799    public IndexContext typeIndex;
 0800    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode LBA() { return GetToken(NanoCParser.LBA, 0); }
 0801    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode RBA() { return GetToken(NanoCParser.RBA, 0); }
 0802    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INTEGER() { return GetToken(NanoCParser.INTEGER, 0); }
 0803    [System.Diagnostics.DebuggerNonUserCode] public IndexContext index() {
 0804      return GetRuleContext<IndexContext>(0);
 0805    }
 364806    public IntegerTypeContext(BasicTypeContext context) { CopyFrom(context); }
 807  }
 808  public partial class ReferenceTypeContext : BasicTypeContext {
 809    public LocationContext locationName;
 810    public IndexContext typeIndex;
 0811    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode REF() { return GetToken(NanoCParser.REF, 0); }
 0812    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode LB() { return GetToken(NanoCParser.LB, 0); }
 0813    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COMMA() { return GetToken(NanoCParser.COMMA, 0); }
 0814    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode RB() { return GetToken(NanoCParser.RB, 0); }
 0815    [System.Diagnostics.DebuggerNonUserCode] public LocationContext location() {
 0816      return GetRuleContext<LocationContext>(0);
 0817    }
 0818    [System.Diagnostics.DebuggerNonUserCode] public IndexContext index() {
 0819      return GetRuleContext<IndexContext>(0);
 0820    }
 208821    public ReferenceTypeContext(BasicTypeContext context) { CopyFrom(context); }
 822  }
 823
 824  [RuleVersion(0)]
 237825  public BasicTypeContext basicType() {
 237826    BasicTypeContext _localctx = new BasicTypeContext(Context, State);
 237827    EnterRule(_localctx, 12, RULE_basicType);
 237828    try {
 237829      State = 182;
 237830      ErrorHandler.Sync(this);
 237831      switch (TokenStream.LA(1)) {
 832      case INTEGER:
 91833        _localctx = new IntegerTypeContext(_localctx);
 91834        EnterOuterAlt(_localctx, 1);
 91835        {
 182836        State = 162; ((IntegerTypeContext)_localctx).size = Match(INTEGER);
 182837        State = 163; Match(LBA);
 182838        State = 164; ((IntegerTypeContext)_localctx).typeIndex = index();
 182839        State = 165; Match(RBA);
 91840         ((IntegerTypeContext)_localctx).res =  new IntegerType(int.Parse((((IntegerTypeContext)_localctx).size!=null?((
 91841        }
 91842        break;
 843      case REF:
 52844        _localctx = new ReferenceTypeContext(_localctx);
 52845        EnterOuterAlt(_localctx, 2);
 52846        {
 104847        State = 168; Match(REF);
 104848        State = 169; Match(LB);
 104849        State = 170; ((ReferenceTypeContext)_localctx).locationName = location();
 104850        State = 171; Match(COMMA);
 104851        State = 172; ((ReferenceTypeContext)_localctx).typeIndex = index();
 104852        State = 173; Match(RB);
 52853         ((ReferenceTypeContext)_localctx).res =  new ReferenceType(((ReferenceTypeContext)_localctx).locationName.res, 
 52854        }
 52855        break;
 856      case INT:
 36857        _localctx = new FourbyteIntContext(_localctx);
 36858        EnterOuterAlt(_localctx, 3);
 36859        {
 72860        State = 176; Match(INT);
 36861         ((FourbyteIntContext)_localctx).res =  new IntegerType(4);
 36862        }
 36863        break;
 864      case CHAR:
 44865        _localctx = new SinglebyteIntContext(_localctx);
 44866        EnterOuterAlt(_localctx, 4);
 44867        {
 88868        State = 178; Match(CHAR);
 44869         ((SinglebyteIntContext)_localctx).res =  new IntegerType(1);
 44870        }
 44871        break;
 872      case VOID:
 14873        _localctx = new SinglebyteIntContext(_localctx);
 14874        EnterOuterAlt(_localctx, 5);
 14875        {
 28876        State = 180; Match(VOID);
 14877         ((SinglebyteIntContext)_localctx).res =  IntegerType.Void;
 14878        }
 14879        break;
 880      default:
 0881        throw new NoViableAltException(this);
 882      }
 237883    }
 0884    catch (RecognitionException re) {
 0885      _localctx.exception = re;
 0886      ErrorHandler.ReportError(this, re);
 0887      ErrorHandler.Recover(this, re);
 0888    }
 237889    finally {
 237890      ExitRule();
 237891    }
 237892    return _localctx;
 237893  }
 894
 895  public partial class SingleBasicTypeContext : ParserRuleContext {
 896    public BasicType res;
 897    public BasicTypeContext entrypoint;
 0898    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode Eof() { return GetToken(NanoCParser.Eof, 0); }
 0899    [System.Diagnostics.DebuggerNonUserCode] public BasicTypeContext basicType() {
 0900      return GetRuleContext<BasicTypeContext>(0);
 0901    }
 902    public SingleBasicTypeContext(ParserRuleContext parent, int invokingState)
 5903      : base(parent, invokingState)
 5904    {
 5905    }
 0906    public override int RuleIndex { get { return RULE_singleBasicType; } }
 907  }
 908
 909  [RuleVersion(0)]
 5910  public SingleBasicTypeContext singleBasicType() {
 5911    SingleBasicTypeContext _localctx = new SingleBasicTypeContext(Context, State);
 5912    EnterRule(_localctx, 14, RULE_singleBasicType);
 5913    try {
 5914      EnterOuterAlt(_localctx, 1);
 5915      {
 10916      State = 184; _localctx.entrypoint = basicType();
 10917      State = 185; Match(Eof);
 5918       _localctx.res =  _localctx.entrypoint.res;
 5919      }
 5920    }
 0921    catch (RecognitionException re) {
 0922      _localctx.exception = re;
 0923      ErrorHandler.ReportError(this, re);
 0924      ErrorHandler.Recover(this, re);
 0925    }
 5926    finally {
 5927      ExitRule();
 5928    }
 5929    return _localctx;
 5930  }
 931
 932  public partial class RefinedTypeContext : ParserRuleContext {
 933    public Entities.Type res;
 934    public RefinedTypeContext(ParserRuleContext parent, int invokingState)
 232935      : base(parent, invokingState)
 232936    {
 232937    }
 0938    public override int RuleIndex { get { return RULE_refinedType; } }
 939
 696940    public RefinedTypeContext() { }
 232941    public virtual void CopyFrom(RefinedTypeContext context) {
 232942      base.CopyFrom(context);
 232943      this.res = context.res;
 232944    }
 945  }
 946  public partial class TriviallyRefinedTypeContext : RefinedTypeContext {
 947    public BasicTypeContext trivial;
 0948    [System.Diagnostics.DebuggerNonUserCode] public BasicTypeContext basicType() {
 0949      return GetRuleContext<BasicTypeContext>(0);
 0950    }
 404951    public TriviallyRefinedTypeContext(RefinedTypeContext context) { CopyFrom(context); }
 952  }
 953  public partial class RefinedBasicTypeContext : RefinedTypeContext {
 954    public IToken variable;
 955    public BasicTypeContext baseType;
 956    public PureExpressionContext refinement;
 0957    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode LBC() { return GetToken(NanoCParser.LBC, 0); }
 0958    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COLON() { return GetToken(NanoCParser.COLON, 0); }
 0959    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode PIPE() { return GetToken(NanoCParser.PIPE, 0); }
 0960    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode RBC() { return GetToken(NanoCParser.RBC, 0); }
 0961    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode IDENTIFIER() { return GetToken(NanoCParser.IDENTIFIER,
 0962    [System.Diagnostics.DebuggerNonUserCode] public BasicTypeContext basicType() {
 0963      return GetRuleContext<BasicTypeContext>(0);
 0964    }
 0965    [System.Diagnostics.DebuggerNonUserCode] public PureExpressionContext pureExpression() {
 0966      return GetRuleContext<PureExpressionContext>(0);
 0967    }
 524968    public RefinedBasicTypeContext(RefinedTypeContext context) { CopyFrom(context); }
 969  }
 970
 971  [RuleVersion(0)]
 232972  public RefinedTypeContext refinedType() {
 232973    RefinedTypeContext _localctx = new RefinedTypeContext(Context, State);
 232974    EnterRule(_localctx, 16, RULE_refinedType);
 232975    try {
 232976      State = 200;
 232977      ErrorHandler.Sync(this);
 232978      switch (TokenStream.LA(1)) {
 979      case LBC:
 131980        _localctx = new RefinedBasicTypeContext(_localctx);
 131981        EnterOuterAlt(_localctx, 1);
 131982        {
 262983        State = 188; Match(LBC);
 262984        State = 189; ((RefinedBasicTypeContext)_localctx).variable = Match(IDENTIFIER);
 262985        State = 190; Match(COLON);
 262986        State = 191; ((RefinedBasicTypeContext)_localctx).baseType = basicType();
 262987        State = 192; Match(PIPE);
 262988        State = 193; ((RefinedBasicTypeContext)_localctx).refinement = pureExpression(0);
 262989        State = 194; Match(RBC);
 131990         ((RefinedBasicTypeContext)_localctx).res =  new RefinedType((((RefinedBasicTypeContext)_localctx).variable!=nul
 131991        }
 131992        break;
 993      case INT:
 994      case CHAR:
 995      case VOID:
 996      case REF:
 997      case INTEGER:
 101998        _localctx = new TriviallyRefinedTypeContext(_localctx);
 101999        EnterOuterAlt(_localctx, 2);
 1011000        {
 2021001        State = 197; ((TriviallyRefinedTypeContext)_localctx).trivial = basicType();
 1011002         ((TriviallyRefinedTypeContext)_localctx).res =  ((TriviallyRefinedTypeContext)_localctx).trivial.res;
 1011003        }
 1011004        break;
 1005      default:
 01006        throw new NoViableAltException(this);
 1007      }
 2321008    }
 01009    catch (RecognitionException re) {
 01010      _localctx.exception = re;
 01011      ErrorHandler.ReportError(this, re);
 01012      ErrorHandler.Recover(this, re);
 01013    }
 2321014    finally {
 2321015      ExitRule();
 2321016    }
 2321017    return _localctx;
 2321018  }
 1019
 1020  public partial class SingleRefinedTypeContext : ParserRuleContext {
 1021    public RefinedType res;
 1022    public RefinedTypeContext entrypoint;
 01023    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode Eof() { return GetToken(NanoCParser.Eof, 0); }
 01024    [System.Diagnostics.DebuggerNonUserCode] public RefinedTypeContext refinedType() {
 01025      return GetRuleContext<RefinedTypeContext>(0);
 01026    }
 1027    public SingleRefinedTypeContext(ParserRuleContext parent, int invokingState)
 191028      : base(parent, invokingState)
 191029    {
 191030    }
 01031    public override int RuleIndex { get { return RULE_singleRefinedType; } }
 1032  }
 1033
 1034  [RuleVersion(0)]
 191035  public SingleRefinedTypeContext singleRefinedType() {
 191036    SingleRefinedTypeContext _localctx = new SingleRefinedTypeContext(Context, State);
 191037    EnterRule(_localctx, 18, RULE_singleRefinedType);
 191038    try {
 191039      EnterOuterAlt(_localctx, 1);
 191040      {
 381041      State = 202; _localctx.entrypoint = refinedType();
 381042      State = 203; Match(Eof);
 191043       _localctx.res =  _localctx.entrypoint.res as RefinedType;
 191044      }
 191045    }
 01046    catch (RecognitionException re) {
 01047      _localctx.exception = re;
 01048      ErrorHandler.ReportError(this, re);
 01049      ErrorHandler.Recover(this, re);
 01050    }
 191051    finally {
 191052      ExitRule();
 191053    }
 191054    return _localctx;
 191055  }
 1056
 1057  public partial class FunctionCallContext : ParserRuleContext {
 1058    public FunctionCallExpression res;
 1059    public IdentifierListContext locations;
 1060    public IToken name;
 1061    public PureExpressionContext _pureExpression;
 641062    public IList<PureExpressionContext> _a = new List<PureExpressionContext>();
 01063    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode LBA() { return GetToken(NanoCParser.LBA, 0); }
 01064    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode RBA() { return GetToken(NanoCParser.RBA, 0); }
 01065    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode LB() { return GetToken(NanoCParser.LB, 0); }
 01066    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode RB() { return GetToken(NanoCParser.RB, 0); }
 01067    [System.Diagnostics.DebuggerNonUserCode] public IdentifierListContext identifierList() {
 01068      return GetRuleContext<IdentifierListContext>(0);
 01069    }
 01070    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode IDENTIFIER() { return GetToken(NanoCParser.IDENTIFIER,
 01071    [System.Diagnostics.DebuggerNonUserCode] public PureExpressionContext[] pureExpression() {
 01072      return GetRuleContexts<PureExpressionContext>();
 01073    }
 01074    [System.Diagnostics.DebuggerNonUserCode] public PureExpressionContext pureExpression(int i) {
 01075      return GetRuleContext<PureExpressionContext>(i);
 01076    }
 01077    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] COMMA() { return GetTokens(NanoCParser.COMMA); }
 01078    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COMMA(int i) {
 01079      return GetToken(NanoCParser.COMMA, i);
 01080    }
 1081    public FunctionCallContext(ParserRuleContext parent, int invokingState)
 641082      : base(parent, invokingState)
 641083    {
 641084    }
 01085    public override int RuleIndex { get { return RULE_functionCall; } }
 1086  }
 1087
 1088  [RuleVersion(0)]
 641089  public FunctionCallContext functionCall() {
 641090    FunctionCallContext _localctx = new FunctionCallContext(Context, State);
 641091    EnterRule(_localctx, 20, RULE_functionCall);
 1092    int _la;
 641093    try {
 641094      EnterOuterAlt(_localctx, 1);
 641095      {
 1281096      State = 206; Match(LBA);
 1281097      State = 207; _localctx.locations = identifierList();
 1281098      State = 208; Match(RBA);
 1281099      State = 209; _localctx.name = Match(IDENTIFIER);
 1281100      State = 210; Match(LB);
 641101      State = 219;
 641102      ErrorHandler.Sync(this);
 641103      _la = TokenStream.LA(1);
 1081104      if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ASSERT) | (1L << RETURN) | (1L << AT) | (1L << LB) | (1L << ID
 441105        {
 881106        State = 211; _localctx._pureExpression = pureExpression(0);
 441107        _localctx._a.Add(_localctx._pureExpression);
 441108        State = 216;
 441109        ErrorHandler.Sync(this);
 441110        _la = TokenStream.LA(1);
 1401111        while (_la==COMMA) {
 481112          {
 481113          {
 961114          State = 212; Match(COMMA);
 961115          State = 213; _localctx._pureExpression = pureExpression(0);
 481116          _localctx._a.Add(_localctx._pureExpression);
 481117          }
 481118          }
 481119          State = 218;
 481120          ErrorHandler.Sync(this);
 481121          _la = TokenStream.LA(1);
 481122        }
 441123        }
 441124      }
 1125
 1281126      State = 221; Match(RB);
 1561127       _localctx.res =  new FunctionCallExpression((_localctx.name!=null?_localctx.name.Text:null), _localctx.locations.
 641128      }
 641129    }
 01130    catch (RecognitionException re) {
 01131      _localctx.exception = re;
 01132      ErrorHandler.ReportError(this, re);
 01133      ErrorHandler.Recover(this, re);
 01134    }
 641135    finally {
 641136      ExitRule();
 641137    }
 641138    return _localctx;
 641139  }
 1140
 1141  public partial class ExpressionContext : ParserRuleContext {
 1142    public Expression res;
 1143    public ExpressionContext(ParserRuleContext parent, int invokingState)
 3621144      : base(parent, invokingState)
 3621145    {
 3621146    }
 01147    public override int RuleIndex { get { return RULE_expression; } }
 1148
 10861149    public ExpressionContext() { }
 3621150    public virtual void CopyFrom(ExpressionContext context) {
 3621151      base.CopyFrom(context);
 3621152      this.res = context.res;
 3621153    }
 1154  }
 1155  public partial class LocationUnfoldContext : ExpressionContext {
 1156    public IToken name;
 1157    public IToken locationName;
 1158    public PureExpressionContext definition;
 1159    public ExpressionContext body;
 01160    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode LETU() { return GetToken(NanoCParser.LETU, 0); }
 01161    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ASSIGN() { return GetToken(NanoCParser.ASSIGN, 0); }
 01162    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode LBA() { return GetToken(NanoCParser.LBA, 0); }
 01163    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode UNFOLD() { return GetToken(NanoCParser.UNFOLD, 0); }
 01164    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode RBA() { return GetToken(NanoCParser.RBA, 0); }
 01165    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode IN() { return GetToken(NanoCParser.IN, 0); }
 01166    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] IDENTIFIER() { return GetTokens(NanoCParser.IDENTIFI
 01167    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode IDENTIFIER(int i) {
 01168      return GetToken(NanoCParser.IDENTIFIER, i);
 01169    }
 01170    [System.Diagnostics.DebuggerNonUserCode] public PureExpressionContext pureExpression() {
 01171      return GetRuleContext<PureExpressionContext>(0);
 01172    }
 01173    [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression() {
 01174      return GetRuleContext<ExpressionContext>(0);
 01175    }
 561176    public LocationUnfoldContext(ExpressionContext context) { CopyFrom(context); }
 1177  }
 1178  public partial class PointerReadContext : ExpressionContext {
 1179    public PureExpressionContext ptr;
 01180    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode DEREF() { return GetToken(NanoCParser.DEREF, 0); }
 01181    [System.Diagnostics.DebuggerNonUserCode] public PureExpressionContext pureExpression() {
 01182      return GetRuleContext<PureExpressionContext>(0);
 01183    }
 561184    public PointerReadContext(ExpressionContext context) { CopyFrom(context); }
 1185  }
 1186  public partial class AllocationContext : ExpressionContext {
 1187    public IToken locationName;
 1188    public PureExpressionContext size;
 01189    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode MALLOC() { return GetToken(NanoCParser.MALLOC, 0); }
 01190    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode LB() { return GetToken(NanoCParser.LB, 0); }
 01191    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COMMA() { return GetToken(NanoCParser.COMMA, 0); }
 01192    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode RB() { return GetToken(NanoCParser.RB, 0); }
 01193    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode IDENTIFIER() { return GetToken(NanoCParser.IDENTIFIER,
 01194    [System.Diagnostics.DebuggerNonUserCode] public PureExpressionContext pureExpression() {
 01195      return GetRuleContext<PureExpressionContext>(0);
 01196    }
 801197    public AllocationContext(ExpressionContext context) { CopyFrom(context); }
 1198  }
 1199  public partial class IfThenElseContext : ExpressionContext {
 1200    public PureExpressionContext condition;
 1201    public ExpressionContext bodyThen;
 1202    public ExpressionContext bodyElse;
 01203    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode IF() { return GetToken(NanoCParser.IF, 0); }
 01204    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode THEN() { return GetToken(NanoCParser.THEN, 0); }
 01205    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ELSE() { return GetToken(NanoCParser.ELSE, 0); }
 01206    [System.Diagnostics.DebuggerNonUserCode] public PureExpressionContext pureExpression() {
 01207      return GetRuleContext<PureExpressionContext>(0);
 01208    }
 01209    [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext[] expression() {
 01210      return GetRuleContexts<ExpressionContext>();
 01211    }
 01212    [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression(int i) {
 01213      return GetRuleContext<ExpressionContext>(i);
 01214    }
 521215    public IfThenElseContext(ExpressionContext context) { CopyFrom(context); }
 1216  }
 1217  public partial class BindingContext : ExpressionContext {
 1218    public IToken name;
 1219    public ExpressionContext definition;
 1220    public ExpressionContext body;
 01221    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode LET() { return GetToken(NanoCParser.LET, 0); }
 01222    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ASSIGN() { return GetToken(NanoCParser.ASSIGN, 0); }
 01223    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode IN() { return GetToken(NanoCParser.IN, 0); }
 01224    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode IDENTIFIER() { return GetToken(NanoCParser.IDENTIFIER,
 01225    [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext[] expression() {
 01226      return GetRuleContexts<ExpressionContext>();
 01227    }
 01228    [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression(int i) {
 01229      return GetRuleContext<ExpressionContext>(i);
 01230    }
 2081231    public BindingContext(ExpressionContext context) { CopyFrom(context); }
 1232  }
 1233  public partial class StructWriteContext : ExpressionContext {
 1234    public PureExpressionContext ptr;
 1235    public IToken member;
 1236    public PureExpressionContext value;
 01237    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ARROW() { return GetToken(NanoCParser.ARROW, 0); }
 01238    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ASSIGN() { return GetToken(NanoCParser.ASSIGN, 0); }
 01239    [System.Diagnostics.DebuggerNonUserCode] public PureExpressionContext[] pureExpression() {
 01240      return GetRuleContexts<PureExpressionContext>();
 01241    }
 01242    [System.Diagnostics.DebuggerNonUserCode] public PureExpressionContext pureExpression(int i) {
 01243      return GetRuleContext<PureExpressionContext>(i);
 01244    }
 01245    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode IDENTIFIER() { return GetToken(NanoCParser.IDENTIFIER,
 521246    public StructWriteContext(ExpressionContext context) { CopyFrom(context); }
 1247  }
 1248  public partial class PointerWriteContext : ExpressionContext {
 1249    public PureExpressionContext ptr;
 1250    public PureExpressionContext value;
 01251    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode DEREF() { return GetToken(NanoCParser.DEREF, 0); }
 01252    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ASSIGN() { return GetToken(NanoCParser.ASSIGN, 0); }
 01253    [System.Diagnostics.DebuggerNonUserCode] public PureExpressionContext[] pureExpression() {
 01254      return GetRuleContexts<PureExpressionContext>();
 01255    }
 01256    [System.Diagnostics.DebuggerNonUserCode] public PureExpressionContext pureExpression(int i) {
 01257      return GetRuleContext<PureExpressionContext>(i);
 01258    }
 641259    public PointerWriteContext(ExpressionContext context) { CopyFrom(context); }
 1260  }
 1261  public partial class ArrayWriteContext : ExpressionContext {
 1262    public PureExpressionContext ptr;
 1263    public PureExpressionContext offset;
 1264    public PureExpressionContext value;
 01265    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode LBA() { return GetToken(NanoCParser.LBA, 0); }
 01266    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode RBA() { return GetToken(NanoCParser.RBA, 0); }
 01267    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ASSIGN() { return GetToken(NanoCParser.ASSIGN, 0); }
 01268    [System.Diagnostics.DebuggerNonUserCode] public PureExpressionContext[] pureExpression() {
 01269      return GetRuleContexts<PureExpressionContext>();
 01270    }
 01271    [System.Diagnostics.DebuggerNonUserCode] public PureExpressionContext pureExpression(int i) {
 01272      return GetRuleContext<PureExpressionContext>(i);
 01273    }
 401274    public ArrayWriteContext(ExpressionContext context) { CopyFrom(context); }
 1275  }
 1276  public partial class PureExpAsExpContext : ExpressionContext {
 1277    public PureExpressionContext body;
 01278    [System.Diagnostics.DebuggerNonUserCode] public PureExpressionContext pureExpression() {
 01279      return GetRuleContext<PureExpressionContext>(0);
 01280    }
 2681281    public PureExpAsExpContext(ExpressionContext context) { CopyFrom(context); }
 1282  }
 1283  public partial class ConcatenationContext : ExpressionContext {
 1284    public ExpressionContext value;
 1285    public ExpressionContext body;
 01286    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode LET() { return GetToken(NanoCParser.LET, 0); }
 01287    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode IN() { return GetToken(NanoCParser.IN, 0); }
 01288    [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext[] expression() {
 01289      return GetRuleContexts<ExpressionContext>();
 01290    }
 01291    [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression(int i) {
 01292      return GetRuleContext<ExpressionContext>(i);
 01293    }
 2521294    public ConcatenationContext(ExpressionContext context) { CopyFrom(context); }
 1295  }
 1296  public partial class StructReadContext : ExpressionContext {
 1297    public PureExpressionContext ptr;
 1298    public IToken member;
 01299    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ARROW() { return GetToken(NanoCParser.ARROW, 0); }
 01300    [System.Diagnostics.DebuggerNonUserCode] public PureExpressionContext pureExpression() {
 01301      return GetRuleContext<PureExpressionContext>(0);
 01302    }
 01303    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode IDENTIFIER() { return GetToken(NanoCParser.IDENTIFIER,
 401304    public StructReadContext(ExpressionContext context) { CopyFrom(context); }
 1305  }
 1306  public partial class LocationFoldContext : ExpressionContext {
 1307    public IToken locationName;
 01308    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode LBA() { return GetToken(NanoCParser.LBA, 0); }
 01309    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode FOLD() { return GetToken(NanoCParser.FOLD, 0); }
 01310    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode RBA() { return GetToken(NanoCParser.RBA, 0); }
 01311    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode IDENTIFIER() { return GetToken(NanoCParser.IDENTIFIER,
 1281312    public LocationFoldContext(ExpressionContext context) { CopyFrom(context); }
 1313  }
 1314  public partial class FunctionCallExpressionContext : ExpressionContext {
 1315    public FunctionCallContext call;
 01316    [System.Diagnostics.DebuggerNonUserCode] public FunctionCallContext functionCall() {
 01317      return GetRuleContext<FunctionCallContext>(0);
 01318    }
 1281319    public FunctionCallExpressionContext(ExpressionContext context) { CopyFrom(context); }
 1320  }
 1321  public partial class ArrayReadContext : ExpressionContext {
 1322    public PureExpressionContext ptr;
 1323    public PureExpressionContext offset;
 01324    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode LBA() { return GetToken(NanoCParser.LBA, 0); }
 01325    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode RBA() { return GetToken(NanoCParser.RBA, 0); }
 01326    [System.Diagnostics.DebuggerNonUserCode] public PureExpressionContext[] pureExpression() {
 01327      return GetRuleContexts<PureExpressionContext>();
 01328    }
 01329    [System.Diagnostics.DebuggerNonUserCode] public PureExpressionContext pureExpression(int i) {
 01330      return GetRuleContext<PureExpressionContext>(i);
 01331    }
 241332    public ArrayReadContext(ExpressionContext context) { CopyFrom(context); }
 1333  }
 1334
 1335  [RuleVersion(0)]
 3621336  public ExpressionContext expression() {
 3621337    ExpressionContext _localctx = new ExpressionContext(Context, State);
 3621338    EnterRule(_localctx, 22, RULE_expression);
 3621339    try {
 3621340      State = 313;
 3621341      ErrorHandler.Sync(this);
 3621342      switch ( Interpreter.AdaptivePredict(TokenStream,11,Context) ) {
 1343      case 1:
 131344        _localctx = new IfThenElseContext(_localctx);
 131345        EnterOuterAlt(_localctx, 1);
 131346        {
 261347        State = 224; Match(IF);
 261348        State = 225; ((IfThenElseContext)_localctx).condition = pureExpression(0);
 261349        State = 226; Match(THEN);
 261350        State = 227; ((IfThenElseContext)_localctx).bodyThen = expression();
 261351        State = 228; Match(ELSE);
 261352        State = 229; ((IfThenElseContext)_localctx).bodyElse = expression();
 131353         ((IfThenElseContext)_localctx).res =  new TernaryExpression(((IfThenElseContext)_localctx).condition.res, ((IfT
 131354        }
 131355        break;
 1356      case 2:
 521357        _localctx = new BindingContext(_localctx);
 521358        EnterOuterAlt(_localctx, 2);
 521359        {
 1041360        State = 232; Match(LET);
 1041361        State = 233; ((BindingContext)_localctx).name = Match(IDENTIFIER);
 1041362        State = 234; Match(ASSIGN);
 1041363        State = 235; ((BindingContext)_localctx).definition = expression();
 1041364        State = 236; Match(IN);
 1041365        State = 237; ((BindingContext)_localctx).body = expression();
 521366         ((BindingContext)_localctx).res =  new BindingExpression((((BindingContext)_localctx).name!=null?((BindingConte
 521367        }
 521368        break;
 1369      case 3:
 631370        _localctx = new ConcatenationContext(_localctx);
 631371        EnterOuterAlt(_localctx, 3);
 631372        {
 1261373        State = 240; Match(LET);
 1261374        State = 241; ((ConcatenationContext)_localctx).value = expression();
 1261375        State = 242; Match(IN);
 1261376        State = 243; ((ConcatenationContext)_localctx).body = expression();
 631377         ((ConcatenationContext)_localctx).res =  new ConcatenationExpression(((ConcatenationContext)_localctx).value.re
 631378        }
 631379        break;
 1380      case 4:
 141381        _localctx = new LocationUnfoldContext(_localctx);
 141382        EnterOuterAlt(_localctx, 4);
 141383        {
 281384        State = 246; Match(LETU);
 281385        State = 247; ((LocationUnfoldContext)_localctx).name = Match(IDENTIFIER);
 281386        State = 248; Match(ASSIGN);
 281387        State = 249; Match(LBA);
 281388        State = 250; Match(UNFOLD);
 281389        State = 251; ((LocationUnfoldContext)_localctx).locationName = Match(IDENTIFIER);
 281390        State = 252; Match(RBA);
 281391        State = 253; ((LocationUnfoldContext)_localctx).definition = pureExpression(0);
 281392        State = 254; Match(IN);
 281393        State = 255; ((LocationUnfoldContext)_localctx).body = expression();
 141394         ((LocationUnfoldContext)_localctx).res =  new UnfoldExpression((((LocationUnfoldContext)_localctx).name!=null?(
 141395        }
 141396        break;
 1397      case 5:
 321398        _localctx = new LocationFoldContext(_localctx);
 321399        EnterOuterAlt(_localctx, 5);
 321400        {
 641401        State = 258; Match(LBA);
 641402        State = 259; Match(FOLD);
 641403        State = 260; ((LocationFoldContext)_localctx).locationName = Match(IDENTIFIER);
 641404        State = 261; Match(RBA);
 321405         ((LocationFoldContext)_localctx).res =  new FoldExpression((((LocationFoldContext)_localctx).locationName!=null
 321406        }
 321407        break;
 1408      case 6:
 161409        _localctx = new PointerWriteContext(_localctx);
 161410        EnterOuterAlt(_localctx, 6);
 161411        {
 321412        State = 263; Match(DEREF);
 321413        State = 264; ((PointerWriteContext)_localctx).ptr = pureExpression(0);
 321414        State = 265; Match(ASSIGN);
 321415        State = 266; ((PointerWriteContext)_localctx).value = pureExpression(0);
 161416         ((PointerWriteContext)_localctx).res =  new PointerWriteExpression(((PointerWriteContext)_localctx).ptr.res, ((
 161417        }
 161418        break;
 1419      case 7:
 141420        _localctx = new PointerReadContext(_localctx);
 141421        EnterOuterAlt(_localctx, 7);
 141422        {
 281423        State = 269; Match(DEREF);
 281424        State = 270; ((PointerReadContext)_localctx).ptr = pureExpression(0);
 141425         ((PointerReadContext)_localctx).res =  new PointerReadExpression(((PointerReadContext)_localctx).ptr.res);
 141426        }
 141427        break;
 1428      case 8:
 131429        _localctx = new StructWriteContext(_localctx);
 131430        EnterOuterAlt(_localctx, 8);
 131431        {
 261432        State = 273; ((StructWriteContext)_localctx).ptr = pureExpression(0);
 261433        State = 274; Match(ARROW);
 261434        State = 275; ((StructWriteContext)_localctx).member = Match(IDENTIFIER);
 261435        State = 276; Match(ASSIGN);
 261436        State = 277; ((StructWriteContext)_localctx).value = pureExpression(0);
 131437         ((StructWriteContext)_localctx).res =  new StructWriteExpression(((StructWriteContext)_localctx).ptr.res, (((St
 131438        }
 131439        break;
 1440      case 9:
 101441        _localctx = new StructReadContext(_localctx);
 101442        EnterOuterAlt(_localctx, 9);
 101443        {
 201444        State = 280; ((StructReadContext)_localctx).ptr = pureExpression(0);
 201445        State = 281; Match(ARROW);
 201446        State = 282; ((StructReadContext)_localctx).member = Match(IDENTIFIER);
 101447         ((StructReadContext)_localctx).res =  new StructReadExpression(((StructReadContext)_localctx).ptr.res, (((Struc
 101448        }
 101449        break;
 1450      case 10:
 101451        _localctx = new ArrayWriteContext(_localctx);
 101452        EnterOuterAlt(_localctx, 10);
 101453        {
 201454        State = 285; ((ArrayWriteContext)_localctx).ptr = pureExpression(0);
 201455        State = 286; Match(LBA);
 201456        State = 287; ((ArrayWriteContext)_localctx).offset = pureExpression(0);
 201457        State = 288; Match(RBA);
 201458        State = 289; Match(ASSIGN);
 201459        State = 290; ((ArrayWriteContext)_localctx).value = pureExpression(0);
 101460         ((ArrayWriteContext)_localctx).res =  new ArrayWriteExpression(((ArrayWriteContext)_localctx).ptr.res, ((ArrayW
 101461        }
 101462        break;
 1463      case 11:
 61464        _localctx = new ArrayReadContext(_localctx);
 61465        EnterOuterAlt(_localctx, 11);
 61466        {
 121467        State = 293; ((ArrayReadContext)_localctx).ptr = pureExpression(0);
 121468        State = 294; Match(LBA);
 121469        State = 295; ((ArrayReadContext)_localctx).offset = pureExpression(0);
 121470        State = 296; Match(RBA);
 61471         ((ArrayReadContext)_localctx).res =  new ArrayReadExpression(((ArrayReadContext)_localctx).ptr.res, ((ArrayRead
 61472        }
 61473        break;
 1474      case 12:
 201475        _localctx = new AllocationContext(_localctx);
 201476        EnterOuterAlt(_localctx, 12);
 201477        {
 401478        State = 299; Match(MALLOC);
 401479        State = 300; Match(LB);
 401480        State = 301; ((AllocationContext)_localctx).locationName = Match(IDENTIFIER);
 401481        State = 302; Match(COMMA);
 401482        State = 303; ((AllocationContext)_localctx).size = pureExpression(0);
 401483        State = 304; Match(RB);
 201484         ((AllocationContext)_localctx).res =  new AllocationExpression((((AllocationContext)_localctx).locationName!=nu
 201485        }
 201486        break;
 1487      case 13:
 321488        _localctx = new FunctionCallExpressionContext(_localctx);
 321489        EnterOuterAlt(_localctx, 13);
 321490        {
 641491        State = 307; ((FunctionCallExpressionContext)_localctx).call = functionCall();
 321492         ((FunctionCallExpressionContext)_localctx).res =  ((FunctionCallExpressionContext)_localctx).call.res;
 321493        }
 321494        break;
 1495      case 14:
 671496        _localctx = new PureExpAsExpContext(_localctx);
 671497        EnterOuterAlt(_localctx, 14);
 671498        {
 1341499        State = 310; ((PureExpAsExpContext)_localctx).body = pureExpression(0);
 671500         ((PureExpAsExpContext)_localctx).res =  ((PureExpAsExpContext)_localctx).body.res;
 671501        }
 671502        break;
 1503      }
 3621504    }
 01505    catch (RecognitionException re) {
 01506      _localctx.exception = re;
 01507      ErrorHandler.ReportError(this, re);
 01508      ErrorHandler.Recover(this, re);
 01509    }
 3621510    finally {
 3621511      ExitRule();
 3621512    }
 3621513    return _localctx;
 3621514  }
 1515
 1516  public partial class SingleExpressionContext : ParserRuleContext {
 1517    public Expression res;
 1518    public ExpressionContext entrypoint;
 01519    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode Eof() { return GetToken(NanoCParser.Eof, 0); }
 01520    [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression() {
 01521      return GetRuleContext<ExpressionContext>(0);
 01522    }
 1523    public SingleExpressionContext(ParserRuleContext parent, int invokingState)
 491524      : base(parent, invokingState)
 491525    {
 491526    }
 01527    public override int RuleIndex { get { return RULE_singleExpression; } }
 1528  }
 1529
 1530  [RuleVersion(0)]
 491531  public SingleExpressionContext singleExpression() {
 491532    SingleExpressionContext _localctx = new SingleExpressionContext(Context, State);
 491533    EnterRule(_localctx, 24, RULE_singleExpression);
 491534    try {
 491535      EnterOuterAlt(_localctx, 1);
 491536      {
 981537      State = 315; _localctx.entrypoint = expression();
 981538      State = 316; Match(Eof);
 491539       _localctx.res =  _localctx.entrypoint.res;
 491540      }
 491541    }
 01542    catch (RecognitionException re) {
 01543      _localctx.exception = re;
 01544      ErrorHandler.ReportError(this, re);
 01545      ErrorHandler.Recover(this, re);
 01546    }
 491547    finally {
 491548      ExitRule();
 491549    }
 491550    return _localctx;
 491551  }
 1552
 1553  public partial class BlockBindingContext : ParserRuleContext {
 1554    public BlockType res;
 1555    public IndexContext offset;
 1556    public RefinedTypeContext type;
 01557    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COLON() { return GetToken(NanoCParser.COLON, 0); }
 01558    [System.Diagnostics.DebuggerNonUserCode] public IndexContext index() {
 01559      return GetRuleContext<IndexContext>(0);
 01560    }
 01561    [System.Diagnostics.DebuggerNonUserCode] public RefinedTypeContext refinedType() {
 01562      return GetRuleContext<RefinedTypeContext>(0);
 01563    }
 1564    public BlockBindingContext(ParserRuleContext parent, int invokingState)
 1021565      : base(parent, invokingState)
 1021566    {
 1021567    }
 01568    public override int RuleIndex { get { return RULE_blockBinding; } }
 1569  }
 1570
 1571  [RuleVersion(0)]
 1021572  public BlockBindingContext blockBinding() {
 1021573    BlockBindingContext _localctx = new BlockBindingContext(Context, State);
 1021574    EnterRule(_localctx, 26, RULE_blockBinding);
 1021575    try {
 1021576      EnterOuterAlt(_localctx, 1);
 1021577      {
 2041578      State = 319; _localctx.offset = index();
 2041579      State = 320; Match(COLON);
 2041580      State = 321; _localctx.type = refinedType();
 1021581       _localctx.res =  new BlockType(_localctx.offset.res, _localctx.type.res);
 1021582      }
 1021583    }
 01584    catch (RecognitionException re) {
 01585      _localctx.exception = re;
 01586      ErrorHandler.ReportError(this, re);
 01587      ErrorHandler.Recover(this, re);
 01588    }
 1021589    finally {
 1021590      ExitRule();
 1021591    }
 1021592    return _localctx;
 1021593  }
 1594
 1595  public partial class BlockContext : ParserRuleContext {
 1596    public BlockType[] res;
 1597    public BlockBindingContext _blockBinding;
 791598    public IList<BlockBindingContext> _bindings = new List<BlockBindingContext>();
 01599    [System.Diagnostics.DebuggerNonUserCode] public BlockBindingContext[] blockBinding() {
 01600      return GetRuleContexts<BlockBindingContext>();
 01601    }
 01602    [System.Diagnostics.DebuggerNonUserCode] public BlockBindingContext blockBinding(int i) {
 01603      return GetRuleContext<BlockBindingContext>(i);
 01604    }
 01605    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] COMMA() { return GetTokens(NanoCParser.COMMA); }
 01606    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COMMA(int i) {
 01607      return GetToken(NanoCParser.COMMA, i);
 01608    }
 1609    public BlockContext(ParserRuleContext parent, int invokingState)
 791610      : base(parent, invokingState)
 791611    {
 791612    }
 01613    public override int RuleIndex { get { return RULE_block; } }
 1614  }
 1615
 1616  [RuleVersion(0)]
 791617  public BlockContext block() {
 791618    BlockContext _localctx = new BlockContext(Context, State);
 791619    EnterRule(_localctx, 28, RULE_block);
 1620    int _la;
 791621    try {
 791622      EnterOuterAlt(_localctx, 1);
 791623      {
 791624      State = 332;
 791625      ErrorHandler.Sync(this);
 791626      _la = TokenStream.LA(1);
 1581627      if (_la==ANY || _la==INTEGER) {
 791628        {
 1581629        State = 324; _localctx._blockBinding = blockBinding();
 791630        _localctx._bindings.Add(_localctx._blockBinding);
 791631        State = 329;
 791632        ErrorHandler.Sync(this);
 791633        _la = TokenStream.LA(1);
 971634        while (_la==COMMA) {
 91635          {
 91636          {
 181637          State = 325; Match(COMMA);
 181638          State = 326; _localctx._blockBinding = blockBinding();
 91639          _localctx._bindings.Add(_localctx._blockBinding);
 91640          }
 91641          }
 91642          State = 331;
 91643          ErrorHandler.Sync(this);
 91644          _la = TokenStream.LA(1);
 91645        }
 791646        }
 791647      }
 1648
 1671649       _localctx.res =  _localctx._bindings.Select(i => i.res).ToArray();
 791650      }
 791651    }
 01652    catch (RecognitionException re) {
 01653      _localctx.exception = re;
 01654      ErrorHandler.ReportError(this, re);
 01655      ErrorHandler.Recover(this, re);
 01656    }
 791657    finally {
 791658      ExitRule();
 791659    }
 791660    return _localctx;
 791661  }
 1662
 1663  public partial class SingleBlockContext : ParserRuleContext {
 1664    public BlockType[] res;
 1665    public BlockContext entrypoint;
 01666    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode Eof() { return GetToken(NanoCParser.Eof, 0); }
 01667    [System.Diagnostics.DebuggerNonUserCode] public BlockContext block() {
 01668      return GetRuleContext<BlockContext>(0);
 01669    }
 1670    public SingleBlockContext(ParserRuleContext parent, int invokingState)
 01671      : base(parent, invokingState)
 01672    {
 01673    }
 01674    public override int RuleIndex { get { return RULE_singleBlock; } }
 1675  }
 1676
 1677  [RuleVersion(0)]
 01678  public SingleBlockContext singleBlock() {
 01679    SingleBlockContext _localctx = new SingleBlockContext(Context, State);
 01680    EnterRule(_localctx, 30, RULE_singleBlock);
 01681    try {
 01682      EnterOuterAlt(_localctx, 1);
 01683      {
 01684      State = 336; _localctx.entrypoint = block();
 01685      State = 337; Match(Eof);
 01686       _localctx.res =  _localctx.entrypoint.res;
 01687      }
 01688    }
 01689    catch (RecognitionException re) {
 01690      _localctx.exception = re;
 01691      ErrorHandler.ReportError(this, re);
 01692      ErrorHandler.Recover(this, re);
 01693    }
 01694    finally {
 01695      ExitRule();
 01696    }
 01697    return _localctx;
 01698  }
 1699
 1700  public partial class LocationBindingContext : ParserRuleContext {
 1701    public LocationBinding res;
 1702    public LocationContext atLocation;
 1703    public BlockContext bound;
 01704    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode TARROW() { return GetToken(NanoCParser.TARROW, 0); }
 01705    [System.Diagnostics.DebuggerNonUserCode] public LocationContext location() {
 01706      return GetRuleContext<LocationContext>(0);
 01707    }
 01708    [System.Diagnostics.DebuggerNonUserCode] public BlockContext block() {
 01709      return GetRuleContext<BlockContext>(0);
 01710    }
 1711    public LocationBindingContext(ParserRuleContext parent, int invokingState)
 791712      : base(parent, invokingState)
 791713    {
 791714    }
 01715    public override int RuleIndex { get { return RULE_locationBinding; } }
 1716  }
 1717
 1718  [RuleVersion(0)]
 791719  public LocationBindingContext locationBinding() {
 791720    LocationBindingContext _localctx = new LocationBindingContext(Context, State);
 791721    EnterRule(_localctx, 32, RULE_locationBinding);
 791722    try {
 791723      EnterOuterAlt(_localctx, 1);
 791724      {
 1581725      State = 340; _localctx.atLocation = location();
 1581726      State = 341; Match(TARROW);
 1581727      State = 342; _localctx.bound = block();
 791728       _localctx.res =  new LocationBinding(_localctx.atLocation.res, _localctx.bound.res);
 791729      }
 791730    }
 01731    catch (RecognitionException re) {
 01732      _localctx.exception = re;
 01733      ErrorHandler.ReportError(this, re);
 01734      ErrorHandler.Recover(this, re);
 01735    }
 791736    finally {
 791737      ExitRule();
 791738    }
 791739    return _localctx;
 791740  }
 1741
 1742  public partial class HeapElementContext : ParserRuleContext {
 1743    public IHeapElement res;
 1744    public LocationBindingContext binding;
 1745    public FunctionCallContext structheap;
 01746    [System.Diagnostics.DebuggerNonUserCode] public LocationBindingContext locationBinding() {
 01747      return GetRuleContext<LocationBindingContext>(0);
 01748    }
 01749    [System.Diagnostics.DebuggerNonUserCode] public FunctionCallContext functionCall() {
 01750      return GetRuleContext<FunctionCallContext>(0);
 01751    }
 1752    public HeapElementContext(ParserRuleContext parent, int invokingState)
 1071753      : base(parent, invokingState)
 1071754    {
 1071755    }
 01756    public override int RuleIndex { get { return RULE_heapElement; } }
 1757  }
 1758
 1759  [RuleVersion(0)]
 1071760  public HeapElementContext heapElement() {
 1071761    HeapElementContext _localctx = new HeapElementContext(Context, State);
 1071762    EnterRule(_localctx, 34, RULE_heapElement);
 1071763    try {
 1071764      State = 351;
 1071765      ErrorHandler.Sync(this);
 1071766      switch (TokenStream.LA(1)) {
 1767      case TILDE:
 1768      case IDENTIFIER:
 791769        EnterOuterAlt(_localctx, 1);
 791770        {
 1581771        State = 345; _localctx.binding = locationBinding();
 791772         _localctx.res =  _localctx.binding.res;
 791773        }
 791774        break;
 1775      case LBA:
 281776        EnterOuterAlt(_localctx, 2);
 281777        {
 561778        State = 348; _localctx.structheap = functionCall();
 281779         _localctx.res =  _localctx.structheap.res;
 281780        }
 281781        break;
 1782      default:
 01783        throw new NoViableAltException(this);
 1784      }
 1071785    }
 01786    catch (RecognitionException re) {
 01787      _localctx.exception = re;
 01788      ErrorHandler.ReportError(this, re);
 01789      ErrorHandler.Recover(this, re);
 01790    }
 1071791    finally {
 1071792      ExitRule();
 1071793    }
 1071794    return _localctx;
 1071795  }
 1796
 1797  public partial class HeapContext : ParserRuleContext {
 1798    public IHeapElement[] res;
 1799    public HeapElementContext _heapElement;
 921800    public IList<HeapElementContext> _elems = new List<HeapElementContext>();
 01801    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode EMP() { return GetToken(NanoCParser.EMP, 0); }
 01802    [System.Diagnostics.DebuggerNonUserCode] public HeapElementContext[] heapElement() {
 01803      return GetRuleContexts<HeapElementContext>();
 01804    }
 01805    [System.Diagnostics.DebuggerNonUserCode] public HeapElementContext heapElement(int i) {
 01806      return GetRuleContext<HeapElementContext>(i);
 01807    }
 01808    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] DEREF() { return GetTokens(NanoCParser.DEREF); }
 01809    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode DEREF(int i) {
 01810      return GetToken(NanoCParser.DEREF, i);
 01811    }
 1812    public HeapContext(ParserRuleContext parent, int invokingState)
 921813      : base(parent, invokingState)
 921814    {
 921815    }
 01816    public override int RuleIndex { get { return RULE_heap; } }
 1817  }
 1818
 1819  [RuleVersion(0)]
 921820  public HeapContext heap() {
 921821    HeapContext _localctx = new HeapContext(Context, State);
 921822    EnterRule(_localctx, 36, RULE_heap);
 1823    int _la;
 921824    try {
 921825      State = 365;
 921826      ErrorHandler.Sync(this);
 921827      switch (TokenStream.LA(1)) {
 1828      case EMP:
 221829        EnterOuterAlt(_localctx, 1);
 221830        {
 441831        State = 353; Match(EMP);
 221832         _localctx.res =  new IHeapElement[] { };
 221833        }
 221834        break;
 1835      case LBA:
 1836      case TILDE:
 1837      case IDENTIFIER:
 701838        EnterOuterAlt(_localctx, 2);
 701839        {
 1401840        State = 355; _localctx._heapElement = heapElement();
 701841        _localctx._elems.Add(_localctx._heapElement);
 701842        State = 360;
 701843        ErrorHandler.Sync(this);
 701844        _la = TokenStream.LA(1);
 1441845        while (_la==DEREF) {
 371846          {
 371847          {
 741848          State = 356; Match(DEREF);
 741849          State = 357; _localctx._heapElement = heapElement();
 371850          _localctx._elems.Add(_localctx._heapElement);
 371851          }
 371852          }
 371853          State = 362;
 371854          ErrorHandler.Sync(this);
 371855          _la = TokenStream.LA(1);
 371856        }
 1771857         _localctx.res =  _localctx._elems.Select(i => i.res).ToArray();
 701858        }
 701859        break;
 1860      default:
 01861        throw new NoViableAltException(this);
 1862      }
 921863    }
 01864    catch (RecognitionException re) {
 01865      _localctx.exception = re;
 01866      ErrorHandler.ReportError(this, re);
 01867      ErrorHandler.Recover(this, re);
 01868    }
 921869    finally {
 921870      ExitRule();
 921871    }
 921872    return _localctx;
 921873  }
 1874
 1875  public partial class SingleHeapContext : ParserRuleContext {
 1876    public IHeapElement[] res;
 1877    public HeapContext entrypoint;
 01878    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode Eof() { return GetToken(NanoCParser.Eof, 0); }
 01879    [System.Diagnostics.DebuggerNonUserCode] public HeapContext heap() {
 01880      return GetRuleContext<HeapContext>(0);
 01881    }
 1882    public SingleHeapContext(ParserRuleContext parent, int invokingState)
 31883      : base(parent, invokingState)
 31884    {
 31885    }
 01886    public override int RuleIndex { get { return RULE_singleHeap; } }
 1887  }
 1888
 1889  [RuleVersion(0)]
 31890  public SingleHeapContext singleHeap() {
 31891    SingleHeapContext _localctx = new SingleHeapContext(Context, State);
 31892    EnterRule(_localctx, 38, RULE_singleHeap);
 31893    try {
 31894      EnterOuterAlt(_localctx, 1);
 31895      {
 61896      State = 367; _localctx.entrypoint = heap();
 61897      State = 368; Match(Eof);
 31898       _localctx.res =  _localctx.entrypoint.res;
 31899      }
 31900    }
 01901    catch (RecognitionException re) {
 01902      _localctx.exception = re;
 01903      ErrorHandler.ReportError(this, re);
 01904      ErrorHandler.Recover(this, re);
 01905    }
 31906    finally {
 31907      ExitRule();
 31908    }
 31909    return _localctx;
 31910  }
 1911
 1912  public partial class TypeArgContext : ParserRuleContext {
 1913    public TypeParameter res;
 1914    public IToken name;
 1915    public RefinedTypeContext type;
 01916    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COLON() { return GetToken(NanoCParser.COLON, 0); }
 01917    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode IDENTIFIER() { return GetToken(NanoCParser.IDENTIFIER,
 01918    [System.Diagnostics.DebuggerNonUserCode] public RefinedTypeContext refinedType() {
 01919      return GetRuleContext<RefinedTypeContext>(0);
 01920    }
 1921    public TypeArgContext(ParserRuleContext parent, int invokingState)
 681922      : base(parent, invokingState)
 681923    {
 681924    }
 01925    public override int RuleIndex { get { return RULE_typeArg; } }
 1926  }
 1927
 1928  [RuleVersion(0)]
 681929  public TypeArgContext typeArg() {
 681930    TypeArgContext _localctx = new TypeArgContext(Context, State);
 681931    EnterRule(_localctx, 40, RULE_typeArg);
 681932    try {
 681933      EnterOuterAlt(_localctx, 1);
 681934      {
 1361935      State = 371; _localctx.name = Match(IDENTIFIER);
 1361936      State = 372; Match(COLON);
 1361937      State = 373; _localctx.type = refinedType();
 681938       _localctx.res =  new TypeParameter((_localctx.name!=null?_localctx.name.Text:null), _localctx.type.res);
 681939      }
 681940    }
 01941    catch (RecognitionException re) {
 01942      _localctx.exception = re;
 01943      ErrorHandler.ReportError(this, re);
 01944      ErrorHandler.Recover(this, re);
 01945    }
 681946    finally {
 681947      ExitRule();
 681948    }
 681949    return _localctx;
 681950  }
 1951
 1952  public partial class TypeArgListContext : ParserRuleContext {
 1953    public TypeParameter[] res;
 1954    public TypeArgContext _typeArg;
 561955    public IList<TypeArgContext> _typeArgs = new List<TypeArgContext>();
 01956    [System.Diagnostics.DebuggerNonUserCode] public TypeArgContext[] typeArg() {
 01957      return GetRuleContexts<TypeArgContext>();
 01958    }
 01959    [System.Diagnostics.DebuggerNonUserCode] public TypeArgContext typeArg(int i) {
 01960      return GetRuleContext<TypeArgContext>(i);
 01961    }
 01962    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] COMMA() { return GetTokens(NanoCParser.COMMA); }
 01963    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COMMA(int i) {
 01964      return GetToken(NanoCParser.COMMA, i);
 01965    }
 1966    public TypeArgListContext(ParserRuleContext parent, int invokingState)
 561967      : base(parent, invokingState)
 561968    {
 561969    }
 01970    public override int RuleIndex { get { return RULE_typeArgList; } }
 1971  }
 1972
 1973  [RuleVersion(0)]
 561974  public TypeArgListContext typeArgList() {
 561975    TypeArgListContext _localctx = new TypeArgListContext(Context, State);
 561976    EnterRule(_localctx, 42, RULE_typeArgList);
 1977    int _la;
 561978    try {
 561979      EnterOuterAlt(_localctx, 1);
 561980      {
 561981      State = 384;
 561982      ErrorHandler.Sync(this);
 561983      _la = TokenStream.LA(1);
 891984      if (_la==IDENTIFIER) {
 331985        {
 661986        State = 376; _localctx._typeArg = typeArg();
 331987        _localctx._typeArgs.Add(_localctx._typeArg);
 331988        State = 381;
 331989        ErrorHandler.Sync(this);
 331990        _la = TokenStream.LA(1);
 1031991        while (_la==COMMA) {
 351992          {
 351993          {
 701994          State = 377; Match(COMMA);
 701995          State = 378; _localctx._typeArg = typeArg();
 351996          _localctx._typeArgs.Add(_localctx._typeArg);
 351997          }
 351998          }
 351999          State = 383;
 352000          ErrorHandler.Sync(this);
 352001          _la = TokenStream.LA(1);
 352002        }
 332003        }
 332004      }
 2005
 1242006       _localctx.res =  _localctx._typeArgs.Select(i => i.res).ToArray();
 562007      }
 562008    }
 02009    catch (RecognitionException re) {
 02010      _localctx.exception = re;
 02011      ErrorHandler.ReportError(this, re);
 02012      ErrorHandler.Recover(this, re);
 02013    }
 562014    finally {
 562015      ExitRule();
 562016    }
 562017    return _localctx;
 562018  }
 2019
 2020  public partial class WorldContext : ParserRuleContext {
 2021    public RawWorld res;
 2022    public RefinedTypeContext returnType;
 2023    public HeapContext outHeap;
 02024    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ARROW() { return GetToken(NanoCParser.ARROW, 0); }
 02025    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode SLASH() { return GetToken(NanoCParser.SLASH, 0); }
 02026    [System.Diagnostics.DebuggerNonUserCode] public RefinedTypeContext refinedType() {
 02027      return GetRuleContext<RefinedTypeContext>(0);
 02028    }
 02029    [System.Diagnostics.DebuggerNonUserCode] public HeapContext heap() {
 02030      return GetRuleContext<HeapContext>(0);
 02031    }
 2032    public WorldContext(ParserRuleContext parent, int invokingState)
 462033      : base(parent, invokingState)
 462034    {
 462035    }
 02036    public override int RuleIndex { get { return RULE_world; } }
 2037  }
 2038
 2039  [RuleVersion(0)]
 462040  public WorldContext world() {
 462041    WorldContext _localctx = new WorldContext(Context, State);
 462042    EnterRule(_localctx, 44, RULE_world);
 462043    try {
 462044      State = 395;
 462045      ErrorHandler.Sync(this);
 462046      switch (TokenStream.LA(1)) {
 2047      case ARROW:
 432048        EnterOuterAlt(_localctx, 1);
 432049        {
 862050        State = 388; Match(ARROW);
 862051        State = 389; _localctx.returnType = refinedType();
 862052        State = 390; Match(SLASH);
 862053        State = 391; _localctx.outHeap = heap();
 432054         _localctx.res =  new RawWorld(_localctx.returnType.res, _localctx.outHeap.res);
 432055        }
 432056        break;
 2057      case Eof:
 2058      case IN:
 32059        EnterOuterAlt(_localctx, 2);
 32060        {
 32061         _localctx.res =  null;
 32062        }
 32063        break;
 2064      default:
 02065        throw new NoViableAltException(this);
 2066      }
 462067    }
 02068    catch (RecognitionException re) {
 02069      _localctx.exception = re;
 02070      ErrorHandler.ReportError(this, re);
 02071      ErrorHandler.Recover(this, re);
 02072    }
 462073    finally {
 462074      ExitRule();
 462075    }
 462076    return _localctx;
 462077  }
 2078
 2079  public partial class IdentifierListContext : ParserRuleContext {
 2080    public string[] res;
 2081    public IToken _IDENTIFIER;
 1202082    public IList<IToken> _idents = new List<IToken>();
 02083    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] IDENTIFIER() { return GetTokens(NanoCParser.IDENTIFI
 02084    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode IDENTIFIER(int i) {
 02085      return GetToken(NanoCParser.IDENTIFIER, i);
 02086    }
 02087    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] COMMA() { return GetTokens(NanoCParser.COMMA); }
 02088    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COMMA(int i) {
 02089      return GetToken(NanoCParser.COMMA, i);
 02090    }
 2091    public IdentifierListContext(ParserRuleContext parent, int invokingState)
 1202092      : base(parent, invokingState)
 1202093    {
 1202094    }
 02095    public override int RuleIndex { get { return RULE_identifierList; } }
 2096  }
 2097
 2098  [RuleVersion(0)]
 1202099  public IdentifierListContext identifierList() {
 1202100    IdentifierListContext _localctx = new IdentifierListContext(Context, State);
 1202101    EnterRule(_localctx, 46, RULE_identifierList);
 2102    int _la;
 1202103    try {
 1202104      EnterOuterAlt(_localctx, 1);
 1202105      {
 1202106      State = 405;
 1202107      ErrorHandler.Sync(this);
 1202108      _la = TokenStream.LA(1);
 2252109      if (_la==IDENTIFIER) {
 1052110        {
 2102111        State = 397; _localctx._IDENTIFIER = Match(IDENTIFIER);
 1052112        _localctx._idents.Add(_localctx._IDENTIFIER);
 1052113        State = 402;
 1052114        ErrorHandler.Sync(this);
 1052115        _la = TokenStream.LA(1);
 1772116        while (_la==COMMA) {
 362117          {
 362118          {
 722119          State = 398; Match(COMMA);
 722120          State = 399; _localctx._IDENTIFIER = Match(IDENTIFIER);
 362121          _localctx._idents.Add(_localctx._IDENTIFIER);
 362122          }
 362123          }
 362124          State = 404;
 362125          ErrorHandler.Sync(this);
 362126          _la = TokenStream.LA(1);
 362127        }
 1052128        }
 1052129      }
 2130
 2612131       _localctx.res =  _localctx._idents.Select(i => i.Text).ToArray();
 1202132      }
 1202133    }
 02134    catch (RecognitionException re) {
 02135      _localctx.exception = re;
 02136      ErrorHandler.ReportError(this, re);
 02137      ErrorHandler.Recover(this, re);
 02138    }
 1202139    finally {
 1202140      ExitRule();
 1202141    }
 1202142    return _localctx;
 1202143  }
 2144
 2145  public partial class FunctionSchemaContext : ParserRuleContext {
 2146    public RawFunctionSchema res;
 2147    public IdentifierListContext locations;
 2148    public TypeArgListContext typeArgs;
 2149    public HeapContext inHeap;
 2150    public WorldContext type;
 02151    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode LBA() { return GetToken(NanoCParser.LBA, 0); }
 02152    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode RBA() { return GetToken(NanoCParser.RBA, 0); }
 02153    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode LB() { return GetToken(NanoCParser.LB, 0); }
 02154    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode RB() { return GetToken(NanoCParser.RB, 0); }
 02155    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode SLASH() { return GetToken(NanoCParser.SLASH, 0); }
 02156    [System.Diagnostics.DebuggerNonUserCode] public IdentifierListContext identifierList() {
 02157      return GetRuleContext<IdentifierListContext>(0);
 02158    }
 02159    [System.Diagnostics.DebuggerNonUserCode] public TypeArgListContext typeArgList() {
 02160      return GetRuleContext<TypeArgListContext>(0);
 02161    }
 02162    [System.Diagnostics.DebuggerNonUserCode] public HeapContext heap() {
 02163      return GetRuleContext<HeapContext>(0);
 02164    }
 02165    [System.Diagnostics.DebuggerNonUserCode] public WorldContext world() {
 02166      return GetRuleContext<WorldContext>(0);
 02167    }
 2168    public FunctionSchemaContext(ParserRuleContext parent, int invokingState)
 462169      : base(parent, invokingState)
 462170    {
 462171    }
 02172    public override int RuleIndex { get { return RULE_functionSchema; } }
 2173  }
 2174
 2175  [RuleVersion(0)]
 462176  public FunctionSchemaContext functionSchema() {
 462177    FunctionSchemaContext _localctx = new FunctionSchemaContext(Context, State);
 462178    EnterRule(_localctx, 48, RULE_functionSchema);
 462179    try {
 462180      EnterOuterAlt(_localctx, 1);
 462181      {
 922182      State = 409; Match(LBA);
 922183      State = 410; _localctx.locations = identifierList();
 922184      State = 411; Match(RBA);
 922185      State = 412; Match(LB);
 922186      State = 413; _localctx.typeArgs = typeArgList();
 922187      State = 414; Match(RB);
 922188      State = 415; Match(SLASH);
 922189      State = 416; _localctx.inHeap = heap();
 922190      State = 417; _localctx.type = world();
 462191       _localctx.res =  new RawFunctionSchema(_localctx.locations.res, _localctx.typeArgs.res, _localctx.inHeap.res, _lo
 462192      }
 462193    }
 02194    catch (RecognitionException re) {
 02195      _localctx.exception = re;
 02196      ErrorHandler.ReportError(this, re);
 02197      ErrorHandler.Recover(this, re);
 02198    }
 462199    finally {
 462200      ExitRule();
 462201    }
 462202    return _localctx;
 462203  }
 2204
 2205  public partial class SingleFunctionSchemaContext : ParserRuleContext {
 2206    public RawFunctionSchema res;
 2207    public FunctionSchemaContext entrypoint;
 02208    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode Eof() { return GetToken(NanoCParser.Eof, 0); }
 02209    [System.Diagnostics.DebuggerNonUserCode] public FunctionSchemaContext functionSchema() {
 02210      return GetRuleContext<FunctionSchemaContext>(0);
 02211    }
 2212    public SingleFunctionSchemaContext(ParserRuleContext parent, int invokingState)
 32213      : base(parent, invokingState)
 32214    {
 32215    }
 02216    public override int RuleIndex { get { return RULE_singleFunctionSchema; } }
 2217  }
 2218
 2219  [RuleVersion(0)]
 32220  public SingleFunctionSchemaContext singleFunctionSchema() {
 32221    SingleFunctionSchemaContext _localctx = new SingleFunctionSchemaContext(Context, State);
 32222    EnterRule(_localctx, 50, RULE_singleFunctionSchema);
 32223    try {
 32224      EnterOuterAlt(_localctx, 1);
 32225      {
 62226      State = 420; _localctx.entrypoint = functionSchema();
 62227      State = 421; Match(Eof);
 32228       _localctx.res =  _localctx.entrypoint.res;
 32229      }
 32230    }
 02231    catch (RecognitionException re) {
 02232      _localctx.exception = re;
 02233      ErrorHandler.ReportError(this, re);
 02234      ErrorHandler.Recover(this, re);
 02235    }
 32236    finally {
 32237      ExitRule();
 32238    }
 32239    return _localctx;
 32240  }
 2241
 2242  public partial class FunctionDefinitionContext : ParserRuleContext {
 2243    public FunctionDefinition res;
 2244    public IToken _IDENTIFIER;
 432245    public IList<IToken> _x = new List<IToken>();
 2246    public ExpressionContext body;
 2247    public FunctionSchemaContext schema;
 02248    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode FUN() { return GetToken(NanoCParser.FUN, 0); }
 02249    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode LB() { return GetToken(NanoCParser.LB, 0); }
 02250    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode RB() { return GetToken(NanoCParser.RB, 0); }
 02251    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode LBC() { return GetToken(NanoCParser.LBC, 0); }
 02252    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode RBC() { return GetToken(NanoCParser.RBC, 0); }
 02253    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COLON() { return GetToken(NanoCParser.COLON, 0); }
 02254    [System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression() {
 02255      return GetRuleContext<ExpressionContext>(0);
 02256    }
 02257    [System.Diagnostics.DebuggerNonUserCode] public FunctionSchemaContext functionSchema() {
 02258      return GetRuleContext<FunctionSchemaContext>(0);
 02259    }
 02260    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] IDENTIFIER() { return GetTokens(NanoCParser.IDENTIFI
 02261    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode IDENTIFIER(int i) {
 02262      return GetToken(NanoCParser.IDENTIFIER, i);
 02263    }
 02264    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] COMMA() { return GetTokens(NanoCParser.COMMA); }
 02265    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COMMA(int i) {
 02266      return GetToken(NanoCParser.COMMA, i);
 02267    }
 2268    public FunctionDefinitionContext(ParserRuleContext parent, int invokingState)
 432269      : base(parent, invokingState)
 432270    {
 432271    }
 02272    public override int RuleIndex { get { return RULE_functionDefinition; } }
 2273  }
 2274
 2275  [RuleVersion(0)]
 432276  public FunctionDefinitionContext functionDefinition() {
 432277    FunctionDefinitionContext _localctx = new FunctionDefinitionContext(Context, State);
 432278    EnterRule(_localctx, 52, RULE_functionDefinition);
 2279    int _la;
 432280    try {
 432281      EnterOuterAlt(_localctx, 1);
 432282      {
 862283      State = 424; Match(FUN);
 862284      State = 425; Match(LB);
 432285      State = 434;
 432286      ErrorHandler.Sync(this);
 432287      _la = TokenStream.LA(1);
 692288      if (_la==IDENTIFIER) {
 262289        {
 522290        State = 426; _localctx._IDENTIFIER = Match(IDENTIFIER);
 262291        _localctx._x.Add(_localctx._IDENTIFIER);
 262292        State = 431;
 262293        ErrorHandler.Sync(this);
 262294        _la = TokenStream.LA(1);
 782295        while (_la==COMMA) {
 262296          {
 262297          {
 522298          State = 427; Match(COMMA);
 522299          State = 428; _localctx._IDENTIFIER = Match(IDENTIFIER);
 262300          _localctx._x.Add(_localctx._IDENTIFIER);
 262301          }
 262302          }
 262303          State = 433;
 262304          ErrorHandler.Sync(this);
 262305          _la = TokenStream.LA(1);
 262306        }
 262307        }
 262308      }
 2309
 862310      State = 436; Match(RB);
 862311      State = 437; Match(LBC);
 862312      State = 438; _localctx.body = expression();
 862313      State = 439; Match(RBC);
 862314      State = 440; Match(COLON);
 862315      State = 441; _localctx.schema = functionSchema();
 432316       _localctx.res =  new FunctionDefinition(_localctx.body.res, _localctx.schema.res);
 432317      }
 432318    }
 02319    catch (RecognitionException re) {
 02320      _localctx.exception = re;
 02321      ErrorHandler.ReportError(this, re);
 02322      ErrorHandler.Recover(this, re);
 02323    }
 432324    finally {
 432325      ExitRule();
 432326    }
 432327    return _localctx;
 432328  }
 2329
 2330  public partial class SingleFunctionDefinitionContext : ParserRuleContext {
 2331    public FunctionDefinition res;
 2332    public FunctionDefinitionContext entrypoint;
 02333    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode Eof() { return GetToken(NanoCParser.Eof, 0); }
 02334    [System.Diagnostics.DebuggerNonUserCode] public FunctionDefinitionContext functionDefinition() {
 02335      return GetRuleContext<FunctionDefinitionContext>(0);
 02336    }
 2337    public SingleFunctionDefinitionContext(ParserRuleContext parent, int invokingState)
 02338      : base(parent, invokingState)
 02339    {
 02340    }
 02341    public override int RuleIndex { get { return RULE_singleFunctionDefinition; } }
 2342  }
 2343
 2344  [RuleVersion(0)]
 02345  public SingleFunctionDefinitionContext singleFunctionDefinition() {
 02346    SingleFunctionDefinitionContext _localctx = new SingleFunctionDefinitionContext(Context, State);
 02347    EnterRule(_localctx, 54, RULE_singleFunctionDefinition);
 02348    try {
 02349      EnterOuterAlt(_localctx, 1);
 02350      {
 02351      State = 444; _localctx.entrypoint = functionDefinition();
 02352      State = 445; Match(Eof);
 02353       _localctx.res =  _localctx.entrypoint.res;
 02354      }
 02355    }
 02356    catch (RecognitionException re) {
 02357      _localctx.exception = re;
 02358      ErrorHandler.ReportError(this, re);
 02359      ErrorHandler.Recover(this, re);
 02360    }
 02361    finally {
 02362      ExitRule();
 02363    }
 02364    return _localctx;
 02365  }
 2366
 2367  public partial class StructFieldContext : ParserRuleContext {
 2368    public StructField res;
 2369    public IToken name;
 2370    public BlockBindingContext fieldtype;
 02371    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ASSIGN() { return GetToken(NanoCParser.ASSIGN, 0); }
 02372    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode IDENTIFIER() { return GetToken(NanoCParser.IDENTIFIER,
 02373    [System.Diagnostics.DebuggerNonUserCode] public BlockBindingContext blockBinding() {
 02374      return GetRuleContext<BlockBindingContext>(0);
 02375    }
 2376    public StructFieldContext(ParserRuleContext parent, int invokingState)
 142377      : base(parent, invokingState)
 142378    {
 142379    }
 02380    public override int RuleIndex { get { return RULE_structField; } }
 2381  }
 2382
 2383  [RuleVersion(0)]
 142384  public StructFieldContext structField() {
 142385    StructFieldContext _localctx = new StructFieldContext(Context, State);
 142386    EnterRule(_localctx, 56, RULE_structField);
 142387    try {
 142388      EnterOuterAlt(_localctx, 1);
 142389      {
 282390      State = 448; _localctx.name = Match(IDENTIFIER);
 282391      State = 449; Match(ASSIGN);
 282392      State = 450; _localctx.fieldtype = blockBinding();
 142393       _localctx.res =  new StructField((_localctx.name!=null?_localctx.name.Text:null), _localctx.fieldtype.res);
 142394      }
 142395    }
 02396    catch (RecognitionException re) {
 02397      _localctx.exception = re;
 02398      ErrorHandler.ReportError(this, re);
 02399      ErrorHandler.Recover(this, re);
 02400    }
 142401    finally {
 142402      ExitRule();
 142403    }
 142404    return _localctx;
 142405  }
 2406
 2407  public partial class StructDefinitionContext : ParserRuleContext {
 2408    public StructDefinition res;
 2409    public TypeArgListContext typeArgs;
 2410    public FunctionCallContext _functionCall;
 102411    public IList<FunctionCallContext> _depends = new List<FunctionCallContext>();
 2412    public StructFieldContext _structField;
 102413    public IList<StructFieldContext> _fields = new List<StructFieldContext>();
 2414    public IdentifierListContext locations;
 02415    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode STRUCT() { return GetToken(NanoCParser.STRUCT, 0); }
 02416    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode LB() { return GetToken(NanoCParser.LB, 0); }
 02417    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode RB() { return GetToken(NanoCParser.RB, 0); }
 02418    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode LBC() { return GetToken(NanoCParser.LBC, 0); }
 02419    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode RBC() { return GetToken(NanoCParser.RBC, 0); }
 02420    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] COLON() { return GetTokens(NanoCParser.COLON); }
 02421    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COLON(int i) {
 02422      return GetToken(NanoCParser.COLON, i);
 02423    }
 02424    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode LBA() { return GetToken(NanoCParser.LBA, 0); }
 02425    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode RBA() { return GetToken(NanoCParser.RBA, 0); }
 02426    [System.Diagnostics.DebuggerNonUserCode] public TypeArgListContext typeArgList() {
 02427      return GetRuleContext<TypeArgListContext>(0);
 02428    }
 02429    [System.Diagnostics.DebuggerNonUserCode] public IdentifierListContext identifierList() {
 02430      return GetRuleContext<IdentifierListContext>(0);
 02431    }
 02432    [System.Diagnostics.DebuggerNonUserCode] public FunctionCallContext[] functionCall() {
 02433      return GetRuleContexts<FunctionCallContext>();
 02434    }
 02435    [System.Diagnostics.DebuggerNonUserCode] public FunctionCallContext functionCall(int i) {
 02436      return GetRuleContext<FunctionCallContext>(i);
 02437    }
 02438    [System.Diagnostics.DebuggerNonUserCode] public StructFieldContext[] structField() {
 02439      return GetRuleContexts<StructFieldContext>();
 02440    }
 02441    [System.Diagnostics.DebuggerNonUserCode] public StructFieldContext structField(int i) {
 02442      return GetRuleContext<StructFieldContext>(i);
 02443    }
 02444    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] COMMA() { return GetTokens(NanoCParser.COMMA); }
 02445    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COMMA(int i) {
 02446      return GetToken(NanoCParser.COMMA, i);
 02447    }
 2448    public StructDefinitionContext(ParserRuleContext parent, int invokingState)
 102449      : base(parent, invokingState)
 102450    {
 102451    }
 02452    public override int RuleIndex { get { return RULE_structDefinition; } }
 2453  }
 2454
 2455  [RuleVersion(0)]
 102456  public StructDefinitionContext structDefinition() {
 102457    StructDefinitionContext _localctx = new StructDefinitionContext(Context, State);
 102458    EnterRule(_localctx, 58, RULE_structDefinition);
 2459    int _la;
 102460    try {
 102461      EnterOuterAlt(_localctx, 1);
 102462      {
 202463      State = 453; Match(STRUCT);
 202464      State = 454; Match(LB);
 202465      State = 455; _localctx.typeArgs = typeArgList();
 202466      State = 456; Match(RB);
 102467      State = 466;
 102468      ErrorHandler.Sync(this);
 102469      _la = TokenStream.LA(1);
 142470      if (_la==COLON) {
 42471        {
 82472        State = 457; Match(COLON);
 82473        State = 458; _localctx._functionCall = functionCall();
 42474        _localctx._depends.Add(_localctx._functionCall);
 42475        State = 463;
 42476        ErrorHandler.Sync(this);
 42477        _la = TokenStream.LA(1);
 42478        while (_la==COMMA) {
 02479          {
 02480          {
 02481          State = 459; Match(COMMA);
 02482          State = 460; _localctx._functionCall = functionCall();
 02483          _localctx._depends.Add(_localctx._functionCall);
 02484          }
 02485          }
 02486          State = 465;
 02487          ErrorHandler.Sync(this);
 02488          _la = TokenStream.LA(1);
 02489        }
 42490        }
 42491      }
 2492
 202493      State = 468; Match(LBC);
 102494      State = 470;
 102495      ErrorHandler.Sync(this);
 102496      _la = TokenStream.LA(1);
 142497      do {
 142498        {
 142499        {
 282500        State = 469; _localctx._structField = structField();
 142501        _localctx._fields.Add(_localctx._structField);
 142502        }
 142503        }
 142504        State = 472;
 142505        ErrorHandler.Sync(this);
 142506        _la = TokenStream.LA(1);
 282507      } while ( _la==IDENTIFIER );
 202508      State = 474; Match(RBC);
 202509      State = 475; Match(COLON);
 202510      State = 476; Match(LBA);
 202511      State = 477; _localctx.locations = identifierList();
 202512      State = 478; Match(RBA);
 282513       _localctx.res =  new StructDefinition(_localctx.locations.res, _localctx.typeArgs.res, _localctx._depends.Select(
 102514      }
 102515    }
 02516    catch (RecognitionException re) {
 02517      _localctx.exception = re;
 02518      ErrorHandler.ReportError(this, re);
 02519      ErrorHandler.Recover(this, re);
 02520    }
 102521    finally {
 102522      ExitRule();
 102523    }
 102524    return _localctx;
 102525  }
 2526
 2527  public partial class ProgramContext : ParserRuleContext {
 2528    public Program res;
 2529    public ProgramContext(ParserRuleContext parent, int invokingState)
 722530      : base(parent, invokingState)
 722531    {
 722532    }
 02533    public override int RuleIndex { get { return RULE_program; } }
 2534
 2162535    public ProgramContext() { }
 722536    public virtual void CopyFrom(ProgramContext context) {
 722537      base.CopyFrom(context);
 722538      this.res = context.res;
 722539    }
 2540  }
 2541  public partial class MainCallContext : ProgramContext {
 2542    public IToken name;
 02543    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode LB() { return GetToken(NanoCParser.LB, 0); }
 02544    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode RB() { return GetToken(NanoCParser.RB, 0); }
 02545    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode IDENTIFIER() { return GetToken(NanoCParser.IDENTIFIER,
 762546    public MainCallContext(ProgramContext context) { CopyFrom(context); }
 2547  }
 2548  public partial class FunctionBindingContext : ProgramContext {
 2549    public IToken name;
 2550    public FunctionDefinitionContext definition;
 2551    public ProgramContext body;
 02552    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode LETF() { return GetToken(NanoCParser.LETF, 0); }
 02553    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ASSIGN() { return GetToken(NanoCParser.ASSIGN, 0); }
 02554    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode IN() { return GetToken(NanoCParser.IN, 0); }
 02555    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode IDENTIFIER() { return GetToken(NanoCParser.IDENTIFIER,
 02556    [System.Diagnostics.DebuggerNonUserCode] public FunctionDefinitionContext functionDefinition() {
 02557      return GetRuleContext<FunctionDefinitionContext>(0);
 02558    }
 02559    [System.Diagnostics.DebuggerNonUserCode] public ProgramContext program() {
 02560      return GetRuleContext<ProgramContext>(0);
 02561    }
 1722562    public FunctionBindingContext(ProgramContext context) { CopyFrom(context); }
 2563  }
 2564  public partial class StructBindingContext : ProgramContext {
 2565    public IToken name;
 2566    public StructDefinitionContext definition;
 2567    public ProgramContext body;
 02568    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode LETS() { return GetToken(NanoCParser.LETS, 0); }
 02569    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ASSIGN() { return GetToken(NanoCParser.ASSIGN, 0); }
 02570    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode IN() { return GetToken(NanoCParser.IN, 0); }
 02571    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode IDENTIFIER() { return GetToken(NanoCParser.IDENTIFIER,
 02572    [System.Diagnostics.DebuggerNonUserCode] public StructDefinitionContext structDefinition() {
 02573      return GetRuleContext<StructDefinitionContext>(0);
 02574    }
 02575    [System.Diagnostics.DebuggerNonUserCode] public ProgramContext program() {
 02576      return GetRuleContext<ProgramContext>(0);
 02577    }
 402578    public StructBindingContext(ProgramContext context) { CopyFrom(context); }
 2579  }
 2580
 2581  [RuleVersion(0)]
 722582  public ProgramContext program() {
 722583    ProgramContext _localctx = new ProgramContext(Context, State);
 722584    EnterRule(_localctx, 60, RULE_program);
 722585    try {
 722586      State = 501;
 722587      ErrorHandler.Sync(this);
 722588      switch (TokenStream.LA(1)) {
 2589      case LETF:
 432590        _localctx = new FunctionBindingContext(_localctx);
 432591        EnterOuterAlt(_localctx, 1);
 432592        {
 862593        State = 481; Match(LETF);
 862594        State = 482; ((FunctionBindingContext)_localctx).name = Match(IDENTIFIER);
 862595        State = 483; Match(ASSIGN);
 862596        State = 484; ((FunctionBindingContext)_localctx).definition = functionDefinition();
 862597        State = 485; Match(IN);
 862598        State = 486; ((FunctionBindingContext)_localctx).body = program();
 432599         ((FunctionBindingContext)_localctx).res =  new FunctionBinding((((FunctionBindingContext)_localctx).name!=null?
 432600        }
 432601        break;
 2602      case LETS:
 102603        _localctx = new StructBindingContext(_localctx);
 102604        EnterOuterAlt(_localctx, 2);
 102605        {
 202606        State = 489; Match(LETS);
 202607        State = 490; ((StructBindingContext)_localctx).name = Match(IDENTIFIER);
 202608        State = 491; Match(ASSIGN);
 202609        State = 492; ((StructBindingContext)_localctx).definition = structDefinition();
 202610        State = 493; Match(IN);
 202611        State = 494; ((StructBindingContext)_localctx).body = program();
 102612         ((StructBindingContext)_localctx).res =  new StructBinding((((StructBindingContext)_localctx).name!=null?((Stru
 102613        }
 102614        break;
 2615      case IDENTIFIER:
 192616        _localctx = new MainCallContext(_localctx);
 192617        EnterOuterAlt(_localctx, 3);
 192618        {
 382619        State = 497; ((MainCallContext)_localctx).name = Match(IDENTIFIER);
 382620        State = 498; Match(LB);
 382621        State = 499; Match(RB);
 192622         ((MainCallContext)_localctx).res =  new MainCall((((MainCallContext)_localctx).name!=null?((MainCallContext)_lo
 192623        }
 192624        break;
 2625      default:
 02626        throw new NoViableAltException(this);
 2627      }
 722628    }
 02629    catch (RecognitionException re) {
 02630      _localctx.exception = re;
 02631      ErrorHandler.ReportError(this, re);
 02632      ErrorHandler.Recover(this, re);
 02633    }
 722634    finally {
 722635      ExitRule();
 722636    }
 722637    return _localctx;
 722638  }
 2639
 2640  public partial class SingleProgramContext : ParserRuleContext {
 2641    public Program res;
 2642    public ProgramContext entrypoint;
 02643    [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode Eof() { return GetToken(NanoCParser.Eof, 0); }
 02644    [System.Diagnostics.DebuggerNonUserCode] public ProgramContext program() {
 02645      return GetRuleContext<ProgramContext>(0);
 02646    }
 2647    public SingleProgramContext(ParserRuleContext parent, int invokingState)
 192648      : base(parent, invokingState)
 192649    {
 192650    }
 02651    public override int RuleIndex { get { return RULE_singleProgram; } }
 2652  }
 2653
 2654  [RuleVersion(0)]
 192655  public SingleProgramContext singleProgram() {
 192656    SingleProgramContext _localctx = new SingleProgramContext(Context, State);
 192657    EnterRule(_localctx, 62, RULE_singleProgram);
 192658    try {
 192659      EnterOuterAlt(_localctx, 1);
 192660      {
 382661      State = 503; _localctx.entrypoint = program();
 382662      State = 504; Match(Eof);
 192663       _localctx.res =  _localctx.entrypoint.res;
 192664      }
 192665    }
 02666    catch (RecognitionException re) {
 02667      _localctx.exception = re;
 02668      ErrorHandler.ReportError(this, re);
 02669      ErrorHandler.Recover(this, re);
 02670    }
 192671    finally {
 192672      ExitRule();
 192673    }
 192674    return _localctx;
 192675  }
 2676
 02677  public override bool Sempred(RuleContext _localctx, int ruleIndex, int predIndex) {
 02678    switch (ruleIndex) {
 02679    case 4: return pureExpression_sempred((PureExpressionContext)_localctx, predIndex);
 2680    }
 02681    return true;
 02682  }
 02683  private bool pureExpression_sempred(PureExpressionContext _localctx, int predIndex) {
 02684    switch (predIndex) {
 02685    case 0: return Precpred(Context, 12);
 02686    case 1: return Precpred(Context, 10);
 02687    case 2: return Precpred(Context, 9);
 02688    case 3: return Precpred(Context, 8);
 02689    case 4: return Precpred(Context, 7);
 2690    }
 02691    return true;
 02692  }
 2693
 12694  private static char[] _serializedATN = {
 12695    '\x3', '\x608B', '\xA72A', '\x8133', '\xB9ED', '\x417C', '\x3BE7', '\x7786',
 12696    '\x5964', '\x3', '\x38', '\x1FE', '\x4', '\x2', '\t', '\x2', '\x4', '\x3',
 12697    '\t', '\x3', '\x4', '\x4', '\t', '\x4', '\x4', '\x5', '\t', '\x5', '\x4',
 12698    '\x6', '\t', '\x6', '\x4', '\a', '\t', '\a', '\x4', '\b', '\t', '\b',
 12699    '\x4', '\t', '\t', '\t', '\x4', '\n', '\t', '\n', '\x4', '\v', '\t', '\v',
 12700    '\x4', '\f', '\t', '\f', '\x4', '\r', '\t', '\r', '\x4', '\xE', '\t',
 12701    '\xE', '\x4', '\xF', '\t', '\xF', '\x4', '\x10', '\t', '\x10', '\x4',
 12702    '\x11', '\t', '\x11', '\x4', '\x12', '\t', '\x12', '\x4', '\x13', '\t',
 12703    '\x13', '\x4', '\x14', '\t', '\x14', '\x4', '\x15', '\t', '\x15', '\x4',
 12704    '\x16', '\t', '\x16', '\x4', '\x17', '\t', '\x17', '\x4', '\x18', '\t',
 12705    '\x18', '\x4', '\x19', '\t', '\x19', '\x4', '\x1A', '\t', '\x1A', '\x4',
 12706    '\x1B', '\t', '\x1B', '\x4', '\x1C', '\t', '\x1C', '\x4', '\x1D', '\t',
 12707    '\x1D', '\x4', '\x1E', '\t', '\x1E', '\x4', '\x1F', '\t', '\x1F', '\x4',
 12708    ' ', '\t', ' ', '\x4', '!', '\t', '!', '\x3', '\x2', '\x3', '\x2', '\x3',
 12709    '\x2', '\x3', '\x2', '\x3', '\x2', '\x5', '\x2', 'H', '\n', '\x2', '\x3',
 12710    '\x3', '\x3', '\x3', '\x3', '\x3', '\x3', '\x3', '\x3', '\x4', '\x3',
 12711    '\x4', '\x3', '\x4', '\x3', '\x4', '\x3', '\x4', '\x3', '\x4', '\x3',
 12712    '\x4', '\x3', '\x4', '\x5', '\x4', 'V', '\n', '\x4', '\x3', '\x5', '\x3',
 12713    '\x5', '\x3', '\x5', '\x3', '\x5', '\x3', '\x6', '\x3', '\x6', '\x3',
 12714    '\x6', '\x3', '\x6', '\x3', '\x6', '\x3', '\x6', '\x3', '\x6', '\x3',
 12715    '\x6', '\x3', '\x6', '\x3', '\x6', '\x3', '\x6', '\x3', '\x6', '\x3',
 12716    '\x6', '\x3', '\x6', '\x3', '\x6', '\x3', '\x6', '\x3', '\x6', '\x3',
 12717    '\x6', '\x3', '\x6', '\x3', '\x6', '\x3', '\x6', '\x3', '\x6', '\a', '\x6',
 12718    'r', '\n', '\x6', '\f', '\x6', '\xE', '\x6', 'u', '\v', '\x6', '\x5',
 12719    '\x6', 'w', '\n', '\x6', '\x3', '\x6', '\x3', '\x6', '\x3', '\x6', '\x3',
 12720    '\x6', '\x3', '\x6', '\x3', '\x6', '\x3', '\x6', '\x3', '\x6', '\x5',
 12721    '\x6', '\x81', '\n', '\x6', '\x3', '\x6', '\x3', '\x6', '\x3', '\x6',
 12722    '\x3', '\x6', '\x3', '\x6', '\x3', '\x6', '\x3', '\x6', '\x3', '\x6',
 12723    '\x3', '\x6', '\x3', '\x6', '\x3', '\x6', '\x3', '\x6', '\x3', '\x6',
 12724    '\x3', '\x6', '\x3', '\x6', '\x3', '\x6', '\x3', '\x6', '\x3', '\x6',
 12725    '\x3', '\x6', '\x3', '\x6', '\x3', '\x6', '\x3', '\x6', '\x3', '\x6',
 12726    '\x3', '\x6', '\x3', '\x6', '\a', '\x6', '\x9C', '\n', '\x6', '\f', '\x6',
 12727    '\xE', '\x6', '\x9F', '\v', '\x6', '\x3', '\a', '\x3', '\a', '\x3', '\a',
 12728    '\x3', '\a', '\x3', '\b', '\x3', '\b', '\x3', '\b', '\x3', '\b', '\x3',
 12729    '\b', '\x3', '\b', '\x3', '\b', '\x3', '\b', '\x3', '\b', '\x3', '\b',
 12730    '\x3', '\b', '\x3', '\b', '\x3', '\b', '\x3', '\b', '\x3', '\b', '\x3',
 12731    '\b', '\x3', '\b', '\x3', '\b', '\x3', '\b', '\x3', '\b', '\x5', '\b',
 12732    '\xB9', '\n', '\b', '\x3', '\t', '\x3', '\t', '\x3', '\t', '\x3', '\t',
 12733    '\x3', '\n', '\x3', '\n', '\x3', '\n', '\x3', '\n', '\x3', '\n', '\x3',
 12734    '\n', '\x3', '\n', '\x3', '\n', '\x3', '\n', '\x3', '\n', '\x3', '\n',
 12735    '\x3', '\n', '\x5', '\n', '\xCB', '\n', '\n', '\x3', '\v', '\x3', '\v',
 12736    '\x3', '\v', '\x3', '\v', '\x3', '\f', '\x3', '\f', '\x3', '\f', '\x3',
 12737    '\f', '\x3', '\f', '\x3', '\f', '\x3', '\f', '\x3', '\f', '\a', '\f',
 12738    '\xD9', '\n', '\f', '\f', '\f', '\xE', '\f', '\xDC', '\v', '\f', '\x5',
 12739    '\f', '\xDE', '\n', '\f', '\x3', '\f', '\x3', '\f', '\x3', '\f', '\x3',
 12740    '\r', '\x3', '\r', '\x3', '\r', '\x3', '\r', '\x3', '\r', '\x3', '\r',
 12741    '\x3', '\r', '\x3', '\r', '\x3', '\r', '\x3', '\r', '\x3', '\r', '\x3',
 12742    '\r', '\x3', '\r', '\x3', '\r', '\x3', '\r', '\x3', '\r', '\x3', '\r',
 12743    '\x3', '\r', '\x3', '\r', '\x3', '\r', '\x3', '\r', '\x3', '\r', '\x3',
 12744    '\r', '\x3', '\r', '\x3', '\r', '\x3', '\r', '\x3', '\r', '\x3', '\r',
 12745    '\x3', '\r', '\x3', '\r', '\x3', '\r', '\x3', '\r', '\x3', '\r', '\x3',
 12746    '\r', '\x3', '\r', '\x3', '\r', '\x3', '\r', '\x3', '\r', '\x3', '\r',
 12747    '\x3', '\r', '\x3', '\r', '\x3', '\r', '\x3', '\r', '\x3', '\r', '\x3',
 12748    '\r', '\x3', '\r', '\x3', '\r', '\x3', '\r', '\x3', '\r', '\x3', '\r',
 12749    '\x3', '\r', '\x3', '\r', '\x3', '\r', '\x3', '\r', '\x3', '\r', '\x3',
 12750    '\r', '\x3', '\r', '\x3', '\r', '\x3', '\r', '\x3', '\r', '\x3', '\r',
 12751    '\x3', '\r', '\x3', '\r', '\x3', '\r', '\x3', '\r', '\x3', '\r', '\x3',
 12752    '\r', '\x3', '\r', '\x3', '\r', '\x3', '\r', '\x3', '\r', '\x3', '\r',
 12753    '\x3', '\r', '\x3', '\r', '\x3', '\r', '\x3', '\r', '\x3', '\r', '\x3',
 12754    '\r', '\x3', '\r', '\x3', '\r', '\x3', '\r', '\x3', '\r', '\x3', '\r',
 12755    '\x3', '\r', '\x3', '\r', '\x3', '\r', '\x3', '\r', '\x3', '\r', '\x3',
 12756    '\r', '\x5', '\r', '\x13C', '\n', '\r', '\x3', '\xE', '\x3', '\xE', '\x3',
 12757    '\xE', '\x3', '\xE', '\x3', '\xF', '\x3', '\xF', '\x3', '\xF', '\x3',
 12758    '\xF', '\x3', '\xF', '\x3', '\x10', '\x3', '\x10', '\x3', '\x10', '\a',
 12759    '\x10', '\x14A', '\n', '\x10', '\f', '\x10', '\xE', '\x10', '\x14D', '\v',
 12760    '\x10', '\x5', '\x10', '\x14F', '\n', '\x10', '\x3', '\x10', '\x3', '\x10',
 12761    '\x3', '\x11', '\x3', '\x11', '\x3', '\x11', '\x3', '\x11', '\x3', '\x12',
 12762    '\x3', '\x12', '\x3', '\x12', '\x3', '\x12', '\x3', '\x12', '\x3', '\x13',
 12763    '\x3', '\x13', '\x3', '\x13', '\x3', '\x13', '\x3', '\x13', '\x3', '\x13',
 12764    '\x5', '\x13', '\x162', '\n', '\x13', '\x3', '\x14', '\x3', '\x14', '\x3',
 12765    '\x14', '\x3', '\x14', '\x3', '\x14', '\a', '\x14', '\x169', '\n', '\x14',
 12766    '\f', '\x14', '\xE', '\x14', '\x16C', '\v', '\x14', '\x3', '\x14', '\x3',
 12767    '\x14', '\x5', '\x14', '\x170', '\n', '\x14', '\x3', '\x15', '\x3', '\x15',
 12768    '\x3', '\x15', '\x3', '\x15', '\x3', '\x16', '\x3', '\x16', '\x3', '\x16',
 12769    '\x3', '\x16', '\x3', '\x16', '\x3', '\x17', '\x3', '\x17', '\x3', '\x17',
 12770    '\a', '\x17', '\x17E', '\n', '\x17', '\f', '\x17', '\xE', '\x17', '\x181',
 12771    '\v', '\x17', '\x5', '\x17', '\x183', '\n', '\x17', '\x3', '\x17', '\x3',
 12772    '\x17', '\x3', '\x18', '\x3', '\x18', '\x3', '\x18', '\x3', '\x18', '\x3',
 12773    '\x18', '\x3', '\x18', '\x3', '\x18', '\x5', '\x18', '\x18E', '\n', '\x18',
 12774    '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\a', '\x19', '\x193', '\n',
 12775    '\x19', '\f', '\x19', '\xE', '\x19', '\x196', '\v', '\x19', '\x5', '\x19',
 12776    '\x198', '\n', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x1A', '\x3',
 12777    '\x1A', '\x3', '\x1A', '\x3', '\x1A', '\x3', '\x1A', '\x3', '\x1A', '\x3',
 12778    '\x1A', '\x3', '\x1A', '\x3', '\x1A', '\x3', '\x1A', '\x3', '\x1A', '\x3',
 12779    '\x1B', '\x3', '\x1B', '\x3', '\x1B', '\x3', '\x1B', '\x3', '\x1C', '\x3',
 12780    '\x1C', '\x3', '\x1C', '\x3', '\x1C', '\x3', '\x1C', '\a', '\x1C', '\x1B0',
 12781    '\n', '\x1C', '\f', '\x1C', '\xE', '\x1C', '\x1B3', '\v', '\x1C', '\x5',
 12782    '\x1C', '\x1B5', '\n', '\x1C', '\x3', '\x1C', '\x3', '\x1C', '\x3', '\x1C',
 12783    '\x3', '\x1C', '\x3', '\x1C', '\x3', '\x1C', '\x3', '\x1C', '\x3', '\x1C',
 12784    '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1E',
 12785    '\x3', '\x1E', '\x3', '\x1E', '\x3', '\x1E', '\x3', '\x1E', '\x3', '\x1F',
 12786    '\x3', '\x1F', '\x3', '\x1F', '\x3', '\x1F', '\x3', '\x1F', '\x3', '\x1F',
 12787    '\x3', '\x1F', '\x3', '\x1F', '\a', '\x1F', '\x1D0', '\n', '\x1F', '\f',
 12788    '\x1F', '\xE', '\x1F', '\x1D3', '\v', '\x1F', '\x5', '\x1F', '\x1D5',
 12789    '\n', '\x1F', '\x3', '\x1F', '\x3', '\x1F', '\x6', '\x1F', '\x1D9', '\n',
 12790    '\x1F', '\r', '\x1F', '\xE', '\x1F', '\x1DA', '\x3', '\x1F', '\x3', '\x1F',
 12791    '\x3', '\x1F', '\x3', '\x1F', '\x3', '\x1F', '\x3', '\x1F', '\x3', '\x1F',
 12792    '\x3', ' ', '\x3', ' ', '\x3', ' ', '\x3', ' ', '\x3', ' ', '\x3', ' ',
 12793    '\x3', ' ', '\x3', ' ', '\x3', ' ', '\x3', ' ', '\x3', ' ', '\x3', ' ',
 12794    '\x3', ' ', '\x3', ' ', '\x3', ' ', '\x3', ' ', '\x3', ' ', '\x3', ' ',
 12795    '\x3', ' ', '\x3', ' ', '\x5', ' ', '\x1F8', '\n', ' ', '\x3', '!', '\x3',
 12796    '!', '\x3', '!', '\x3', '!', '\x3', '!', '\x2', '\x3', '\n', '\"', '\x2',
 12797    '\x4', '\x6', '\b', '\n', '\f', '\xE', '\x10', '\x12', '\x14', '\x16',
 12798    '\x18', '\x1A', '\x1C', '\x1E', ' ', '\"', '$', '&', '(', '*', ',', '.',
 12799    '\x30', '\x32', '\x34', '\x36', '\x38', ':', '<', '>', '@', '\x2', '\x5',
 12800    '\x3', '\x2', '\x19', '\x1A', '\x4', '\x2', '\x1D', '\x1E', '!', '\"',
 12801    '\x3', '\x2', '\x1B', '\x1C', '\x2', '\x212', '\x2', 'G', '\x3', '\x2',
 12802    '\x2', '\x2', '\x4', 'I', '\x3', '\x2', '\x2', '\x2', '\x6', 'U', '\x3',
 12803    '\x2', '\x2', '\x2', '\b', 'W', '\x3', '\x2', '\x2', '\x2', '\n', '\x80',
 12804    '\x3', '\x2', '\x2', '\x2', '\f', '\xA0', '\x3', '\x2', '\x2', '\x2',
 12805    '\xE', '\xB8', '\x3', '\x2', '\x2', '\x2', '\x10', '\xBA', '\x3', '\x2',
 12806    '\x2', '\x2', '\x12', '\xCA', '\x3', '\x2', '\x2', '\x2', '\x14', '\xCC',
 12807    '\x3', '\x2', '\x2', '\x2', '\x16', '\xD0', '\x3', '\x2', '\x2', '\x2',
 12808    '\x18', '\x13B', '\x3', '\x2', '\x2', '\x2', '\x1A', '\x13D', '\x3', '\x2',
 12809    '\x2', '\x2', '\x1C', '\x141', '\x3', '\x2', '\x2', '\x2', '\x1E', '\x14E',
 12810    '\x3', '\x2', '\x2', '\x2', ' ', '\x152', '\x3', '\x2', '\x2', '\x2',
 12811    '\"', '\x156', '\x3', '\x2', '\x2', '\x2', '$', '\x161', '\x3', '\x2',
 12812    '\x2', '\x2', '&', '\x16F', '\x3', '\x2', '\x2', '\x2', '(', '\x171',
 12813    '\x3', '\x2', '\x2', '\x2', '*', '\x175', '\x3', '\x2', '\x2', '\x2',
 12814    ',', '\x182', '\x3', '\x2', '\x2', '\x2', '.', '\x18D', '\x3', '\x2',
 12815    '\x2', '\x2', '\x30', '\x197', '\x3', '\x2', '\x2', '\x2', '\x32', '\x19B',
 12816    '\x3', '\x2', '\x2', '\x2', '\x34', '\x1A6', '\x3', '\x2', '\x2', '\x2',
 12817    '\x36', '\x1AA', '\x3', '\x2', '\x2', '\x2', '\x38', '\x1BE', '\x3', '\x2',
 12818    '\x2', '\x2', ':', '\x1C2', '\x3', '\x2', '\x2', '\x2', '<', '\x1C7',
 12819    '\x3', '\x2', '\x2', '\x2', '>', '\x1F7', '\x3', '\x2', '\x2', '\x2',
 12820    '@', '\x1F9', '\x3', '\x2', '\x2', '\x2', '\x42', '\x43', '\a', '\x33',
 12821    '\x2', '\x2', '\x43', 'H', '\b', '\x2', '\x1', '\x2', '\x44', '\x45',
 12822    '\a', '-', '\x2', '\x2', '\x45', '\x46', '\a', '\x33', '\x2', '\x2', '\x46',
 12823    'H', '\b', '\x2', '\x1', '\x2', 'G', '\x42', '\x3', '\x2', '\x2', '\x2',
 12824    'G', '\x44', '\x3', '\x2', '\x2', '\x2', 'H', '\x3', '\x3', '\x2', '\x2',
 12825    '\x2', 'I', 'J', '\x5', '\x2', '\x2', '\x2', 'J', 'K', '\a', '\x2', '\x2',
 12826    '\x3', 'K', 'L', '\b', '\x3', '\x1', '\x2', 'L', '\x5', '\x3', '\x2',
 12827    '\x2', '\x2', 'M', 'N', '\a', '\x34', '\x2', '\x2', 'N', 'V', '\b', '\x4',
 12828    '\x1', '\x2', 'O', 'P', '\a', '\x34', '\x2', '\x2', 'P', 'Q', '\a', '\x19',
 12829    '\x2', '\x2', 'Q', 'R', '\a', '\x34', '\x2', '\x2', 'R', 'V', '\b', '\x4',
 12830    '\x1', '\x2', 'S', 'T', '\a', '\xE', '\x2', '\x2', 'T', 'V', '\b', '\x4',
 12831    '\x1', '\x2', 'U', 'M', '\x3', '\x2', '\x2', '\x2', 'U', 'O', '\x3', '\x2',
 12832    '\x2', '\x2', 'U', 'S', '\x3', '\x2', '\x2', '\x2', 'V', '\a', '\x3',
 12833    '\x2', '\x2', '\x2', 'W', 'X', '\x5', '\x6', '\x4', '\x2', 'X', 'Y', '\a',
 12834    '\x2', '\x2', '\x3', 'Y', 'Z', '\b', '\x5', '\x1', '\x2', 'Z', '\t', '\x3',
 12835    '\x2', '\x2', '\x2', '[', '\\', '\b', '\x6', '\x1', '\x2', '\\', ']',
 12836    '\a', '\x14', '\x2', '\x2', ']', '\x81', '\b', '\x6', '\x1', '\x2', '^',
 12837    '_', '\a', '$', '\x2', '\x2', '_', '`', '\x5', '\n', '\x6', '\x2', '`',
 12838    '\x61', '\a', '%', '\x2', '\x2', '\x61', '\x62', '\b', '\x6', '\x1', '\x2',
 12839    '\x62', '\x81', '\x3', '\x2', '\x2', '\x2', '\x63', '\x64', '\a', '\xF',
 12840    '\x2', '\x2', '\x64', '\x65', '\a', '$', '\x2', '\x2', '\x65', '\x66',
 12841    '\x5', '\n', '\x6', '\x2', '\x66', 'g', '\a', '%', '\x2', '\x2', 'g',
 12842    'h', '\b', '\x6', '\x1', '\x2', 'h', '\x81', '\x3', '\x2', '\x2', '\x2',
 12843    'i', 'j', '\a', '\x18', '\x2', '\x2', 'j', 'k', '\a', '\x34', '\x2', '\x2',
 12844    'k', '\x81', '\b', '\x6', '\x1', '\x2', 'l', 'm', '\a', '\x33', '\x2',
 12845    '\x2', 'm', 'v', '\a', '$', '\x2', '\x2', 'n', 's', '\x5', '\n', '\x6',
 12846    '\x2', 'o', 'p', '\a', '+', '\x2', '\x2', 'p', 'r', '\x5', '\n', '\x6',
 12847    '\x2', 'q', 'o', '\x3', '\x2', '\x2', '\x2', 'r', 'u', '\x3', '\x2', '\x2',
 12848    '\x2', 's', 'q', '\x3', '\x2', '\x2', '\x2', 's', 't', '\x3', '\x2', '\x2',
 12849    '\x2', 't', 'w', '\x3', '\x2', '\x2', '\x2', 'u', 's', '\x3', '\x2', '\x2',
 12850    '\x2', 'v', 'n', '\x3', '\x2', '\x2', '\x2', 'v', 'w', '\x3', '\x2', '\x2',
 12851    '\x2', 'w', 'x', '\x3', '\x2', '\x2', '\x2', 'x', 'y', '\a', '%', '\x2',
 12852    '\x2', 'y', '\x81', '\b', '\x6', '\x1', '\x2', 'z', '{', '\a', '\x34',
 12853    '\x2', '\x2', '{', '|', '\a', '.', '\x2', '\x2', '|', '}', '\a', '\x34',
 12854    '\x2', '\x2', '}', '\x81', '\b', '\x6', '\x1', '\x2', '~', '\x7F', '\a',
 12855    '\x33', '\x2', '\x2', '\x7F', '\x81', '\b', '\x6', '\x1', '\x2', '\x80',
 12856    '[', '\x3', '\x2', '\x2', '\x2', '\x80', '^', '\x3', '\x2', '\x2', '\x2',
 12857    '\x80', '\x63', '\x3', '\x2', '\x2', '\x2', '\x80', 'i', '\x3', '\x2',
 12858    '\x2', '\x2', '\x80', 'l', '\x3', '\x2', '\x2', '\x2', '\x80', 'z', '\x3',
 12859    '\x2', '\x2', '\x2', '\x80', '~', '\x3', '\x2', '\x2', '\x2', '\x81',
 12860    '\x9D', '\x3', '\x2', '\x2', '\x2', '\x82', '\x83', '\f', '\xE', '\x2',
 12861    '\x2', '\x83', '\x84', '\t', '\x2', '\x2', '\x2', '\x84', '\x85', '\x5',
 12862    '\n', '\x6', '\xF', '\x85', '\x86', '\b', '\x6', '\x1', '\x2', '\x86',
 12863    '\x9C', '\x3', '\x2', '\x2', '\x2', '\x87', '\x88', '\f', '\f', '\x2',
 12864    '\x2', '\x88', '\x89', '\t', '\x3', '\x2', '\x2', '\x89', '\x8A', '\x5',
 12865    '\n', '\x6', '\r', '\x8A', '\x8B', '\b', '\x6', '\x1', '\x2', '\x8B',
 12866    '\x9C', '\x3', '\x2', '\x2', '\x2', '\x8C', '\x8D', '\f', '\v', '\x2',
 12867    '\x2', '\x8D', '\x8E', '\t', '\x4', '\x2', '\x2', '\x8E', '\x8F', '\x5',
 12868    '\n', '\x6', '\f', '\x8F', '\x90', '\b', '\x6', '\x1', '\x2', '\x90',
 12869    '\x9C', '\x3', '\x2', '\x2', '\x2', '\x91', '\x92', '\f', '\n', '\x2',
 12870    '\x2', '\x92', '\x93', '\a', '\x1F', '\x2', '\x2', '\x93', '\x94', '\x5',
 12871    '\n', '\x6', '\v', '\x94', '\x95', '\b', '\x6', '\x1', '\x2', '\x95',
 12872    '\x9C', '\x3', '\x2', '\x2', '\x2', '\x96', '\x97', '\f', '\t', '\x2',
 12873    '\x2', '\x97', '\x98', '\a', ' ', '\x2', '\x2', '\x98', '\x99', '\x5',
 12874    '\n', '\x6', '\n', '\x99', '\x9A', '\b', '\x6', '\x1', '\x2', '\x9A',
 12875    '\x9C', '\x3', '\x2', '\x2', '\x2', '\x9B', '\x82', '\x3', '\x2', '\x2',
 12876    '\x2', '\x9B', '\x87', '\x3', '\x2', '\x2', '\x2', '\x9B', '\x8C', '\x3',
 12877    '\x2', '\x2', '\x2', '\x9B', '\x91', '\x3', '\x2', '\x2', '\x2', '\x9B',
 12878    '\x96', '\x3', '\x2', '\x2', '\x2', '\x9C', '\x9F', '\x3', '\x2', '\x2',
 12879    '\x2', '\x9D', '\x9B', '\x3', '\x2', '\x2', '\x2', '\x9D', '\x9E', '\x3',
 12880    '\x2', '\x2', '\x2', '\x9E', '\v', '\x3', '\x2', '\x2', '\x2', '\x9F',
 12881    '\x9D', '\x3', '\x2', '\x2', '\x2', '\xA0', '\xA1', '\x5', '\n', '\x6',
 12882    '\x2', '\xA1', '\xA2', '\a', '\x2', '\x2', '\x3', '\xA2', '\xA3', '\b',
 12883    '\a', '\x1', '\x2', '\xA3', '\r', '\x3', '\x2', '\x2', '\x2', '\xA4',
 12884    '\xA5', '\a', '\x34', '\x2', '\x2', '\xA5', '\xA6', '\a', '(', '\x2',
 12885    '\x2', '\xA6', '\xA7', '\x5', '\x6', '\x4', '\x2', '\xA7', '\xA8', '\a',
 12886    ')', '\x2', '\x2', '\xA8', '\xA9', '\b', '\b', '\x1', '\x2', '\xA9', '\xB9',
 12887    '\x3', '\x2', '\x2', '\x2', '\xAA', '\xAB', '\a', '\x17', '\x2', '\x2',
 12888    '\xAB', '\xAC', '\a', '$', '\x2', '\x2', '\xAC', '\xAD', '\x5', '\x2',
 12889    '\x2', '\x2', '\xAD', '\xAE', '\a', '+', '\x2', '\x2', '\xAE', '\xAF',
 12890    '\x5', '\x6', '\x4', '\x2', '\xAF', '\xB0', '\a', '%', '\x2', '\x2', '\xB0',
 12891    '\xB1', '\b', '\b', '\x1', '\x2', '\xB1', '\xB9', '\x3', '\x2', '\x2',
 12892    '\x2', '\xB2', '\xB3', '\a', '\x11', '\x2', '\x2', '\xB3', '\xB9', '\b',
 12893    '\b', '\x1', '\x2', '\xB4', '\xB5', '\a', '\x12', '\x2', '\x2', '\xB5',
 12894    '\xB9', '\b', '\b', '\x1', '\x2', '\xB6', '\xB7', '\a', '\x13', '\x2',
 12895    '\x2', '\xB7', '\xB9', '\b', '\b', '\x1', '\x2', '\xB8', '\xA4', '\x3',
 12896    '\x2', '\x2', '\x2', '\xB8', '\xAA', '\x3', '\x2', '\x2', '\x2', '\xB8',
 12897    '\xB2', '\x3', '\x2', '\x2', '\x2', '\xB8', '\xB4', '\x3', '\x2', '\x2',
 12898    '\x2', '\xB8', '\xB6', '\x3', '\x2', '\x2', '\x2', '\xB9', '\xF', '\x3',
 12899    '\x2', '\x2', '\x2', '\xBA', '\xBB', '\x5', '\xE', '\b', '\x2', '\xBB',
 12900    '\xBC', '\a', '\x2', '\x2', '\x3', '\xBC', '\xBD', '\b', '\t', '\x1',
 12901    '\x2', '\xBD', '\x11', '\x3', '\x2', '\x2', '\x2', '\xBE', '\xBF', '\a',
 12902    '&', '\x2', '\x2', '\xBF', '\xC0', '\a', '\x33', '\x2', '\x2', '\xC0',
 12903    '\xC1', '\a', '/', '\x2', '\x2', '\xC1', '\xC2', '\x5', '\xE', '\b', '\x2',
 12904    '\xC2', '\xC3', '\a', '\x31', '\x2', '\x2', '\xC3', '\xC4', '\x5', '\n',
 12905    '\x6', '\x2', '\xC4', '\xC5', '\a', '\'', '\x2', '\x2', '\xC5', '\xC6',
 12906    '\b', '\n', '\x1', '\x2', '\xC6', '\xCB', '\x3', '\x2', '\x2', '\x2',
 12907    '\xC7', '\xC8', '\x5', '\xE', '\b', '\x2', '\xC8', '\xC9', '\b', '\n',
 12908    '\x1', '\x2', '\xC9', '\xCB', '\x3', '\x2', '\x2', '\x2', '\xCA', '\xBE',
 12909    '\x3', '\x2', '\x2', '\x2', '\xCA', '\xC7', '\x3', '\x2', '\x2', '\x2',
 12910    '\xCB', '\x13', '\x3', '\x2', '\x2', '\x2', '\xCC', '\xCD', '\x5', '\x12',
 12911    '\n', '\x2', '\xCD', '\xCE', '\a', '\x2', '\x2', '\x3', '\xCE', '\xCF',
 12912    '\b', '\v', '\x1', '\x2', '\xCF', '\x15', '\x3', '\x2', '\x2', '\x2',
 12913    '\xD0', '\xD1', '\a', '(', '\x2', '\x2', '\xD1', '\xD2', '\x5', '\x30',
 12914    '\x19', '\x2', '\xD2', '\xD3', '\a', ')', '\x2', '\x2', '\xD3', '\xD4',
 12915    '\a', '\x33', '\x2', '\x2', '\xD4', '\xDD', '\a', '$', '\x2', '\x2', '\xD5',
 12916    '\xDA', '\x5', '\n', '\x6', '\x2', '\xD6', '\xD7', '\a', '+', '\x2', '\x2',
 12917    '\xD7', '\xD9', '\x5', '\n', '\x6', '\x2', '\xD8', '\xD6', '\x3', '\x2',
 12918    '\x2', '\x2', '\xD9', '\xDC', '\x3', '\x2', '\x2', '\x2', '\xDA', '\xD8',
 12919    '\x3', '\x2', '\x2', '\x2', '\xDA', '\xDB', '\x3', '\x2', '\x2', '\x2',
 12920    '\xDB', '\xDE', '\x3', '\x2', '\x2', '\x2', '\xDC', '\xDA', '\x3', '\x2',
 12921    '\x2', '\x2', '\xDD', '\xD5', '\x3', '\x2', '\x2', '\x2', '\xDD', '\xDE',
 12922    '\x3', '\x2', '\x2', '\x2', '\xDE', '\xDF', '\x3', '\x2', '\x2', '\x2',
 12923    '\xDF', '\xE0', '\a', '%', '\x2', '\x2', '\xE0', '\xE1', '\b', '\f', '\x1',
 12924    '\x2', '\xE1', '\x17', '\x3', '\x2', '\x2', '\x2', '\xE2', '\xE3', '\a',
 12925    '\v', '\x2', '\x2', '\xE3', '\xE4', '\x5', '\n', '\x6', '\x2', '\xE4',
 12926    '\xE5', '\a', '\f', '\x2', '\x2', '\xE5', '\xE6', '\x5', '\x18', '\r',
 12927    '\x2', '\xE6', '\xE7', '\a', '\r', '\x2', '\x2', '\xE7', '\xE8', '\x5',
 12928    '\x18', '\r', '\x2', '\xE8', '\xE9', '\b', '\r', '\x1', '\x2', '\xE9',
 12929    '\x13C', '\x3', '\x2', '\x2', '\x2', '\xEA', '\xEB', '\a', '\x3', '\x2',
 12930    '\x2', '\xEB', '\xEC', '\a', '\x33', '\x2', '\x2', '\xEC', '\xED', '\a',
 12931    '#', '\x2', '\x2', '\xED', '\xEE', '\x5', '\x18', '\r', '\x2', '\xEE',
 12932    '\xEF', '\a', '\x16', '\x2', '\x2', '\xEF', '\xF0', '\x5', '\x18', '\r',
 12933    '\x2', '\xF0', '\xF1', '\b', '\r', '\x1', '\x2', '\xF1', '\x13C', '\x3',
 12934    '\x2', '\x2', '\x2', '\xF2', '\xF3', '\a', '\x3', '\x2', '\x2', '\xF3',
 12935    '\xF4', '\x5', '\x18', '\r', '\x2', '\xF4', '\xF5', '\a', '\x16', '\x2',
 12936    '\x2', '\xF5', '\xF6', '\x5', '\x18', '\r', '\x2', '\xF6', '\xF7', '\b',
 12937    '\r', '\x1', '\x2', '\xF7', '\x13C', '\x3', '\x2', '\x2', '\x2', '\xF8',
 12938    '\xF9', '\a', '\x6', '\x2', '\x2', '\xF9', '\xFA', '\a', '\x33', '\x2',
 12939    '\x2', '\xFA', '\xFB', '\a', '#', '\x2', '\x2', '\xFB', '\xFC', '\a',
 12940    '(', '\x2', '\x2', '\xFC', '\xFD', '\a', '\b', '\x2', '\x2', '\xFD', '\xFE',
 12941    '\a', '\x33', '\x2', '\x2', '\xFE', '\xFF', '\a', ')', '\x2', '\x2', '\xFF',
 12942    '\x100', '\x5', '\n', '\x6', '\x2', '\x100', '\x101', '\a', '\x16', '\x2',
 12943    '\x2', '\x101', '\x102', '\x5', '\x18', '\r', '\x2', '\x102', '\x103',
 12944    '\b', '\r', '\x1', '\x2', '\x103', '\x13C', '\x3', '\x2', '\x2', '\x2',
 12945    '\x104', '\x105', '\a', '(', '\x2', '\x2', '\x105', '\x106', '\a', '\a',
 12946    '\x2', '\x2', '\x106', '\x107', '\a', '\x33', '\x2', '\x2', '\x107', '\x108',
 12947    '\a', ')', '\x2', '\x2', '\x108', '\x13C', '\b', '\r', '\x1', '\x2', '\x109',
 12948    '\x10A', '\a', '*', '\x2', '\x2', '\x10A', '\x10B', '\x5', '\n', '\x6',
 12949    '\x2', '\x10B', '\x10C', '\a', '#', '\x2', '\x2', '\x10C', '\x10D', '\x5',
 12950    '\n', '\x6', '\x2', '\x10D', '\x10E', '\b', '\r', '\x1', '\x2', '\x10E',
 12951    '\x13C', '\x3', '\x2', '\x2', '\x2', '\x10F', '\x110', '\a', '*', '\x2',
 12952    '\x2', '\x110', '\x111', '\x5', '\n', '\x6', '\x2', '\x111', '\x112',
 12953    '\b', '\r', '\x1', '\x2', '\x112', '\x13C', '\x3', '\x2', '\x2', '\x2',
 12954    '\x113', '\x114', '\x5', '\n', '\x6', '\x2', '\x114', '\x115', '\a', '\x32',
 12955    '\x2', '\x2', '\x115', '\x116', '\a', '\x33', '\x2', '\x2', '\x116', '\x117',
 12956    '\a', '#', '\x2', '\x2', '\x117', '\x118', '\x5', '\n', '\x6', '\x2',
 12957    '\x118', '\x119', '\b', '\r', '\x1', '\x2', '\x119', '\x13C', '\x3', '\x2',
 12958    '\x2', '\x2', '\x11A', '\x11B', '\x5', '\n', '\x6', '\x2', '\x11B', '\x11C',
 12959    '\a', '\x32', '\x2', '\x2', '\x11C', '\x11D', '\a', '\x33', '\x2', '\x2',
 12960    '\x11D', '\x11E', '\b', '\r', '\x1', '\x2', '\x11E', '\x13C', '\x3', '\x2',
 12961    '\x2', '\x2', '\x11F', '\x120', '\x5', '\n', '\x6', '\x2', '\x120', '\x121',
 12962    '\a', '(', '\x2', '\x2', '\x121', '\x122', '\x5', '\n', '\x6', '\x2',
 12963    '\x122', '\x123', '\a', ')', '\x2', '\x2', '\x123', '\x124', '\a', '#',
 12964    '\x2', '\x2', '\x124', '\x125', '\x5', '\n', '\x6', '\x2', '\x125', '\x126',
 12965    '\b', '\r', '\x1', '\x2', '\x126', '\x13C', '\x3', '\x2', '\x2', '\x2',
 12966    '\x127', '\x128', '\x5', '\n', '\x6', '\x2', '\x128', '\x129', '\a', '(',
 12967    '\x2', '\x2', '\x129', '\x12A', '\x5', '\n', '\x6', '\x2', '\x12A', '\x12B',
 12968    '\a', ')', '\x2', '\x2', '\x12B', '\x12C', '\b', '\r', '\x1', '\x2', '\x12C',
 12969    '\x13C', '\x3', '\x2', '\x2', '\x2', '\x12D', '\x12E', '\a', '\x10', '\x2',
 12970    '\x2', '\x12E', '\x12F', '\a', '$', '\x2', '\x2', '\x12F', '\x130', '\a',
 12971    '\x33', '\x2', '\x2', '\x130', '\x131', '\a', '+', '\x2', '\x2', '\x131',
 12972    '\x132', '\x5', '\n', '\x6', '\x2', '\x132', '\x133', '\a', '%', '\x2',
 12973    '\x2', '\x133', '\x134', '\b', '\r', '\x1', '\x2', '\x134', '\x13C', '\x3',
 12974    '\x2', '\x2', '\x2', '\x135', '\x136', '\x5', '\x16', '\f', '\x2', '\x136',
 12975    '\x137', '\b', '\r', '\x1', '\x2', '\x137', '\x13C', '\x3', '\x2', '\x2',
 12976    '\x2', '\x138', '\x139', '\x5', '\n', '\x6', '\x2', '\x139', '\x13A',
 12977    '\b', '\r', '\x1', '\x2', '\x13A', '\x13C', '\x3', '\x2', '\x2', '\x2',
 12978    '\x13B', '\xE2', '\x3', '\x2', '\x2', '\x2', '\x13B', '\xEA', '\x3', '\x2',
 12979    '\x2', '\x2', '\x13B', '\xF2', '\x3', '\x2', '\x2', '\x2', '\x13B', '\xF8',
 12980    '\x3', '\x2', '\x2', '\x2', '\x13B', '\x104', '\x3', '\x2', '\x2', '\x2',
 12981    '\x13B', '\x109', '\x3', '\x2', '\x2', '\x2', '\x13B', '\x10F', '\x3',
 12982    '\x2', '\x2', '\x2', '\x13B', '\x113', '\x3', '\x2', '\x2', '\x2', '\x13B',
 12983    '\x11A', '\x3', '\x2', '\x2', '\x2', '\x13B', '\x11F', '\x3', '\x2', '\x2',
 12984    '\x2', '\x13B', '\x127', '\x3', '\x2', '\x2', '\x2', '\x13B', '\x12D',
 12985    '\x3', '\x2', '\x2', '\x2', '\x13B', '\x135', '\x3', '\x2', '\x2', '\x2',
 12986    '\x13B', '\x138', '\x3', '\x2', '\x2', '\x2', '\x13C', '\x19', '\x3',
 12987    '\x2', '\x2', '\x2', '\x13D', '\x13E', '\x5', '\x18', '\r', '\x2', '\x13E',
 12988    '\x13F', '\a', '\x2', '\x2', '\x3', '\x13F', '\x140', '\b', '\xE', '\x1',
 12989    '\x2', '\x140', '\x1B', '\x3', '\x2', '\x2', '\x2', '\x141', '\x142',
 12990    '\x5', '\x6', '\x4', '\x2', '\x142', '\x143', '\a', '/', '\x2', '\x2',
 12991    '\x143', '\x144', '\x5', '\x12', '\n', '\x2', '\x144', '\x145', '\b',
 12992    '\xF', '\x1', '\x2', '\x145', '\x1D', '\x3', '\x2', '\x2', '\x2', '\x146',
 12993    '\x14B', '\x5', '\x1C', '\xF', '\x2', '\x147', '\x148', '\a', '+', '\x2',
 12994    '\x2', '\x148', '\x14A', '\x5', '\x1C', '\xF', '\x2', '\x149', '\x147',
 12995    '\x3', '\x2', '\x2', '\x2', '\x14A', '\x14D', '\x3', '\x2', '\x2', '\x2',
 12996    '\x14B', '\x149', '\x3', '\x2', '\x2', '\x2', '\x14B', '\x14C', '\x3',
 12997    '\x2', '\x2', '\x2', '\x14C', '\x14F', '\x3', '\x2', '\x2', '\x2', '\x14D',
 12998    '\x14B', '\x3', '\x2', '\x2', '\x2', '\x14E', '\x146', '\x3', '\x2', '\x2',
 12999    '\x2', '\x14E', '\x14F', '\x3', '\x2', '\x2', '\x2', '\x14F', '\x150',
 13000    '\x3', '\x2', '\x2', '\x2', '\x150', '\x151', '\b', '\x10', '\x1', '\x2',
 13001    '\x151', '\x1F', '\x3', '\x2', '\x2', '\x2', '\x152', '\x153', '\x5',
 13002    '\x1E', '\x10', '\x2', '\x153', '\x154', '\a', '\x2', '\x2', '\x3', '\x154',
 13003    '\x155', '\b', '\x11', '\x1', '\x2', '\x155', '!', '\x3', '\x2', '\x2',
 13004    '\x2', '\x156', '\x157', '\x5', '\x2', '\x2', '\x2', '\x157', '\x158',
 13005    '\a', ',', '\x2', '\x2', '\x158', '\x159', '\x5', '\x1E', '\x10', '\x2',
 13006    '\x159', '\x15A', '\b', '\x12', '\x1', '\x2', '\x15A', '#', '\x3', '\x2',
 13007    '\x2', '\x2', '\x15B', '\x15C', '\x5', '\"', '\x12', '\x2', '\x15C', '\x15D',
 13008    '\b', '\x13', '\x1', '\x2', '\x15D', '\x162', '\x3', '\x2', '\x2', '\x2',
 13009    '\x15E', '\x15F', '\x5', '\x16', '\f', '\x2', '\x15F', '\x160', '\b',
 13010    '\x13', '\x1', '\x2', '\x160', '\x162', '\x3', '\x2', '\x2', '\x2', '\x161',
 13011    '\x15B', '\x3', '\x2', '\x2', '\x2', '\x161', '\x15E', '\x3', '\x2', '\x2',
 13012    '\x2', '\x162', '%', '\x3', '\x2', '\x2', '\x2', '\x163', '\x164', '\a',
 13013    '\x15', '\x2', '\x2', '\x164', '\x170', '\b', '\x14', '\x1', '\x2', '\x165',
 13014    '\x16A', '\x5', '$', '\x13', '\x2', '\x166', '\x167', '\a', '*', '\x2',
 13015    '\x2', '\x167', '\x169', '\x5', '$', '\x13', '\x2', '\x168', '\x166',
 13016    '\x3', '\x2', '\x2', '\x2', '\x169', '\x16C', '\x3', '\x2', '\x2', '\x2',
 13017    '\x16A', '\x168', '\x3', '\x2', '\x2', '\x2', '\x16A', '\x16B', '\x3',
 13018    '\x2', '\x2', '\x2', '\x16B', '\x16D', '\x3', '\x2', '\x2', '\x2', '\x16C',
 13019    '\x16A', '\x3', '\x2', '\x2', '\x2', '\x16D', '\x16E', '\b', '\x14', '\x1',
 13020    '\x2', '\x16E', '\x170', '\x3', '\x2', '\x2', '\x2', '\x16F', '\x163',
 13021    '\x3', '\x2', '\x2', '\x2', '\x16F', '\x165', '\x3', '\x2', '\x2', '\x2',
 13022    '\x170', '\'', '\x3', '\x2', '\x2', '\x2', '\x171', '\x172', '\x5', '&',
 13023    '\x14', '\x2', '\x172', '\x173', '\a', '\x2', '\x2', '\x3', '\x173', '\x174',
 13024    '\b', '\x15', '\x1', '\x2', '\x174', ')', '\x3', '\x2', '\x2', '\x2',
 13025    '\x175', '\x176', '\a', '\x33', '\x2', '\x2', '\x176', '\x177', '\a',
 13026    '/', '\x2', '\x2', '\x177', '\x178', '\x5', '\x12', '\n', '\x2', '\x178',
 13027    '\x179', '\b', '\x16', '\x1', '\x2', '\x179', '+', '\x3', '\x2', '\x2',
 13028    '\x2', '\x17A', '\x17F', '\x5', '*', '\x16', '\x2', '\x17B', '\x17C',
 13029    '\a', '+', '\x2', '\x2', '\x17C', '\x17E', '\x5', '*', '\x16', '\x2',
 13030    '\x17D', '\x17B', '\x3', '\x2', '\x2', '\x2', '\x17E', '\x181', '\x3',
 13031    '\x2', '\x2', '\x2', '\x17F', '\x17D', '\x3', '\x2', '\x2', '\x2', '\x17F',
 13032    '\x180', '\x3', '\x2', '\x2', '\x2', '\x180', '\x183', '\x3', '\x2', '\x2',
 13033    '\x2', '\x181', '\x17F', '\x3', '\x2', '\x2', '\x2', '\x182', '\x17A',
 13034    '\x3', '\x2', '\x2', '\x2', '\x182', '\x183', '\x3', '\x2', '\x2', '\x2',
 13035    '\x183', '\x184', '\x3', '\x2', '\x2', '\x2', '\x184', '\x185', '\b',
 13036    '\x17', '\x1', '\x2', '\x185', '-', '\x3', '\x2', '\x2', '\x2', '\x186',
 13037    '\x187', '\a', '\x32', '\x2', '\x2', '\x187', '\x188', '\x5', '\x12',
 13038    '\n', '\x2', '\x188', '\x189', '\a', '\x30', '\x2', '\x2', '\x189', '\x18A',
 13039    '\x5', '&', '\x14', '\x2', '\x18A', '\x18B', '\b', '\x18', '\x1', '\x2',
 13040    '\x18B', '\x18E', '\x3', '\x2', '\x2', '\x2', '\x18C', '\x18E', '\b',
 13041    '\x18', '\x1', '\x2', '\x18D', '\x186', '\x3', '\x2', '\x2', '\x2', '\x18D',
 13042    '\x18C', '\x3', '\x2', '\x2', '\x2', '\x18E', '/', '\x3', '\x2', '\x2',
 13043    '\x2', '\x18F', '\x194', '\a', '\x33', '\x2', '\x2', '\x190', '\x191',
 13044    '\a', '+', '\x2', '\x2', '\x191', '\x193', '\a', '\x33', '\x2', '\x2',
 13045    '\x192', '\x190', '\x3', '\x2', '\x2', '\x2', '\x193', '\x196', '\x3',
 13046    '\x2', '\x2', '\x2', '\x194', '\x192', '\x3', '\x2', '\x2', '\x2', '\x194',
 13047    '\x195', '\x3', '\x2', '\x2', '\x2', '\x195', '\x198', '\x3', '\x2', '\x2',
 13048    '\x2', '\x196', '\x194', '\x3', '\x2', '\x2', '\x2', '\x197', '\x18F',
 13049    '\x3', '\x2', '\x2', '\x2', '\x197', '\x198', '\x3', '\x2', '\x2', '\x2',
 13050    '\x198', '\x199', '\x3', '\x2', '\x2', '\x2', '\x199', '\x19A', '\b',
 13051    '\x19', '\x1', '\x2', '\x19A', '\x31', '\x3', '\x2', '\x2', '\x2', '\x19B',
 13052    '\x19C', '\a', '(', '\x2', '\x2', '\x19C', '\x19D', '\x5', '\x30', '\x19',
 13053    '\x2', '\x19D', '\x19E', '\a', ')', '\x2', '\x2', '\x19E', '\x19F', '\a',
 13054    '$', '\x2', '\x2', '\x19F', '\x1A0', '\x5', ',', '\x17', '\x2', '\x1A0',
 13055    '\x1A1', '\a', '%', '\x2', '\x2', '\x1A1', '\x1A2', '\a', '\x30', '\x2',
 13056    '\x2', '\x1A2', '\x1A3', '\x5', '&', '\x14', '\x2', '\x1A3', '\x1A4',
 13057    '\x5', '.', '\x18', '\x2', '\x1A4', '\x1A5', '\b', '\x1A', '\x1', '\x2',
 13058    '\x1A5', '\x33', '\x3', '\x2', '\x2', '\x2', '\x1A6', '\x1A7', '\x5',
 13059    '\x32', '\x1A', '\x2', '\x1A7', '\x1A8', '\a', '\x2', '\x2', '\x3', '\x1A8',
 13060    '\x1A9', '\b', '\x1B', '\x1', '\x2', '\x1A9', '\x35', '\x3', '\x2', '\x2',
 13061    '\x2', '\x1AA', '\x1AB', '\a', '\t', '\x2', '\x2', '\x1AB', '\x1B4', '\a',
 13062    '$', '\x2', '\x2', '\x1AC', '\x1B1', '\a', '\x33', '\x2', '\x2', '\x1AD',
 13063    '\x1AE', '\a', '+', '\x2', '\x2', '\x1AE', '\x1B0', '\a', '\x33', '\x2',
 13064    '\x2', '\x1AF', '\x1AD', '\x3', '\x2', '\x2', '\x2', '\x1B0', '\x1B3',
 13065    '\x3', '\x2', '\x2', '\x2', '\x1B1', '\x1AF', '\x3', '\x2', '\x2', '\x2',
 13066    '\x1B1', '\x1B2', '\x3', '\x2', '\x2', '\x2', '\x1B2', '\x1B5', '\x3',
 13067    '\x2', '\x2', '\x2', '\x1B3', '\x1B1', '\x3', '\x2', '\x2', '\x2', '\x1B4',
 13068    '\x1AC', '\x3', '\x2', '\x2', '\x2', '\x1B4', '\x1B5', '\x3', '\x2', '\x2',
 13069    '\x2', '\x1B5', '\x1B6', '\x3', '\x2', '\x2', '\x2', '\x1B6', '\x1B7',
 13070    '\a', '%', '\x2', '\x2', '\x1B7', '\x1B8', '\a', '&', '\x2', '\x2', '\x1B8',
 13071    '\x1B9', '\x5', '\x18', '\r', '\x2', '\x1B9', '\x1BA', '\a', '\'', '\x2',
 13072    '\x2', '\x1BA', '\x1BB', '\a', '/', '\x2', '\x2', '\x1BB', '\x1BC', '\x5',
 13073    '\x32', '\x1A', '\x2', '\x1BC', '\x1BD', '\b', '\x1C', '\x1', '\x2', '\x1BD',
 13074    '\x37', '\x3', '\x2', '\x2', '\x2', '\x1BE', '\x1BF', '\x5', '\x36', '\x1C',
 13075    '\x2', '\x1BF', '\x1C0', '\a', '\x2', '\x2', '\x3', '\x1C0', '\x1C1',
 13076    '\b', '\x1D', '\x1', '\x2', '\x1C1', '\x39', '\x3', '\x2', '\x2', '\x2',
 13077    '\x1C2', '\x1C3', '\a', '\x33', '\x2', '\x2', '\x1C3', '\x1C4', '\a',
 13078    '#', '\x2', '\x2', '\x1C4', '\x1C5', '\x5', '\x1C', '\xF', '\x2', '\x1C5',
 13079    '\x1C6', '\b', '\x1E', '\x1', '\x2', '\x1C6', ';', '\x3', '\x2', '\x2',
 13080    '\x2', '\x1C7', '\x1C8', '\a', '\n', '\x2', '\x2', '\x1C8', '\x1C9', '\a',
 13081    '$', '\x2', '\x2', '\x1C9', '\x1CA', '\x5', ',', '\x17', '\x2', '\x1CA',
 13082    '\x1D4', '\a', '%', '\x2', '\x2', '\x1CB', '\x1CC', '\a', '/', '\x2',
 13083    '\x2', '\x1CC', '\x1D1', '\x5', '\x16', '\f', '\x2', '\x1CD', '\x1CE',
 13084    '\a', '+', '\x2', '\x2', '\x1CE', '\x1D0', '\x5', '\x16', '\f', '\x2',
 13085    '\x1CF', '\x1CD', '\x3', '\x2', '\x2', '\x2', '\x1D0', '\x1D3', '\x3',
 13086    '\x2', '\x2', '\x2', '\x1D1', '\x1CF', '\x3', '\x2', '\x2', '\x2', '\x1D1',
 13087    '\x1D2', '\x3', '\x2', '\x2', '\x2', '\x1D2', '\x1D5', '\x3', '\x2', '\x2',
 13088    '\x2', '\x1D3', '\x1D1', '\x3', '\x2', '\x2', '\x2', '\x1D4', '\x1CB',
 13089    '\x3', '\x2', '\x2', '\x2', '\x1D4', '\x1D5', '\x3', '\x2', '\x2', '\x2',
 13090    '\x1D5', '\x1D6', '\x3', '\x2', '\x2', '\x2', '\x1D6', '\x1D8', '\a',
 13091    '&', '\x2', '\x2', '\x1D7', '\x1D9', '\x5', ':', '\x1E', '\x2', '\x1D8',
 13092    '\x1D7', '\x3', '\x2', '\x2', '\x2', '\x1D9', '\x1DA', '\x3', '\x2', '\x2',
 13093    '\x2', '\x1DA', '\x1D8', '\x3', '\x2', '\x2', '\x2', '\x1DA', '\x1DB',
 13094    '\x3', '\x2', '\x2', '\x2', '\x1DB', '\x1DC', '\x3', '\x2', '\x2', '\x2',
 13095    '\x1DC', '\x1DD', '\a', '\'', '\x2', '\x2', '\x1DD', '\x1DE', '\a', '/',
 13096    '\x2', '\x2', '\x1DE', '\x1DF', '\a', '(', '\x2', '\x2', '\x1DF', '\x1E0',
 13097    '\x5', '\x30', '\x19', '\x2', '\x1E0', '\x1E1', '\a', ')', '\x2', '\x2',
 13098    '\x1E1', '\x1E2', '\b', '\x1F', '\x1', '\x2', '\x1E2', '=', '\x3', '\x2',
 13099    '\x2', '\x2', '\x1E3', '\x1E4', '\a', '\x4', '\x2', '\x2', '\x1E4', '\x1E5',
 13100    '\a', '\x33', '\x2', '\x2', '\x1E5', '\x1E6', '\a', '#', '\x2', '\x2',
 13101    '\x1E6', '\x1E7', '\x5', '\x36', '\x1C', '\x2', '\x1E7', '\x1E8', '\a',
 13102    '\x16', '\x2', '\x2', '\x1E8', '\x1E9', '\x5', '>', ' ', '\x2', '\x1E9',
 13103    '\x1EA', '\b', ' ', '\x1', '\x2', '\x1EA', '\x1F8', '\x3', '\x2', '\x2',
 13104    '\x2', '\x1EB', '\x1EC', '\a', '\x5', '\x2', '\x2', '\x1EC', '\x1ED',
 13105    '\a', '\x33', '\x2', '\x2', '\x1ED', '\x1EE', '\a', '#', '\x2', '\x2',
 13106    '\x1EE', '\x1EF', '\x5', '<', '\x1F', '\x2', '\x1EF', '\x1F0', '\a', '\x16',
 13107    '\x2', '\x2', '\x1F0', '\x1F1', '\x5', '>', ' ', '\x2', '\x1F1', '\x1F2',
 13108    '\b', ' ', '\x1', '\x2', '\x1F2', '\x1F8', '\x3', '\x2', '\x2', '\x2',
 13109    '\x1F3', '\x1F4', '\a', '\x33', '\x2', '\x2', '\x1F4', '\x1F5', '\a',
 13110    '$', '\x2', '\x2', '\x1F5', '\x1F6', '\a', '%', '\x2', '\x2', '\x1F6',
 13111    '\x1F8', '\b', ' ', '\x1', '\x2', '\x1F7', '\x1E3', '\x3', '\x2', '\x2',
 13112    '\x2', '\x1F7', '\x1EB', '\x3', '\x2', '\x2', '\x2', '\x1F7', '\x1F3',
 13113    '\x3', '\x2', '\x2', '\x2', '\x1F8', '?', '\x3', '\x2', '\x2', '\x2',
 13114    '\x1F9', '\x1FA', '\x5', '>', ' ', '\x2', '\x1FA', '\x1FB', '\a', '\x2',
 13115    '\x2', '\x3', '\x1FB', '\x1FC', '\b', '!', '\x1', '\x2', '\x1FC', '\x41',
 13116    '\x3', '\x2', '\x2', '\x2', '\x1E', 'G', 'U', 's', 'v', '\x80', '\x9B',
 13117    '\x9D', '\xB8', '\xCA', '\xDA', '\xDD', '\x13B', '\x14B', '\x14E', '\x161',
 13118    '\x16A', '\x16F', '\x17F', '\x182', '\x18D', '\x194', '\x197', '\x1B1',
 13119    '\x1B4', '\x1D1', '\x1D4', '\x1DA', '\x1F7',
 13120  };
 3121
 13122  public static readonly ATN _ATN =
 13123    new ATNDeserializer().Deserialize(_serializedATN);
 3124
 3125
 3126}
 3127} // namespace NanoCLang

Methods/Properties

.cctor()
get_Vocabulary()
get_GrammarFileName()
get_RuleNames()
get_SerializedAtn()
.ctor(...)
.ctor(...)
.ctor(...)
get_RuleIndex()
.ctor()
CopyFrom(...)
IDENTIFIER()
.ctor(...)
TILDE()
IDENTIFIER()
.ctor(...)
location()
Eof()
location()
.ctor(...)
get_RuleIndex()
singleLocation()
.ctor(...)
get_RuleIndex()
.ctor()
CopyFrom(...)
INTEGER()
.ctor(...)
PLUS()
INTEGER()
INTEGER(...)
.ctor(...)
ANY()
.ctor(...)
index()
Eof()
index()
.ctor(...)
get_RuleIndex()
singleIndex()
.ctor(...)
get_RuleIndex()
.ctor()
CopyFrom(...)
LB()
RB()
pureExpression()
.ctor(...)
RETURN()
.ctor(...)
IDENTIFIER()
.ctor(...)
pureExpression()
pureExpression(...)
LESS()
LESSEQUAL()
GREATER()
GREATEREQUAL()
.ctor(...)
pureExpression()
pureExpression(...)
OR()
.ctor(...)
.ctor(...)
LB()
RB()
IDENTIFIER()
pureExpression()
pureExpression(...)
COMMA()
COMMA(...)
ASSERT()
LB()
RB()
pureExpression()
.ctor(...)
pureExpression()
pureExpression(...)
EQUALS()
UNEQUAL()
.ctor(...)
UNDERSCORE()
INTEGER()
INTEGER(...)
.ctor(...)
pureExpression()
pureExpression(...)
AND()
.ctor(...)
AT()
INTEGER()
.ctor(...)
pureExpression()
pureExpression(...)
PLUS()
MINUS()
.ctor(...)
pureExpression()
pureExpression(...)
Eof()
pureExpression()
.ctor(...)
get_RuleIndex()
singlePureExpression()
.ctor(...)
get_RuleIndex()
.ctor()
CopyFrom(...)
CHAR()
VOID()
.ctor(...)
INT()
.ctor(...)
LBA()
RBA()
INTEGER()
index()
.ctor(...)
REF()
LB()
COMMA()
RB()
location()
index()
.ctor(...)
basicType()
Eof()
basicType()
.ctor(...)
get_RuleIndex()
singleBasicType()
.ctor(...)
get_RuleIndex()
.ctor()
CopyFrom(...)
basicType()
.ctor(...)
LBC()
COLON()
PIPE()
RBC()
IDENTIFIER()
basicType()
pureExpression()
.ctor(...)
refinedType()
Eof()
refinedType()
.ctor(...)
get_RuleIndex()
singleRefinedType()
.ctor(...)
LBA()
RBA()
LB()
RB()
identifierList()
IDENTIFIER()
pureExpression()
pureExpression(...)
COMMA()
COMMA(...)
get_RuleIndex()
functionCall()
.ctor(...)
get_RuleIndex()
.ctor()
CopyFrom(...)
LETU()
ASSIGN()
LBA()
UNFOLD()
RBA()
IN()
IDENTIFIER()
IDENTIFIER(...)
pureExpression()
expression()
.ctor(...)
DEREF()
pureExpression()
.ctor(...)
MALLOC()
LB()
COMMA()
RB()
IDENTIFIER()
pureExpression()
.ctor(...)
IF()
THEN()
ELSE()
pureExpression()
expression()
expression(...)
.ctor(...)
LET()
ASSIGN()
IN()
IDENTIFIER()
expression()
expression(...)
.ctor(...)
ARROW()
ASSIGN()
pureExpression()
pureExpression(...)
IDENTIFIER()
.ctor(...)
DEREF()
ASSIGN()
pureExpression()
pureExpression(...)
.ctor(...)
LBA()
RBA()
ASSIGN()
pureExpression()
pureExpression(...)
.ctor(...)
pureExpression()
.ctor(...)
LET()
IN()
expression()
expression(...)
.ctor(...)
ARROW()
pureExpression()
IDENTIFIER()
.ctor(...)
LBA()
FOLD()
RBA()
IDENTIFIER()
.ctor(...)
functionCall()
.ctor(...)
LBA()
RBA()
pureExpression()
pureExpression(...)
.ctor(...)
expression()
Eof()
expression()
.ctor(...)
get_RuleIndex()
singleExpression()
COLON()
index()
refinedType()
.ctor(...)
get_RuleIndex()
blockBinding()
.ctor(...)
blockBinding()
blockBinding(...)
COMMA()
COMMA(...)
get_RuleIndex()
block()
Eof()
block()
.ctor(...)
get_RuleIndex()
singleBlock()
TARROW()
location()
block()
.ctor(...)
get_RuleIndex()
locationBinding()
locationBinding()
functionCall()
.ctor(...)
get_RuleIndex()
heapElement()
.ctor(...)
EMP()
heapElement()
heapElement(...)
DEREF()
DEREF(...)
get_RuleIndex()
heap()
Eof()
heap()
.ctor(...)
get_RuleIndex()
singleHeap()
COLON()
IDENTIFIER()
refinedType()
.ctor(...)
get_RuleIndex()
typeArg()
.ctor(...)
typeArg()
typeArg(...)
COMMA()
COMMA(...)
get_RuleIndex()
typeArgList()
ARROW()
SLASH()
refinedType()
heap()
.ctor(...)
get_RuleIndex()
world()
.ctor(...)
IDENTIFIER()
IDENTIFIER(...)
COMMA()
COMMA(...)
get_RuleIndex()
identifierList()
LBA()
RBA()
LB()
RB()
SLASH()
identifierList()
typeArgList()
heap()
world()
.ctor(...)
get_RuleIndex()
functionSchema()
Eof()
functionSchema()
.ctor(...)
get_RuleIndex()
singleFunctionSchema()
.ctor(...)
FUN()
LB()
RB()
LBC()
RBC()
COLON()
expression()
functionSchema()
IDENTIFIER()
IDENTIFIER(...)
COMMA()
COMMA(...)
get_RuleIndex()
functionDefinition()
Eof()
functionDefinition()
.ctor(...)
get_RuleIndex()
singleFunctionDefinition()
ASSIGN()
IDENTIFIER()
blockBinding()
.ctor(...)
get_RuleIndex()
structField()
.ctor(...)
STRUCT()
LB()
RB()
LBC()
RBC()
COLON()
COLON(...)
LBA()
RBA()
typeArgList()
identifierList()
functionCall()
functionCall(...)
structField()
structField(...)
COMMA()
COMMA(...)
get_RuleIndex()
structDefinition()
.ctor(...)
get_RuleIndex()
.ctor()
CopyFrom(...)
LB()
RB()
IDENTIFIER()
.ctor(...)
LETF()
ASSIGN()
IN()
IDENTIFIER()
functionDefinition()
program()
.ctor(...)
LETS()
ASSIGN()
IN()
IDENTIFIER()
structDefinition()
program()
.ctor(...)
program()
Eof()
program()
.ctor(...)
get_RuleIndex()
singleProgram()
Sempred(...)
pureExpression_sempred(...)