// Generated from SyslParser.g4 by ANTLR 4.7
// jshint ignore: start
var antlr4 = require('antlr4/index');
var SyslParserListener = require('./SyslParserListener').SyslParserListener;
var grammarFileName = "SyslParser.g4";

var serializedATN = ["\u0003\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964",
    "\u0003\u0090\u06a5\u0004\u0002\t\u0002\u0004\u0003\t\u0003\u0004\u0004",
    "\t\u0004\u0004\u0005\t\u0005\u0004\u0006\t\u0006\u0004\u0007\t\u0007",
    "\u0004\b\t\b\u0004\t\t\t\u0004\n\t\n\u0004\u000b\t\u000b\u0004\f\t\f",
    "\u0004\r\t\r\u0004\u000e\t\u000e\u0004\u000f\t\u000f\u0004\u0010\t\u0010",
    "\u0004\u0011\t\u0011\u0004\u0012\t\u0012\u0004\u0013\t\u0013\u0004\u0014",
    "\t\u0014\u0004\u0015\t\u0015\u0004\u0016\t\u0016\u0004\u0017\t\u0017",
    "\u0004\u0018\t\u0018\u0004\u0019\t\u0019\u0004\u001a\t\u001a\u0004\u001b",
    "\t\u001b\u0004\u001c\t\u001c\u0004\u001d\t\u001d\u0004\u001e\t\u001e",
    "\u0004\u001f\t\u001f\u0004 \t \u0004!\t!\u0004\"\t\"\u0004#\t#\u0004",
    "$\t$\u0004%\t%\u0004&\t&\u0004\'\t\'\u0004(\t(\u0004)\t)\u0004*\t*\u0004",
    "+\t+\u0004,\t,\u0004-\t-\u0004.\t.\u0004/\t/\u00040\t0\u00041\t1\u0004",
    "2\t2\u00043\t3\u00044\t4\u00045\t5\u00046\t6\u00047\t7\u00048\t8\u0004",
    "9\t9\u0004:\t:\u0004;\t;\u0004<\t<\u0004=\t=\u0004>\t>\u0004?\t?\u0004",
    "@\t@\u0004A\tA\u0004B\tB\u0004C\tC\u0004D\tD\u0004E\tE\u0004F\tF\u0004",
    "G\tG\u0004H\tH\u0004I\tI\u0004J\tJ\u0004K\tK\u0004L\tL\u0004M\tM\u0004",
    "N\tN\u0004O\tO\u0004P\tP\u0004Q\tQ\u0004R\tR\u0004S\tS\u0004T\tT\u0004",
    "U\tU\u0004V\tV\u0004W\tW\u0004X\tX\u0004Y\tY\u0004Z\tZ\u0004[\t[\u0004",
    "\\\t\\\u0004]\t]\u0004^\t^\u0004_\t_\u0004`\t`\u0004a\ta\u0004b\tb\u0004",
    "c\tc\u0004d\td\u0004e\te\u0004f\tf\u0004g\tg\u0004h\th\u0004i\ti\u0004",
    "j\tj\u0004k\tk\u0004l\tl\u0004m\tm\u0004n\tn\u0004o\to\u0004p\tp\u0004",
    "q\tq\u0004r\tr\u0004s\ts\u0004t\tt\u0004u\tu\u0004v\tv\u0004w\tw\u0004",
    "x\tx\u0004y\ty\u0004z\tz\u0004{\t{\u0004|\t|\u0004}\t}\u0004~\t~\u0004",
    "\u007f\t\u007f\u0004\u0080\t\u0080\u0004\u0081\t\u0081\u0004\u0082\t",
    "\u0082\u0004\u0083\t\u0083\u0004\u0084\t\u0084\u0004\u0085\t\u0085\u0004",
    "\u0086\t\u0086\u0004\u0087\t\u0087\u0004\u0088\t\u0088\u0004\u0089\t",
    "\u0089\u0004\u008a\t\u008a\u0004\u008b\t\u008b\u0004\u008c\t\u008c\u0004",
    "\u008d\t\u008d\u0004\u008e\t\u008e\u0004\u008f\t\u008f\u0004\u0090\t",
    "\u0090\u0004\u0091\t\u0091\u0004\u0092\t\u0092\u0004\u0093\t\u0093\u0004",
    "\u0094\t\u0094\u0004\u0095\t\u0095\u0004\u0096\t\u0096\u0004\u0097\t",
    "\u0097\u0004\u0098\t\u0098\u0004\u0099\t\u0099\u0004\u009a\t\u009a\u0004",
    "\u009b\t\u009b\u0004\u009c\t\u009c\u0004\u009d\t\u009d\u0004\u009e\t",
    "\u009e\u0004\u009f\t\u009f\u0004\u00a0\t\u00a0\u0004\u00a1\t\u00a1\u0004",
    "\u00a2\t\u00a2\u0004\u00a3\t\u00a3\u0004\u00a4\t\u00a4\u0004\u00a5\t",
    "\u00a5\u0004\u00a6\t\u00a6\u0004\u00a7\t\u00a7\u0004\u00a8\t\u00a8\u0004",
    "\u00a9\t\u00a9\u0004\u00aa\t\u00aa\u0004\u00ab\t\u00ab\u0004\u00ac\t",
    "\u00ac\u0004\u00ad\t\u00ad\u0004\u00ae\t\u00ae\u0004\u00af\t\u00af\u0004",
    "\u00b0\t\u00b0\u0004\u00b1\t\u00b1\u0004\u00b2\t\u00b2\u0004\u00b3\t",
    "\u00b3\u0004\u00b4\t\u00b4\u0004\u00b5\t\u00b5\u0003\u0002\u0003\u0002",
    "\u0003\u0002\u0003\u0002\u0007\u0002\u016f\n\u0002\f\u0002\u000e\u0002",
    "\u0172\u000b\u0002\u0003\u0003\u0003\u0003\u0003\u0003\u0003\u0003\u0005",
    "\u0003\u0178\n\u0003\u0003\u0003\u0003\u0003\u0003\u0004\u0003\u0004",
    "\u0003\u0004\u0007\u0004\u017f\n\u0004\f\u0004\u000e\u0004\u0182\u000b",
    "\u0004\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0006\u0003",
    "\u0006\u0003\u0007\u0003\u0007\u0003\u0007\u0006\u0007\u018d\n\u0007",
    "\r\u0007\u000e\u0007\u018e\u0003\b\u0003\b\u0003\b\u0003\t\u0003\t\u0003",
    "\n\u0003\n\u0003\n\u0003\n\u0007\n\u019a\n\n\f\n\u000e\n\u019d\u000b",
    "\n\u0003\n\u0003\n\u0003\u000b\u0003\u000b\u0003\u000b\u0003\u000b\u0007",
    "\u000b\u01a5\n\u000b\f\u000b\u000e\u000b\u01a8\u000b\u000b\u0003\u000b",
    "\u0003\u000b\u0003\f\u0003\f\u0003\f\u0003\f\u0003\f\u0005\f\u01b1\n",
    "\f\u0003\r\u0003\r\u0003\r\u0003\r\u0007\r\u01b7\n\r\f\r\u000e\r\u01ba",
    "\u000b\r\u0003\r\u0003\r\u0003\u000e\u0003\u000e\u0005\u000e\u01c0\n",
    "\u000e\u0003\u000f\u0003\u000f\u0003\u000f\u0003\u000f\u0007\u000f\u01c6",
    "\n\u000f\f\u000f\u000e\u000f\u01c9\u000b\u000f\u0003\u000f\u0003\u000f",
    "\u0003\u0010\u0003\u0010\u0003\u0011\u0003\u0011\u0003\u0011\u0005\u0011",
    "\u01d2\n\u0011\u0003\u0012\u0003\u0012\u0005\u0012\u01d6\n\u0012\u0003",
    "\u0013\u0003\u0013\u0003\u0013\u0005\u0013\u01db\n\u0013\u0003\u0014",
    "\u0003\u0014\u0005\u0014\u01df\n\u0014\u0003\u0015\u0003\u0015\u0003",
    "\u0015\u0005\u0015\u01e4\n\u0015\u0003\u0016\u0003\u0016\u0005\u0016",
    "\u01e8\n\u0016\u0003\u0017\u0003\u0017\u0003\u0017\u0006\u0017\u01ed",
    "\n\u0017\r\u0017\u000e\u0017\u01ee\u0003\u0017\u0003\u0017\u0003\u0018",
    "\u0003\u0018\u0003\u0018\u0005\u0018\u01f6\n\u0018\u0003\u0019\u0003",
    "\u0019\u0003\u0019\u0003\u0019\u0003\u0019\u0003\u001a\u0003\u001a\u0006",
    "\u001a\u01ff\n\u001a\r\u001a\u000e\u001a\u0200\u0003\u001a\u0003\u001a",
    "\u0003\u001b\u0003\u001b\u0003\u001b\u0003\u001b\u0005\u001b\u0209\n",
    "\u001b\u0005\u001b\u020b\n\u001b\u0003\u001b\u0005\u001b\u020e\n\u001b",
    "\u0003\u001b\u0005\u001b\u0211\n\u001b\u0003\u001b\u0003\u001b\u0005",
    "\u001b\u0215\n\u001b\u0003\u001c\u0003\u001c\u0003\u001c\u0003\u001c",
    "\u0005\u001c\u021b\n\u001c\u0003\u001c\u0003\u001c\u0003\u001d\u0003",
    "\u001d\u0006\u001d\u0221\n\u001d\r\u001d\u000e\u001d\u0222\u0003\u001d",
    "\u0003\u001d\u0003\u001e\u0003\u001e\u0005\u001e\u0229\n\u001e\u0003",
    "\u001e\u0003\u001e\u0003\u001e\u0005\u001e\u022e\n\u001e\u0003\u001e",
    "\u0005\u001e\u0231\n\u001e\u0005\u001e\u0233\n\u001e\u0003\u001f\u0003",
    "\u001f\u0003 \u0003 \u0003 \u0003 \u0003 \u0003 \u0006 \u023d\n \r ",
    "\u000e \u023e\u0003 \u0003 \u0003!\u0005!\u0244\n!\u0003!\u0003!\u0003",
    "!\u0005!\u0249\n!\u0003\"\u0007\"\u024c\n\"\f\"\u000e\"\u024f\u000b",
    "\"\u0003\"\u0003\"\u0003\"\u0003\"\u0003#\u0003#\u0005#\u0257\n#\u0003",
    "$\u0007$\u025a\n$\f$\u000e$\u025d\u000b$\u0003$\u0003$\u0003$\u0005",
    "$\u0262\n$\u0003$\u0003$\u0003$\u0003$\u0003$\u0003$\u0003$\u0006$\u026b",
    "\n$\r$\u000e$\u026c\u0003$\u0005$\u0270\n$\u0003%\u0003%\u0003&\u0003",
    "&\u0003&\u0003\'\u0003\'\u0007\'\u0279\n\'\f\'\u000e\'\u027c\u000b\'",
    "\u0003(\u0003(\u0005(\u0280\n(\u0003(\u0005(\u0283\n(\u0003)\u0003)",
    "\u0003)\u0003*\u0003*\u0003*\u0003*\u0005*\u028c\n*\u0006*\u028e\n*",
    "\r*\u000e*\u028f\u0003*\u0003*\u0003+\u0003+\u0003+\u0005+\u0297\n+",
    "\u0003,\u0007,\u029a\n,\f,\u000e,\u029d\u000b,\u0003,\u0003,\u0003,",
    "\u0003,\u0006,\u02a3\n,\r,\u000e,\u02a4\u0003,\u0003,\u0003-\u0003-",
    "\u0003-\u0003-\u0003-\u0003-\u0003.\u0003.\u0003.\u0003.\u0003/\u0003",
    "/\u0003/\u0003/\u0003/\u0005/\u02b8\n/\u0003/\u0005/\u02bb\n/\u0003",
    "0\u00030\u00030\u00030\u00070\u02c1\n0\f0\u000e0\u02c4\u000b0\u0003",
    "1\u00031\u00031\u00031\u00031\u00031\u00031\u00031\u00031\u00071\u02cf",
    "\n1\f1\u000e1\u02d2\u000b1\u00051\u02d4\n1\u00031\u00051\u02d7\n1\u0003",
    "2\u00032\u00032\u00032\u00032\u00032\u00052\u02df\n2\u00032\u00032\u0003",
    "3\u00033\u00034\u00034\u00034\u00054\u02e8\n4\u00035\u00035\u00065\u02ec",
    "\n5\r5\u000e5\u02ed\u00055\u02f0\n5\u00036\u00036\u00036\u00076\u02f5",
    "\n6\f6\u000e6\u02f8\u000b6\u00037\u00037\u00037\u00038\u00038\u0003",
    "9\u00039\u0003:\u0003:\u0006:\u0303\n:\r:\u000e:\u0304\u0003:\u0003",
    ":\u0003:\u0003:\u0005:\u030b\n:\u0005:\u030d\n:\u0003;\u0003;\u0003",
    ";\u0003;\u0007;\u0313\n;\f;\u000e;\u0316\u000b;\u0003;\u0003;\u0003",
    "<\u0003<\u0003<\u0003<\u0005<\u031e\n<\u0003<\u0003<\u0005<\u0322\n",
    "<\u0003=\u0003=\u0003=\u0003=\u0003=\u0007=\u0329\n=\f=\u000e=\u032c",
    "\u000b=\u0003=\u0003=\u0003>\u0003>\u0005>\u0332\n>\u0003>\u0003>\u0003",
    ">\u0007>\u0337\n>\f>\u000e>\u033a\u000b>\u0003>\u0003>\u0003?\u0003",
    "?\u0007?\u0340\n?\f?\u000e?\u0343\u000b?\u0003@\u0003@\u0003@\u0003",
    "@\u0003@\u0007@\u034a\n@\f@\u000e@\u034d\u000b@\u0003@\u0003@\u0003",
    "A\u0003A\u0003B\u0003B\u0003B\u0003B\u0006B\u0357\nB\rB\u000eB\u0358",
    "\u0003B\u0003B\u0003C\u0006C\u035e\nC\rC\u000eC\u035f\u0003D\u0005D",
    "\u0363\nD\u0003D\u0003D\u0003D\u0006D\u0368\nD\rD\u000eD\u0369\u0003",
    "D\u0003D\u0003E\u0003E\u0003E\u0003E\u0006E\u0372\nE\rE\u000eE\u0373",
    "\u0003E\u0003E\u0003F\u0003F\u0003F\u0003F\u0003F\u0005F\u037d\nF\u0003",
    "F\u0005F\u0380\nF\u0003G\u0003G\u0003G\u0003H\u0003H\u0005H\u0387\n",
    "H\u0003I\u0003I\u0003I\u0007I\u038c\nI\fI\u000eI\u038f\u000bI\u0003",
    "J\u0003J\u0003J\u0003J\u0003K\u0003K\u0003K\u0003K\u0003K\u0003K\u0003",
    "K\u0003K\u0003K\u0005K\u039e\nK\u0003K\u0005K\u03a1\nK\u0003L\u0003",
    "L\u0005L\u03a5\nL\u0003L\u0005L\u03a8\nL\u0003L\u0005L\u03ab\nL\u0003",
    "L\u0003L\u0003L\u0006L\u03b0\nL\rL\u000eL\u03b1\u0003L\u0003L\u0003",
    "M\u0003M\u0003N\u0003N\u0003N\u0005N\u03bb\nN\u0003N\u0005N\u03be\n",
    "N\u0003N\u0005N\u03c1\nN\u0003N\u0003N\u0003N\u0003N\u0006N\u03c7\n",
    "N\rN\u000eN\u03c8\u0003N\u0003N\u0005N\u03cd\nN\u0005N\u03cf\nN\u0003",
    "O\u0003O\u0005O\u03d3\nO\u0003O\u0003O\u0003O\u0003O\u0006O\u03d9\n",
    "O\rO\u000eO\u03da\u0003O\u0003O\u0003P\u0003P\u0003P\u0003P\u0005P\u03e3",
    "\nP\u0003Q\u0003Q\u0003Q\u0003Q\u0007Q\u03e9\nQ\fQ\u000eQ\u03ec\u000b",
    "Q\u0003R\u0003R\u0003R\u0003R\u0003S\u0003S\u0003S\u0003S\u0003S\u0005",
    "S\u03f7\nS\u0003T\u0003T\u0006T\u03fb\nT\rT\u000eT\u03fc\u0003T\u0005",
    "T\u0400\nT\u0003U\u0003U\u0003U\u0003V\u0003V\u0003W\u0003W\u0003X\u0003",
    "X\u0003X\u0003X\u0003X\u0003X\u0003Y\u0003Y\u0003Z\u0003Z\u0003Z\u0003",
    "Z\u0005Z\u0415\nZ\u0003Z\u0003Z\u0003[\u0003[\u0003[\u0003[\u0003[\u0006",
    "[\u041e\n[\r[\u000e[\u041f\u0003[\u0003[\u0005[\u0424\n[\u0003\\\u0003",
    "\\\u0003\\\u0005\\\u0429\n\\\u0003\\\u0005\\\u042c\n\\\u0003\\\u0003",
    "\\\u0003\\\u0003\\\u0006\\\u0432\n\\\r\\\u000e\\\u0433\u0003\\\u0003",
    "\\\u0005\\\u0438\n\\\u0003]\u0003]\u0003]\u0003]\u0005]\u043e\n]\u0003",
    "]\u0003]\u0003]\u0003]\u0006]\u0444\n]\r]\u000e]\u0445\u0003]\u0003",
    "]\u0005]\u044a\n]\u0003^\u0003^\u0005^\u044e\n^\u0003_\u0003_\u0003",
    "`\u0003`\u0005`\u0454\n`\u0003`\u0003`\u0003a\u0003a\u0003b\u0003b\u0003",
    "b\u0007b\u045d\nb\fb\u000eb\u0460\u000bb\u0003c\u0003c\u0003c\u0005",
    "c\u0465\nc\u0003c\u0003c\u0003d\u0003d\u0005d\u046b\nd\u0003e\u0003",
    "e\u0003e\u0007e\u0470\ne\fe\u000ee\u0473\u000be\u0003f\u0003f\u0003",
    "f\u0003f\u0003f\u0005f\u047a\nf\u0003f\u0003f\u0003f\u0003f\u0003f\u0003",
    "f\u0003g\u0003g\u0003g\u0005g\u0485\ng\u0003g\u0003g\u0003g\u0003h\u0003",
    "h\u0003h\u0003i\u0003i\u0005i\u048f\ni\u0003j\u0003j\u0003j\u0003j\u0003",
    "j\u0005j\u0496\nj\u0003j\u0003j\u0003j\u0003k\u0003k\u0003l\u0003l\u0003",
    "l\u0005l\u04a0\nl\u0003l\u0003l\u0003l\u0003m\u0003m\u0003m\u0003m\u0003",
    "m\u0003n\u0003n\u0003o\u0003o\u0003p\u0003p\u0003q\u0005q\u04b1\nq\u0003",
    "q\u0003q\u0003r\u0005r\u04b6\nr\u0003r\u0003r\u0005r\u04ba\nr\u0003",
    "r\u0003r\u0003r\u0005r\u04bf\nr\u0003s\u0003s\u0003s\u0003s\u0005s\u04c5",
    "\ns\u0003t\u0003t\u0003t\u0003t\u0007t\u04cb\nt\ft\u000et\u04ce\u000b",
    "t\u0003t\u0003t\u0003u\u0005u\u04d3\nu\u0003u\u0003u\u0005u\u04d7\n",
    "u\u0003u\u0003u\u0003u\u0003v\u0003v\u0003v\u0003v\u0003v\u0003v\u0003",
    "v\u0003v\u0003v\u0003v\u0003v\u0005v\u04e7\nv\u0003w\u0003w\u0003x\u0003",
    "x\u0003x\u0007x\u04ee\nx\fx\u000ex\u04f1\u000bx\u0003y\u0003y\u0003",
    "y\u0003y\u0003z\u0003z\u0003{\u0003{\u0003{\u0003{\u0003{\u0003{\u0003",
    "{\u0003{\u0003{\u0003{\u0003{\u0005{\u0504\n{\u0003|\u0003|\u0003|\u0003",
    "|\u0005|\u050a\n|\u0003}\u0003}\u0003~\u0003~\u0003~\u0003~\u0003\u007f",
    "\u0003\u007f\u0003\u007f\u0003\u007f\u0003\u0080\u0003\u0080\u0003\u0080",
    "\u0003\u0080\u0003\u0080\u0003\u0080\u0003\u0080\u0003\u0080\u0005\u0080",
    "\u051e\n\u0080\u0003\u0081\u0003\u0081\u0007\u0081\u0522\n\u0081\f\u0081",
    "\u000e\u0081\u0525\u000b\u0081\u0003\u0082\u0003\u0082\u0003\u0082\u0003",
    "\u0083\u0003\u0083\u0005\u0083\u052c\n\u0083\u0003\u0084\u0005\u0084",
    "\u052f\n\u0084\u0003\u0084\u0003\u0084\u0003\u0085\u0003\u0085\u0003",
    "\u0085\u0003\u0086\u0003\u0086\u0007\u0086\u0538\n\u0086\f\u0086\u000e",
    "\u0086\u053b\u000b\u0086\u0003\u0087\u0003\u0087\u0003\u0087\u0003\u0088",
    "\u0003\u0088\u0007\u0088\u0542\n\u0088\f\u0088\u000e\u0088\u0545\u000b",
    "\u0088\u0003\u0089\u0003\u0089\u0003\u008a\u0003\u008a\u0003\u008a\u0003",
    "\u008a\u0007\u008a\u054d\n\u008a\f\u008a\u000e\u008a\u0550\u000b\u008a",
    "\u0003\u008b\u0003\u008b\u0003\u008b\u0007\u008b\u0555\n\u008b\f\u008b",
    "\u000e\u008b\u0558\u000b\u008b\u0003\u008c\u0003\u008c\u0003\u008c\u0007",
    "\u008c\u055d\n\u008c\f\u008c\u000e\u008c\u0560\u000b\u008c\u0003\u008d",
    "\u0003\u008d\u0003\u008d\u0007\u008d\u0565\n\u008d\f\u008d\u000e\u008d",
    "\u0568\u000b\u008d\u0003\u008e\u0003\u008e\u0003\u008e\u0007\u008e\u056d",
    "\n\u008e\f\u008e\u000e\u008e\u0570\u000b\u008e\u0003\u008f\u0003\u008f",
    "\u0003\u008f\u0007\u008f\u0575\n\u008f\f\u008f\u000e\u008f\u0578\u000b",
    "\u008f\u0003\u0090\u0003\u0090\u0003\u0090\u0007\u0090\u057d\n\u0090",
    "\f\u0090\u000e\u0090\u0580\u000b\u0090\u0003\u0091\u0003\u0091\u0003",
    "\u0091\u0007\u0091\u0585\n\u0091\f\u0091\u000e\u0091\u0588\u000b\u0091",
    "\u0003\u0092\u0003\u0092\u0005\u0092\u058c\n\u0092\u0003\u0092\u0003",
    "\u0092\u0003\u0092\u0003\u0092\u0003\u0092\u0003\u0093\u0003\u0093\u0003",
    "\u0093\u0003\u0094\u0003\u0094\u0003\u0095\u0003\u0095\u0003\u0095\u0007",
    "\u0095\u059b\n\u0095\f\u0095\u000e\u0095\u059e\u000b\u0095\u0003\u0096",
    "\u0003\u0096\u0003\u0096\u0003\u0096\u0003\u0096\u0005\u0096\u05a5\n",
    "\u0096\u0003\u0097\u0003\u0097\u0003\u0097\u0003\u0097\u0005\u0097\u05ab",
    "\n\u0097\u0003\u0098\u0003\u0098\u0003\u0098\u0003\u0099\u0005\u0099",
    "\u05b1\n\u0099\u0003\u0099\u0003\u0099\u0003\u0099\u0003\u0099\u0006",
    "\u0099\u05b7\n\u0099\r\u0099\u000e\u0099\u05b8\u0003\u0099\u0005\u0099",
    "\u05bc\n\u0099\u0003\u0099\u0003\u0099\u0003\u009a\u0003\u009a\u0003",
    "\u009a\u0003\u009a\u0003\u009a\u0005\u009a\u05c5\n\u009a\u0003\u009b",
    "\u0003\u009b\u0003\u009b\u0003\u009b\u0005\u009b\u05cb\n\u009b\u0003",
    "\u009c\u0003\u009c\u0003\u009c\u0003\u009c\u0003\u009c\u0003\u009c\u0003",
    "\u009c\u0005\u009c\u05d4\n\u009c\u0003\u009d\u0003\u009d\u0003\u009d",
    "\u0003\u009d\u0003\u009e\u0003\u009e\u0003\u009e\u0003\u009e\u0003\u009e",
    "\u0003\u009f\u0003\u009f\u0003\u009f\u0003\u009f\u0003\u009f\u0003\u00a0",
    "\u0003\u00a0\u0003\u00a1\u0003\u00a1\u0003\u00a2\u0003\u00a2\u0003\u00a2",
    "\u0003\u00a2\u0003\u00a2\u0003\u00a2\u0003\u00a2\u0003\u00a2\u0003\u00a2",
    "\u0005\u00a2\u05f1\n\u00a2\u0003\u00a2\u0003\u00a2\u0005\u00a2\u05f5",
    "\n\u00a2\u0003\u00a3\u0003\u00a3\u0003\u00a3\u0003\u00a3\u0003\u00a3",
    "\u0003\u00a4\u0003\u00a4\u0003\u00a4\u0005\u00a4\u05ff\n\u00a4\u0003",
    "\u00a5\u0003\u00a5\u0003\u00a5\u0005\u00a5\u0604\n\u00a5\u0003\u00a6",
    "\u0003\u00a6\u0005\u00a6\u0608\n\u00a6\u0003\u00a7\u0003\u00a7\u0003",
    "\u00a8\u0003\u00a8\u0003\u00a9\u0005\u00a9\u060f\n\u00a9\u0003\u00a9",
    "\u0003\u00a9\u0003\u00a9\u0003\u00a9\u0003\u00a9\u0005\u00a9\u0616\n",
    "\u00a9\u0003\u00a9\u0003\u00a9\u0005\u00a9\u061a\n\u00a9\u0003\u00a9",
    "\u0003\u00a9\u0003\u00a9\u0003\u00a9\u0006\u00a9\u0620\n\u00a9\r\u00a9",
    "\u000e\u00a9\u0621\u0003\u00a9\u0003\u00a9\u0003\u00a9\u0003\u00a9\u0003",
    "\u00aa\u0003\u00aa\u0003\u00aa\u0003\u00aa\u0003\u00ab\u0003\u00ab\u0003",
    "\u00ab\u0003\u00ab\u0005\u00ab\u0630\n\u00ab\u0003\u00ac\u0003\u00ac",
    "\u0003\u00ac\u0007\u00ac\u0635\n\u00ac\f\u00ac\u000e\u00ac\u0638\u000b",
    "\u00ac\u0003\u00ad\u0003\u00ad\u0003\u00ae\u0003\u00ae\u0003\u00ae\u0003",
    "\u00ae\u0003\u00ae\u0003\u00ae\u0003\u00ae\u0005\u00ae\u0643\n\u00ae",
    "\u0003\u00ae\u0005\u00ae\u0646\n\u00ae\u0003\u00ae\u0003\u00ae\u0003",
    "\u00ae\u0003\u00ae\u0003\u00ae\u0005\u00ae\u064d\n\u00ae\u0003\u00af",
    "\u0003\u00af\u0003\u00af\u0005\u00af\u0652\n\u00af\u0003\u00af\u0003",
    "\u00af\u0003\u00af\u0007\u00af\u0657\n\u00af\f\u00af\u000e\u00af\u065a",
    "\u000b\u00af\u0003\u00af\u0003\u00af\u0005\u00af\u065e\n\u00af\u0003",
    "\u00af\u0003\u00af\u0003\u00b0\u0003\u00b0\u0003\u00b0\u0003\u00b0\u0003",
    "\u00b0\u0003\u00b0\u0003\u00b0\u0003\u00b0\u0003\u00b0\u0003\u00b0\u0003",
    "\u00b0\u0003\u00b0\u0003\u00b0\u0003\u00b0\u0003\u00b0\u0003\u00b0\u0006",
    "\u00b0\u0672\n\u00b0\r\u00b0\u000e\u00b0\u0673\u0003\u00b0\u0003\u00b0",
    "\u0005\u00b0\u0678\n\u00b0\u0003\u00b1\u0007\u00b1\u067b\n\u00b1\f\u00b1",
    "\u000e\u00b1\u067e\u000b\u00b1\u0003\u00b1\u0003\u00b1\u0003\u00b1\u0003",
    "\u00b1\u0003\u00b2\u0005\u00b2\u0685\n\u00b2\u0003\u00b2\u0003\u00b2",
    "\u0003\u00b2\u0007\u00b2\u068a\n\u00b2\f\u00b2\u000e\u00b2\u068d\u000b",
    "\u00b2\u0003\u00b3\u0003\u00b3\u0007\u00b3\u0691\n\u00b3\f\u00b3\u000e",
    "\u00b3\u0694\u000b\u00b3\u0003\u00b4\u0006\u00b4\u0697\n\u00b4\r\u00b4",
    "\u000e\u00b4\u0698\u0003\u00b5\u0005\u00b5\u069c\n\u00b5\u0003\u00b5",
    "\u0006\u00b5\u069f\n\u00b5\r\u00b5\u000e\u00b5\u06a0\u0003\u00b5\u0003",
    "\u00b5\u0003\u00b5\u0002\u0002\u00b6\u0002\u0004\u0006\b\n\f\u000e\u0010",
    "\u0012\u0014\u0016\u0018\u001a\u001c\u001e \"$&(*,.02468:<>@BDFHJLN",
    "PRTVXZ\\^`bdfhjlnprtvxz|~\u0080\u0082\u0084\u0086\u0088\u008a\u008c",
    "\u008e\u0090\u0092\u0094\u0096\u0098\u009a\u009c\u009e\u00a0\u00a2\u00a4",
    "\u00a6\u00a8\u00aa\u00ac\u00ae\u00b0\u00b2\u00b4\u00b6\u00b8\u00ba\u00bc",
    "\u00be\u00c0\u00c2\u00c4\u00c6\u00c8\u00ca\u00cc\u00ce\u00d0\u00d2\u00d4",
    "\u00d6\u00d8\u00da\u00dc\u00de\u00e0\u00e2\u00e4\u00e6\u00e8\u00ea\u00ec",
    "\u00ee\u00f0\u00f2\u00f4\u00f6\u00f8\u00fa\u00fc\u00fe\u0100\u0102\u0104",
    "\u0106\u0108\u010a\u010c\u010e\u0110\u0112\u0114\u0116\u0118\u011a\u011c",
    "\u011e\u0120\u0122\u0124\u0126\u0128\u012a\u012c\u012e\u0130\u0132\u0134",
    "\u0136\u0138\u013a\u013c\u013e\u0140\u0142\u0144\u0146\u0148\u014a\u014c",
    "\u014e\u0150\u0152\u0154\u0156\u0158\u015a\u015c\u015e\u0160\u0162\u0164",
    "\u0166\u0168\u0002\u0014\u0004\u0002>?\u008c\u008c\u0004\u0002++\u008d",
    "\u008d\u0003\u0002\b\t\u0004\u0002\b\t\u000b\u000b\u0004\u0002\u0010",
    "\u0012\u0014\u0016\u0004\u0002;;>?\u0004\u0002uw\u0087\u008a\u0004\u0002",
    "WW\u008d\u008d\u0005\u0002\u0005\u0005\u0086\u0086\u008c\u008c\u0003",
    "\u0002{|\u0004\u0002\u0082\u0082\u0084\u0084\u0003\u0002yz\u0004\u0002",
    "KK\u008c\u008d\u0005\u0002``ccef\u0004\u0002abnn\u0004\u0002``cc\u0004",
    "\u0002NORS\u0004\u0002jjll\u0002\u06e8\u0002\u016a\u0003\u0002\u0002",
    "\u0002\u0004\u0173\u0003\u0002\u0002\u0002\u0006\u017b\u0003\u0002\u0002",
    "\u0002\b\u0183\u0003\u0002\u0002\u0002\n\u0187\u0003\u0002\u0002\u0002",
    "\f\u0189\u0003\u0002\u0002\u0002\u000e\u0190\u0003\u0002\u0002\u0002",
    "\u0010\u0193\u0003\u0002\u0002\u0002\u0012\u0195\u0003\u0002\u0002\u0002",
    "\u0014\u01a0\u0003\u0002\u0002\u0002\u0016\u01ab\u0003\u0002\u0002\u0002",
    "\u0018\u01b2\u0003\u0002\u0002\u0002\u001a\u01bf\u0003\u0002\u0002\u0002",
    "\u001c\u01c1\u0003\u0002\u0002\u0002\u001e\u01cc\u0003\u0002\u0002\u0002",
    " \u01d1\u0003\u0002\u0002\u0002\"\u01d5\u0003\u0002\u0002\u0002$\u01d7",
    "\u0003\u0002\u0002\u0002&\u01de\u0003\u0002\u0002\u0002(\u01e0\u0003",
    "\u0002\u0002\u0002*\u01e7\u0003\u0002\u0002\u0002,\u01e9\u0003\u0002",
    "\u0002\u0002.\u01f5\u0003\u0002\u0002\u00020\u01f7\u0003\u0002\u0002",
    "\u00022\u01fc\u0003\u0002\u0002\u00024\u020a\u0003\u0002\u0002\u0002",
    "6\u0216\u0003\u0002\u0002\u00028\u021e\u0003\u0002\u0002\u0002:\u0226",
    "\u0003\u0002\u0002\u0002<\u0234\u0003\u0002\u0002\u0002>\u0236\u0003",
    "\u0002\u0002\u0002@\u0243\u0003\u0002\u0002\u0002B\u024d\u0003\u0002",
    "\u0002\u0002D\u0256\u0003\u0002\u0002\u0002F\u025b\u0003\u0002\u0002",
    "\u0002H\u0271\u0003\u0002\u0002\u0002J\u0273\u0003\u0002\u0002\u0002",
    "L\u0276\u0003\u0002\u0002\u0002N\u027d\u0003\u0002\u0002\u0002P\u0284",
    "\u0003\u0002\u0002\u0002R\u0287\u0003\u0002\u0002\u0002T\u0293\u0003",
    "\u0002\u0002\u0002V\u029b\u0003\u0002\u0002\u0002X\u02a8\u0003\u0002",
    "\u0002\u0002Z\u02ae\u0003\u0002\u0002\u0002\\\u02b2\u0003\u0002\u0002",
    "\u0002^\u02bc\u0003\u0002\u0002\u0002`\u02d6\u0003\u0002\u0002\u0002",
    "b\u02d8\u0003\u0002\u0002\u0002d\u02e2\u0003\u0002\u0002\u0002f\u02e4",
    "\u0003\u0002\u0002\u0002h\u02ef\u0003\u0002\u0002\u0002j\u02f1\u0003",
    "\u0002\u0002\u0002l\u02f9\u0003\u0002\u0002\u0002n\u02fc\u0003\u0002",
    "\u0002\u0002p\u02fe\u0003\u0002\u0002\u0002r\u030c\u0003\u0002\u0002",
    "\u0002t\u030e\u0003\u0002\u0002\u0002v\u031d\u0003\u0002\u0002\u0002",
    "x\u0323\u0003\u0002\u0002\u0002z\u032f\u0003\u0002\u0002\u0002|\u033d",
    "\u0003\u0002\u0002\u0002~\u0344\u0003\u0002\u0002\u0002\u0080\u0350",
    "\u0003\u0002\u0002\u0002\u0082\u0352\u0003\u0002\u0002\u0002\u0084\u035d",
    "\u0003\u0002\u0002\u0002\u0086\u0362\u0003\u0002\u0002\u0002\u0088\u036d",
    "\u0003\u0002\u0002\u0002\u008a\u037f\u0003\u0002\u0002\u0002\u008c\u0381",
    "\u0003\u0002\u0002\u0002\u008e\u0386\u0003\u0002\u0002\u0002\u0090\u0388",
    "\u0003\u0002\u0002\u0002\u0092\u0390\u0003\u0002\u0002\u0002\u0094\u039d",
    "\u0003\u0002\u0002\u0002\u0096\u03a2\u0003\u0002\u0002\u0002\u0098\u03b5",
    "\u0003\u0002\u0002\u0002\u009a\u03ce\u0003\u0002\u0002\u0002\u009c\u03d0",
    "\u0003\u0002\u0002\u0002\u009e\u03de\u0003\u0002\u0002\u0002\u00a0\u03e4",
    "\u0003\u0002\u0002\u0002\u00a2\u03ed\u0003\u0002\u0002\u0002\u00a4\u03f6",
    "\u0003\u0002\u0002\u0002\u00a6\u03fa\u0003\u0002\u0002\u0002\u00a8\u0401",
    "\u0003\u0002\u0002\u0002\u00aa\u0404\u0003\u0002\u0002\u0002\u00ac\u0406",
    "\u0003\u0002\u0002\u0002\u00ae\u0408\u0003\u0002\u0002\u0002\u00b0\u040e",
    "\u0003\u0002\u0002\u0002\u00b2\u0414\u0003\u0002\u0002\u0002\u00b4\u0418",
    "\u0003\u0002\u0002\u0002\u00b6\u0425\u0003\u0002\u0002\u0002\u00b8\u0439",
    "\u0003\u0002\u0002\u0002\u00ba\u044d\u0003\u0002\u0002\u0002\u00bc\u044f",
    "\u0003\u0002\u0002\u0002\u00be\u0451\u0003\u0002\u0002\u0002\u00c0\u0457",
    "\u0003\u0002\u0002\u0002\u00c2\u0459\u0003\u0002\u0002\u0002\u00c4\u0461",
    "\u0003\u0002\u0002\u0002\u00c6\u0468\u0003\u0002\u0002\u0002\u00c8\u046c",
    "\u0003\u0002\u0002\u0002\u00ca\u0474\u0003\u0002\u0002\u0002\u00cc\u0481",
    "\u0003\u0002\u0002\u0002\u00ce\u0489\u0003\u0002\u0002\u0002\u00d0\u048e",
    "\u0003\u0002\u0002\u0002\u00d2\u0490\u0003\u0002\u0002\u0002\u00d4\u049a",
    "\u0003\u0002\u0002\u0002\u00d6\u049c\u0003\u0002\u0002\u0002\u00d8\u04a4",
    "\u0003\u0002\u0002\u0002\u00da\u04a9\u0003\u0002\u0002\u0002\u00dc\u04ab",
    "\u0003\u0002\u0002\u0002\u00de\u04ad\u0003\u0002\u0002\u0002\u00e0\u04b0",
    "\u0003\u0002\u0002\u0002\u00e2\u04b5\u0003\u0002\u0002\u0002\u00e4\u04c4",
    "\u0003\u0002\u0002\u0002\u00e6\u04c6\u0003\u0002\u0002\u0002\u00e8\u04d2",
    "\u0003\u0002\u0002\u0002\u00ea\u04e6\u0003\u0002\u0002\u0002\u00ec\u04e8",
    "\u0003\u0002\u0002\u0002\u00ee\u04ea\u0003\u0002\u0002\u0002\u00f0\u04f2",
    "\u0003\u0002\u0002\u0002\u00f2\u04f6\u0003\u0002\u0002\u0002\u00f4\u04f8",
    "\u0003\u0002\u0002\u0002\u00f6\u0509\u0003\u0002\u0002\u0002\u00f8\u050b",
    "\u0003\u0002\u0002\u0002\u00fa\u050d\u0003\u0002\u0002\u0002\u00fc\u0511",
    "\u0003\u0002\u0002\u0002\u00fe\u051d\u0003\u0002\u0002\u0002\u0100\u051f",
    "\u0003\u0002\u0002\u0002\u0102\u0526\u0003\u0002\u0002\u0002\u0104\u0529",
    "\u0003\u0002\u0002\u0002\u0106\u052e\u0003\u0002\u0002\u0002\u0108\u0532",
    "\u0003\u0002\u0002\u0002\u010a\u0535\u0003\u0002\u0002\u0002\u010c\u053c",
    "\u0003\u0002\u0002\u0002\u010e\u053f\u0003\u0002\u0002\u0002\u0110\u0546",
    "\u0003\u0002\u0002\u0002\u0112\u0548\u0003\u0002\u0002\u0002\u0114\u0551",
    "\u0003\u0002\u0002\u0002\u0116\u0559\u0003\u0002\u0002\u0002\u0118\u0561",
    "\u0003\u0002\u0002\u0002\u011a\u0569\u0003\u0002\u0002\u0002\u011c\u0571",
    "\u0003\u0002\u0002\u0002\u011e\u0579\u0003\u0002\u0002\u0002\u0120\u0581",
    "\u0003\u0002\u0002\u0002\u0122\u0589\u0003\u0002\u0002\u0002\u0124\u0592",
    "\u0003\u0002\u0002\u0002\u0126\u0595\u0003\u0002\u0002\u0002\u0128\u0597",
    "\u0003\u0002\u0002\u0002\u012a\u059f\u0003\u0002\u0002\u0002\u012c\u05a6",
    "\u0003\u0002\u0002\u0002\u012e\u05ac\u0003\u0002\u0002\u0002\u0130\u05b0",
    "\u0003\u0002\u0002\u0002\u0132\u05bf\u0003\u0002\u0002\u0002\u0134\u05ca",
    "\u0003\u0002\u0002\u0002\u0136\u05cc\u0003\u0002\u0002\u0002\u0138\u05d5",
    "\u0003\u0002\u0002\u0002\u013a\u05d9\u0003\u0002\u0002\u0002\u013c\u05de",
    "\u0003\u0002\u0002\u0002\u013e\u05e3\u0003\u0002\u0002\u0002\u0140\u05e5",
    "\u0003\u0002\u0002\u0002\u0142\u05f0\u0003\u0002\u0002\u0002\u0144\u05f6",
    "\u0003\u0002\u0002\u0002\u0146\u05fe\u0003\u0002\u0002\u0002\u0148\u0603",
    "\u0003\u0002\u0002\u0002\u014a\u0605\u0003\u0002\u0002\u0002\u014c\u0609",
    "\u0003\u0002\u0002\u0002\u014e\u060b\u0003\u0002\u0002\u0002\u0150\u060e",
    "\u0003\u0002\u0002\u0002\u0152\u0627\u0003\u0002\u0002\u0002\u0154\u062b",
    "\u0003\u0002\u0002\u0002\u0156\u0631\u0003\u0002\u0002\u0002\u0158\u0639",
    "\u0003\u0002\u0002\u0002\u015a\u063b\u0003\u0002\u0002\u0002\u015c\u064e",
    "\u0003\u0002\u0002\u0002\u015e\u0661\u0003\u0002\u0002\u0002\u0160\u067c",
    "\u0003\u0002\u0002\u0002\u0162\u0684\u0003\u0002\u0002\u0002\u0164\u068e",
    "\u0003\u0002\u0002\u0002\u0166\u0696\u0003\u0002\u0002\u0002\u0168\u069b",
    "\u0003\u0002\u0002\u0002\u016a\u016b\u0007&\u0002\u0002\u016b\u0170",
    "\u0007?\u0002\u0002\u016c\u016d\u0007$\u0002\u0002\u016d\u016f\u0007",
    "?\u0002\u0002\u016e\u016c\u0003\u0002\u0002\u0002\u016f\u0172\u0003",
    "\u0002\u0002\u0002\u0170\u016e\u0003\u0002\u0002\u0002\u0170\u0171\u0003",
    "\u0002\u0002\u0002\u0171\u0003\u0003\u0002\u0002\u0002\u0172\u0170\u0003",
    "\u0002\u0002\u0002\u0173\u0174\u00073\u0002\u0002\u0174\u0177\u0007",
    ":\u0002\u0002\u0175\u0176\u0007+\u0002\u0002\u0176\u0178\u0007:\u0002",
    "\u0002\u0177\u0175\u0003\u0002\u0002\u0002\u0177\u0178\u0003\u0002\u0002",
    "\u0002\u0178\u0179\u0003\u0002\u0002\u0002\u0179\u017a\u00074\u0002",
    "\u0002\u017a\u0005\u0003\u0002\u0002\u0002\u017b\u0180\u0005\u0002\u0002",
    "\u0002\u017c\u017d\u0007\'\u0002\u0002\u017d\u017f\u0005\u0002\u0002",
    "\u0002\u017e\u017c\u0003\u0002\u0002\u0002\u017f\u0182\u0003\u0002\u0002",
    "\u0002\u0180\u017e\u0003\u0002\u0002\u0002\u0180\u0181\u0003\u0002\u0002",
    "\u0002\u0181\u0007\u0003\u0002\u0002\u0002\u0182\u0180\u0003\u0002\u0002",
    "\u0002\u0183\u0184\u0007/\u0002\u0002\u0184\u0185\u0005\u0006\u0004",
    "\u0002\u0185\u0186\u00070\u0002\u0002\u0186\t\u0003\u0002\u0002\u0002",
    "\u0187\u0188\t\u0002\u0002\u0002\u0188\u000b\u0003\u0002\u0002\u0002",
    "\u0189\u018c\u0005L\'\u0002\u018a\u018b\t\u0003\u0002\u0002\u018b\u018d",
    "\u0005\n\u0006\u0002\u018c\u018a\u0003\u0002\u0002\u0002\u018d\u018e",
    "\u0003\u0002\u0002\u0002\u018e\u018c\u0003\u0002\u0002\u0002\u018e\u018f",
    "\u0003\u0002\u0002\u0002\u018f\r\u0003\u0002\u0002\u0002\u0190\u0191",
    "\u00077\u0002\u0002\u0191\u0192\u0007F\u0002\u0002\u0192\u000f\u0003",
    "\u0002\u0002\u0002\u0193\u0194\u0007;\u0002\u0002\u0194\u0011\u0003",
    "\u0002\u0002\u0002\u0195\u0196\u0007/\u0002\u0002\u0196\u019b\u0005",
    "\u0010\t\u0002\u0197\u0198\u0007\'\u0002\u0002\u0198\u019a\u0005\u0010",
    "\t\u0002\u0199\u0197\u0003\u0002\u0002\u0002\u019a\u019d\u0003\u0002",
    "\u0002\u0002\u019b\u0199\u0003\u0002\u0002\u0002\u019b\u019c\u0003\u0002",
    "\u0002\u0002\u019c\u019e\u0003\u0002\u0002\u0002\u019d\u019b\u0003\u0002",
    "\u0002\u0002\u019e\u019f\u00070\u0002\u0002\u019f\u0013\u0003\u0002",
    "\u0002\u0002\u01a0\u01a1\u0007/\u0002\u0002\u01a1\u01a6\u0005\u0012",
    "\n\u0002\u01a2\u01a3\u0007\'\u0002\u0002\u01a3\u01a5\u0005\u0012\n\u0002",
    "\u01a4\u01a2\u0003\u0002\u0002\u0002\u01a5\u01a8\u0003\u0002\u0002\u0002",
    "\u01a6\u01a4\u0003\u0002\u0002\u0002\u01a6\u01a7\u0003\u0002\u0002\u0002",
    "\u01a7\u01a9\u0003\u0002\u0002\u0002\u01a8\u01a6\u0003\u0002\u0002\u0002",
    "\u01a9\u01aa\u00070\u0002\u0002\u01aa\u0015\u0003\u0002\u0002\u0002",
    "\u01ab\u01ac\u0007?\u0002\u0002\u01ac\u01b0\u0007(\u0002\u0002\u01ad",
    "\u01b1\u0005\u0010\t\u0002\u01ae\u01b1\u0005\u0012\n\u0002\u01af\u01b1",
    "\u0005\u0014\u000b\u0002\u01b0\u01ad\u0003\u0002\u0002\u0002\u01b0\u01ae",
    "\u0003\u0002\u0002\u0002\u01b0\u01af\u0003\u0002\u0002\u0002\u01b1\u0017",
    "\u0003\u0002\u0002\u0002\u01b2\u01b3\u0007/\u0002\u0002\u01b3\u01b8",
    "\u0005\u0016\f\u0002\u01b4\u01b5\u0007\'\u0002\u0002\u01b5\u01b7\u0005",
    "\u0016\f\u0002\u01b6\u01b4\u0003\u0002\u0002\u0002\u01b7\u01ba\u0003",
    "\u0002\u0002\u0002\u01b8\u01b6\u0003\u0002\u0002\u0002\u01b8\u01b9\u0003",
    "\u0002\u0002\u0002\u01b9\u01bb\u0003\u0002\u0002\u0002\u01ba\u01b8\u0003",
    "\u0002\u0002\u0002\u01bb\u01bc\u00070\u0002\u0002\u01bc\u0019\u0003",
    "\u0002\u0002\u0002\u01bd\u01c0\u0005\u0016\f\u0002\u01be\u01c0\u0005",
    "\u0002\u0002\u0002\u01bf\u01bd\u0003\u0002\u0002\u0002\u01bf\u01be\u0003",
    "\u0002\u0002\u0002\u01c0\u001b\u0003\u0002\u0002\u0002\u01c1\u01c2\u0007",
    "/\u0002\u0002\u01c2\u01c7\u0005\u001a\u000e\u0002\u01c3\u01c4\u0007",
    "\'\u0002\u0002\u01c4\u01c6\u0005\u001a\u000e\u0002\u01c5\u01c3\u0003",
    "\u0002\u0002\u0002\u01c6\u01c9\u0003\u0002\u0002\u0002\u01c7\u01c5\u0003",
    "\u0002\u0002\u0002\u01c7\u01c8\u0003\u0002\u0002\u0002\u01c8\u01ca\u0003",
    "\u0002\u0002\u0002\u01c9\u01c7\u0003\u0002\u0002\u0002\u01ca\u01cb\u0007",
    "0\u0002\u0002\u01cb\u001d\u0003\u0002\u0002\u0002\u01cc\u01cd\u0005",
    "\n\u0006\u0002\u01cd\u001f\u0003\u0002\u0002\u0002\u01ce\u01d2\u0005",
    "\u001e\u0010\u0002\u01cf\u01d2\u0005\f\u0007\u0002\u01d0\u01d2\u0007",
    "\u0005\u0002\u0002\u01d1\u01ce\u0003\u0002\u0002\u0002\u01d1\u01cf\u0003",
    "\u0002\u0002\u0002\u01d1\u01d0\u0003\u0002\u0002\u0002\u01d2!\u0003",
    "\u0002\u0002\u0002\u01d3\u01d6\u0007\u001a\u0002\u0002\u01d4\u01d6\u0007",
    "z\u0002\u0002\u01d5\u01d3\u0003\u0002\u0002\u0002\u01d5\u01d4\u0003",
    "\u0002\u0002\u0002\u01d6#\u0003\u0002\u0002\u0002\u01d7\u01d8\u0005",
    "\"\u0012\u0002\u01d8\u01da\u0005 \u0011\u0002\u01d9\u01db\u0005\u0004",
    "\u0003\u0002\u01da\u01d9\u0003\u0002\u0002\u0002\u01da\u01db\u0003\u0002",
    "\u0002\u0002\u01db%\u0003\u0002\u0002\u0002\u01dc\u01df\u0007\u0019",
    "\u0002\u0002\u01dd\u01df\u0007y\u0002\u0002\u01de\u01dc\u0003\u0002",
    "\u0002\u0002\u01de\u01dd\u0003\u0002\u0002\u0002\u01df\'\u0003\u0002",
    "\u0002\u0002\u01e0\u01e1\u0005&\u0014\u0002\u01e1\u01e3\u0005 \u0011",
    "\u0002\u01e2\u01e4\u0005\u0004\u0003\u0002\u01e3\u01e2\u0003\u0002\u0002",
    "\u0002\u01e3\u01e4\u0003\u0002\u0002\u0002\u01e4)\u0003\u0002\u0002",
    "\u0002\u01e5\u01e8\u0005$\u0013\u0002\u01e6\u01e8\u0005(\u0015\u0002",
    "\u01e7\u01e5\u0003\u0002\u0002\u0002\u01e7\u01e6\u0003\u0002\u0002\u0002",
    "\u01e8+\u0003\u0002\u0002\u0002\u01e9\u01ea\u0007*\u0002\u0002\u01ea",
    "\u01ec\u0007\u0003\u0002\u0002\u01eb\u01ed\u0005\u000e\b\u0002\u01ec",
    "\u01eb\u0003\u0002\u0002\u0002\u01ed\u01ee\u0003\u0002\u0002\u0002\u01ee",
    "\u01ec\u0003\u0002\u0002\u0002\u01ee\u01ef\u0003\u0002\u0002\u0002\u01ef",
    "\u01f0\u0003\u0002\u0002\u0002\u01f0\u01f1\u0007\u0004\u0002\u0002\u01f1",
    "-\u0003\u0002\u0002\u0002\u01f2\u01f6\u0007;\u0002\u0002\u01f3\u01f6",
    "\u0005\u0012\n\u0002\u01f4\u01f6\u0005,\u0017\u0002\u01f5\u01f2\u0003",
    "\u0002\u0002\u0002\u01f5\u01f3\u0003\u0002\u0002\u0002\u01f5\u01f4\u0003",
    "\u0002\u0002\u0002\u01f6/\u0003\u0002\u0002\u0002\u01f7\u01f8\u0007",
    "-\u0002\u0002\u01f8\u01f9\u0007H\u0002\u0002\u01f9\u01fa\u0007(\u0002",
    "\u0002\u01fa\u01fb\u0005.\u0018\u0002\u01fb1\u0003\u0002\u0002\u0002",
    "\u01fc\u01fe\u0007\u0003\u0002\u0002\u01fd\u01ff\u00050\u0019\u0002",
    "\u01fe\u01fd\u0003\u0002\u0002\u0002\u01ff\u0200\u0003\u0002\u0002\u0002",
    "\u0200\u01fe\u0003\u0002\u0002\u0002\u0200\u0201\u0003\u0002\u0002\u0002",
    "\u0201\u0202\u0003\u0002\u0002\u0002\u0202\u0203\u0007\u0004\u0002\u0002",
    "\u02033\u0003\u0002\u0002\u0002\u0204\u020b\u0005*\u0016\u0002\u0205",
    "\u0208\u0005 \u0011\u0002\u0206\u0209\u00056\u001c\u0002\u0207\u0209",
    "\u0005\u0004\u0003\u0002\u0208\u0206\u0003\u0002\u0002\u0002\u0208\u0207",
    "\u0003\u0002\u0002\u0002\u0208\u0209\u0003\u0002\u0002\u0002\u0209\u020b",
    "\u0003\u0002\u0002\u0002\u020a\u0204\u0003\u0002\u0002\u0002\u020a\u0205",
    "\u0003\u0002\u0002\u0002\u020b\u020d\u0003\u0002\u0002\u0002\u020c\u020e",
    "\u0007,\u0002\u0002\u020d\u020c\u0003\u0002\u0002\u0002\u020d\u020e",
    "\u0003\u0002\u0002\u0002\u020e\u0210\u0003\u0002\u0002\u0002\u020f\u0211",
    "\u0005\u001c\u000f\u0002\u0210\u020f\u0003\u0002\u0002\u0002\u0210\u0211",
    "\u0003\u0002\u0002\u0002\u0211\u0214\u0003\u0002\u0002\u0002\u0212\u0213",
    "\u0007*\u0002\u0002\u0213\u0215\u00052\u001a\u0002\u0214\u0212\u0003",
    "\u0002\u0002\u0002\u0214\u0215\u0003\u0002\u0002\u0002\u02155\u0003",
    "\u0002\u0002\u0002\u0216\u0217\u00073\u0002\u0002\u0217\u0218\u0007",
    ":\u0002\u0002\u0218\u021a\u0007\u0018\u0002\u0002\u0219\u021b\u0007",
    ":\u0002\u0002\u021a\u0219\u0003\u0002\u0002\u0002\u021a\u021b\u0003",
    "\u0002\u0002\u0002\u021b\u021c\u0003\u0002\u0002\u0002\u021c\u021d\u0007",
    "4\u0002\u0002\u021d7\u0003\u0002\u0002\u0002\u021e\u0220\u0007\u0003",
    "\u0002\u0002\u021f\u0221\u0005:\u001e\u0002\u0220\u021f\u0003\u0002",
    "\u0002\u0002\u0221\u0222\u0003\u0002\u0002\u0002\u0222\u0220\u0003\u0002",
    "\u0002\u0002\u0222\u0223\u0003\u0002\u0002\u0002\u0223\u0224\u0003\u0002",
    "\u0002\u0002\u0224\u0225\u0007\u0004\u0002\u0002\u02259\u0003\u0002",
    "\u0002\u0002\u0226\u0232\u0005\n\u0006\u0002\u0227\u0229\u00056\u001c",
    "\u0002\u0228\u0227\u0003\u0002\u0002\u0002\u0228\u0229\u0003\u0002\u0002",
    "\u0002\u0229\u022a\u0003\u0002\u0002\u0002\u022a\u022d\u0007 \u0002",
    "\u0002\u022b\u022e\u00054\u001b\u0002\u022c\u022e\u00058\u001d\u0002",
    "\u022d\u022b\u0003\u0002\u0002\u0002\u022d\u022c\u0003\u0002\u0002\u0002",
    "\u022e\u0230\u0003\u0002\u0002\u0002\u022f\u0231\u0007;\u0002\u0002",
    "\u0230\u022f\u0003\u0002\u0002\u0002\u0230\u0231\u0003\u0002\u0002\u0002",
    "\u0231\u0233\u0003\u0002\u0002\u0002\u0232\u0228\u0003\u0002\u0002\u0002",
    "\u0232\u0233\u0003\u0002\u0002\u0002\u0233;\u0003\u0002\u0002\u0002",
    "\u0234\u0235\u0005B\"\u0002\u0235=\u0003\u0002\u0002\u0002\u0236\u023c",
    "\u0007\u0003\u0002\u0002\u0237\u023d\u0007=\u0002\u0002\u0238\u023d",
    "\u0005:\u001e\u0002\u0239\u023d\u00050\u0019\u0002\u023a\u023d\u0005",
    "<\u001f\u0002\u023b\u023d\u0007\u0017\u0002\u0002\u023c\u0237\u0003",
    "\u0002\u0002\u0002\u023c\u0238\u0003\u0002\u0002\u0002\u023c\u0239\u0003",
    "\u0002\u0002\u0002\u023c\u023a\u0003\u0002\u0002\u0002\u023c\u023b\u0003",
    "\u0002\u0002\u0002\u023d\u023e\u0003\u0002\u0002\u0002\u023e\u023c\u0003",
    "\u0002\u0002\u0002\u023e\u023f\u0003\u0002\u0002\u0002\u023f\u0240\u0003",
    "\u0002\u0002\u0002\u0240\u0241\u0007\u0004\u0002\u0002\u0241?\u0003",
    "\u0002\u0002\u0002\u0242\u0244\u0005\u001c\u000f\u0002\u0243\u0242\u0003",
    "\u0002\u0002\u0002\u0243\u0244\u0003\u0002\u0002\u0002\u0244\u0245\u0003",
    "\u0002\u0002\u0002\u0245\u0248\u0007*\u0002\u0002\u0246\u0249\u0007",
    "\u0017\u0002\u0002\u0247\u0249\u0005> \u0002\u0248\u0246\u0003\u0002",
    "\u0002\u0002\u0248\u0247\u0003\u0002\u0002\u0002\u0249A\u0003\u0002",
    "\u0002\u0002\u024a\u024c\u0007=\u0002\u0002\u024b\u024a\u0003\u0002",
    "\u0002\u0002\u024c\u024f\u0003\u0002\u0002\u0002\u024d\u024b\u0003\u0002",
    "\u0002\u0002\u024d\u024e\u0003\u0002\u0002\u0002\u024e\u0250\u0003\u0002",
    "\u0002\u0002\u024f\u024d\u0003\u0002\u0002\u0002\u0250\u0251\t\u0004",
    "\u0002\u0002\u0251\u0252\u0005\n\u0006\u0002\u0252\u0253\u0005@!\u0002",
    "\u0253C\u0003\u0002\u0002\u0002\u0254\u0257\u0005*\u0016\u0002\u0255",
    "\u0257\u0005 \u0011\u0002\u0256\u0254\u0003\u0002\u0002\u0002\u0256",
    "\u0255\u0003\u0002\u0002\u0002\u0257E\u0003\u0002\u0002\u0002\u0258",
    "\u025a\u0007=\u0002\u0002\u0259\u0258\u0003\u0002\u0002\u0002\u025a",
    "\u025d\u0003\u0002\u0002\u0002\u025b\u0259\u0003\u0002\u0002\u0002\u025b",
    "\u025c\u0003\u0002\u0002\u0002\u025c\u025e\u0003\u0002\u0002\u0002\u025d",
    "\u025b\u0003\u0002\u0002\u0002\u025e\u025f\u0007\u000b\u0002\u0002\u025f",
    "\u0261\u0005\n\u0006\u0002\u0260\u0262\u0005\u001c\u000f\u0002\u0261",
    "\u0260\u0003\u0002\u0002\u0002\u0261\u0262\u0003\u0002\u0002\u0002\u0262",
    "\u0263\u0003\u0002\u0002\u0002\u0263\u026f\u0007*\u0002\u0002\u0264",
    "\u0270\u0007\u0017\u0002\u0002\u0265\u026a\u0007\u0003\u0002\u0002\u0266",
    "\u026b\u0007=\u0002\u0002\u0267\u026b\u0005D#\u0002\u0268\u026b\u0005",
    "0\u0019\u0002\u0269\u026b\u0007\u0017\u0002\u0002\u026a\u0266\u0003",
    "\u0002\u0002\u0002\u026a\u0267\u0003\u0002\u0002\u0002\u026a\u0268\u0003",
    "\u0002\u0002\u0002\u026a\u0269\u0003\u0002\u0002\u0002\u026b\u026c\u0003",
    "\u0002\u0002\u0002\u026c\u026a\u0003\u0002\u0002\u0002\u026c\u026d\u0003",
    "\u0002\u0002\u0002\u026d\u026e\u0003\u0002\u0002\u0002\u026e\u0270\u0007",
    "\u0004\u0002\u0002\u026f\u0264\u0003\u0002\u0002\u0002\u026f\u0265\u0003",
    "\u0002\u0002\u0002\u0270G\u0003\u0002\u0002\u0002\u0271\u0272\u0005",
    "\n\u0006\u0002\u0272I\u0003\u0002\u0002\u0002\u0273\u0274\u0007\u001f",
    "\u0002\u0002\u0274\u0275\u0005H%\u0002\u0275K\u0003\u0002\u0002\u0002",
    "\u0276\u027a\u0005H%\u0002\u0277\u0279\u0005J&\u0002\u0278\u0277\u0003",
    "\u0002\u0002\u0002\u0279\u027c\u0003\u0002\u0002\u0002\u027a\u0278\u0003",
    "\u0002\u0002\u0002\u027a\u027b\u0003\u0002\u0002\u0002\u027bM\u0003",
    "\u0002\u0002\u0002\u027c\u027a\u0003\u0002\u0002\u0002\u027d\u027f\u0005",
    "L\'\u0002\u027e\u0280\u0007;\u0002\u0002\u027f\u027e\u0003\u0002\u0002",
    "\u0002\u027f\u0280\u0003\u0002\u0002\u0002\u0280\u0282\u0003\u0002\u0002",
    "\u0002\u0281\u0283\u0005\u001c\u000f\u0002\u0282\u0281\u0003\u0002\u0002",
    "\u0002\u0282\u0283\u0003\u0002\u0002\u0002\u0283O\u0003\u0002\u0002",
    "\u0002\u0284\u0285\u0007?\u0002\u0002\u0285\u0286\u0007*\u0002\u0002",
    "\u0286Q\u0003\u0002\u0002\u0002\u0287\u0288\u0007*\u0002\u0002\u0288",
    "\u028d\u0007\u0003\u0002\u0002\u0289\u028b\u0007?\u0002\u0002\u028a",
    "\u028c\u0005\u001c\u000f\u0002\u028b\u028a\u0003\u0002\u0002\u0002\u028b",
    "\u028c\u0003\u0002\u0002\u0002\u028c\u028e\u0003\u0002\u0002\u0002\u028d",
    "\u0289\u0003\u0002\u0002\u0002\u028e\u028f\u0003\u0002\u0002\u0002\u028f",
    "\u028d\u0003\u0002\u0002\u0002\u028f\u0290\u0003\u0002\u0002\u0002\u0290",
    "\u0291\u0003\u0002\u0002\u0002\u0291\u0292\u0007\u0004\u0002\u0002\u0292",
    "S\u0003\u0002\u0002\u0002\u0293\u0294\t\u0005\u0002\u0002\u0294\u0296",
    "\u0007?\u0002\u0002\u0295\u0297\u0005R*\u0002\u0296\u0295\u0003\u0002",
    "\u0002\u0002\u0296\u0297\u0003\u0002\u0002\u0002\u0297U\u0003\u0002",
    "\u0002\u0002\u0298\u029a\u0007=\u0002\u0002\u0299\u0298\u0003\u0002",
    "\u0002\u0002\u029a\u029d\u0003\u0002\u0002\u0002\u029b\u0299\u0003\u0002",
    "\u0002\u0002\u029b\u029c\u0003\u0002\u0002\u0002\u029c\u029e\u0003\u0002",
    "\u0002\u0002\u029d\u029b\u0003\u0002\u0002\u0002\u029e\u029f\u0007\u0007",
    "\u0002\u0002\u029f\u02a0\u0005P)\u0002\u02a0\u02a2\u0007\u0003\u0002",
    "\u0002\u02a1\u02a3\u0005T+\u0002\u02a2\u02a1\u0003\u0002\u0002\u0002",
    "\u02a3\u02a4\u0003\u0002\u0002\u0002\u02a4\u02a2\u0003\u0002\u0002\u0002",
    "\u02a4\u02a5\u0003\u0002\u0002\u0002\u02a5\u02a6\u0003\u0002\u0002\u0002",
    "\u02a6\u02a7\u0007\u0004\u0002\u0002\u02a7W\u0003\u0002\u0002\u0002",
    "\u02a8\u02a9\u0007-\u0002\u0002\u02a9\u02aa\u0007?\u0002\u0002\u02aa",
    "\u02ab\u0007(\u0002\u0002\u02ab\u02ac\u0007;\u0002\u0002\u02ac\u02ad",
    "\u0007<\u0002\u0002\u02adY\u0003\u0002\u0002\u0002\u02ae\u02af\u0007",
    "1\u0002\u0002\u02af\u02b0\u0007?\u0002\u0002\u02b0\u02b1\u00072\u0002",
    "\u0002\u02b1[\u0003\u0002\u0002\u0002\u02b2\u02b3\u0007?\u0002\u0002",
    "\u02b3\u02b7\u0007(\u0002\u0002\u02b4\u02b8\u0007\u0005\u0002\u0002",
    "\u02b5\u02b8\u0005\n\u0006\u0002\u02b6\u02b8\u0005Z.\u0002\u02b7\u02b4",
    "\u0003\u0002\u0002\u0002\u02b7\u02b5\u0003\u0002\u0002\u0002\u02b7\u02b6",
    "\u0003\u0002\u0002\u0002\u02b8\u02ba\u0003\u0002\u0002\u0002\u02b9\u02bb",
    "\u0007,\u0002\u0002\u02ba\u02b9\u0003\u0002\u0002\u0002\u02ba\u02bb",
    "\u0003\u0002\u0002\u0002\u02bb]\u0003\u0002\u0002\u0002\u02bc\u02bd",
    "\u0007,\u0002\u0002\u02bd\u02c2\u0005\\/\u0002\u02be\u02bf\u0007.\u0002",
    "\u0002\u02bf\u02c1\u0005\\/\u0002\u02c0\u02be\u0003\u0002\u0002\u0002",
    "\u02c1\u02c4\u0003\u0002\u0002\u0002\u02c2\u02c0\u0003\u0002\u0002\u0002",
    "\u02c2\u02c3\u0003\u0002\u0002\u0002\u02c3_\u0003\u0002\u0002\u0002",
    "\u02c4\u02c2\u0003\u0002\u0002\u0002\u02c5\u02d3\u0005\n\u0006\u0002",
    "\u02c6\u02c7\u0007,\u0002\u0002\u02c7\u02c8\u0007?\u0002\u0002\u02c8",
    "\u02c9\u0007(\u0002\u0002\u02c9\u02d0\u0007?\u0002\u0002\u02ca\u02cb",
    "\u0007.\u0002\u0002\u02cb\u02cc\u0007?\u0002\u0002\u02cc\u02cd\u0007",
    "(\u0002\u0002\u02cd\u02cf\u0007?\u0002\u0002\u02ce\u02ca\u0003\u0002",
    "\u0002\u0002\u02cf\u02d2\u0003\u0002\u0002\u0002\u02d0\u02ce\u0003\u0002",
    "\u0002\u0002\u02d0\u02d1\u0003\u0002\u0002\u0002\u02d1\u02d4\u0003\u0002",
    "\u0002\u0002\u02d2\u02d0\u0003\u0002\u0002\u0002\u02d3\u02c6\u0003\u0002",
    "\u0002\u0002\u02d3\u02d4\u0003\u0002\u0002\u0002\u02d4\u02d7\u0003\u0002",
    "\u0002\u0002\u02d5\u02d7\u0007:\u0002\u0002\u02d6\u02c5\u0003\u0002",
    "\u0002\u0002\u02d6\u02d5\u0003\u0002\u0002\u0002\u02d7a\u0003\u0002",
    "\u0002\u0002\u02d8\u02d9\u00071\u0002\u0002\u02d9\u02da\u0005`1\u0002",
    "\u02da\u02de\u0007 \u0002\u0002\u02db\u02df\u0007\u0005\u0002\u0002",
    "\u02dc\u02df\u0005\n\u0006\u0002\u02dd\u02df\u0005\f\u0007\u0002\u02de",
    "\u02db\u0003\u0002\u0002\u0002\u02de\u02dc\u0003\u0002\u0002\u0002\u02de",
    "\u02dd\u0003\u0002\u0002\u0002\u02df\u02e0\u0003\u0002\u0002\u0002\u02e0",
    "\u02e1\u00072\u0002\u0002\u02e1c\u0003\u0002\u0002\u0002\u02e2\u02e3",
    "\u0005`1\u0002\u02e3e\u0003\u0002\u0002\u0002\u02e4\u02e7\u0007)\u0002",
    "\u0002\u02e5\u02e8\u0005d3\u0002\u02e6\u02e8\u0005b2\u0002\u02e7\u02e5",
    "\u0003\u0002\u0002\u0002\u02e7\u02e6\u0003\u0002\u0002\u0002\u02e8g",
    "\u0003\u0002\u0002\u0002\u02e9\u02f0\u0007)\u0002\u0002\u02ea\u02ec",
    "\u0005f4\u0002\u02eb\u02ea\u0003\u0002\u0002\u0002\u02ec\u02ed\u0003",
    "\u0002\u0002\u0002\u02ed\u02eb\u0003\u0002\u0002\u0002\u02ed\u02ee\u0003",
    "\u0002\u0002\u0002\u02ee\u02f0\u0003\u0002\u0002\u0002\u02ef\u02e9\u0003",
    "\u0002\u0002\u0002\u02ef\u02eb\u0003\u0002\u0002\u0002\u02f0i\u0003",
    "\u0002\u0002\u0002\u02f1\u02f6\u0005\n\u0006\u0002\u02f2\u02f3\u0007",
    ")\u0002\u0002\u02f3\u02f5\u0005\n\u0006\u0002\u02f4\u02f2\u0003\u0002",
    "\u0002\u0002\u02f5\u02f8\u0003\u0002\u0002\u0002\u02f6\u02f4\u0003\u0002",
    "\u0002\u0002\u02f6\u02f7\u0003\u0002\u0002\u0002\u02f7k\u0003\u0002",
    "\u0002\u0002\u02f8\u02f6\u0003\u0002\u0002\u0002\u02f9\u02fa\u0007\u000e",
    "\u0002\u0002\u02fa\u02fb\u0007F\u0002\u0002\u02fbm\u0003\u0002\u0002",
    "\u0002\u02fc\u02fd\u0005L\'\u0002\u02fdo\u0003\u0002\u0002\u0002\u02fe",
    "\u02ff\u0005\n\u0006\u0002\u02ffq\u0003\u0002\u0002\u0002\u0300\u0303",
    "\u0007;\u0002\u0002\u0301\u0303\u0005\n\u0006\u0002\u0302\u0300\u0003",
    "\u0002\u0002\u0002\u0302\u0301\u0003\u0002\u0002\u0002\u0303\u0304\u0003",
    "\u0002\u0002\u0002\u0304\u0302\u0003\u0002\u0002\u0002\u0304\u0305\u0003",
    "\u0002\u0002\u0002\u0305\u030d\u0003\u0002\u0002\u0002\u0306\u0307\u0005",
    "\n\u0006\u0002\u0307\u030a\u0007 \u0002\u0002\u0308\u030b\u0005\n\u0006",
    "\u0002\u0309\u030b\u0007\u0005\u0002\u0002\u030a\u0308\u0003\u0002\u0002",
    "\u0002\u030a\u0309\u0003\u0002\u0002\u0002\u030b\u030d\u0003\u0002\u0002",
    "\u0002\u030c\u0302\u0003\u0002\u0002\u0002\u030c\u0306\u0003\u0002\u0002",
    "\u0002\u030ds\u0003\u0002\u0002\u0002\u030e\u030f\u00073\u0002\u0002",
    "\u030f\u0314\u0005r:\u0002\u0310\u0311\u0007\'\u0002\u0002\u0311\u0313",
    "\u0005r:\u0002\u0312\u0310\u0003\u0002\u0002\u0002\u0313\u0316\u0003",
    "\u0002\u0002\u0002\u0314\u0312\u0003\u0002\u0002\u0002\u0314\u0315\u0003",
    "\u0002\u0002\u0002\u0315\u0317\u0003\u0002\u0002\u0002\u0316\u0314\u0003",
    "\u0002\u0002\u0002\u0317\u0318\u00074\u0002\u0002\u0318u\u0003\u0002",
    "\u0002\u0002\u0319\u031e\u0007\u001e\u0002\u0002\u031a\u031b\u0005n",
    "8\u0002\u031b\u031c\u0007!\u0002\u0002\u031c\u031e\u0003\u0002\u0002",
    "\u0002\u031d\u0319\u0003\u0002\u0002\u0002\u031d\u031a\u0003\u0002\u0002",
    "\u0002\u031e\u031f\u0003\u0002\u0002\u0002\u031f\u0321\u0005p9\u0002",
    "\u0320\u0322\u0005t;\u0002\u0321\u0320\u0003\u0002\u0002\u0002\u0321",
    "\u0322\u0003\u0002\u0002\u0002\u0322w\u0003\u0002\u0002\u0002\u0323",
    "\u0324\u0007\u000f\u0002\u0002\u0324\u0325\u0007B\u0002\u0002\u0325",
    "\u0326\u0007*\u0002\u0002\u0326\u032a\u0007\u0003\u0002\u0002\u0327",
    "\u0329\u0005\u0094K\u0002\u0328\u0327\u0003\u0002\u0002\u0002\u0329",
    "\u032c\u0003\u0002\u0002\u0002\u032a\u0328\u0003\u0002\u0002\u0002\u032a",
    "\u032b\u0003\u0002\u0002\u0002\u032b\u032d\u0003\u0002\u0002\u0002\u032c",
    "\u032a\u0003\u0002\u0002\u0002\u032d\u032e\u0007\u0004\u0002\u0002\u032e",
    "y\u0003\u0002\u0002\u0002\u032f\u0331\u0007\u0013\u0002\u0002\u0330",
    "\u0332\u0007B\u0002\u0002\u0331\u0330\u0003\u0002\u0002\u0002\u0331",
    "\u0332\u0003\u0002\u0002\u0002\u0332\u0333\u0003\u0002\u0002\u0002\u0333",
    "\u0334\u0007*\u0002\u0002\u0334\u0338\u0007\u0003\u0002\u0002\u0335",
    "\u0337\u0005\u0094K\u0002\u0336\u0335\u0003\u0002\u0002\u0002\u0337",
    "\u033a\u0003\u0002\u0002\u0002\u0338\u0336\u0003\u0002\u0002\u0002\u0338",
    "\u0339\u0003\u0002\u0002\u0002\u0339\u033b\u0003\u0002\u0002\u0002\u033a",
    "\u0338\u0003\u0002\u0002\u0002\u033b\u033c\u0007\u0004\u0002\u0002\u033c",
    "{\u0003\u0002\u0002\u0002\u033d\u0341\u0005x=\u0002\u033e\u0340\u0005",
    "z>\u0002\u033f\u033e\u0003\u0002\u0002\u0002\u0340\u0343\u0003\u0002",
    "\u0002\u0002\u0341\u033f\u0003\u0002\u0002\u0002\u0341\u0342\u0003\u0002",
    "\u0002\u0002\u0342}\u0003\u0002\u0002\u0002\u0343\u0341\u0003\u0002",
    "\u0002\u0002\u0344\u0345\t\u0006\u0002\u0002\u0345\u0346\u0007B\u0002",
    "\u0002\u0346\u0347\u0007*\u0002\u0002\u0347\u034b\u0007\u0003\u0002",
    "\u0002\u0348\u034a\u0005\u0094K\u0002\u0349\u0348\u0003\u0002\u0002",
    "\u0002\u034a\u034d\u0003\u0002\u0002\u0002\u034b\u0349\u0003\u0002\u0002",
    "\u0002\u034b\u034c\u0003\u0002\u0002\u0002\u034c\u034e\u0003\u0002\u0002",
    "\u0002\u034d\u034b\u0003\u0002\u0002\u0002\u034e\u034f\u0007\u0004\u0002",
    "\u0002\u034f\u007f\u0003\u0002\u0002\u0002\u0350\u0351\u0007=\u0002",
    "\u0002\u0351\u0081\u0003\u0002\u0002\u0002\u0352\u0353\u0005\n\u0006",
    "\u0002\u0353\u0354\u0007*\u0002\u0002\u0354\u0356\u0007\u0003\u0002",
    "\u0002\u0355\u0357\u0005\u0094K\u0002\u0356\u0355\u0003\u0002\u0002",
    "\u0002\u0357\u0358\u0003\u0002\u0002\u0002\u0358\u0356\u0003\u0002\u0002",
    "\u0002\u0358\u0359\u0003\u0002\u0002\u0002\u0359\u035a\u0003\u0002\u0002",
    "\u0002\u035a\u035b\u0007\u0004\u0002\u0002\u035b\u0083\u0003\u0002\u0002",
    "\u0002\u035c\u035e\t\u0007\u0002\u0002\u035d\u035c\u0003\u0002\u0002",
    "\u0002\u035e\u035f\u0003\u0002\u0002\u0002\u035f\u035d\u0003\u0002\u0002",
    "\u0002\u035f\u0360\u0003\u0002\u0002\u0002\u0360\u0085\u0003\u0002\u0002",
    "\u0002\u0361\u0363\u0005\u0084C\u0002\u0362\u0361\u0003\u0002\u0002",
    "\u0002\u0362\u0363\u0003\u0002\u0002\u0002\u0363\u0364\u0003\u0002\u0002",
    "\u0002\u0364\u0365\u0007*\u0002\u0002\u0365\u0367\u0007\u0003\u0002",
    "\u0002\u0366\u0368\u0005\u0094K\u0002\u0367\u0366\u0003\u0002\u0002",
    "\u0002\u0368\u0369\u0003\u0002\u0002\u0002\u0369\u0367\u0003\u0002\u0002",
    "\u0002\u0369\u036a\u0003\u0002\u0002\u0002\u036a\u036b\u0003\u0002\u0002",
    "\u0002\u036b\u036c\u0007\u0004\u0002\u0002\u036c\u0087\u0003\u0002\u0002",
    "\u0002\u036d\u036e\u0007\u001b\u0002\u0002\u036e\u036f\u0007*\u0002",
    "\u0002\u036f\u0371\u0007\u0003\u0002\u0002\u0370\u0372\u0005\u0086D",
    "\u0002\u0371\u0370\u0003\u0002\u0002\u0002\u0372\u0373\u0003\u0002\u0002",
    "\u0002\u0373\u0371\u0003\u0002\u0002\u0002\u0373\u0374\u0003\u0002\u0002",
    "\u0002\u0374\u0375\u0003\u0002\u0002\u0002\u0375\u0376\u0007\u0004\u0002",
    "\u0002\u0376\u0089\u0003\u0002\u0002\u0002\u0377\u0380\u0005\u000e\b",
    "\u0002\u0378\u0380\u0007;\u0002\u0002\u0379\u037c\u0005L\'\u0002\u037a",
    "\u037b\u0007\"\u0002\u0002\u037b\u037d\u0005\n\u0006\u0002\u037c\u037a",
    "\u0003\u0002\u0002\u0002\u037c\u037d\u0003\u0002\u0002\u0002\u037d\u0380",
    "\u0003\u0002\u0002\u0002\u037e\u0380\u0007\u0017\u0002\u0002\u037f\u0377",
    "\u0003\u0002\u0002\u0002\u037f\u0378\u0003\u0002\u0002\u0002\u037f\u0379",
    "\u0003\u0002\u0002\u0002\u037f\u037e\u0003\u0002\u0002\u0002\u0380\u008b",
    "\u0003\u0002\u0002\u0002\u0381\u0382\u0007\u001c\u0002\u0002\u0382\u0383",
    "\u0005L\'\u0002\u0383\u008d\u0003\u0002\u0002\u0002\u0384\u0387\u0005",
    "\f\u0007\u0002\u0385\u0387\u0005:\u001e\u0002\u0386\u0384\u0003\u0002",
    "\u0002\u0002\u0386\u0385\u0003\u0002\u0002\u0002\u0387\u008f\u0003\u0002",
    "\u0002\u0002\u0388\u038d\u0005\u008eH\u0002\u0389\u038a\u0007\'\u0002",
    "\u0002\u038a\u038c\u0005\u008eH\u0002\u038b\u0389\u0003\u0002\u0002",
    "\u0002\u038c\u038f\u0003\u0002\u0002\u0002\u038d\u038b\u0003\u0002\u0002",
    "\u0002\u038d\u038e\u0003\u0002\u0002\u0002\u038e\u0091\u0003\u0002\u0002",
    "\u0002\u038f\u038d\u0003\u0002\u0002\u0002\u0390\u0391\u00073\u0002",
    "\u0002\u0391\u0392\u0005\u0090I\u0002\u0392\u0393\u00074\u0002\u0002",
    "\u0393\u0093\u0003\u0002\u0002\u0002\u0394\u039e\u0005|?\u0002\u0395",
    "\u039e\u0005~@\u0002\u0396\u039e\u0005l7\u0002\u0397\u039e\u0005v<\u0002",
    "\u0398\u039e\u0005\u0088E\u0002\u0399\u039e\u0005\u0080A\u0002\u039a",
    "\u039e\u0005\u0082B\u0002\u039b\u039e\u0005\u008aF\u0002\u039c\u039e",
    "\u00050\u0019\u0002\u039d\u0394\u0003\u0002\u0002\u0002\u039d\u0395",
    "\u0003\u0002\u0002\u0002\u039d\u0396\u0003\u0002\u0002\u0002\u039d\u0397",
    "\u0003\u0002\u0002\u0002\u039d\u0398\u0003\u0002\u0002\u0002\u039d\u0399",
    "\u0003\u0002\u0002\u0002\u039d\u039a\u0003\u0002\u0002\u0002\u039d\u039b",
    "\u0003\u0002\u0002\u0002\u039d\u039c\u0003\u0002\u0002\u0002\u039e\u03a0",
    "\u0003\u0002\u0002\u0002\u039f\u03a1\u0005\u001c\u000f\u0002\u03a0\u039f",
    "\u0003\u0002\u0002\u0002\u03a0\u03a1\u0003\u0002\u0002\u0002\u03a1\u0095",
    "\u0003\u0002\u0002\u0002\u03a2\u03a4\u0007\u0006\u0002\u0002\u03a3\u03a5",
    "\u0005\u0092J\u0002\u03a4\u03a3\u0003\u0002\u0002\u0002\u03a4\u03a5",
    "\u0003\u0002\u0002\u0002\u03a5\u03a7\u0003\u0002\u0002\u0002\u03a6\u03a8",
    "\u0005^0\u0002\u03a7\u03a6\u0003\u0002\u0002\u0002\u03a7\u03a8\u0003",
    "\u0002\u0002\u0002\u03a8\u03aa\u0003\u0002\u0002\u0002\u03a9\u03ab\u0005",
    "\u001c\u000f\u0002\u03aa\u03a9\u0003\u0002\u0002\u0002\u03aa\u03ab\u0003",
    "\u0002\u0002\u0002\u03ab\u03ac\u0003\u0002\u0002\u0002\u03ac\u03ad\u0007",
    "*\u0002\u0002\u03ad\u03af\u0007\u0003\u0002\u0002\u03ae\u03b0\u0005",
    "\u0094K\u0002\u03af\u03ae\u0003\u0002\u0002\u0002\u03b0\u03b1\u0003",
    "\u0002\u0002\u0002\u03b1\u03af\u0003\u0002\u0002\u0002\u03b1\u03b2\u0003",
    "\u0002\u0002\u0002\u03b2\u03b3\u0003\u0002\u0002\u0002\u03b3\u03b4\u0007",
    "\u0004\u0002\u0002\u03b4\u0097\u0003\u0002\u0002\u0002\u03b5\u03b6\u0007",
    "\u0017\u0002\u0002\u03b6\u0099\u0003\u0002\u0002\u0002\u03b7\u03cf\u0007",
    "\u0017\u0002\u0002\u03b8\u03ba\u0005j6\u0002\u03b9\u03bb\u0007;\u0002",
    "\u0002\u03ba\u03b9\u0003\u0002\u0002\u0002\u03ba\u03bb\u0003\u0002\u0002",
    "\u0002\u03bb\u03bd\u0003\u0002\u0002\u0002\u03bc\u03be\u0005\u0092J",
    "\u0002\u03bd\u03bc\u0003\u0002\u0002\u0002\u03bd\u03be\u0003\u0002\u0002",
    "\u0002\u03be\u03c0\u0003\u0002\u0002\u0002\u03bf\u03c1\u0005\u001c\u000f",
    "\u0002\u03c0\u03bf\u0003\u0002\u0002\u0002\u03c0\u03c1\u0003\u0002\u0002",
    "\u0002\u03c1\u03c2\u0003\u0002\u0002\u0002\u03c2\u03cc\u0007*\u0002",
    "\u0002\u03c3\u03cd\u0005\u0098M\u0002\u03c4\u03c6\u0007\u0003\u0002",
    "\u0002\u03c5\u03c7\u0005\u0094K\u0002\u03c6\u03c5\u0003\u0002\u0002",
    "\u0002\u03c7\u03c8\u0003\u0002\u0002\u0002\u03c8\u03c6\u0003\u0002\u0002",
    "\u0002\u03c8\u03c9\u0003\u0002\u0002\u0002\u03c9\u03ca\u0003\u0002\u0002",
    "\u0002\u03ca\u03cb\u0007\u0004\u0002\u0002\u03cb\u03cd\u0003\u0002\u0002",
    "\u0002\u03cc\u03c3\u0003\u0002\u0002\u0002\u03cc\u03c4\u0003\u0002\u0002",
    "\u0002\u03cd\u03cf\u0003\u0002\u0002\u0002\u03ce\u03b7\u0003\u0002\u0002",
    "\u0002\u03ce\u03b8\u0003\u0002\u0002\u0002\u03cf\u009b\u0003\u0002\u0002",
    "\u0002\u03d0\u03d2\u0005h5\u0002\u03d1\u03d3\u0005\u001c\u000f\u0002",
    "\u03d2\u03d1\u0003\u0002\u0002\u0002\u03d2\u03d3\u0003\u0002\u0002\u0002",
    "\u03d3\u03d4\u0003\u0002\u0002\u0002\u03d4\u03d5\u0007*\u0002\u0002",
    "\u03d5\u03d8\u0007\u0003\u0002\u0002\u03d6\u03d9\u0005\u0096L\u0002",
    "\u03d7\u03d9\u0005\u009cO\u0002\u03d8\u03d6\u0003\u0002\u0002\u0002",
    "\u03d8\u03d7\u0003\u0002\u0002\u0002\u03d9\u03da\u0003\u0002\u0002\u0002",
    "\u03da\u03d8\u0003\u0002\u0002\u0002\u03da\u03db\u0003\u0002\u0002\u0002",
    "\u03db\u03dc\u0003\u0002\u0002\u0002\u03dc\u03dd\u0007\u0004\u0002\u0002",
    "\u03dd\u009d\u0003\u0002\u0002\u0002\u03de\u03df\u0005\n\u0006\u0002",
    "\u03df\u03e2\u0007(\u0002\u0002\u03e0\u03e3\u0007\u0005\u0002\u0002",
    "\u03e1\u03e3\u0005\n\u0006\u0002\u03e2\u03e0\u0003\u0002\u0002\u0002",
    "\u03e2\u03e1\u0003\u0002\u0002\u0002\u03e3\u009f\u0003\u0002\u0002\u0002",
    "\u03e4\u03e5\u0007,\u0002\u0002\u03e5\u03ea\u0005\u009eP\u0002\u03e6",
    "\u03e7\u0007.\u0002\u0002\u03e7\u03e9\u0005\u009eP\u0002\u03e8\u03e6",
    "\u0003\u0002\u0002\u0002\u03e9\u03ec\u0003\u0002\u0002\u0002\u03ea\u03e8",
    "\u0003\u0002\u0002\u0002\u03ea\u03eb\u0003\u0002\u0002\u0002\u03eb\u00a1",
    "\u0003\u0002\u0002\u0002\u03ec\u03ea\u0003\u0002\u0002\u0002\u03ed\u03ee",
    "\u0005n8\u0002\u03ee\u03ef\u0007!\u0002\u0002\u03ef\u03f0\u0005p9\u0002",
    "\u03f0\u00a3\u0003\u0002\u0002\u0002\u03f1\u03f7\u0005\n\u0006\u0002",
    "\u03f2\u03f3\u00071\u0002\u0002\u03f3\u03f4\u0005\n\u0006\u0002\u03f4",
    "\u03f5\u00072\u0002\u0002\u03f5\u03f7\u0003\u0002\u0002\u0002\u03f6",
    "\u03f1\u0003\u0002\u0002\u0002\u03f6\u03f2\u0003\u0002\u0002\u0002\u03f7",
    "\u00a5\u0003\u0002\u0002\u0002\u03f8\u03f9\u0007)\u0002\u0002\u03f9",
    "\u03fb\u0005\u00a4S\u0002\u03fa\u03f8\u0003\u0002\u0002\u0002\u03fb",
    "\u03fc\u0003\u0002\u0002\u0002\u03fc\u03fa\u0003\u0002\u0002\u0002\u03fc",
    "\u03fd\u0003\u0002\u0002\u0002\u03fd\u03ff\u0003\u0002\u0002\u0002\u03fe",
    "\u0400\u0005\u00a0Q\u0002\u03ff\u03fe\u0003\u0002\u0002\u0002\u03ff",
    "\u0400\u0003\u0002\u0002\u0002\u0400\u00a7\u0003\u0002\u0002\u0002\u0401",
    "\u0402\u0007\u0006\u0002\u0002\u0402\u0403\u0005\u00a6T\u0002\u0403",
    "\u00a9\u0003\u0002\u0002\u0002\u0404\u0405\u0005L\'\u0002\u0405\u00ab",
    "\u0003\u0002\u0002\u0002\u0406\u0407\u0005L\'\u0002\u0407\u00ad\u0003",
    "\u0002\u0002\u0002\u0408\u0409\u0005\u00acW\u0002\u0409\u040a\u0007",
    "!\u0002\u0002\u040a\u040b\u0005\u00aaV\u0002\u040b\u040c\u0007\"\u0002",
    "\u0002\u040c\u040d\u0005\n\u0006\u0002\u040d\u00af\u0003\u0002\u0002",
    "\u0002\u040e\u040f\u0005\n\u0006\u0002\u040f\u00b1\u0003\u0002\u0002",
    "\u0002\u0410\u0415\u0005\u00b0Y\u0002\u0411\u0415\u0005\u00a2R\u0002",
    "\u0412\u0415\u0005\u00a8U\u0002\u0413\u0415\u0005\u00aeX\u0002\u0414",
    "\u0410\u0003\u0002\u0002\u0002\u0414\u0411\u0003\u0002\u0002\u0002\u0414",
    "\u0412\u0003\u0002\u0002\u0002\u0414\u0413\u0003\u0002\u0002\u0002\u0415",
    "\u0416\u0003\u0002\u0002\u0002\u0416\u0417\u0005\u001c\u000f\u0002\u0417",
    "\u00b3\u0003\u0002\u0002\u0002\u0418\u0419\u0007#\u0002\u0002\u0419",
    "\u0423\u0007*\u0002\u0002\u041a\u0424\u0007\u0017\u0002\u0002\u041b",
    "\u041d\u0007\u0003\u0002\u0002\u041c\u041e\u0005\u00b2Z\u0002\u041d",
    "\u041c\u0003\u0002\u0002\u0002\u041e\u041f\u0003\u0002\u0002\u0002\u041f",
    "\u041d\u0003\u0002\u0002\u0002\u041f\u0420\u0003\u0002\u0002\u0002\u0420",
    "\u0421\u0003\u0002\u0002\u0002\u0421\u0422\u0007\u0004\u0002\u0002\u0422",
    "\u0424\u0003\u0002\u0002\u0002\u0423\u041a\u0003\u0002\u0002\u0002\u0423",
    "\u041b\u0003\u0002\u0002\u0002\u0424\u00b5\u0003\u0002\u0002\u0002\u0425",
    "\u0426\u0007\u001d\u0002\u0002\u0426\u0428\u0005\n\u0006\u0002\u0427",
    "\u0429\u0005\u0092J\u0002\u0428\u0427\u0003\u0002\u0002\u0002\u0428",
    "\u0429\u0003\u0002\u0002\u0002\u0429\u042b\u0003\u0002\u0002\u0002\u042a",
    "\u042c\u0005\u001c\u000f\u0002\u042b\u042a\u0003\u0002\u0002\u0002\u042b",
    "\u042c\u0003\u0002\u0002\u0002\u042c\u042d\u0003\u0002\u0002\u0002\u042d",
    "\u0437\u0007*\u0002\u0002\u042e\u0438\u0007\u0017\u0002\u0002\u042f",
    "\u0431\u0007\u0003\u0002\u0002\u0430\u0432\u0005\u0094K\u0002\u0431",
    "\u0430\u0003\u0002\u0002\u0002\u0432\u0433\u0003\u0002\u0002\u0002\u0433",
    "\u0431\u0003\u0002\u0002\u0002\u0433\u0434\u0003\u0002\u0002\u0002\u0434",
    "\u0435\u0003\u0002\u0002\u0002\u0435\u0436\u0007\u0004\u0002\u0002\u0436",
    "\u0438\u0003\u0002\u0002\u0002\u0437\u042e\u0003\u0002\u0002\u0002\u0437",
    "\u042f\u0003\u0002\u0002\u0002\u0438\u00b7\u0003\u0002\u0002\u0002\u0439",
    "\u043a\u0005L\'\u0002\u043a\u043b\u0007\"\u0002\u0002\u043b\u043d\u0005",
    "\n\u0006\u0002\u043c\u043e\u0005\u001c\u000f\u0002\u043d\u043c\u0003",
    "\u0002\u0002\u0002\u043d\u043e\u0003\u0002\u0002\u0002\u043e\u043f\u0003",
    "\u0002\u0002\u0002\u043f\u0449\u0007*\u0002\u0002\u0440\u044a\u0007",
    "\u0017\u0002\u0002\u0441\u0443\u0007\u0003\u0002\u0002\u0442\u0444\u0005",
    "\u0094K\u0002\u0443\u0442\u0003\u0002\u0002\u0002\u0444\u0445\u0003",
    "\u0002\u0002\u0002\u0445\u0443\u0003\u0002\u0002\u0002\u0445\u0446\u0003",
    "\u0002\u0002\u0002\u0446\u0447\u0003\u0002\u0002\u0002\u0447\u0448\u0007",
    "\u0004\u0002\u0002\u0448\u044a\u0003\u0002\u0002\u0002\u0449\u0440\u0003",
    "\u0002\u0002\u0002\u0449\u0441\u0003\u0002\u0002\u0002\u044a\u00b9\u0003",
    "\u0002\u0002\u0002\u044b\u044e\u0005*\u0016\u0002\u044c\u044e\u0005",
    " \u0011\u0002\u044d\u044b\u0003\u0002\u0002\u0002\u044d\u044c\u0003",
    "\u0002\u0002\u0002\u044e\u00bb\u0003\u0002\u0002\u0002\u044f\u0450\t",
    "\b\u0002\u0002\u0450\u00bd\u0003\u0002\u0002\u0002\u0451\u0453\t\t\u0002",
    "\u0002\u0452\u0454\u0007X\u0002\u0002\u0453\u0452\u0003\u0002\u0002",
    "\u0002\u0453\u0454\u0003\u0002\u0002\u0002\u0454\u0455\u0003\u0002\u0002",
    "\u0002\u0455\u0456\u0007\u008c\u0002\u0002\u0456\u00bf\u0003\u0002\u0002",
    "\u0002\u0457\u0458\u0005\u0134\u009b\u0002\u0458\u00c1\u0003\u0002\u0002",
    "\u0002\u0459\u045e\u0005\u00c0a\u0002\u045a\u045b\u0007^\u0002\u0002",
    "\u045b\u045d\u0005\u00c0a\u0002\u045c\u045a\u0003\u0002\u0002\u0002",
    "\u045d\u0460\u0003\u0002\u0002\u0002\u045e\u045c\u0003\u0002\u0002\u0002",
    "\u045e\u045f\u0003\u0002\u0002\u0002\u045f\u00c3\u0003\u0002\u0002\u0002",
    "\u0460\u045e\u0003\u0002\u0002\u0002\u0461\u0462\t\n\u0002\u0002\u0462",
    "\u0464\u0007\\\u0002\u0002\u0463\u0465\u0005\u00c2b\u0002\u0464\u0463",
    "\u0003\u0002\u0002\u0002\u0464\u0465\u0003\u0002\u0002\u0002\u0465\u0466",
    "\u0003\u0002\u0002\u0002\u0466\u0467\u0007]\u0002\u0002\u0467\u00c5",
    "\u0003\u0002\u0002\u0002\u0468\u046a\u0005\u0134\u009b\u0002\u0469\u046b",
    "\t\u000b\u0002\u0002\u046a\u0469\u0003\u0002\u0002\u0002\u046a\u046b",
    "\u0003\u0002\u0002\u0002\u046b\u00c7\u0003\u0002\u0002\u0002\u046c\u0471",
    "\u0005\u00c6d\u0002\u046d\u046e\u0007^\u0002\u0002\u046e\u0470\u0005",
    "\u00c6d\u0002\u046f\u046d\u0003\u0002\u0002\u0002\u0470\u0473\u0003",
    "\u0002\u0002\u0002\u0471\u046f\u0003\u0002\u0002\u0002\u0471\u0472\u0003",
    "\u0002\u0002\u0002\u0472\u00c9\u0003\u0002\u0002\u0002\u0473\u0471\u0003",
    "\u0002\u0002\u0002\u0474\u0479\u0007}\u0002\u0002\u0475\u0476\u0007",
    "R\u0002\u0002\u0476\u0477\u0005\u00ba^\u0002\u0477\u0478\u0007S\u0002",
    "\u0002\u0478\u047a\u0003\u0002\u0002\u0002\u0479\u0475\u0003\u0002\u0002",
    "\u0002\u0479\u047a\u0003\u0002\u0002\u0002\u047a\u047b\u0003\u0002\u0002",
    "\u0002\u047b\u047c\u0007\\\u0002\u0002\u047c\u047d\u0005\u00c8e\u0002",
    "\u047d\u047e\u0007o\u0002\u0002\u047e\u047f\u0007\u008c\u0002\u0002",
    "\u047f\u0480\u0007]\u0002\u0002\u0480\u00cb\u0003\u0002\u0002\u0002",
    "\u0481\u0482\u0007~\u0002\u0002\u0482\u0484\u0007\\\u0002\u0002\u0483",
    "\u0485\u0005\u00ceh\u0002\u0484\u0483\u0003\u0002\u0002\u0002\u0484",
    "\u0485\u0003\u0002\u0002\u0002\u0485\u0486\u0003\u0002\u0002\u0002\u0486",
    "\u0487\u0005\u00c2b\u0002\u0487\u0488\u0007]\u0002\u0002\u0488\u00cd",
    "\u0003\u0002\u0002\u0002\u0489\u048a\u0007\u008c\u0002\u0002\u048a\u048b",
    "\u0007[\u0002\u0002\u048b\u00cf\u0003\u0002\u0002\u0002\u048c\u048f",
    "\u0007w\u0002\u0002\u048d\u048f\u0005\u0134\u009b\u0002\u048e\u048c",
    "\u0003\u0002\u0002\u0002\u048e\u048d\u0003\u0002\u0002\u0002\u048f\u00d1",
    "\u0003\u0002\u0002\u0002\u0490\u0491\u0007\u0085\u0002\u0002\u0491\u0492",
    "\u0005\u00d0i\u0002\u0492\u0493\u0007k\u0002\u0002\u0493\u0495\u0007",
    "\\\u0002\u0002\u0494\u0496\u0005\u00ceh\u0002\u0495\u0494\u0003\u0002",
    "\u0002\u0002\u0495\u0496\u0003\u0002\u0002\u0002\u0496\u0497\u0003\u0002",
    "\u0002\u0002\u0497\u0498\u0005\u00c8e\u0002\u0498\u0499\u0007]\u0002",
    "\u0002\u0499\u00d3\u0003\u0002\u0002\u0002\u049a\u049b\t\f\u0002\u0002",
    "\u049b\u00d5\u0003\u0002\u0002\u0002\u049c\u049d\u0005\u00d4k\u0002",
    "\u049d\u049f\u0007\\\u0002\u0002\u049e\u04a0\u0005\u00ceh\u0002\u049f",
    "\u049e\u0003\u0002\u0002\u0002\u049f\u04a0\u0003\u0002\u0002\u0002\u04a0",
    "\u04a1\u0003\u0002\u0002\u0002\u04a1\u04a2\u0005\u0134\u009b\u0002\u04a2",
    "\u04a3\u0007]\u0002\u0002\u04a3\u00d7\u0003\u0002\u0002\u0002\u04a4",
    "\u04a5\u0007\u007f\u0002\u0002\u04a5\u04a6\u0007\\\u0002\u0002\u04a6",
    "\u04a7\u0005\u0134\u009b\u0002\u04a7\u04a8\u0007]\u0002\u0002\u04a8",
    "\u00d9\u0003\u0002\u0002\u0002\u04a9\u04aa\u0007\u0080\u0002\u0002\u04aa",
    "\u00db\u0003\u0002\u0002\u0002\u04ab\u04ac\u0007\u0081\u0002\u0002\u04ac",
    "\u00dd\u0003\u0002\u0002\u0002\u04ad\u04ae\u0007\u0083\u0002\u0002\u04ae",
    "\u00df\u0003\u0002\u0002\u0002\u04af\u04b1\u0007\u008d\u0002\u0002\u04b0",
    "\u04af\u0003\u0002\u0002\u0002\u04b0\u04b1\u0003\u0002\u0002\u0002\u04b1",
    "\u04b2\u0003\u0002\u0002\u0002\u04b2\u04b3\u0007\u008c\u0002\u0002\u04b3",
    "\u00e1\u0003\u0002\u0002\u0002\u04b4\u04b6\u0007d\u0002\u0002\u04b5",
    "\u04b4\u0003\u0002\u0002\u0002\u04b5\u04b6\u0003\u0002\u0002\u0002\u04b6",
    "\u04b7\u0003\u0002\u0002\u0002\u04b7\u04b9\u0007M\u0002\u0002\u04b8",
    "\u04ba\t\r\u0002\u0002\u04b9\u04b8\u0003\u0002\u0002\u0002\u04b9\u04ba",
    "\u0003\u0002\u0002\u0002\u04ba\u04bb\u0003\u0002\u0002\u0002\u04bb\u04be",
    "\u0005\u00e0q\u0002\u04bc\u04bd\u0007p\u0002\u0002\u04bd\u04bf\u0007",
    "\u008c\u0002\u0002\u04be\u04bc\u0003\u0002\u0002\u0002\u04be\u04bf\u0003",
    "\u0002\u0002\u0002\u04bf\u00e3\u0003\u0002\u0002\u0002\u04c0\u04c5\u0005",
    "\u00be`\u0002\u04c1\u04c5\u0005\u00e2r\u0002\u04c2\u04c5\u0005\u00fa",
    "~\u0002\u04c3\u04c5\u0007\u008c\u0002\u0002\u04c4\u04c0\u0003\u0002",
    "\u0002\u0002\u04c4\u04c1\u0003\u0002\u0002\u0002\u04c4\u04c2\u0003\u0002",
    "\u0002\u0002\u04c4\u04c3\u0003\u0002\u0002\u0002\u04c5\u00e5\u0003\u0002",
    "\u0002\u0002\u04c6\u04c7\u0007P\u0002\u0002\u04c7\u04cc\u0007\u008c",
    "\u0002\u0002\u04c8\u04c9\u0007^\u0002\u0002\u04c9\u04cb\u0007\u008c",
    "\u0002\u0002\u04ca\u04c8\u0003\u0002\u0002\u0002\u04cb\u04ce\u0003\u0002",
    "\u0002\u0002\u04cc\u04ca\u0003\u0002\u0002\u0002\u04cc\u04cd\u0003\u0002",
    "\u0002\u0002\u04cd\u04cf\u0003\u0002\u0002\u0002\u04ce\u04cc\u0003\u0002",
    "\u0002\u0002\u04cf\u04d0\u0007Q\u0002\u0002\u04d0\u00e7\u0003\u0002",
    "\u0002\u0002\u04d1\u04d3\u0007f\u0002\u0002\u04d2\u04d1\u0003\u0002",
    "\u0002\u0002\u04d2\u04d3\u0003\u0002\u0002\u0002\u04d3\u04d4\u0003\u0002",
    "\u0002\u0002\u04d4\u04d6\u0007e\u0002\u0002\u04d5\u04d7\u0005\u00e6",
    "t\u0002\u04d6\u04d5\u0003\u0002\u0002\u0002\u04d6\u04d7\u0003\u0002",
    "\u0002\u0002\u04d7\u04d8\u0003\u0002\u0002\u0002\u04d8\u04d9\u0007S",
    "\u0002\u0002\u04d9\u04da\u0005\u00e4s\u0002\u04da\u00e9\u0003\u0002",
    "\u0002\u0002\u04db\u04e7\u0005\u00be`\u0002\u04dc\u04e7\u0005\u00ca",
    "f\u0002\u04dd\u04e7\u0005\u00ccg\u0002\u04de\u04e7\u0005\u00d6l\u0002",
    "\u04df\u04e7\u0005\u00d8m\u0002\u04e0\u04e7\u0005\u00dep\u0002\u04e1",
    "\u04e7\u0005\u00dan\u0002\u04e2\u04e7\u0005\u00dco\u0002\u04e3\u04e7",
    "\u0005\u00d2j\u0002\u04e4\u04e7\u0005\u00e2r\u0002\u04e5\u04e7\u0005",
    "\u00e8u\u0002\u04e6\u04db\u0003\u0002\u0002\u0002\u04e6\u04dc\u0003",
    "\u0002\u0002\u0002\u04e6\u04dd\u0003\u0002\u0002\u0002\u04e6\u04de\u0003",
    "\u0002\u0002\u0002\u04e6\u04df\u0003\u0002\u0002\u0002\u04e6\u04e0\u0003",
    "\u0002\u0002\u0002\u04e6\u04e1\u0003\u0002\u0002\u0002\u04e6\u04e2\u0003",
    "\u0002\u0002\u0002\u04e6\u04e3\u0003\u0002\u0002\u0002\u04e6\u04e4\u0003",
    "\u0002\u0002\u0002\u04e6\u04e5\u0003\u0002\u0002\u0002\u04e7\u00eb\u0003",
    "\u0002\u0002\u0002\u04e8\u04e9\u0005\u0134\u009b\u0002\u04e9\u00ed\u0003",
    "\u0002\u0002\u0002\u04ea\u04ef\u0005\u00ecw\u0002\u04eb\u04ec\u0007",
    "^\u0002\u0002\u04ec\u04ee\u0005\u00ecw\u0002\u04ed\u04eb\u0003\u0002",
    "\u0002\u0002\u04ee\u04f1\u0003\u0002\u0002\u0002\u04ef\u04ed\u0003\u0002",
    "\u0002\u0002\u04ef\u04f0\u0003\u0002\u0002\u0002\u04f0\u00ef\u0003\u0002",
    "\u0002\u0002\u04f1\u04ef\u0003\u0002\u0002\u0002\u04f2\u04f3\u0007U",
    "\u0002\u0002\u04f3\u04f4\u0005\u00eex\u0002\u04f4\u04f5\u0007V\u0002",
    "\u0002\u04f5\u00f1\u0003\u0002\u0002\u0002\u04f6\u04f7\u0007T\u0002",
    "\u0002\u04f7\u00f3\u0003\u0002\u0002\u0002\u04f8\u0503\u0007\u008d\u0002",
    "\u0002\u04f9\u0504\u0005\u00caf\u0002\u04fa\u0504\u0005\u00ccg\u0002",
    "\u04fb\u0504\u0005\u00d6l\u0002\u04fc\u0504\u0005\u00d8m\u0002\u04fd",
    "\u0504\u0005\u00dep\u0002\u04fe\u0504\u0005\u00dan\u0002\u04ff\u0504",
    "\u0005\u00dco\u0002\u0500\u0504\u0005\u00d2j\u0002\u0501\u0504\u0005",
    "\u00e2r\u0002\u0502\u0504\u0005\u00e8u\u0002\u0503\u04f9\u0003\u0002",
    "\u0002\u0002\u0503\u04fa\u0003\u0002\u0002\u0002\u0503\u04fb\u0003\u0002",
    "\u0002\u0002\u0503\u04fc\u0003\u0002\u0002\u0002\u0503\u04fd\u0003\u0002",
    "\u0002\u0002\u0503\u04fe\u0003\u0002\u0002\u0002\u0503\u04ff\u0003\u0002",
    "\u0002\u0002\u0503\u0500\u0003\u0002\u0002\u0002\u0503\u0501\u0003\u0002",
    "\u0002\u0002\u0503\u0502\u0003\u0002\u0002\u0002\u0504\u00f5\u0003\u0002",
    "\u0002\u0002\u0505\u050a\u0005\u00f4{\u0002\u0506\u050a\u0005\u00e2",
    "r\u0002\u0507\u050a\u0005\u00e8u\u0002\u0508\u050a\u0005\u00be`\u0002",
    "\u0509\u0505\u0003\u0002\u0002\u0002\u0509\u0506\u0003\u0002\u0002\u0002",
    "\u0509\u0507\u0003\u0002\u0002\u0002\u0509\u0508\u0003\u0002\u0002\u0002",
    "\u050a\u00f7\u0003\u0002\u0002\u0002\u050b\u050c\t\u000e\u0002\u0002",
    "\u050c\u00f9\u0003\u0002\u0002\u0002\u050d\u050e\u0007\\\u0002\u0002",
    "\u050e\u050f\u0005\u0134\u009b\u0002\u050f\u0510\u0007]\u0002\u0002",
    "\u0510\u00fb\u0003\u0002\u0002\u0002\u0511\u0512\u0007P\u0002\u0002",
    "\u0512\u0513\u0005\u00eex\u0002\u0513\u0514\u0007Q\u0002\u0002\u0514",
    "\u00fd\u0003\u0002\u0002\u0002\u0515\u051e\u0005\u00c4c\u0002\u0516",
    "\u051e\u0005\u00f0y\u0002\u0517\u051e\u0005\u00fc\u007f\u0002\u0518",
    "\u051e\u0005\u00f2z\u0002\u0519\u051e\u0005\u00fa~\u0002\u051a\u051e",
    "\u0005\u00bc_\u0002\u051b\u051e\u0005\u00f6|\u0002\u051c\u051e\u0005",
    "\u00f8}\u0002\u051d\u0515\u0003\u0002\u0002\u0002\u051d\u0516\u0003",
    "\u0002\u0002\u0002\u051d\u0517\u0003\u0002\u0002\u0002\u051d\u0518\u0003",
    "\u0002\u0002\u0002\u051d\u0519\u0003\u0002\u0002\u0002\u051d\u051a\u0003",
    "\u0002\u0002\u0002\u051d\u051b\u0003\u0002\u0002\u0002\u051d\u051c\u0003",
    "\u0002\u0002\u0002\u051e\u00ff\u0003\u0002\u0002\u0002\u051f\u0523\u0005",
    "\u00fe\u0080\u0002\u0520\u0522\u0005\u00eav\u0002\u0521\u0520\u0003",
    "\u0002\u0002\u0002\u0522\u0525\u0003\u0002\u0002\u0002\u0523\u0521\u0003",
    "\u0002\u0002\u0002\u0523\u0524\u0003\u0002\u0002\u0002\u0524\u0101\u0003",
    "\u0002\u0002\u0002\u0525\u0523\u0003\u0002\u0002\u0002\u0526\u0527\u0007",
    "Y\u0002\u0002\u0527\u0528\u0005\u0106\u0084\u0002\u0528\u0103\u0003",
    "\u0002\u0002\u0002\u0529\u052b\u0005\u0100\u0081\u0002\u052a\u052c\u0005",
    "\u0102\u0082\u0002\u052b\u052a\u0003\u0002\u0002\u0002\u052b\u052c\u0003",
    "\u0002\u0002\u0002\u052c\u0105\u0003\u0002\u0002\u0002\u052d\u052f\t",
    "\u000f\u0002\u0002\u052e\u052d\u0003\u0002\u0002\u0002\u052e\u052f\u0003",
    "\u0002\u0002\u0002\u052f\u0530\u0003\u0002\u0002\u0002\u0530\u0531\u0005",
    "\u0104\u0083\u0002\u0531\u0107\u0003\u0002\u0002\u0002\u0532\u0533\t",
    "\u0010\u0002\u0002\u0533\u0534\u0005\u0106\u0084\u0002\u0534\u0109\u0003",
    "\u0002\u0002\u0002\u0535\u0539\u0005\u0106\u0084\u0002\u0536\u0538\u0005",
    "\u0108\u0085\u0002\u0537\u0536\u0003\u0002\u0002\u0002\u0538\u053b\u0003",
    "\u0002\u0002\u0002\u0539\u0537\u0003\u0002\u0002\u0002\u0539\u053a\u0003",
    "\u0002\u0002\u0002\u053a\u010b\u0003\u0002\u0002\u0002\u053b\u0539\u0003",
    "\u0002\u0002\u0002\u053c\u053d\t\u0011\u0002\u0002\u053d\u053e\u0005",
    "\u010a\u0086\u0002\u053e\u010d\u0003\u0002\u0002\u0002\u053f\u0543\u0005",
    "\u010a\u0086\u0002\u0540\u0542\u0005\u010c\u0087\u0002\u0541\u0540\u0003",
    "\u0002\u0002\u0002\u0542\u0545\u0003\u0002\u0002\u0002\u0543\u0541\u0003",
    "\u0002\u0002\u0002\u0543\u0544\u0003\u0002\u0002\u0002\u0544\u010f\u0003",
    "\u0002\u0002\u0002\u0545\u0543\u0003\u0002\u0002\u0002\u0546\u0547\t",
    "\u0012\u0002\u0002\u0547\u0111\u0003\u0002\u0002\u0002\u0548\u054e\u0005",
    "\u010e\u0088\u0002\u0549\u054a\u0005\u0110\u0089\u0002\u054a\u054b\u0005",
    "\u010e\u0088\u0002\u054b\u054d\u0003\u0002\u0002\u0002\u054c\u0549\u0003",
    "\u0002\u0002\u0002\u054d\u0550\u0003\u0002\u0002\u0002\u054e\u054c\u0003",
    "\u0002\u0002\u0002\u054e\u054f\u0003\u0002\u0002\u0002\u054f\u0113\u0003",
    "\u0002\u0002\u0002\u0550\u054e\u0003\u0002\u0002\u0002\u0551\u0556\u0005",
    "\u0112\u008a\u0002\u0552\u0553\t\u0013\u0002\u0002\u0553\u0555\u0005",
    "\u0112\u008a\u0002\u0554\u0552\u0003\u0002\u0002\u0002\u0555\u0558\u0003",
    "\u0002\u0002\u0002\u0556\u0554\u0003\u0002\u0002\u0002\u0556\u0557\u0003",
    "\u0002\u0002\u0002\u0557\u0115\u0003\u0002\u0002\u0002\u0558\u0556\u0003",
    "\u0002\u0002\u0002\u0559\u055e\u0005\u0114\u008b\u0002\u055a\u055b\u0007",
    "g\u0002\u0002\u055b\u055d\u0005\u0114\u008b\u0002\u055c\u055a\u0003",
    "\u0002\u0002\u0002\u055d\u0560\u0003\u0002\u0002\u0002\u055e\u055c\u0003",
    "\u0002\u0002\u0002\u055e\u055f\u0003\u0002\u0002\u0002\u055f\u0117\u0003",
    "\u0002\u0002\u0002\u0560\u055e\u0003\u0002\u0002\u0002\u0561\u0566\u0005",
    "\u0116\u008c\u0002\u0562\u0563\u0007m\u0002\u0002\u0563\u0565\u0005",
    "\u0116\u008c\u0002\u0564\u0562\u0003\u0002\u0002\u0002\u0565\u0568\u0003",
    "\u0002\u0002\u0002\u0566\u0564\u0003\u0002\u0002\u0002\u0566\u0567\u0003",
    "\u0002\u0002\u0002\u0567\u0119\u0003\u0002\u0002\u0002\u0568\u0566\u0003",
    "\u0002\u0002\u0002\u0569\u056e\u0005\u0118\u008d\u0002\u056a\u056b\u0007",
    "i\u0002\u0002\u056b\u056d\u0005\u0118\u008d\u0002\u056c\u056a\u0003",
    "\u0002\u0002\u0002\u056d\u0570\u0003\u0002\u0002\u0002\u056e\u056c\u0003",
    "\u0002\u0002\u0002\u056e\u056f\u0003\u0002\u0002\u0002\u056f\u011b\u0003",
    "\u0002\u0002\u0002\u0570\u056e\u0003\u0002\u0002\u0002\u0571\u0576\u0005",
    "\u011a\u008e\u0002\u0572\u0573\u0007h\u0002\u0002\u0573\u0575\u0005",
    "\u011a\u008e\u0002\u0574\u0572\u0003\u0002\u0002\u0002\u0575\u0578\u0003",
    "\u0002\u0002\u0002\u0576\u0574\u0003\u0002\u0002\u0002\u0576\u0577\u0003",
    "\u0002\u0002\u0002\u0577\u011d\u0003\u0002\u0002\u0002\u0578\u0576\u0003",
    "\u0002\u0002\u0002\u0579\u057e\u0005\u011c\u008f\u0002\u057a\u057b\u0007",
    "x\u0002\u0002\u057b\u057d\u0005\u011c\u008f\u0002\u057c\u057a\u0003",
    "\u0002\u0002\u0002\u057d\u0580\u0003\u0002\u0002\u0002\u057e\u057c\u0003",
    "\u0002\u0002\u0002\u057e\u057f\u0003\u0002\u0002\u0002\u057f\u011f\u0003",
    "\u0002\u0002\u0002\u0580\u057e\u0003\u0002\u0002\u0002\u0581\u0586\u0005",
    "\u011e\u0090\u0002\u0582\u0583\u0007Z\u0002\u0002\u0583\u0585\u0005",
    "\u011e\u0090\u0002\u0584\u0582\u0003\u0002\u0002\u0002\u0585\u0588\u0003",
    "\u0002\u0002\u0002\u0586\u0584\u0003\u0002\u0002\u0002\u0586\u0587\u0003",
    "\u0002\u0002\u0002\u0587\u0121\u0003\u0002\u0002\u0002\u0588\u0586\u0003",
    "\u0002\u0002\u0002\u0589\u058b\u0005\u0134\u009b\u0002\u058a\u058c\u0007",
    "d\u0002\u0002\u058b\u058a\u0003\u0002\u0002\u0002\u058b\u058c\u0003",
    "\u0002\u0002\u0002\u058c\u058d\u0003\u0002\u0002\u0002\u058d\u058e\u0007",
    "r\u0002\u0002\u058e\u058f\u0005\u0134\u009b\u0002\u058f\u0590\u0007",
    "s\u0002\u0002\u0590\u0591\u0005\u0134\u009b\u0002\u0591\u0123\u0003",
    "\u0002\u0002\u0002\u0592\u0593\u0005\u0134\u009b\u0002\u0593\u0594\b",
    "\u0093\u0001\u0002\u0594\u0125\u0003\u0002\u0002\u0002\u0595\u0596\u0005",
    "\u0134\u009b\u0002\u0596\u0127\u0003\u0002\u0002\u0002\u0597\u059c\u0005",
    "\u0126\u0094\u0002\u0598\u0599\u0007^\u0002\u0002\u0599\u059b\u0005",
    "\u0126\u0094\u0002\u059a\u0598\u0003\u0002\u0002\u0002\u059b\u059e\u0003",
    "\u0002\u0002\u0002\u059c\u059a\u0003\u0002\u0002\u0002\u059c\u059d\u0003",
    "\u0002\u0002\u0002\u059d\u0129\u0003\u0002\u0002\u0002\u059e\u059c\u0003",
    "\u0002\u0002\u0002\u059f\u05a0\u0005\u0128\u0095\u0002\u05a0\u05a1\u0007",
    "L\u0002\u0002\u05a1\u05a4\u0005\u0124\u0093\u0002\u05a2\u05a5\u0006",
    "\u0096\u0002\u0003\u05a3\u05a5\u0007\u0090\u0002\u0002\u05a4\u05a2\u0003",
    "\u0002\u0002\u0002\u05a4\u05a3\u0003\u0002\u0002\u0002\u05a5\u012b\u0003",
    "\u0002\u0002\u0002\u05a6\u05a7\u0007s\u0002\u0002\u05a7\u05aa\u0005",
    "\u0134\u009b\u0002\u05a8\u05ab\u0006\u0097\u0003\u0003\u05a9\u05ab\u0007",
    "\u0090\u0002\u0002\u05aa\u05a8\u0003\u0002\u0002\u0002\u05aa\u05a9\u0003",
    "\u0002\u0002\u0002\u05ab\u012d\u0003\u0002\u0002\u0002\u05ac\u05ad\u0005",
    "\u0134\u009b\u0002\u05ad\u05ae\u0007N\u0002\u0002\u05ae\u012f\u0003",
    "\u0002\u0002\u0002\u05af\u05b1\u0005\u012e\u0098\u0002\u05b0\u05af\u0003",
    "\u0002\u0002\u0002\u05b0\u05b1\u0003\u0002\u0002\u0002\u05b1\u05b2\u0003",
    "\u0002\u0002\u0002\u05b2\u05b3\u0007[\u0002\u0002\u05b3\u05b4\u0007",
    "\u0090\u0002\u0002\u05b4\u05b6\u0007\u0003\u0002\u0002\u05b5\u05b7\u0005",
    "\u012a\u0096\u0002\u05b6\u05b5\u0003\u0002\u0002\u0002\u05b7\u05b8\u0003",
    "\u0002\u0002\u0002\u05b8\u05b6\u0003\u0002\u0002\u0002\u05b8\u05b9\u0003",
    "\u0002\u0002\u0002\u05b9\u05bb\u0003\u0002\u0002\u0002\u05ba\u05bc\u0005",
    "\u012c\u0097\u0002\u05bb\u05ba\u0003\u0002\u0002\u0002\u05bb\u05bc\u0003",
    "\u0002\u0002\u0002\u05bc\u05bd\u0003\u0002\u0002\u0002\u05bd\u05be\u0007",
    "\u0004\u0002\u0002\u05be\u0131\u0003\u0002\u0002\u0002\u05bf\u05c4\u0007",
    "q\u0002\u0002\u05c0\u05c5\u0005\u0122\u0092\u0002\u05c1\u05c2\u0005",
    "\u0130\u0099\u0002\u05c2\u05c3\b\u009a\u0001\u0002\u05c3\u05c5\u0003",
    "\u0002\u0002\u0002\u05c4\u05c0\u0003\u0002\u0002\u0002\u05c4\u05c1\u0003",
    "\u0002\u0002\u0002\u05c5\u0133\u0003\u0002\u0002\u0002\u05c6\u05c7\u0005",
    "\u0132\u009a\u0002\u05c7\u05c8\b\u009b\u0001\u0002\u05c8\u05cb\u0003",
    "\u0002\u0002\u0002\u05c9\u05cb\u0005\u0120\u0091\u0002\u05ca\u05c6\u0003",
    "\u0002\u0002\u0002\u05ca\u05c9\u0003\u0002\u0002\u0002\u05cb\u0135\u0003",
    "\u0002\u0002\u0002\u05cc\u05d3\u0007_\u0002\u0002\u05cd\u05ce\u0005",
    "\u0134\u009b\u0002\u05ce\u05cf\b\u009c\u0001\u0002\u05cf\u05d4\u0003",
    "\u0002\u0002\u0002\u05d0\u05d1\u0005\u0150\u00a9\u0002\u05d1\u05d2\b",
    "\u009c\u0001\u0002\u05d2\u05d4\u0003\u0002\u0002\u0002\u05d3\u05cd\u0003",
    "\u0002\u0002\u0002\u05d3\u05d0\u0003\u0002\u0002\u0002\u05d4\u0137\u0003",
    "\u0002\u0002\u0002\u05d5\u05d6\u0007\u008c\u0002\u0002\u05d6\u05d7\u0005",
    "\u0136\u009c\u0002\u05d7\u05d8\b\u009d\u0001\u0002\u05d8\u0139\u0003",
    "\u0002\u0002\u0002\u05d9\u05da\u0007t\u0002\u0002\u05da\u05db\u0007",
    "\u008c\u0002\u0002\u05db\u05dc\u0005\u0136\u009c\u0002\u05dc\u05dd\b",
    "\u009e\u0001\u0002\u05dd\u013b\u0003\u0002\u0002\u0002\u05de\u05df\u0007",
    "X\u0002\u0002\u05df\u05e0\u0007\u008c\u0002\u0002\u05e0\u05e1\u0005",
    "\u0136\u009c\u0002\u05e1\u05e2\b\u009f\u0001\u0002\u05e2\u013d\u0003",
    "\u0002\u0002\u0002\u05e3\u05e4\u0007\u008b\u0002\u0002\u05e4\u013f\u0003",
    "\u0002\u0002\u0002\u05e5\u05e6\u0005\u013e\u00a0\u0002\u05e6\u0141\u0003",
    "\u0002\u0002\u0002\u05e7\u05e8\u0005\u013a\u009e\u0002\u05e8\u05e9\b",
    "\u00a2\u0001\u0002\u05e9\u05f1\u0003\u0002\u0002\u0002\u05ea\u05eb\u0005",
    "\u013c\u009f\u0002\u05eb\u05ec\b\u00a2\u0001\u0002\u05ec\u05f1\u0003",
    "\u0002\u0002\u0002\u05ed\u05ee\u0005\u0138\u009d\u0002\u05ee\u05ef\b",
    "\u00a2\u0001\u0002\u05ef\u05f1\u0003\u0002\u0002\u0002\u05f0\u05e7\u0003",
    "\u0002\u0002\u0002\u05f0\u05ea\u0003\u0002\u0002\u0002\u05f0\u05ed\u0003",
    "\u0002\u0002\u0002\u05f1\u05f4\u0003\u0002\u0002\u0002\u05f2\u05f5\u0006",
    "\u00a2\u0004\u0003\u05f3\u05f5\u0007\u0090\u0002\u0002\u05f4\u05f2\u0003",
    "\u0002\u0002\u0002\u05f4\u05f3\u0003\u0002\u0002\u0002\u05f5\u0143\u0003",
    "\u0002\u0002\u0002\u05f6\u05f7\u0005\u00c4c\u0002\u05f7\u05f8\u0007",
    "\u008d\u0002\u0002\u05f8\u05f9\u0007n\u0002\u0002\u05f9\u05fa\u0007",
    "\u0090\u0002\u0002\u05fa\u0145\u0003\u0002\u0002\u0002\u05fb\u05ff\u0005",
    "\u0140\u00a1\u0002\u05fc\u05ff\u0005\u0142\u00a2\u0002\u05fd\u05ff\u0005",
    "\u0144\u00a3\u0002\u05fe\u05fb\u0003\u0002\u0002\u0002\u05fe\u05fc\u0003",
    "\u0002\u0002\u0002\u05fe\u05fd\u0003\u0002\u0002\u0002\u05ff\u0147\u0003",
    "\u0002\u0002\u0002\u0600\u0604\u0005\"\u0012\u0002\u0601\u0604\u0005",
    "&\u0014\u0002\u0602\u0604\u0005\u00ba^\u0002\u0603\u0600\u0003\u0002",
    "\u0002\u0002\u0603\u0601\u0003\u0002\u0002\u0002\u0603\u0602\u0003\u0002",
    "\u0002\u0002\u0604\u0149\u0003\u0002\u0002\u0002\u0605\u0607\u0005\u00ba",
    "^\u0002\u0606\u0608\u0007,\u0002\u0002\u0607\u0606\u0003\u0002\u0002",
    "\u0002\u0607\u0608\u0003\u0002\u0002\u0002\u0608\u014b\u0003\u0002\u0002",
    "\u0002\u0609\u060a\u0007\u008c\u0002\u0002\u060a\u014d\u0003\u0002\u0002",
    "\u0002\u060b\u060c\u0005\u0134\u009b\u0002\u060c\u014f\u0003\u0002\u0002",
    "\u0002\u060d\u060f\u0005\u014e\u00a8\u0002\u060e\u060d\u0003\u0002\u0002",
    "\u0002\u060e\u060f\u0003\u0002\u0002\u0002\u060f\u0610\u0003\u0002\u0002",
    "\u0002\u0610\u0615\u0007M\u0002\u0002\u0611\u0612\u0007R\u0002\u0002",
    "\u0612\u0613\u0005\u0148\u00a5\u0002\u0613\u0614\u0007S\u0002\u0002",
    "\u0614\u0616\u0003\u0002\u0002\u0002\u0615\u0611\u0003\u0002\u0002\u0002",
    "\u0615\u0616\u0003\u0002\u0002\u0002\u0616\u0617\u0003\u0002\u0002\u0002",
    "\u0617\u0619\u0007\\\u0002\u0002\u0618\u061a\u0005\u014c\u00a7\u0002",
    "\u0619\u0618\u0003\u0002\u0002\u0002\u0619\u061a\u0003\u0002\u0002\u0002",
    "\u061a\u061b\u0003\u0002\u0002\u0002\u061b\u061c\u0007[\u0002\u0002",
    "\u061c\u061d\u0007\u0090\u0002\u0002\u061d\u061f\u0007\u0003\u0002\u0002",
    "\u061e\u0620\u0005\u0146\u00a4\u0002\u061f\u061e\u0003\u0002\u0002\u0002",
    "\u0620\u0621\u0003\u0002\u0002\u0002\u0621\u061f\u0003\u0002\u0002\u0002",
    "\u0621\u0622\u0003\u0002\u0002\u0002\u0622\u0623\u0003\u0002\u0002\u0002",
    "\u0623\u0624\u0007\u0004\u0002\u0002\u0624\u0625\u0007]\u0002\u0002",
    "\u0625\u0626\u0007\u0090\u0002\u0002\u0626\u0151\u0003\u0002\u0002\u0002",
    "\u0627\u0628\u0007\u0003\u0002\u0002\u0628\u0629\u0005\u0150\u00a9\u0002",
    "\u0629\u062a\u0007\u0004\u0002\u0002\u062a\u0153\u0003\u0002\u0002\u0002",
    "\u062b\u062c\u0005\n\u0006\u0002\u062c\u062d\u0007 \u0002\u0002\u062d",
    "\u062f\u0005\u00ba^\u0002\u062e\u0630\u0007,\u0002\u0002\u062f\u062e",
    "\u0003\u0002\u0002\u0002\u062f\u0630\u0003\u0002\u0002\u0002\u0630\u0155",
    "\u0003\u0002\u0002\u0002\u0631\u0636\u0005\u0154\u00ab\u0002\u0632\u0633",
    "\u0007\'\u0002\u0002\u0633\u0635\u0005\u0154\u00ab\u0002\u0634\u0632",
    "\u0003\u0002\u0002\u0002\u0635\u0638\u0003\u0002\u0002\u0002\u0636\u0634",
    "\u0003\u0002\u0002\u0002\u0636\u0637\u0003\u0002\u0002\u0002\u0637\u0157",
    "\u0003\u0002\u0002\u0002\u0638\u0636\u0003\u0002\u0002\u0002\u0639\u063a",
    "\u0007%\u0002\u0002\u063a\u0159\u0003\u0002\u0002\u0002\u063b\u063c",
    "\u0007\f\u0002\u0002\u063c\u063d\u0005\n\u0006\u0002\u063d\u063e\u0007",
    "3\u0002\u0002\u063e\u063f\u0005\u0156\u00ac\u0002\u063f\u0642\u0007",
    "4\u0002\u0002\u0640\u0641\u0007\"\u0002\u0002\u0641\u0643\u0005\u014a",
    "\u00a6\u0002\u0642\u0640\u0003\u0002\u0002\u0002\u0642\u0643\u0003\u0002",
    "\u0002\u0002\u0643\u064c\u0003\u0002\u0002\u0002\u0644\u0646\u0005\u001c",
    "\u000f\u0002\u0645\u0644\u0003\u0002\u0002\u0002\u0645\u0646\u0003\u0002",
    "\u0002\u0002\u0646\u0647\u0003\u0002\u0002\u0002\u0647\u0648\u0007*",
    "\u0002\u0002\u0648\u064d\u0005\u0152\u00aa\u0002\u0649\u064a\u0005\u0158",
    "\u00ad\u0002\u064a\u064b\b\u00ae\u0001\u0002\u064b\u064d\u0003\u0002",
    "\u0002\u0002\u064c\u0645\u0003\u0002\u0002\u0002\u064c\u0649\u0003\u0002",
    "\u0002\u0002\u064d\u015b\u0003\u0002\u0002\u0002\u064e\u064f\u0007\n",
    "\u0002\u0002\u064f\u0651\u0005\n\u0006\u0002\u0650\u0652\u0005\u001c",
    "\u000f\u0002\u0651\u0650\u0003\u0002\u0002\u0002\u0651\u0652\u0003\u0002",
    "\u0002\u0002\u0652\u0653\u0003\u0002\u0002\u0002\u0653\u0654\u0007*",
    "\u0002\u0002\u0654\u0658\u0007\u0003\u0002\u0002\u0655\u0657\u00050",
    "\u0019\u0002\u0656\u0655\u0003\u0002\u0002\u0002\u0657\u065a\u0003\u0002",
    "\u0002\u0002\u0658\u0656\u0003\u0002\u0002\u0002\u0658\u0659\u0003\u0002",
    "\u0002\u0002\u0659\u065d\u0003\u0002\u0002\u0002\u065a\u0658\u0003\u0002",
    "\u0002\u0002\u065b\u065e\u0005 \u0011\u0002\u065c\u065e\u0005*\u0016",
    "\u0002\u065d\u065b\u0003\u0002\u0002\u0002\u065d\u065c\u0003\u0002\u0002",
    "\u0002\u065e\u065f\u0003\u0002\u0002\u0002\u065f\u0660\u0007\u0004\u0002",
    "\u0002\u0660\u015d\u0003\u0002\u0002\u0002\u0661\u0671\u0007\u0003\u0002",
    "\u0002\u0662\u0672\u0005\u015c\u00af\u0002\u0663\u0672\u00050\u0019",
    "\u0002\u0664\u0672\u0005\u00b4[\u0002\u0665\u0672\u0005\u00b6\\\u0002",
    "\u0666\u0672\u0005V,\u0002\u0667\u0672\u0005\u008cG\u0002\u0668\u0672",
    "\u0005\u009cO\u0002\u0669\u0672\u0005\u009aN\u0002\u066a\u0672\u0005",
    "\u00b8]\u0002\u066b\u0672\u0007=\u0002\u0002\u066c\u0672\u0005F$\u0002",
    "\u066d\u066e\u0005\u015a\u00ae\u0002\u066e\u066f\b\u00b0\u0001\u0002",
    "\u066f\u0672\u0003\u0002\u0002\u0002\u0670\u0672\u0005B\"\u0002\u0671",
    "\u0662\u0003\u0002\u0002\u0002\u0671\u0663\u0003\u0002\u0002\u0002\u0671",
    "\u0664\u0003\u0002\u0002\u0002\u0671\u0665\u0003\u0002\u0002\u0002\u0671",
    "\u0666\u0003\u0002\u0002\u0002\u0671\u0667\u0003\u0002\u0002\u0002\u0671",
    "\u0668\u0003\u0002\u0002\u0002\u0671\u0669\u0003\u0002\u0002\u0002\u0671",
    "\u066a\u0003\u0002\u0002\u0002\u0671\u066b\u0003\u0002\u0002\u0002\u0671",
    "\u066c\u0003\u0002\u0002\u0002\u0671\u066d\u0003\u0002\u0002\u0002\u0671",
    "\u0670\u0003\u0002\u0002\u0002\u0672\u0673\u0003\u0002\u0002\u0002\u0673",
    "\u0671\u0003\u0002\u0002\u0002\u0673\u0674\u0003\u0002\u0002\u0002\u0674",
    "\u0677\u0003\u0002\u0002\u0002\u0675\u0678\u0006\u00b0\u0005\u0003\u0676",
    "\u0678\u0007\u0004\u0002\u0002\u0677\u0675\u0003\u0002\u0002\u0002\u0677",
    "\u0676\u0003\u0002\u0002\u0002\u0678\u015f\u0003\u0002\u0002\u0002\u0679",
    "\u067b\u0007=\u0002\u0002\u067a\u0679\u0003\u0002\u0002\u0002\u067b",
    "\u067e\u0003\u0002\u0002\u0002\u067c\u067a\u0003\u0002\u0002\u0002\u067c",
    "\u067d\u0003\u0002\u0002\u0002\u067d\u067f\u0003\u0002\u0002\u0002\u067e",
    "\u067c\u0003\u0002\u0002\u0002\u067f\u0680\u0005N(\u0002\u0680\u0681",
    "\u0007*\u0002\u0002\u0681\u0682\u0005\u015e\u00b0\u0002\u0682\u0161",
    "\u0003\u0002\u0002\u0002\u0683\u0685\u0007)\u0002\u0002\u0684\u0683",
    "\u0003\u0002\u0002\u0002\u0684\u0685\u0003\u0002\u0002\u0002\u0685\u0686",
    "\u0003\u0002\u0002\u0002\u0686\u068b\u0007?\u0002\u0002\u0687\u0688",
    "\u0007)\u0002\u0002\u0688\u068a\u0007?\u0002\u0002\u0689\u0687\u0003",
    "\u0002\u0002\u0002\u068a\u068d\u0003\u0002\u0002\u0002\u068b\u0689\u0003",
    "\u0002\u0002\u0002\u068b\u068c\u0003\u0002\u0002\u0002\u068c\u0163\u0003",
    "\u0002\u0002\u0002\u068d\u068b\u0003\u0002\u0002\u0002\u068e\u0692\u0007",
    "\r\u0002\u0002\u068f\u0691\u0007=\u0002\u0002\u0690\u068f\u0003\u0002",
    "\u0002\u0002\u0691\u0694\u0003\u0002\u0002\u0002\u0692\u0690\u0003\u0002",
    "\u0002\u0002\u0692\u0693\u0003\u0002\u0002\u0002\u0693\u0165\u0003\u0002",
    "\u0002\u0002\u0694\u0692\u0003\u0002\u0002\u0002\u0695\u0697\u0005\u0164",
    "\u00b3\u0002\u0696\u0695\u0003\u0002\u0002\u0002\u0697\u0698\u0003\u0002",
    "\u0002\u0002\u0698\u0696\u0003\u0002\u0002\u0002\u0698\u0699\u0003\u0002",
    "\u0002\u0002\u0699\u0167\u0003\u0002\u0002\u0002\u069a\u069c\u0005\u0166",
    "\u00b4\u0002\u069b\u069a\u0003\u0002\u0002\u0002\u069b\u069c\u0003\u0002",
    "\u0002\u0002\u069c\u069e\u0003\u0002\u0002\u0002\u069d\u069f\u0005\u0160",
    "\u00b1\u0002\u069e\u069d\u0003\u0002\u0002\u0002\u069f\u06a0\u0003\u0002",
    "\u0002\u0002\u06a0\u069e\u0003\u0002\u0002\u0002\u06a0\u06a1\u0003\u0002",
    "\u0002\u0002\u06a1\u06a2\u0003\u0002\u0002\u0002\u06a2\u06a3\u0007\u0002",
    "\u0002\u0003\u06a3\u0169\u0003\u0002\u0002\u0002\u00bb\u0170\u0177\u0180",
    "\u018e\u019b\u01a6\u01b0\u01b8\u01bf\u01c7\u01d1\u01d5\u01da\u01de\u01e3",
    "\u01e7\u01ee\u01f5\u0200\u0208\u020a\u020d\u0210\u0214\u021a\u0222\u0228",
    "\u022d\u0230\u0232\u023c\u023e\u0243\u0248\u024d\u0256\u025b\u0261\u026a",
    "\u026c\u026f\u027a\u027f\u0282\u028b\u028f\u0296\u029b\u02a4\u02b7\u02ba",
    "\u02c2\u02d0\u02d3\u02d6\u02de\u02e7\u02ed\u02ef\u02f6\u0302\u0304\u030a",
    "\u030c\u0314\u031d\u0321\u032a\u0331\u0338\u0341\u034b\u0358\u035f\u0362",
    "\u0369\u0373\u037c\u037f\u0386\u038d\u039d\u03a0\u03a4\u03a7\u03aa\u03b1",
    "\u03ba\u03bd\u03c0\u03c8\u03cc\u03ce\u03d2\u03d8\u03da\u03e2\u03ea\u03f6",
    "\u03fc\u03ff\u0414\u041f\u0423\u0428\u042b\u0433\u0437\u043d\u0445\u0449",
    "\u044d\u0453\u045e\u0464\u046a\u0471\u0479\u0484\u048e\u0495\u049f\u04b0",
    "\u04b5\u04b9\u04be\u04c4\u04cc\u04d2\u04d6\u04e6\u04ef\u0503\u0509\u051d",
    "\u0523\u052b\u052e\u0539\u0543\u054e\u0556\u055e\u0566\u056e\u0576\u057e",
    "\u0586\u058b\u059c\u05a4\u05aa\u05b0\u05b8\u05bb\u05c4\u05ca\u05d3\u05f0",
    "\u05f4\u05fe\u0603\u0607\u060e\u0615\u0619\u0621\u062f\u0636\u0642\u0645",
    "\u064c\u0651\u0658\u065d\u0671\u0673\u0677\u067c\u0684\u068b\u0692\u0698",
    "\u069b\u06a0"].join("");


var atn = new antlr4.atn.ATNDeserializer().deserialize(serializedATN);

var decisionsToDFA = atn.decisionToState.map( function(ds, index) { return new antlr4.dfa.DFA(ds, index); });

var sharedContextCache = new antlr4.PredictionContextCache();

var literalNames = [ null, null, null, null, null, "'!wrap'", "'!table'", 
                     "'!type'", "'!alias'", "'!union'", "'!view'", null, 
                     null, null, null, null, null, null, null, null, null, 
                     null, "'..'", null, null, null, null, "'<->'", null, 
                     null, null, null, null, "'.. * <- *'", null, null, 
                     null, null, null, null, null, null, null, "'@'", null, 
                     null, null, null, null, null, null, null, "'#'", "'|'", 
                     null, null, null, null, null, null, null, null, null, 
                     null, null, null, null, null, null, null, null, null, 
                     null, null, "'=>'", "'->'", "'=='", null, null, null, 
                     "'<'", "'>'", "'{:}'", null, null, "'?.'", null, "'**'", 
                     null, null, null, null, null, null, null, null, "'%'", 
                     "'-'", null, null, "'!'", null, "'||'", "'&&'", null, 
                     "'by'", "'and'", null, "'*'", "'as'", "'via'", "'if'", 
                     "'then'", "'else'", "'let'", "'true'", "'false'", "'null'", 
                     null, null, null, "'asc'", "'desc'", "'rank'", null, 
                     "'any'", null, "'snapshot'", "'where'", "'count'", 
                     "'flatten'", "'first'" ];

var symbolicNames = [ null, "INDENT", "DEDENT", "NativeDataTypes", "HTTP_VERBS", 
                      "WRAP", "TABLE", "TYPE", "ALIAS", "UNION", "VIEW", 
                      "IMPORT", "RETURN", "IF", "FOR_EACH", "FOR", "UNTIL", 
                      "ELSE", "LOOP", "ALT", "WHILE", "WHATEVER", "DOTDOT", 
                      "SEQUENCE_OF", "SET_OF", "ONE_OF", "MIXIN", "DISTANCE", 
                      "DOT_ARROW", "NAME_SEP", "LESS_COLON", "ARROW_LEFT", 
                      "ARROW_RIGHT", "COLLECTOR", "PLUS", "ABSTRACT", "TILDE", 
                      "COMMA", "EQ", "FORWARD_SLASH", "COLON", "DOT", "QN", 
                      "AT", "AMP", "SQ_OPEN", "SQ_CLOSE", "CURLY_OPEN", 
                      "CURLY_CLOSE", "OPEN_PAREN", "CLOSE_PAREN", "EMPTY_COMMENT", 
                      "HASH", "PIPE", "EMPTY_LINE", "INDENTED_COMMENT", 
                      "DIGITS", "QSTRING", "NEWLINE", "SYSL_COMMENT", "TEXT_LINE", 
                      "Name", "WS", "ErrorChar", "PREDICATE_VALUE", "SKIP_WS_ARG", 
                      "TEXT_VALUE", "NEWLINE_2", "TEXT", "POP_WS", "VAR_NAME", 
                      "E_NativeDataTypes", "E_INDENTED_COMMENT", "E_WHATEVER", 
                      "E_EQ_RIGHT", "E_ARROW_RIGHT", "E_DOUBLE_EQ", "E_REL", 
                      "E_SQ_OPEN", "E_SQ_CLOSE", "E_ANGLE_OPEN", "E_ANGLE_CLOSE", 
                      "E_EMPTY_TUPLE", "E_CURLY_OPEN", "E_CURLY_CLOSE", 
                      "E_NULLSAFE_DOT", "E_TABLE_OF", "E_POW", "E_COALESCE", 
                      "E_COLON", "E_OPEN_PAREN", "E_CLOSE_PAREN", "E_COMMA", 
                      "E_EQ", "E_PLUS", "E_DIVIDE", "E_MOD", "E_MINUS", 
                      "E_QN", "E_TILDE", "E_NOT", "E_XOR", "E_LOGIC_OR", 
                      "E_DOUBLE_AMP", "E_AMP", "E_BY", "E_AND", "E_BITOR", 
                      "E_STAR", "E_AS", "E_VIA", "E_IF", "E_THEN", "E_ELSE", 
                      "E_LET", "E_TRUE", "E_FALSE", "E_NULL", "E_BUTNOT", 
                      "E_SEQUENCE_OF", "E_SET_OF", "E_ASC", "E_DESC", "E_RELOPS_RANK", 
                      "E_RELOPS_AGG", "E_RELOPS_ANY", "E_RELOPS_SINGLE_NULL", 
                      "E_RELOPS_SNAPSHOT", "E_RELOPS_WHERE", "E_RELOPS_COUNT", 
                      "E_RELOPS_FLATTEN", "E_RELOPS_FIRST", "E_FUNC", "E_STRING_DBL", 
                      "E_STRING_SINGLE", "E_DECIMAL", "E_DIGITS", "E_DOT_NAME_NL", 
                      "E_Name", "E_DOT", "E_WS", "E_EMPTY_LINE", "E_NL" ];

var ruleNames =  [ "modifier", "size_spec", "modifier_list", "modifiers", 
                   "name_str", "reference", "doc_string", "quoted_string", 
                   "array_of_strings", "array_of_arrays", "nvp", "attributes", 
                   "entry", "attribs_or_modifiers", "user_defined_type", 
                   "types", "set_of", "set_type", "sequence_of", "sequence_type", 
                   "collection_type", "multi_line_docstring", "annotation_value", 
                   "annotation", "annotations", "field_type", "array_size", 
                   "inplace_tuple", "field", "inplace_table", "table_stmts", 
                   "table_def", "table", "union_type", "union", "package_name", 
                   "sub_package", "app_name", "name_with_attribs", "model_name", 
                   "inplace_table_def", "table_refs", "facade", "documentation_stmts", 
                   "var_in_curly", "query_var", "query_param", "http_path_part", 
                   "http_path_var_with_type", "http_path_static", "http_path_suffix", 
                   "http_path", "endpoint_name", "ret_stmt", "target", "target_endpoint", 
                   "call_arg", "call_args", "call_stmt", "if_stmt", "else_stmt", 
                   "if_else", "for_stmt", "http_method_comment", "group_stmt", 
                   "one_of_case_label", "one_of_cases", "one_of_stmt", "text_stmt", 
                   "mixin", "param", "param_list", "params", "statements", 
                   "method_def", "shortcut", "simple_endpoint", "rest_endpoint", 
                   "collector_query_var", "collector_query_param", "collector_call_stmt", 
                   "collector_http_stmt_part", "collector_http_stmt_suffix", 
                   "collector_http_stmt", "publisher", "subscriber", "collector_pubsub_call", 
                   "collector_action_stmt", "collector_stmts", "collector", 
                   "event", "subscribe", "view_type_spec", "literal", "expr_table_of_op", 
                   "func_arg", "func_args", "expr_func", "rank_expr", "rank_expr_list", 
                   "expr_rank_func", "expr_agg_func", "e_scope_var", "first_func_target", 
                   "expr_first_func", "e_single_arg_func", "expr_single_arg_func", 
                   "expr_any_func", "expr_single_or_null", "expr_snapshot", 
                   "expr_count", "expr_navigate_attr", "expr_navigate", 
                   "matching_rhs", "squiggly_args", "expr_matching", "relop", 
                   "list_item", "expr_list", "expr_set", "empty_tuple", 
                   "atom_dot_relop", "atomT_implied_dot", "atomT_name", 
                   "atomT_paren", "expr_atom_list", "atomT", "atom", "powerT", 
                   "power", "unaryTerm", "termT", "term", "binexprT", "binexpr", 
                   "e_compare_ops", "expr_rel", "expr_bitand", "expr_bitxor", 
                   "expr_bitor", "expr_and", "expr_or", "expr_but_not", 
                   "expr_coalesce", "if_one_liner", "else_block_stmt", "control_item", 
                   "if_controls", "cond_block", "final_else", "ifvar", "if_multiple_lines", 
                   "expr_if_else", "expr", "expr_assign", "expr_simple_assign", 
                   "expr_let_statement", "expr_table_of_statement", "expr_dot_assign", 
                   "expr_statement_no_nl", "expr_statement", "expr_inject_stmt", 
                   "expr_stmt", "transform_return_type", "view_return_type", 
                   "transform_scope_var", "transform_arg", "transform", 
                   "expr_block", "view_param", "view_params", "abstract_view", 
                   "view", "alias", "app_decl", "application", "path", "import_stmt", 
                   "imports_decl", "sysl_file" ];

function SyslParser (input) {
	antlr4.Parser.call(this, input);
    this._interp = new antlr4.atn.ParserATNSimulator(this, atn, decisionsToDFA, sharedContextCache);
    this.ruleNames = ruleNames;
    this.literalNames = literalNames;
    this.symbolicNames = symbolicNames;
    return this;
}

SyslParser.prototype = Object.create(antlr4.Parser.prototype);
SyslParser.prototype.constructor = SyslParser;

Object.defineProperty(SyslParser.prototype, "atn", {
	get : function() {
		return atn;
	}
});

SyslParser.EOF = antlr4.Token.EOF;
SyslParser.INDENT = 1;
SyslParser.DEDENT = 2;
SyslParser.NativeDataTypes = 3;
SyslParser.HTTP_VERBS = 4;
SyslParser.WRAP = 5;
SyslParser.TABLE = 6;
SyslParser.TYPE = 7;
SyslParser.ALIAS = 8;
SyslParser.UNION = 9;
SyslParser.VIEW = 10;
SyslParser.IMPORT = 11;
SyslParser.RETURN = 12;
SyslParser.IF = 13;
SyslParser.FOR_EACH = 14;
SyslParser.FOR = 15;
SyslParser.UNTIL = 16;
SyslParser.ELSE = 17;
SyslParser.LOOP = 18;
SyslParser.ALT = 19;
SyslParser.WHILE = 20;
SyslParser.WHATEVER = 21;
SyslParser.DOTDOT = 22;
SyslParser.SEQUENCE_OF = 23;
SyslParser.SET_OF = 24;
SyslParser.ONE_OF = 25;
SyslParser.MIXIN = 26;
SyslParser.DISTANCE = 27;
SyslParser.DOT_ARROW = 28;
SyslParser.NAME_SEP = 29;
SyslParser.LESS_COLON = 30;
SyslParser.ARROW_LEFT = 31;
SyslParser.ARROW_RIGHT = 32;
SyslParser.COLLECTOR = 33;
SyslParser.PLUS = 34;
SyslParser.ABSTRACT = 35;
SyslParser.TILDE = 36;
SyslParser.COMMA = 37;
SyslParser.EQ = 38;
SyslParser.FORWARD_SLASH = 39;
SyslParser.COLON = 40;
SyslParser.DOT = 41;
SyslParser.QN = 42;
SyslParser.AT = 43;
SyslParser.AMP = 44;
SyslParser.SQ_OPEN = 45;
SyslParser.SQ_CLOSE = 46;
SyslParser.CURLY_OPEN = 47;
SyslParser.CURLY_CLOSE = 48;
SyslParser.OPEN_PAREN = 49;
SyslParser.CLOSE_PAREN = 50;
SyslParser.EMPTY_COMMENT = 51;
SyslParser.HASH = 52;
SyslParser.PIPE = 53;
SyslParser.EMPTY_LINE = 54;
SyslParser.INDENTED_COMMENT = 55;
SyslParser.DIGITS = 56;
SyslParser.QSTRING = 57;
SyslParser.NEWLINE = 58;
SyslParser.SYSL_COMMENT = 59;
SyslParser.TEXT_LINE = 60;
SyslParser.Name = 61;
SyslParser.WS = 62;
SyslParser.ErrorChar = 63;
SyslParser.PREDICATE_VALUE = 64;
SyslParser.SKIP_WS_ARG = 65;
SyslParser.TEXT_VALUE = 66;
SyslParser.NEWLINE_2 = 67;
SyslParser.TEXT = 68;
SyslParser.POP_WS = 69;
SyslParser.VAR_NAME = 70;
SyslParser.E_NativeDataTypes = 71;
SyslParser.E_INDENTED_COMMENT = 72;
SyslParser.E_WHATEVER = 73;
SyslParser.E_EQ_RIGHT = 74;
SyslParser.E_ARROW_RIGHT = 75;
SyslParser.E_DOUBLE_EQ = 76;
SyslParser.E_REL = 77;
SyslParser.E_SQ_OPEN = 78;
SyslParser.E_SQ_CLOSE = 79;
SyslParser.E_ANGLE_OPEN = 80;
SyslParser.E_ANGLE_CLOSE = 81;
SyslParser.E_EMPTY_TUPLE = 82;
SyslParser.E_CURLY_OPEN = 83;
SyslParser.E_CURLY_CLOSE = 84;
SyslParser.E_NULLSAFE_DOT = 85;
SyslParser.E_TABLE_OF = 86;
SyslParser.E_POW = 87;
SyslParser.E_COALESCE = 88;
SyslParser.E_COLON = 89;
SyslParser.E_OPEN_PAREN = 90;
SyslParser.E_CLOSE_PAREN = 91;
SyslParser.E_COMMA = 92;
SyslParser.E_EQ = 93;
SyslParser.E_PLUS = 94;
SyslParser.E_DIVIDE = 95;
SyslParser.E_MOD = 96;
SyslParser.E_MINUS = 97;
SyslParser.E_QN = 98;
SyslParser.E_TILDE = 99;
SyslParser.E_NOT = 100;
SyslParser.E_XOR = 101;
SyslParser.E_LOGIC_OR = 102;
SyslParser.E_DOUBLE_AMP = 103;
SyslParser.E_AMP = 104;
SyslParser.E_BY = 105;
SyslParser.E_AND = 106;
SyslParser.E_BITOR = 107;
SyslParser.E_STAR = 108;
SyslParser.E_AS = 109;
SyslParser.E_VIA = 110;
SyslParser.E_IF = 111;
SyslParser.E_THEN = 112;
SyslParser.E_ELSE = 113;
SyslParser.E_LET = 114;
SyslParser.E_TRUE = 115;
SyslParser.E_FALSE = 116;
SyslParser.E_NULL = 117;
SyslParser.E_BUTNOT = 118;
SyslParser.E_SEQUENCE_OF = 119;
SyslParser.E_SET_OF = 120;
SyslParser.E_ASC = 121;
SyslParser.E_DESC = 122;
SyslParser.E_RELOPS_RANK = 123;
SyslParser.E_RELOPS_AGG = 124;
SyslParser.E_RELOPS_ANY = 125;
SyslParser.E_RELOPS_SINGLE_NULL = 126;
SyslParser.E_RELOPS_SNAPSHOT = 127;
SyslParser.E_RELOPS_WHERE = 128;
SyslParser.E_RELOPS_COUNT = 129;
SyslParser.E_RELOPS_FLATTEN = 130;
SyslParser.E_RELOPS_FIRST = 131;
SyslParser.E_FUNC = 132;
SyslParser.E_STRING_DBL = 133;
SyslParser.E_STRING_SINGLE = 134;
SyslParser.E_DECIMAL = 135;
SyslParser.E_DIGITS = 136;
SyslParser.E_DOT_NAME_NL = 137;
SyslParser.E_Name = 138;
SyslParser.E_DOT = 139;
SyslParser.E_WS = 140;
SyslParser.E_EMPTY_LINE = 141;
SyslParser.E_NL = 142;

SyslParser.RULE_modifier = 0;
SyslParser.RULE_size_spec = 1;
SyslParser.RULE_modifier_list = 2;
SyslParser.RULE_modifiers = 3;
SyslParser.RULE_name_str = 4;
SyslParser.RULE_reference = 5;
SyslParser.RULE_doc_string = 6;
SyslParser.RULE_quoted_string = 7;
SyslParser.RULE_array_of_strings = 8;
SyslParser.RULE_array_of_arrays = 9;
SyslParser.RULE_nvp = 10;
SyslParser.RULE_attributes = 11;
SyslParser.RULE_entry = 12;
SyslParser.RULE_attribs_or_modifiers = 13;
SyslParser.RULE_user_defined_type = 14;
SyslParser.RULE_types = 15;
SyslParser.RULE_set_of = 16;
SyslParser.RULE_set_type = 17;
SyslParser.RULE_sequence_of = 18;
SyslParser.RULE_sequence_type = 19;
SyslParser.RULE_collection_type = 20;
SyslParser.RULE_multi_line_docstring = 21;
SyslParser.RULE_annotation_value = 22;
SyslParser.RULE_annotation = 23;
SyslParser.RULE_annotations = 24;
SyslParser.RULE_field_type = 25;
SyslParser.RULE_array_size = 26;
SyslParser.RULE_inplace_tuple = 27;
SyslParser.RULE_field = 28;
SyslParser.RULE_inplace_table = 29;
SyslParser.RULE_table_stmts = 30;
SyslParser.RULE_table_def = 31;
SyslParser.RULE_table = 32;
SyslParser.RULE_union_type = 33;
SyslParser.RULE_union = 34;
SyslParser.RULE_package_name = 35;
SyslParser.RULE_sub_package = 36;
SyslParser.RULE_app_name = 37;
SyslParser.RULE_name_with_attribs = 38;
SyslParser.RULE_model_name = 39;
SyslParser.RULE_inplace_table_def = 40;
SyslParser.RULE_table_refs = 41;
SyslParser.RULE_facade = 42;
SyslParser.RULE_documentation_stmts = 43;
SyslParser.RULE_var_in_curly = 44;
SyslParser.RULE_query_var = 45;
SyslParser.RULE_query_param = 46;
SyslParser.RULE_http_path_part = 47;
SyslParser.RULE_http_path_var_with_type = 48;
SyslParser.RULE_http_path_static = 49;
SyslParser.RULE_http_path_suffix = 50;
SyslParser.RULE_http_path = 51;
SyslParser.RULE_endpoint_name = 52;
SyslParser.RULE_ret_stmt = 53;
SyslParser.RULE_target = 54;
SyslParser.RULE_target_endpoint = 55;
SyslParser.RULE_call_arg = 56;
SyslParser.RULE_call_args = 57;
SyslParser.RULE_call_stmt = 58;
SyslParser.RULE_if_stmt = 59;
SyslParser.RULE_else_stmt = 60;
SyslParser.RULE_if_else = 61;
SyslParser.RULE_for_stmt = 62;
SyslParser.RULE_http_method_comment = 63;
SyslParser.RULE_group_stmt = 64;
SyslParser.RULE_one_of_case_label = 65;
SyslParser.RULE_one_of_cases = 66;
SyslParser.RULE_one_of_stmt = 67;
SyslParser.RULE_text_stmt = 68;
SyslParser.RULE_mixin = 69;
SyslParser.RULE_param = 70;
SyslParser.RULE_param_list = 71;
SyslParser.RULE_params = 72;
SyslParser.RULE_statements = 73;
SyslParser.RULE_method_def = 74;
SyslParser.RULE_shortcut = 75;
SyslParser.RULE_simple_endpoint = 76;
SyslParser.RULE_rest_endpoint = 77;
SyslParser.RULE_collector_query_var = 78;
SyslParser.RULE_collector_query_param = 79;
SyslParser.RULE_collector_call_stmt = 80;
SyslParser.RULE_collector_http_stmt_part = 81;
SyslParser.RULE_collector_http_stmt_suffix = 82;
SyslParser.RULE_collector_http_stmt = 83;
SyslParser.RULE_publisher = 84;
SyslParser.RULE_subscriber = 85;
SyslParser.RULE_collector_pubsub_call = 86;
SyslParser.RULE_collector_action_stmt = 87;
SyslParser.RULE_collector_stmts = 88;
SyslParser.RULE_collector = 89;
SyslParser.RULE_event = 90;
SyslParser.RULE_subscribe = 91;
SyslParser.RULE_view_type_spec = 92;
SyslParser.RULE_literal = 93;
SyslParser.RULE_expr_table_of_op = 94;
SyslParser.RULE_func_arg = 95;
SyslParser.RULE_func_args = 96;
SyslParser.RULE_expr_func = 97;
SyslParser.RULE_rank_expr = 98;
SyslParser.RULE_rank_expr_list = 99;
SyslParser.RULE_expr_rank_func = 100;
SyslParser.RULE_expr_agg_func = 101;
SyslParser.RULE_e_scope_var = 102;
SyslParser.RULE_first_func_target = 103;
SyslParser.RULE_expr_first_func = 104;
SyslParser.RULE_e_single_arg_func = 105;
SyslParser.RULE_expr_single_arg_func = 106;
SyslParser.RULE_expr_any_func = 107;
SyslParser.RULE_expr_single_or_null = 108;
SyslParser.RULE_expr_snapshot = 109;
SyslParser.RULE_expr_count = 110;
SyslParser.RULE_expr_navigate_attr = 111;
SyslParser.RULE_expr_navigate = 112;
SyslParser.RULE_matching_rhs = 113;
SyslParser.RULE_squiggly_args = 114;
SyslParser.RULE_expr_matching = 115;
SyslParser.RULE_relop = 116;
SyslParser.RULE_list_item = 117;
SyslParser.RULE_expr_list = 118;
SyslParser.RULE_expr_set = 119;
SyslParser.RULE_empty_tuple = 120;
SyslParser.RULE_atom_dot_relop = 121;
SyslParser.RULE_atomT_implied_dot = 122;
SyslParser.RULE_atomT_name = 123;
SyslParser.RULE_atomT_paren = 124;
SyslParser.RULE_expr_atom_list = 125;
SyslParser.RULE_atomT = 126;
SyslParser.RULE_atom = 127;
SyslParser.RULE_powerT = 128;
SyslParser.RULE_power = 129;
SyslParser.RULE_unaryTerm = 130;
SyslParser.RULE_termT = 131;
SyslParser.RULE_term = 132;
SyslParser.RULE_binexprT = 133;
SyslParser.RULE_binexpr = 134;
SyslParser.RULE_e_compare_ops = 135;
SyslParser.RULE_expr_rel = 136;
SyslParser.RULE_expr_bitand = 137;
SyslParser.RULE_expr_bitxor = 138;
SyslParser.RULE_expr_bitor = 139;
SyslParser.RULE_expr_and = 140;
SyslParser.RULE_expr_or = 141;
SyslParser.RULE_expr_but_not = 142;
SyslParser.RULE_expr_coalesce = 143;
SyslParser.RULE_if_one_liner = 144;
SyslParser.RULE_else_block_stmt = 145;
SyslParser.RULE_control_item = 146;
SyslParser.RULE_if_controls = 147;
SyslParser.RULE_cond_block = 148;
SyslParser.RULE_final_else = 149;
SyslParser.RULE_ifvar = 150;
SyslParser.RULE_if_multiple_lines = 151;
SyslParser.RULE_expr_if_else = 152;
SyslParser.RULE_expr = 153;
SyslParser.RULE_expr_assign = 154;
SyslParser.RULE_expr_simple_assign = 155;
SyslParser.RULE_expr_let_statement = 156;
SyslParser.RULE_expr_table_of_statement = 157;
SyslParser.RULE_expr_dot_assign = 158;
SyslParser.RULE_expr_statement_no_nl = 159;
SyslParser.RULE_expr_statement = 160;
SyslParser.RULE_expr_inject_stmt = 161;
SyslParser.RULE_expr_stmt = 162;
SyslParser.RULE_transform_return_type = 163;
SyslParser.RULE_view_return_type = 164;
SyslParser.RULE_transform_scope_var = 165;
SyslParser.RULE_transform_arg = 166;
SyslParser.RULE_transform = 167;
SyslParser.RULE_expr_block = 168;
SyslParser.RULE_view_param = 169;
SyslParser.RULE_view_params = 170;
SyslParser.RULE_abstract_view = 171;
SyslParser.RULE_view = 172;
SyslParser.RULE_alias = 173;
SyslParser.RULE_app_decl = 174;
SyslParser.RULE_application = 175;
SyslParser.RULE_path = 176;
SyslParser.RULE_import_stmt = 177;
SyslParser.RULE_imports_decl = 178;
SyslParser.RULE_sysl_file = 179;

function ModifierContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_modifier;
    return this;
}

ModifierContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
ModifierContext.prototype.constructor = ModifierContext;

ModifierContext.prototype.TILDE = function() {
    return this.getToken(SyslParser.TILDE, 0);
};

ModifierContext.prototype.Name = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SyslParser.Name);
    } else {
        return this.getToken(SyslParser.Name, i);
    }
};


ModifierContext.prototype.PLUS = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SyslParser.PLUS);
    } else {
        return this.getToken(SyslParser.PLUS, i);
    }
};


ModifierContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterModifier(this);
	}
};

ModifierContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitModifier(this);
	}
};




SyslParser.ModifierContext = ModifierContext;

SyslParser.prototype.modifier = function() {

    var localctx = new ModifierContext(this, this._ctx, this.state);
    this.enterRule(localctx, 0, SyslParser.RULE_modifier);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 360;
        this.match(SyslParser.TILDE);
        this.state = 361;
        this.match(SyslParser.Name);
        this.state = 366;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===SyslParser.PLUS) {
            this.state = 362;
            this.match(SyslParser.PLUS);
            this.state = 363;
            this.match(SyslParser.Name);
            this.state = 368;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Size_specContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_size_spec;
    return this;
}

Size_specContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Size_specContext.prototype.constructor = Size_specContext;

Size_specContext.prototype.OPEN_PAREN = function() {
    return this.getToken(SyslParser.OPEN_PAREN, 0);
};

Size_specContext.prototype.DIGITS = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SyslParser.DIGITS);
    } else {
        return this.getToken(SyslParser.DIGITS, i);
    }
};


Size_specContext.prototype.CLOSE_PAREN = function() {
    return this.getToken(SyslParser.CLOSE_PAREN, 0);
};

Size_specContext.prototype.DOT = function() {
    return this.getToken(SyslParser.DOT, 0);
};

Size_specContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterSize_spec(this);
	}
};

Size_specContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitSize_spec(this);
	}
};




SyslParser.Size_specContext = Size_specContext;

SyslParser.prototype.size_spec = function() {

    var localctx = new Size_specContext(this, this._ctx, this.state);
    this.enterRule(localctx, 2, SyslParser.RULE_size_spec);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 369;
        this.match(SyslParser.OPEN_PAREN);
        this.state = 370;
        this.match(SyslParser.DIGITS);
        this.state = 373;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SyslParser.DOT) {
            this.state = 371;
            this.match(SyslParser.DOT);
            this.state = 372;
            this.match(SyslParser.DIGITS);
        }

        this.state = 375;
        this.match(SyslParser.CLOSE_PAREN);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Modifier_listContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_modifier_list;
    return this;
}

Modifier_listContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Modifier_listContext.prototype.constructor = Modifier_listContext;

Modifier_listContext.prototype.modifier = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(ModifierContext);
    } else {
        return this.getTypedRuleContext(ModifierContext,i);
    }
};

Modifier_listContext.prototype.COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SyslParser.COMMA);
    } else {
        return this.getToken(SyslParser.COMMA, i);
    }
};


Modifier_listContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterModifier_list(this);
	}
};

Modifier_listContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitModifier_list(this);
	}
};




SyslParser.Modifier_listContext = Modifier_listContext;

SyslParser.prototype.modifier_list = function() {

    var localctx = new Modifier_listContext(this, this._ctx, this.state);
    this.enterRule(localctx, 4, SyslParser.RULE_modifier_list);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 377;
        this.modifier();
        this.state = 382;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===SyslParser.COMMA) {
            this.state = 378;
            this.match(SyslParser.COMMA);
            this.state = 379;
            this.modifier();
            this.state = 384;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function ModifiersContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_modifiers;
    return this;
}

ModifiersContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
ModifiersContext.prototype.constructor = ModifiersContext;

ModifiersContext.prototype.SQ_OPEN = function() {
    return this.getToken(SyslParser.SQ_OPEN, 0);
};

ModifiersContext.prototype.modifier_list = function() {
    return this.getTypedRuleContext(Modifier_listContext,0);
};

ModifiersContext.prototype.SQ_CLOSE = function() {
    return this.getToken(SyslParser.SQ_CLOSE, 0);
};

ModifiersContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterModifiers(this);
	}
};

ModifiersContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitModifiers(this);
	}
};




SyslParser.ModifiersContext = ModifiersContext;

SyslParser.prototype.modifiers = function() {

    var localctx = new ModifiersContext(this, this._ctx, this.state);
    this.enterRule(localctx, 6, SyslParser.RULE_modifiers);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 385;
        this.match(SyslParser.SQ_OPEN);
        this.state = 386;
        this.modifier_list();
        this.state = 387;
        this.match(SyslParser.SQ_CLOSE);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Name_strContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_name_str;
    return this;
}

Name_strContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Name_strContext.prototype.constructor = Name_strContext;

Name_strContext.prototype.Name = function() {
    return this.getToken(SyslParser.Name, 0);
};

Name_strContext.prototype.TEXT_LINE = function() {
    return this.getToken(SyslParser.TEXT_LINE, 0);
};

Name_strContext.prototype.E_Name = function() {
    return this.getToken(SyslParser.E_Name, 0);
};

Name_strContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterName_str(this);
	}
};

Name_strContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitName_str(this);
	}
};




SyslParser.Name_strContext = Name_strContext;

SyslParser.prototype.name_str = function() {

    var localctx = new Name_strContext(this, this._ctx, this.state);
    this.enterRule(localctx, 8, SyslParser.RULE_name_str);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 389;
        _la = this._input.LA(1);
        if(!(_la===SyslParser.TEXT_LINE || _la===SyslParser.Name || _la===SyslParser.E_Name)) {
        this._errHandler.recoverInline(this);
        }
        else {
        	this._errHandler.reportMatch(this);
            this.consume();
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function ReferenceContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_reference;
    return this;
}

ReferenceContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
ReferenceContext.prototype.constructor = ReferenceContext;

ReferenceContext.prototype.app_name = function() {
    return this.getTypedRuleContext(App_nameContext,0);
};

ReferenceContext.prototype.name_str = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Name_strContext);
    } else {
        return this.getTypedRuleContext(Name_strContext,i);
    }
};

ReferenceContext.prototype.E_DOT = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SyslParser.E_DOT);
    } else {
        return this.getToken(SyslParser.E_DOT, i);
    }
};


ReferenceContext.prototype.DOT = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SyslParser.DOT);
    } else {
        return this.getToken(SyslParser.DOT, i);
    }
};


ReferenceContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterReference(this);
	}
};

ReferenceContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitReference(this);
	}
};




SyslParser.ReferenceContext = ReferenceContext;

SyslParser.prototype.reference = function() {

    var localctx = new ReferenceContext(this, this._ctx, this.state);
    this.enterRule(localctx, 10, SyslParser.RULE_reference);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 391;
        this.app_name();
        this.state = 394; 
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        do {
            this.state = 392;
            _la = this._input.LA(1);
            if(!(_la===SyslParser.DOT || _la===SyslParser.E_DOT)) {
            this._errHandler.recoverInline(this);
            }
            else {
            	this._errHandler.reportMatch(this);
                this.consume();
            }
            this.state = 393;
            this.name_str();
            this.state = 396; 
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        } while(_la===SyslParser.DOT || _la===SyslParser.E_DOT);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Doc_stringContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_doc_string;
    return this;
}

Doc_stringContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Doc_stringContext.prototype.constructor = Doc_stringContext;

Doc_stringContext.prototype.PIPE = function() {
    return this.getToken(SyslParser.PIPE, 0);
};

Doc_stringContext.prototype.TEXT = function() {
    return this.getToken(SyslParser.TEXT, 0);
};

Doc_stringContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterDoc_string(this);
	}
};

Doc_stringContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitDoc_string(this);
	}
};




SyslParser.Doc_stringContext = Doc_stringContext;

SyslParser.prototype.doc_string = function() {

    var localctx = new Doc_stringContext(this, this._ctx, this.state);
    this.enterRule(localctx, 12, SyslParser.RULE_doc_string);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 398;
        this.match(SyslParser.PIPE);
        this.state = 399;
        this.match(SyslParser.TEXT);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Quoted_stringContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_quoted_string;
    return this;
}

Quoted_stringContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Quoted_stringContext.prototype.constructor = Quoted_stringContext;

Quoted_stringContext.prototype.QSTRING = function() {
    return this.getToken(SyslParser.QSTRING, 0);
};

Quoted_stringContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterQuoted_string(this);
	}
};

Quoted_stringContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitQuoted_string(this);
	}
};




SyslParser.Quoted_stringContext = Quoted_stringContext;

SyslParser.prototype.quoted_string = function() {

    var localctx = new Quoted_stringContext(this, this._ctx, this.state);
    this.enterRule(localctx, 14, SyslParser.RULE_quoted_string);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 401;
        this.match(SyslParser.QSTRING);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Array_of_stringsContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_array_of_strings;
    return this;
}

Array_of_stringsContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Array_of_stringsContext.prototype.constructor = Array_of_stringsContext;

Array_of_stringsContext.prototype.SQ_OPEN = function() {
    return this.getToken(SyslParser.SQ_OPEN, 0);
};

Array_of_stringsContext.prototype.quoted_string = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Quoted_stringContext);
    } else {
        return this.getTypedRuleContext(Quoted_stringContext,i);
    }
};

Array_of_stringsContext.prototype.SQ_CLOSE = function() {
    return this.getToken(SyslParser.SQ_CLOSE, 0);
};

Array_of_stringsContext.prototype.COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SyslParser.COMMA);
    } else {
        return this.getToken(SyslParser.COMMA, i);
    }
};


Array_of_stringsContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterArray_of_strings(this);
	}
};

Array_of_stringsContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitArray_of_strings(this);
	}
};




SyslParser.Array_of_stringsContext = Array_of_stringsContext;

SyslParser.prototype.array_of_strings = function() {

    var localctx = new Array_of_stringsContext(this, this._ctx, this.state);
    this.enterRule(localctx, 16, SyslParser.RULE_array_of_strings);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 403;
        this.match(SyslParser.SQ_OPEN);
        this.state = 404;
        this.quoted_string();
        this.state = 409;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===SyslParser.COMMA) {
            this.state = 405;
            this.match(SyslParser.COMMA);
            this.state = 406;
            this.quoted_string();
            this.state = 411;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
        this.state = 412;
        this.match(SyslParser.SQ_CLOSE);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Array_of_arraysContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_array_of_arrays;
    return this;
}

Array_of_arraysContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Array_of_arraysContext.prototype.constructor = Array_of_arraysContext;

Array_of_arraysContext.prototype.SQ_OPEN = function() {
    return this.getToken(SyslParser.SQ_OPEN, 0);
};

Array_of_arraysContext.prototype.array_of_strings = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Array_of_stringsContext);
    } else {
        return this.getTypedRuleContext(Array_of_stringsContext,i);
    }
};

Array_of_arraysContext.prototype.SQ_CLOSE = function() {
    return this.getToken(SyslParser.SQ_CLOSE, 0);
};

Array_of_arraysContext.prototype.COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SyslParser.COMMA);
    } else {
        return this.getToken(SyslParser.COMMA, i);
    }
};


Array_of_arraysContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterArray_of_arrays(this);
	}
};

Array_of_arraysContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitArray_of_arrays(this);
	}
};




SyslParser.Array_of_arraysContext = Array_of_arraysContext;

SyslParser.prototype.array_of_arrays = function() {

    var localctx = new Array_of_arraysContext(this, this._ctx, this.state);
    this.enterRule(localctx, 18, SyslParser.RULE_array_of_arrays);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 414;
        this.match(SyslParser.SQ_OPEN);
        this.state = 415;
        this.array_of_strings();
        this.state = 420;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===SyslParser.COMMA) {
            this.state = 416;
            this.match(SyslParser.COMMA);
            this.state = 417;
            this.array_of_strings();
            this.state = 422;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
        this.state = 423;
        this.match(SyslParser.SQ_CLOSE);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function NvpContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_nvp;
    return this;
}

NvpContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
NvpContext.prototype.constructor = NvpContext;

NvpContext.prototype.Name = function() {
    return this.getToken(SyslParser.Name, 0);
};

NvpContext.prototype.EQ = function() {
    return this.getToken(SyslParser.EQ, 0);
};

NvpContext.prototype.quoted_string = function() {
    return this.getTypedRuleContext(Quoted_stringContext,0);
};

NvpContext.prototype.array_of_strings = function() {
    return this.getTypedRuleContext(Array_of_stringsContext,0);
};

NvpContext.prototype.array_of_arrays = function() {
    return this.getTypedRuleContext(Array_of_arraysContext,0);
};

NvpContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterNvp(this);
	}
};

NvpContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitNvp(this);
	}
};




SyslParser.NvpContext = NvpContext;

SyslParser.prototype.nvp = function() {

    var localctx = new NvpContext(this, this._ctx, this.state);
    this.enterRule(localctx, 20, SyslParser.RULE_nvp);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 425;
        this.match(SyslParser.Name);
        this.state = 426;
        this.match(SyslParser.EQ);
        this.state = 430;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,6,this._ctx);
        switch(la_) {
        case 1:
            this.state = 427;
            this.quoted_string();
            break;

        case 2:
            this.state = 428;
            this.array_of_strings();
            break;

        case 3:
            this.state = 429;
            this.array_of_arrays();
            break;

        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function AttributesContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_attributes;
    return this;
}

AttributesContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
AttributesContext.prototype.constructor = AttributesContext;

AttributesContext.prototype.SQ_OPEN = function() {
    return this.getToken(SyslParser.SQ_OPEN, 0);
};

AttributesContext.prototype.nvp = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(NvpContext);
    } else {
        return this.getTypedRuleContext(NvpContext,i);
    }
};

AttributesContext.prototype.SQ_CLOSE = function() {
    return this.getToken(SyslParser.SQ_CLOSE, 0);
};

AttributesContext.prototype.COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SyslParser.COMMA);
    } else {
        return this.getToken(SyslParser.COMMA, i);
    }
};


AttributesContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterAttributes(this);
	}
};

AttributesContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitAttributes(this);
	}
};




SyslParser.AttributesContext = AttributesContext;

SyslParser.prototype.attributes = function() {

    var localctx = new AttributesContext(this, this._ctx, this.state);
    this.enterRule(localctx, 22, SyslParser.RULE_attributes);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 432;
        this.match(SyslParser.SQ_OPEN);
        this.state = 433;
        this.nvp();
        this.state = 438;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===SyslParser.COMMA) {
            this.state = 434;
            this.match(SyslParser.COMMA);
            this.state = 435;
            this.nvp();
            this.state = 440;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
        this.state = 441;
        this.match(SyslParser.SQ_CLOSE);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function EntryContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_entry;
    return this;
}

EntryContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
EntryContext.prototype.constructor = EntryContext;

EntryContext.prototype.nvp = function() {
    return this.getTypedRuleContext(NvpContext,0);
};

EntryContext.prototype.modifier = function() {
    return this.getTypedRuleContext(ModifierContext,0);
};

EntryContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterEntry(this);
	}
};

EntryContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitEntry(this);
	}
};




SyslParser.EntryContext = EntryContext;

SyslParser.prototype.entry = function() {

    var localctx = new EntryContext(this, this._ctx, this.state);
    this.enterRule(localctx, 24, SyslParser.RULE_entry);
    try {
        this.state = 445;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case SyslParser.Name:
            this.enterOuterAlt(localctx, 1);
            this.state = 443;
            this.nvp();
            break;
        case SyslParser.TILDE:
            this.enterOuterAlt(localctx, 2);
            this.state = 444;
            this.modifier();
            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Attribs_or_modifiersContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_attribs_or_modifiers;
    return this;
}

Attribs_or_modifiersContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Attribs_or_modifiersContext.prototype.constructor = Attribs_or_modifiersContext;

Attribs_or_modifiersContext.prototype.SQ_OPEN = function() {
    return this.getToken(SyslParser.SQ_OPEN, 0);
};

Attribs_or_modifiersContext.prototype.entry = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(EntryContext);
    } else {
        return this.getTypedRuleContext(EntryContext,i);
    }
};

Attribs_or_modifiersContext.prototype.SQ_CLOSE = function() {
    return this.getToken(SyslParser.SQ_CLOSE, 0);
};

Attribs_or_modifiersContext.prototype.COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SyslParser.COMMA);
    } else {
        return this.getToken(SyslParser.COMMA, i);
    }
};


Attribs_or_modifiersContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterAttribs_or_modifiers(this);
	}
};

Attribs_or_modifiersContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitAttribs_or_modifiers(this);
	}
};




SyslParser.Attribs_or_modifiersContext = Attribs_or_modifiersContext;

SyslParser.prototype.attribs_or_modifiers = function() {

    var localctx = new Attribs_or_modifiersContext(this, this._ctx, this.state);
    this.enterRule(localctx, 26, SyslParser.RULE_attribs_or_modifiers);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 447;
        this.match(SyslParser.SQ_OPEN);
        this.state = 448;
        this.entry();
        this.state = 453;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===SyslParser.COMMA) {
            this.state = 449;
            this.match(SyslParser.COMMA);
            this.state = 450;
            this.entry();
            this.state = 455;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
        this.state = 456;
        this.match(SyslParser.SQ_CLOSE);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function User_defined_typeContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_user_defined_type;
    return this;
}

User_defined_typeContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
User_defined_typeContext.prototype.constructor = User_defined_typeContext;

User_defined_typeContext.prototype.name_str = function() {
    return this.getTypedRuleContext(Name_strContext,0);
};

User_defined_typeContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterUser_defined_type(this);
	}
};

User_defined_typeContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitUser_defined_type(this);
	}
};




SyslParser.User_defined_typeContext = User_defined_typeContext;

SyslParser.prototype.user_defined_type = function() {

    var localctx = new User_defined_typeContext(this, this._ctx, this.state);
    this.enterRule(localctx, 28, SyslParser.RULE_user_defined_type);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 458;
        this.name_str();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function TypesContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_types;
    return this;
}

TypesContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
TypesContext.prototype.constructor = TypesContext;

TypesContext.prototype.user_defined_type = function() {
    return this.getTypedRuleContext(User_defined_typeContext,0);
};

TypesContext.prototype.reference = function() {
    return this.getTypedRuleContext(ReferenceContext,0);
};

TypesContext.prototype.NativeDataTypes = function() {
    return this.getToken(SyslParser.NativeDataTypes, 0);
};

TypesContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterTypes(this);
	}
};

TypesContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitTypes(this);
	}
};




SyslParser.TypesContext = TypesContext;

SyslParser.prototype.types = function() {

    var localctx = new TypesContext(this, this._ctx, this.state);
    this.enterRule(localctx, 30, SyslParser.RULE_types);
    try {
        this.state = 463;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,10,this._ctx);
        switch(la_) {
        case 1:
            this.enterOuterAlt(localctx, 1);
            this.state = 460;
            this.user_defined_type();
            break;

        case 2:
            this.enterOuterAlt(localctx, 2);
            this.state = 461;
            this.reference();
            break;

        case 3:
            this.enterOuterAlt(localctx, 3);
            this.state = 462;
            this.match(SyslParser.NativeDataTypes);
            break;

        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Set_ofContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_set_of;
    return this;
}

Set_ofContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Set_ofContext.prototype.constructor = Set_ofContext;

Set_ofContext.prototype.SET_OF = function() {
    return this.getToken(SyslParser.SET_OF, 0);
};

Set_ofContext.prototype.E_SET_OF = function() {
    return this.getToken(SyslParser.E_SET_OF, 0);
};

Set_ofContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterSet_of(this);
	}
};

Set_ofContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitSet_of(this);
	}
};




SyslParser.Set_ofContext = Set_ofContext;

SyslParser.prototype.set_of = function() {

    var localctx = new Set_ofContext(this, this._ctx, this.state);
    this.enterRule(localctx, 32, SyslParser.RULE_set_of);
    try {
        this.state = 467;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case SyslParser.SET_OF:
            this.enterOuterAlt(localctx, 1);
            this.state = 465;
            this.match(SyslParser.SET_OF);
            break;
        case SyslParser.E_SET_OF:
            this.enterOuterAlt(localctx, 2);
            this.state = 466;
            this.match(SyslParser.E_SET_OF);
            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Set_typeContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_set_type;
    return this;
}

Set_typeContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Set_typeContext.prototype.constructor = Set_typeContext;

Set_typeContext.prototype.set_of = function() {
    return this.getTypedRuleContext(Set_ofContext,0);
};

Set_typeContext.prototype.types = function() {
    return this.getTypedRuleContext(TypesContext,0);
};

Set_typeContext.prototype.size_spec = function() {
    return this.getTypedRuleContext(Size_specContext,0);
};

Set_typeContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterSet_type(this);
	}
};

Set_typeContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitSet_type(this);
	}
};




SyslParser.Set_typeContext = Set_typeContext;

SyslParser.prototype.set_type = function() {

    var localctx = new Set_typeContext(this, this._ctx, this.state);
    this.enterRule(localctx, 34, SyslParser.RULE_set_type);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 469;
        this.set_of();
        this.state = 470;
        this.types();
        this.state = 472;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SyslParser.OPEN_PAREN) {
            this.state = 471;
            this.size_spec();
        }

    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Sequence_ofContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_sequence_of;
    return this;
}

Sequence_ofContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Sequence_ofContext.prototype.constructor = Sequence_ofContext;

Sequence_ofContext.prototype.SEQUENCE_OF = function() {
    return this.getToken(SyslParser.SEQUENCE_OF, 0);
};

Sequence_ofContext.prototype.E_SEQUENCE_OF = function() {
    return this.getToken(SyslParser.E_SEQUENCE_OF, 0);
};

Sequence_ofContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterSequence_of(this);
	}
};

Sequence_ofContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitSequence_of(this);
	}
};




SyslParser.Sequence_ofContext = Sequence_ofContext;

SyslParser.prototype.sequence_of = function() {

    var localctx = new Sequence_ofContext(this, this._ctx, this.state);
    this.enterRule(localctx, 36, SyslParser.RULE_sequence_of);
    try {
        this.state = 476;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case SyslParser.SEQUENCE_OF:
            this.enterOuterAlt(localctx, 1);
            this.state = 474;
            this.match(SyslParser.SEQUENCE_OF);
            break;
        case SyslParser.E_SEQUENCE_OF:
            this.enterOuterAlt(localctx, 2);
            this.state = 475;
            this.match(SyslParser.E_SEQUENCE_OF);
            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Sequence_typeContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_sequence_type;
    return this;
}

Sequence_typeContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Sequence_typeContext.prototype.constructor = Sequence_typeContext;

Sequence_typeContext.prototype.sequence_of = function() {
    return this.getTypedRuleContext(Sequence_ofContext,0);
};

Sequence_typeContext.prototype.types = function() {
    return this.getTypedRuleContext(TypesContext,0);
};

Sequence_typeContext.prototype.size_spec = function() {
    return this.getTypedRuleContext(Size_specContext,0);
};

Sequence_typeContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterSequence_type(this);
	}
};

Sequence_typeContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitSequence_type(this);
	}
};




SyslParser.Sequence_typeContext = Sequence_typeContext;

SyslParser.prototype.sequence_type = function() {

    var localctx = new Sequence_typeContext(this, this._ctx, this.state);
    this.enterRule(localctx, 38, SyslParser.RULE_sequence_type);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 478;
        this.sequence_of();
        this.state = 479;
        this.types();
        this.state = 481;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SyslParser.OPEN_PAREN) {
            this.state = 480;
            this.size_spec();
        }

    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Collection_typeContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_collection_type;
    return this;
}

Collection_typeContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Collection_typeContext.prototype.constructor = Collection_typeContext;

Collection_typeContext.prototype.set_type = function() {
    return this.getTypedRuleContext(Set_typeContext,0);
};

Collection_typeContext.prototype.sequence_type = function() {
    return this.getTypedRuleContext(Sequence_typeContext,0);
};

Collection_typeContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterCollection_type(this);
	}
};

Collection_typeContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitCollection_type(this);
	}
};




SyslParser.Collection_typeContext = Collection_typeContext;

SyslParser.prototype.collection_type = function() {

    var localctx = new Collection_typeContext(this, this._ctx, this.state);
    this.enterRule(localctx, 40, SyslParser.RULE_collection_type);
    try {
        this.state = 485;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case SyslParser.SET_OF:
        case SyslParser.E_SET_OF:
            this.enterOuterAlt(localctx, 1);
            this.state = 483;
            this.set_type();
            break;
        case SyslParser.SEQUENCE_OF:
        case SyslParser.E_SEQUENCE_OF:
            this.enterOuterAlt(localctx, 2);
            this.state = 484;
            this.sequence_type();
            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Multi_line_docstringContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_multi_line_docstring;
    return this;
}

Multi_line_docstringContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Multi_line_docstringContext.prototype.constructor = Multi_line_docstringContext;

Multi_line_docstringContext.prototype.COLON = function() {
    return this.getToken(SyslParser.COLON, 0);
};

Multi_line_docstringContext.prototype.INDENT = function() {
    return this.getToken(SyslParser.INDENT, 0);
};

Multi_line_docstringContext.prototype.DEDENT = function() {
    return this.getToken(SyslParser.DEDENT, 0);
};

Multi_line_docstringContext.prototype.doc_string = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Doc_stringContext);
    } else {
        return this.getTypedRuleContext(Doc_stringContext,i);
    }
};

Multi_line_docstringContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterMulti_line_docstring(this);
	}
};

Multi_line_docstringContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitMulti_line_docstring(this);
	}
};




SyslParser.Multi_line_docstringContext = Multi_line_docstringContext;

SyslParser.prototype.multi_line_docstring = function() {

    var localctx = new Multi_line_docstringContext(this, this._ctx, this.state);
    this.enterRule(localctx, 42, SyslParser.RULE_multi_line_docstring);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 487;
        this.match(SyslParser.COLON);
        this.state = 488;
        this.match(SyslParser.INDENT);
        this.state = 490; 
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        do {
            this.state = 489;
            this.doc_string();
            this.state = 492; 
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        } while(_la===SyslParser.PIPE);
        this.state = 494;
        this.match(SyslParser.DEDENT);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Annotation_valueContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_annotation_value;
    return this;
}

Annotation_valueContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Annotation_valueContext.prototype.constructor = Annotation_valueContext;

Annotation_valueContext.prototype.QSTRING = function() {
    return this.getToken(SyslParser.QSTRING, 0);
};

Annotation_valueContext.prototype.array_of_strings = function() {
    return this.getTypedRuleContext(Array_of_stringsContext,0);
};

Annotation_valueContext.prototype.multi_line_docstring = function() {
    return this.getTypedRuleContext(Multi_line_docstringContext,0);
};

Annotation_valueContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterAnnotation_value(this);
	}
};

Annotation_valueContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitAnnotation_value(this);
	}
};




SyslParser.Annotation_valueContext = Annotation_valueContext;

SyslParser.prototype.annotation_value = function() {

    var localctx = new Annotation_valueContext(this, this._ctx, this.state);
    this.enterRule(localctx, 44, SyslParser.RULE_annotation_value);
    try {
        this.state = 499;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case SyslParser.QSTRING:
            this.enterOuterAlt(localctx, 1);
            this.state = 496;
            this.match(SyslParser.QSTRING);
            break;
        case SyslParser.SQ_OPEN:
            this.enterOuterAlt(localctx, 2);
            this.state = 497;
            this.array_of_strings();
            break;
        case SyslParser.COLON:
            this.enterOuterAlt(localctx, 3);
            this.state = 498;
            this.multi_line_docstring();
            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function AnnotationContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_annotation;
    return this;
}

AnnotationContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
AnnotationContext.prototype.constructor = AnnotationContext;

AnnotationContext.prototype.AT = function() {
    return this.getToken(SyslParser.AT, 0);
};

AnnotationContext.prototype.VAR_NAME = function() {
    return this.getToken(SyslParser.VAR_NAME, 0);
};

AnnotationContext.prototype.EQ = function() {
    return this.getToken(SyslParser.EQ, 0);
};

AnnotationContext.prototype.annotation_value = function() {
    return this.getTypedRuleContext(Annotation_valueContext,0);
};

AnnotationContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterAnnotation(this);
	}
};

AnnotationContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitAnnotation(this);
	}
};




SyslParser.AnnotationContext = AnnotationContext;

SyslParser.prototype.annotation = function() {

    var localctx = new AnnotationContext(this, this._ctx, this.state);
    this.enterRule(localctx, 46, SyslParser.RULE_annotation);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 501;
        this.match(SyslParser.AT);
        this.state = 502;
        this.match(SyslParser.VAR_NAME);
        this.state = 503;
        this.match(SyslParser.EQ);
        this.state = 504;
        this.annotation_value();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function AnnotationsContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_annotations;
    return this;
}

AnnotationsContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
AnnotationsContext.prototype.constructor = AnnotationsContext;

AnnotationsContext.prototype.INDENT = function() {
    return this.getToken(SyslParser.INDENT, 0);
};

AnnotationsContext.prototype.DEDENT = function() {
    return this.getToken(SyslParser.DEDENT, 0);
};

AnnotationsContext.prototype.annotation = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(AnnotationContext);
    } else {
        return this.getTypedRuleContext(AnnotationContext,i);
    }
};

AnnotationsContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterAnnotations(this);
	}
};

AnnotationsContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitAnnotations(this);
	}
};




SyslParser.AnnotationsContext = AnnotationsContext;

SyslParser.prototype.annotations = function() {

    var localctx = new AnnotationsContext(this, this._ctx, this.state);
    this.enterRule(localctx, 48, SyslParser.RULE_annotations);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 506;
        this.match(SyslParser.INDENT);
        this.state = 508; 
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        do {
            this.state = 507;
            this.annotation();
            this.state = 510; 
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        } while(_la===SyslParser.AT);
        this.state = 512;
        this.match(SyslParser.DEDENT);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Field_typeContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_field_type;
    return this;
}

Field_typeContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Field_typeContext.prototype.constructor = Field_typeContext;

Field_typeContext.prototype.collection_type = function() {
    return this.getTypedRuleContext(Collection_typeContext,0);
};

Field_typeContext.prototype.QN = function() {
    return this.getToken(SyslParser.QN, 0);
};

Field_typeContext.prototype.attribs_or_modifiers = function() {
    return this.getTypedRuleContext(Attribs_or_modifiersContext,0);
};

Field_typeContext.prototype.COLON = function() {
    return this.getToken(SyslParser.COLON, 0);
};

Field_typeContext.prototype.annotations = function() {
    return this.getTypedRuleContext(AnnotationsContext,0);
};

Field_typeContext.prototype.types = function() {
    return this.getTypedRuleContext(TypesContext,0);
};

Field_typeContext.prototype.array_size = function() {
    return this.getTypedRuleContext(Array_sizeContext,0);
};

Field_typeContext.prototype.size_spec = function() {
    return this.getTypedRuleContext(Size_specContext,0);
};

Field_typeContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterField_type(this);
	}
};

Field_typeContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitField_type(this);
	}
};




SyslParser.Field_typeContext = Field_typeContext;

SyslParser.prototype.field_type = function() {

    var localctx = new Field_typeContext(this, this._ctx, this.state);
    this.enterRule(localctx, 50, SyslParser.RULE_field_type);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 520;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case SyslParser.SEQUENCE_OF:
        case SyslParser.SET_OF:
        case SyslParser.E_SEQUENCE_OF:
        case SyslParser.E_SET_OF:
            this.state = 514;
            this.collection_type();
            break;
        case SyslParser.NativeDataTypes:
        case SyslParser.TEXT_LINE:
        case SyslParser.Name:
        case SyslParser.E_Name:
            this.state = 515;
            this.types();
            this.state = 518;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,19,this._ctx);
            if(la_===1) {
                this.state = 516;
                this.array_size();

            } else if(la_===2) {
                this.state = 517;
                this.size_spec();

            }
            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
        this.state = 523;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SyslParser.QN) {
            this.state = 522;
            this.match(SyslParser.QN);
        }

        this.state = 526;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SyslParser.SQ_OPEN) {
            this.state = 525;
            this.attribs_or_modifiers();
        }

        this.state = 530;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SyslParser.COLON) {
            this.state = 528;
            this.match(SyslParser.COLON);
            this.state = 529;
            this.annotations();
        }

    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Array_sizeContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_array_size;
    return this;
}

Array_sizeContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Array_sizeContext.prototype.constructor = Array_sizeContext;

Array_sizeContext.prototype.OPEN_PAREN = function() {
    return this.getToken(SyslParser.OPEN_PAREN, 0);
};

Array_sizeContext.prototype.DIGITS = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SyslParser.DIGITS);
    } else {
        return this.getToken(SyslParser.DIGITS, i);
    }
};


Array_sizeContext.prototype.DOTDOT = function() {
    return this.getToken(SyslParser.DOTDOT, 0);
};

Array_sizeContext.prototype.CLOSE_PAREN = function() {
    return this.getToken(SyslParser.CLOSE_PAREN, 0);
};

Array_sizeContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterArray_size(this);
	}
};

Array_sizeContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitArray_size(this);
	}
};




SyslParser.Array_sizeContext = Array_sizeContext;

SyslParser.prototype.array_size = function() {

    var localctx = new Array_sizeContext(this, this._ctx, this.state);
    this.enterRule(localctx, 52, SyslParser.RULE_array_size);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 532;
        this.match(SyslParser.OPEN_PAREN);
        this.state = 533;
        this.match(SyslParser.DIGITS);
        this.state = 534;
        this.match(SyslParser.DOTDOT);
        this.state = 536;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SyslParser.DIGITS) {
            this.state = 535;
            this.match(SyslParser.DIGITS);
        }

        this.state = 538;
        this.match(SyslParser.CLOSE_PAREN);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Inplace_tupleContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_inplace_tuple;
    return this;
}

Inplace_tupleContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Inplace_tupleContext.prototype.constructor = Inplace_tupleContext;

Inplace_tupleContext.prototype.INDENT = function() {
    return this.getToken(SyslParser.INDENT, 0);
};

Inplace_tupleContext.prototype.DEDENT = function() {
    return this.getToken(SyslParser.DEDENT, 0);
};

Inplace_tupleContext.prototype.field = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(FieldContext);
    } else {
        return this.getTypedRuleContext(FieldContext,i);
    }
};

Inplace_tupleContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterInplace_tuple(this);
	}
};

Inplace_tupleContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitInplace_tuple(this);
	}
};




SyslParser.Inplace_tupleContext = Inplace_tupleContext;

SyslParser.prototype.inplace_tuple = function() {

    var localctx = new Inplace_tupleContext(this, this._ctx, this.state);
    this.enterRule(localctx, 54, SyslParser.RULE_inplace_tuple);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 540;
        this.match(SyslParser.INDENT);
        this.state = 542; 
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        do {
            this.state = 541;
            this.field();
            this.state = 544; 
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        } while(_la===SyslParser.TEXT_LINE || _la===SyslParser.Name || _la===SyslParser.E_Name);
        this.state = 546;
        this.match(SyslParser.DEDENT);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function FieldContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_field;
    return this;
}

FieldContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
FieldContext.prototype.constructor = FieldContext;

FieldContext.prototype.name_str = function() {
    return this.getTypedRuleContext(Name_strContext,0);
};

FieldContext.prototype.LESS_COLON = function() {
    return this.getToken(SyslParser.LESS_COLON, 0);
};

FieldContext.prototype.field_type = function() {
    return this.getTypedRuleContext(Field_typeContext,0);
};

FieldContext.prototype.inplace_tuple = function() {
    return this.getTypedRuleContext(Inplace_tupleContext,0);
};

FieldContext.prototype.array_size = function() {
    return this.getTypedRuleContext(Array_sizeContext,0);
};

FieldContext.prototype.QSTRING = function() {
    return this.getToken(SyslParser.QSTRING, 0);
};

FieldContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterField(this);
	}
};

FieldContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitField(this);
	}
};




SyslParser.FieldContext = FieldContext;

SyslParser.prototype.field = function() {

    var localctx = new FieldContext(this, this._ctx, this.state);
    this.enterRule(localctx, 56, SyslParser.RULE_field);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 548;
        this.name_str();
        this.state = 560;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SyslParser.LESS_COLON || _la===SyslParser.OPEN_PAREN) {
            this.state = 550;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===SyslParser.OPEN_PAREN) {
                this.state = 549;
                this.array_size();
            }

            this.state = 552;
            this.match(SyslParser.LESS_COLON);
            this.state = 555;
            this._errHandler.sync(this);
            switch(this._input.LA(1)) {
            case SyslParser.NativeDataTypes:
            case SyslParser.SEQUENCE_OF:
            case SyslParser.SET_OF:
            case SyslParser.TEXT_LINE:
            case SyslParser.Name:
            case SyslParser.E_SEQUENCE_OF:
            case SyslParser.E_SET_OF:
            case SyslParser.E_Name:
                this.state = 553;
                this.field_type();
                break;
            case SyslParser.INDENT:
                this.state = 554;
                this.inplace_tuple();
                break;
            default:
                throw new antlr4.error.NoViableAltException(this);
            }
            this.state = 558;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===SyslParser.QSTRING) {
                this.state = 557;
                this.match(SyslParser.QSTRING);
            }

        }

    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Inplace_tableContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_inplace_table;
    return this;
}

Inplace_tableContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Inplace_tableContext.prototype.constructor = Inplace_tableContext;

Inplace_tableContext.prototype.table = function() {
    return this.getTypedRuleContext(TableContext,0);
};

Inplace_tableContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterInplace_table(this);
	}
};

Inplace_tableContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitInplace_table(this);
	}
};




SyslParser.Inplace_tableContext = Inplace_tableContext;

SyslParser.prototype.inplace_table = function() {

    var localctx = new Inplace_tableContext(this, this._ctx, this.state);
    this.enterRule(localctx, 58, SyslParser.RULE_inplace_table);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 562;
        this.table();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Table_stmtsContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_table_stmts;
    return this;
}

Table_stmtsContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Table_stmtsContext.prototype.constructor = Table_stmtsContext;

Table_stmtsContext.prototype.INDENT = function() {
    return this.getToken(SyslParser.INDENT, 0);
};

Table_stmtsContext.prototype.DEDENT = function() {
    return this.getToken(SyslParser.DEDENT, 0);
};

Table_stmtsContext.prototype.SYSL_COMMENT = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SyslParser.SYSL_COMMENT);
    } else {
        return this.getToken(SyslParser.SYSL_COMMENT, i);
    }
};


Table_stmtsContext.prototype.field = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(FieldContext);
    } else {
        return this.getTypedRuleContext(FieldContext,i);
    }
};

Table_stmtsContext.prototype.annotation = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(AnnotationContext);
    } else {
        return this.getTypedRuleContext(AnnotationContext,i);
    }
};

Table_stmtsContext.prototype.inplace_table = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Inplace_tableContext);
    } else {
        return this.getTypedRuleContext(Inplace_tableContext,i);
    }
};

Table_stmtsContext.prototype.WHATEVER = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SyslParser.WHATEVER);
    } else {
        return this.getToken(SyslParser.WHATEVER, i);
    }
};


Table_stmtsContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterTable_stmts(this);
	}
};

Table_stmtsContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitTable_stmts(this);
	}
};




SyslParser.Table_stmtsContext = Table_stmtsContext;

SyslParser.prototype.table_stmts = function() {

    var localctx = new Table_stmtsContext(this, this._ctx, this.state);
    this.enterRule(localctx, 60, SyslParser.RULE_table_stmts);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 564;
        this.match(SyslParser.INDENT);
        this.state = 570; 
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        do {
            this.state = 570;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,30,this._ctx);
            switch(la_) {
            case 1:
                this.state = 565;
                this.match(SyslParser.SYSL_COMMENT);
                break;

            case 2:
                this.state = 566;
                this.field();
                break;

            case 3:
                this.state = 567;
                this.annotation();
                break;

            case 4:
                this.state = 568;
                this.inplace_table();
                break;

            case 5:
                this.state = 569;
                this.match(SyslParser.WHATEVER);
                break;

            }
            this.state = 572; 
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        } while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << SyslParser.TABLE) | (1 << SyslParser.TYPE) | (1 << SyslParser.WHATEVER))) !== 0) || ((((_la - 43)) & ~0x1f) == 0 && ((1 << (_la - 43)) & ((1 << (SyslParser.AT - 43)) | (1 << (SyslParser.SYSL_COMMENT - 43)) | (1 << (SyslParser.TEXT_LINE - 43)) | (1 << (SyslParser.Name - 43)))) !== 0) || _la===SyslParser.E_Name);
        this.state = 574;
        this.match(SyslParser.DEDENT);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Table_defContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_table_def;
    return this;
}

Table_defContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Table_defContext.prototype.constructor = Table_defContext;

Table_defContext.prototype.COLON = function() {
    return this.getToken(SyslParser.COLON, 0);
};

Table_defContext.prototype.WHATEVER = function() {
    return this.getToken(SyslParser.WHATEVER, 0);
};

Table_defContext.prototype.table_stmts = function() {
    return this.getTypedRuleContext(Table_stmtsContext,0);
};

Table_defContext.prototype.attribs_or_modifiers = function() {
    return this.getTypedRuleContext(Attribs_or_modifiersContext,0);
};

Table_defContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterTable_def(this);
	}
};

Table_defContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitTable_def(this);
	}
};




SyslParser.Table_defContext = Table_defContext;

SyslParser.prototype.table_def = function() {

    var localctx = new Table_defContext(this, this._ctx, this.state);
    this.enterRule(localctx, 62, SyslParser.RULE_table_def);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 577;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SyslParser.SQ_OPEN) {
            this.state = 576;
            this.attribs_or_modifiers();
        }

        this.state = 579;
        this.match(SyslParser.COLON);
        this.state = 582;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case SyslParser.WHATEVER:
            this.state = 580;
            this.match(SyslParser.WHATEVER);
            break;
        case SyslParser.INDENT:
            this.state = 581;
            this.table_stmts();
            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function TableContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_table;
    return this;
}

TableContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
TableContext.prototype.constructor = TableContext;

TableContext.prototype.name_str = function() {
    return this.getTypedRuleContext(Name_strContext,0);
};

TableContext.prototype.table_def = function() {
    return this.getTypedRuleContext(Table_defContext,0);
};

TableContext.prototype.TYPE = function() {
    return this.getToken(SyslParser.TYPE, 0);
};

TableContext.prototype.TABLE = function() {
    return this.getToken(SyslParser.TABLE, 0);
};

TableContext.prototype.SYSL_COMMENT = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SyslParser.SYSL_COMMENT);
    } else {
        return this.getToken(SyslParser.SYSL_COMMENT, i);
    }
};


TableContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterTable(this);
	}
};

TableContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitTable(this);
	}
};




SyslParser.TableContext = TableContext;

SyslParser.prototype.table = function() {

    var localctx = new TableContext(this, this._ctx, this.state);
    this.enterRule(localctx, 64, SyslParser.RULE_table);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 587;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===SyslParser.SYSL_COMMENT) {
            this.state = 584;
            this.match(SyslParser.SYSL_COMMENT);
            this.state = 589;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
        this.state = 590;
        _la = this._input.LA(1);
        if(!(_la===SyslParser.TABLE || _la===SyslParser.TYPE)) {
        this._errHandler.recoverInline(this);
        }
        else {
        	this._errHandler.reportMatch(this);
            this.consume();
        }
        this.state = 591;
        this.name_str();
        this.state = 592;
        this.table_def();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Union_typeContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_union_type;
    return this;
}

Union_typeContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Union_typeContext.prototype.constructor = Union_typeContext;

Union_typeContext.prototype.collection_type = function() {
    return this.getTypedRuleContext(Collection_typeContext,0);
};

Union_typeContext.prototype.types = function() {
    return this.getTypedRuleContext(TypesContext,0);
};

Union_typeContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterUnion_type(this);
	}
};

Union_typeContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitUnion_type(this);
	}
};




SyslParser.Union_typeContext = Union_typeContext;

SyslParser.prototype.union_type = function() {

    var localctx = new Union_typeContext(this, this._ctx, this.state);
    this.enterRule(localctx, 66, SyslParser.RULE_union_type);
    try {
        this.state = 596;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case SyslParser.SEQUENCE_OF:
        case SyslParser.SET_OF:
        case SyslParser.E_SEQUENCE_OF:
        case SyslParser.E_SET_OF:
            this.enterOuterAlt(localctx, 1);
            this.state = 594;
            this.collection_type();
            break;
        case SyslParser.NativeDataTypes:
        case SyslParser.TEXT_LINE:
        case SyslParser.Name:
        case SyslParser.E_Name:
            this.enterOuterAlt(localctx, 2);
            this.state = 595;
            this.types();
            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function UnionContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_union;
    return this;
}

UnionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
UnionContext.prototype.constructor = UnionContext;

UnionContext.prototype.UNION = function() {
    return this.getToken(SyslParser.UNION, 0);
};

UnionContext.prototype.name_str = function() {
    return this.getTypedRuleContext(Name_strContext,0);
};

UnionContext.prototype.COLON = function() {
    return this.getToken(SyslParser.COLON, 0);
};

UnionContext.prototype.WHATEVER = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SyslParser.WHATEVER);
    } else {
        return this.getToken(SyslParser.WHATEVER, i);
    }
};


UnionContext.prototype.INDENT = function() {
    return this.getToken(SyslParser.INDENT, 0);
};

UnionContext.prototype.DEDENT = function() {
    return this.getToken(SyslParser.DEDENT, 0);
};

UnionContext.prototype.SYSL_COMMENT = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SyslParser.SYSL_COMMENT);
    } else {
        return this.getToken(SyslParser.SYSL_COMMENT, i);
    }
};


UnionContext.prototype.attribs_or_modifiers = function() {
    return this.getTypedRuleContext(Attribs_or_modifiersContext,0);
};

UnionContext.prototype.union_type = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Union_typeContext);
    } else {
        return this.getTypedRuleContext(Union_typeContext,i);
    }
};

UnionContext.prototype.annotation = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(AnnotationContext);
    } else {
        return this.getTypedRuleContext(AnnotationContext,i);
    }
};

UnionContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterUnion(this);
	}
};

UnionContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitUnion(this);
	}
};




SyslParser.UnionContext = UnionContext;

SyslParser.prototype.union = function() {

    var localctx = new UnionContext(this, this._ctx, this.state);
    this.enterRule(localctx, 68, SyslParser.RULE_union);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 601;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===SyslParser.SYSL_COMMENT) {
            this.state = 598;
            this.match(SyslParser.SYSL_COMMENT);
            this.state = 603;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
        this.state = 604;
        this.match(SyslParser.UNION);
        this.state = 605;
        this.name_str();
        this.state = 607;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SyslParser.SQ_OPEN) {
            this.state = 606;
            this.attribs_or_modifiers();
        }

        this.state = 609;
        this.match(SyslParser.COLON);
        this.state = 621;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case SyslParser.WHATEVER:
            this.state = 610;
            this.match(SyslParser.WHATEVER);
            break;
        case SyslParser.INDENT:
            this.state = 611;
            this.match(SyslParser.INDENT);
            this.state = 616; 
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            do {
                this.state = 616;
                this._errHandler.sync(this);
                switch(this._input.LA(1)) {
                case SyslParser.SYSL_COMMENT:
                    this.state = 612;
                    this.match(SyslParser.SYSL_COMMENT);
                    break;
                case SyslParser.NativeDataTypes:
                case SyslParser.SEQUENCE_OF:
                case SyslParser.SET_OF:
                case SyslParser.TEXT_LINE:
                case SyslParser.Name:
                case SyslParser.E_SEQUENCE_OF:
                case SyslParser.E_SET_OF:
                case SyslParser.E_Name:
                    this.state = 613;
                    this.union_type();
                    break;
                case SyslParser.AT:
                    this.state = 614;
                    this.annotation();
                    break;
                case SyslParser.WHATEVER:
                    this.state = 615;
                    this.match(SyslParser.WHATEVER);
                    break;
                default:
                    throw new antlr4.error.NoViableAltException(this);
                }
                this.state = 618; 
                this._errHandler.sync(this);
                _la = this._input.LA(1);
            } while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << SyslParser.NativeDataTypes) | (1 << SyslParser.WHATEVER) | (1 << SyslParser.SEQUENCE_OF) | (1 << SyslParser.SET_OF))) !== 0) || ((((_la - 43)) & ~0x1f) == 0 && ((1 << (_la - 43)) & ((1 << (SyslParser.AT - 43)) | (1 << (SyslParser.SYSL_COMMENT - 43)) | (1 << (SyslParser.TEXT_LINE - 43)) | (1 << (SyslParser.Name - 43)))) !== 0) || ((((_la - 119)) & ~0x1f) == 0 && ((1 << (_la - 119)) & ((1 << (SyslParser.E_SEQUENCE_OF - 119)) | (1 << (SyslParser.E_SET_OF - 119)) | (1 << (SyslParser.E_Name - 119)))) !== 0));
            this.state = 620;
            this.match(SyslParser.DEDENT);
            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Package_nameContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_package_name;
    return this;
}

Package_nameContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Package_nameContext.prototype.constructor = Package_nameContext;

Package_nameContext.prototype.name_str = function() {
    return this.getTypedRuleContext(Name_strContext,0);
};

Package_nameContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterPackage_name(this);
	}
};

Package_nameContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitPackage_name(this);
	}
};




SyslParser.Package_nameContext = Package_nameContext;

SyslParser.prototype.package_name = function() {

    var localctx = new Package_nameContext(this, this._ctx, this.state);
    this.enterRule(localctx, 70, SyslParser.RULE_package_name);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 623;
        this.name_str();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Sub_packageContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_sub_package;
    return this;
}

Sub_packageContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Sub_packageContext.prototype.constructor = Sub_packageContext;

Sub_packageContext.prototype.NAME_SEP = function() {
    return this.getToken(SyslParser.NAME_SEP, 0);
};

Sub_packageContext.prototype.package_name = function() {
    return this.getTypedRuleContext(Package_nameContext,0);
};

Sub_packageContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterSub_package(this);
	}
};

Sub_packageContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitSub_package(this);
	}
};




SyslParser.Sub_packageContext = Sub_packageContext;

SyslParser.prototype.sub_package = function() {

    var localctx = new Sub_packageContext(this, this._ctx, this.state);
    this.enterRule(localctx, 72, SyslParser.RULE_sub_package);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 625;
        this.match(SyslParser.NAME_SEP);
        this.state = 626;
        this.package_name();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function App_nameContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_app_name;
    return this;
}

App_nameContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
App_nameContext.prototype.constructor = App_nameContext;

App_nameContext.prototype.package_name = function() {
    return this.getTypedRuleContext(Package_nameContext,0);
};

App_nameContext.prototype.sub_package = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Sub_packageContext);
    } else {
        return this.getTypedRuleContext(Sub_packageContext,i);
    }
};

App_nameContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterApp_name(this);
	}
};

App_nameContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitApp_name(this);
	}
};




SyslParser.App_nameContext = App_nameContext;

SyslParser.prototype.app_name = function() {

    var localctx = new App_nameContext(this, this._ctx, this.state);
    this.enterRule(localctx, 74, SyslParser.RULE_app_name);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 628;
        this.package_name();
        this.state = 632;
        this._errHandler.sync(this);
        var _alt = this._interp.adaptivePredict(this._input,41,this._ctx)
        while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
            if(_alt===1) {
                this.state = 629;
                this.sub_package(); 
            }
            this.state = 634;
            this._errHandler.sync(this);
            _alt = this._interp.adaptivePredict(this._input,41,this._ctx);
        }

    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Name_with_attribsContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_name_with_attribs;
    return this;
}

Name_with_attribsContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Name_with_attribsContext.prototype.constructor = Name_with_attribsContext;

Name_with_attribsContext.prototype.app_name = function() {
    return this.getTypedRuleContext(App_nameContext,0);
};

Name_with_attribsContext.prototype.QSTRING = function() {
    return this.getToken(SyslParser.QSTRING, 0);
};

Name_with_attribsContext.prototype.attribs_or_modifiers = function() {
    return this.getTypedRuleContext(Attribs_or_modifiersContext,0);
};

Name_with_attribsContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterName_with_attribs(this);
	}
};

Name_with_attribsContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitName_with_attribs(this);
	}
};




SyslParser.Name_with_attribsContext = Name_with_attribsContext;

SyslParser.prototype.name_with_attribs = function() {

    var localctx = new Name_with_attribsContext(this, this._ctx, this.state);
    this.enterRule(localctx, 76, SyslParser.RULE_name_with_attribs);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 635;
        this.app_name();
        this.state = 637;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SyslParser.QSTRING) {
            this.state = 636;
            this.match(SyslParser.QSTRING);
        }

        this.state = 640;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SyslParser.SQ_OPEN) {
            this.state = 639;
            this.attribs_or_modifiers();
        }

    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Model_nameContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_model_name;
    return this;
}

Model_nameContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Model_nameContext.prototype.constructor = Model_nameContext;

Model_nameContext.prototype.Name = function() {
    return this.getToken(SyslParser.Name, 0);
};

Model_nameContext.prototype.COLON = function() {
    return this.getToken(SyslParser.COLON, 0);
};

Model_nameContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterModel_name(this);
	}
};

Model_nameContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitModel_name(this);
	}
};




SyslParser.Model_nameContext = Model_nameContext;

SyslParser.prototype.model_name = function() {

    var localctx = new Model_nameContext(this, this._ctx, this.state);
    this.enterRule(localctx, 78, SyslParser.RULE_model_name);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 642;
        this.match(SyslParser.Name);
        this.state = 643;
        this.match(SyslParser.COLON);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Inplace_table_defContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_inplace_table_def;
    return this;
}

Inplace_table_defContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Inplace_table_defContext.prototype.constructor = Inplace_table_defContext;

Inplace_table_defContext.prototype.COLON = function() {
    return this.getToken(SyslParser.COLON, 0);
};

Inplace_table_defContext.prototype.INDENT = function() {
    return this.getToken(SyslParser.INDENT, 0);
};

Inplace_table_defContext.prototype.DEDENT = function() {
    return this.getToken(SyslParser.DEDENT, 0);
};

Inplace_table_defContext.prototype.Name = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SyslParser.Name);
    } else {
        return this.getToken(SyslParser.Name, i);
    }
};


Inplace_table_defContext.prototype.attribs_or_modifiers = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Attribs_or_modifiersContext);
    } else {
        return this.getTypedRuleContext(Attribs_or_modifiersContext,i);
    }
};

Inplace_table_defContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterInplace_table_def(this);
	}
};

Inplace_table_defContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitInplace_table_def(this);
	}
};




SyslParser.Inplace_table_defContext = Inplace_table_defContext;

SyslParser.prototype.inplace_table_def = function() {

    var localctx = new Inplace_table_defContext(this, this._ctx, this.state);
    this.enterRule(localctx, 80, SyslParser.RULE_inplace_table_def);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 645;
        this.match(SyslParser.COLON);
        this.state = 646;
        this.match(SyslParser.INDENT);
        this.state = 651; 
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        do {
            this.state = 647;
            this.match(SyslParser.Name);
            this.state = 649;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===SyslParser.SQ_OPEN) {
                this.state = 648;
                this.attribs_or_modifiers();
            }

            this.state = 653; 
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        } while(_la===SyslParser.Name);
        this.state = 655;
        this.match(SyslParser.DEDENT);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Table_refsContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_table_refs;
    return this;
}

Table_refsContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Table_refsContext.prototype.constructor = Table_refsContext;

Table_refsContext.prototype.Name = function() {
    return this.getToken(SyslParser.Name, 0);
};

Table_refsContext.prototype.TABLE = function() {
    return this.getToken(SyslParser.TABLE, 0);
};

Table_refsContext.prototype.TYPE = function() {
    return this.getToken(SyslParser.TYPE, 0);
};

Table_refsContext.prototype.UNION = function() {
    return this.getToken(SyslParser.UNION, 0);
};

Table_refsContext.prototype.inplace_table_def = function() {
    return this.getTypedRuleContext(Inplace_table_defContext,0);
};

Table_refsContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterTable_refs(this);
	}
};

Table_refsContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitTable_refs(this);
	}
};




SyslParser.Table_refsContext = Table_refsContext;

SyslParser.prototype.table_refs = function() {

    var localctx = new Table_refsContext(this, this._ctx, this.state);
    this.enterRule(localctx, 82, SyslParser.RULE_table_refs);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 657;
        _la = this._input.LA(1);
        if(!((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << SyslParser.TABLE) | (1 << SyslParser.TYPE) | (1 << SyslParser.UNION))) !== 0))) {
        this._errHandler.recoverInline(this);
        }
        else {
        	this._errHandler.reportMatch(this);
            this.consume();
        }
        this.state = 658;
        this.match(SyslParser.Name);
        this.state = 660;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SyslParser.COLON) {
            this.state = 659;
            this.inplace_table_def();
        }

    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function FacadeContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_facade;
    return this;
}

FacadeContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
FacadeContext.prototype.constructor = FacadeContext;

FacadeContext.prototype.WRAP = function() {
    return this.getToken(SyslParser.WRAP, 0);
};

FacadeContext.prototype.model_name = function() {
    return this.getTypedRuleContext(Model_nameContext,0);
};

FacadeContext.prototype.INDENT = function() {
    return this.getToken(SyslParser.INDENT, 0);
};

FacadeContext.prototype.DEDENT = function() {
    return this.getToken(SyslParser.DEDENT, 0);
};

FacadeContext.prototype.SYSL_COMMENT = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SyslParser.SYSL_COMMENT);
    } else {
        return this.getToken(SyslParser.SYSL_COMMENT, i);
    }
};


FacadeContext.prototype.table_refs = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Table_refsContext);
    } else {
        return this.getTypedRuleContext(Table_refsContext,i);
    }
};

FacadeContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterFacade(this);
	}
};

FacadeContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitFacade(this);
	}
};




SyslParser.FacadeContext = FacadeContext;

SyslParser.prototype.facade = function() {

    var localctx = new FacadeContext(this, this._ctx, this.state);
    this.enterRule(localctx, 84, SyslParser.RULE_facade);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 665;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===SyslParser.SYSL_COMMENT) {
            this.state = 662;
            this.match(SyslParser.SYSL_COMMENT);
            this.state = 667;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
        this.state = 668;
        this.match(SyslParser.WRAP);
        this.state = 669;
        this.model_name();
        this.state = 670;
        this.match(SyslParser.INDENT);
        this.state = 672; 
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        do {
            this.state = 671;
            this.table_refs();
            this.state = 674; 
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        } while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << SyslParser.TABLE) | (1 << SyslParser.TYPE) | (1 << SyslParser.UNION))) !== 0));
        this.state = 676;
        this.match(SyslParser.DEDENT);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Documentation_stmtsContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_documentation_stmts;
    return this;
}

Documentation_stmtsContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Documentation_stmtsContext.prototype.constructor = Documentation_stmtsContext;

Documentation_stmtsContext.prototype.AT = function() {
    return this.getToken(SyslParser.AT, 0);
};

Documentation_stmtsContext.prototype.Name = function() {
    return this.getToken(SyslParser.Name, 0);
};

Documentation_stmtsContext.prototype.EQ = function() {
    return this.getToken(SyslParser.EQ, 0);
};

Documentation_stmtsContext.prototype.QSTRING = function() {
    return this.getToken(SyslParser.QSTRING, 0);
};

Documentation_stmtsContext.prototype.NEWLINE = function() {
    return this.getToken(SyslParser.NEWLINE, 0);
};

Documentation_stmtsContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterDocumentation_stmts(this);
	}
};

Documentation_stmtsContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitDocumentation_stmts(this);
	}
};




SyslParser.Documentation_stmtsContext = Documentation_stmtsContext;

SyslParser.prototype.documentation_stmts = function() {

    var localctx = new Documentation_stmtsContext(this, this._ctx, this.state);
    this.enterRule(localctx, 86, SyslParser.RULE_documentation_stmts);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 678;
        this.match(SyslParser.AT);
        this.state = 679;
        this.match(SyslParser.Name);
        this.state = 680;
        this.match(SyslParser.EQ);
        this.state = 681;
        this.match(SyslParser.QSTRING);
        this.state = 682;
        this.match(SyslParser.NEWLINE);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Var_in_curlyContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_var_in_curly;
    return this;
}

Var_in_curlyContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Var_in_curlyContext.prototype.constructor = Var_in_curlyContext;

Var_in_curlyContext.prototype.CURLY_OPEN = function() {
    return this.getToken(SyslParser.CURLY_OPEN, 0);
};

Var_in_curlyContext.prototype.Name = function() {
    return this.getToken(SyslParser.Name, 0);
};

Var_in_curlyContext.prototype.CURLY_CLOSE = function() {
    return this.getToken(SyslParser.CURLY_CLOSE, 0);
};

Var_in_curlyContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterVar_in_curly(this);
	}
};

Var_in_curlyContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitVar_in_curly(this);
	}
};




SyslParser.Var_in_curlyContext = Var_in_curlyContext;

SyslParser.prototype.var_in_curly = function() {

    var localctx = new Var_in_curlyContext(this, this._ctx, this.state);
    this.enterRule(localctx, 88, SyslParser.RULE_var_in_curly);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 684;
        this.match(SyslParser.CURLY_OPEN);
        this.state = 685;
        this.match(SyslParser.Name);
        this.state = 686;
        this.match(SyslParser.CURLY_CLOSE);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Query_varContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_query_var;
    return this;
}

Query_varContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Query_varContext.prototype.constructor = Query_varContext;

Query_varContext.prototype.Name = function() {
    return this.getToken(SyslParser.Name, 0);
};

Query_varContext.prototype.EQ = function() {
    return this.getToken(SyslParser.EQ, 0);
};

Query_varContext.prototype.NativeDataTypes = function() {
    return this.getToken(SyslParser.NativeDataTypes, 0);
};

Query_varContext.prototype.name_str = function() {
    return this.getTypedRuleContext(Name_strContext,0);
};

Query_varContext.prototype.var_in_curly = function() {
    return this.getTypedRuleContext(Var_in_curlyContext,0);
};

Query_varContext.prototype.QN = function() {
    return this.getToken(SyslParser.QN, 0);
};

Query_varContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterQuery_var(this);
	}
};

Query_varContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitQuery_var(this);
	}
};




SyslParser.Query_varContext = Query_varContext;

SyslParser.prototype.query_var = function() {

    var localctx = new Query_varContext(this, this._ctx, this.state);
    this.enterRule(localctx, 90, SyslParser.RULE_query_var);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 688;
        this.match(SyslParser.Name);
        this.state = 689;
        this.match(SyslParser.EQ);
        this.state = 693;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case SyslParser.NativeDataTypes:
            this.state = 690;
            this.match(SyslParser.NativeDataTypes);
            break;
        case SyslParser.TEXT_LINE:
        case SyslParser.Name:
        case SyslParser.E_Name:
            this.state = 691;
            this.name_str();
            break;
        case SyslParser.CURLY_OPEN:
            this.state = 692;
            this.var_in_curly();
            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
        this.state = 696;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SyslParser.QN) {
            this.state = 695;
            this.match(SyslParser.QN);
        }

    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Query_paramContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_query_param;
    return this;
}

Query_paramContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Query_paramContext.prototype.constructor = Query_paramContext;

Query_paramContext.prototype.QN = function() {
    return this.getToken(SyslParser.QN, 0);
};

Query_paramContext.prototype.query_var = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Query_varContext);
    } else {
        return this.getTypedRuleContext(Query_varContext,i);
    }
};

Query_paramContext.prototype.AMP = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SyslParser.AMP);
    } else {
        return this.getToken(SyslParser.AMP, i);
    }
};


Query_paramContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterQuery_param(this);
	}
};

Query_paramContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitQuery_param(this);
	}
};




SyslParser.Query_paramContext = Query_paramContext;

SyslParser.prototype.query_param = function() {

    var localctx = new Query_paramContext(this, this._ctx, this.state);
    this.enterRule(localctx, 92, SyslParser.RULE_query_param);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 698;
        this.match(SyslParser.QN);
        this.state = 699;
        this.query_var();
        this.state = 704;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===SyslParser.AMP) {
            this.state = 700;
            this.match(SyslParser.AMP);
            this.state = 701;
            this.query_var();
            this.state = 706;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Http_path_partContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_http_path_part;
    return this;
}

Http_path_partContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Http_path_partContext.prototype.constructor = Http_path_partContext;

Http_path_partContext.prototype.name_str = function() {
    return this.getTypedRuleContext(Name_strContext,0);
};

Http_path_partContext.prototype.QN = function() {
    return this.getToken(SyslParser.QN, 0);
};

Http_path_partContext.prototype.Name = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SyslParser.Name);
    } else {
        return this.getToken(SyslParser.Name, i);
    }
};


Http_path_partContext.prototype.EQ = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SyslParser.EQ);
    } else {
        return this.getToken(SyslParser.EQ, i);
    }
};


Http_path_partContext.prototype.AMP = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SyslParser.AMP);
    } else {
        return this.getToken(SyslParser.AMP, i);
    }
};


Http_path_partContext.prototype.DIGITS = function() {
    return this.getToken(SyslParser.DIGITS, 0);
};

Http_path_partContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterHttp_path_part(this);
	}
};

Http_path_partContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitHttp_path_part(this);
	}
};




SyslParser.Http_path_partContext = Http_path_partContext;

SyslParser.prototype.http_path_part = function() {

    var localctx = new Http_path_partContext(this, this._ctx, this.state);
    this.enterRule(localctx, 94, SyslParser.RULE_http_path_part);
    var _la = 0; // Token type
    try {
        this.state = 724;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case SyslParser.TEXT_LINE:
        case SyslParser.Name:
        case SyslParser.E_Name:
            this.enterOuterAlt(localctx, 1);
            this.state = 707;
            this.name_str();
            this.state = 721;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===SyslParser.QN) {
                this.state = 708;
                this.match(SyslParser.QN);
                this.state = 709;
                this.match(SyslParser.Name);
                this.state = 710;
                this.match(SyslParser.EQ);
                this.state = 711;
                this.match(SyslParser.Name);
                this.state = 718;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
                while(_la===SyslParser.AMP) {
                    this.state = 712;
                    this.match(SyslParser.AMP);
                    this.state = 713;
                    this.match(SyslParser.Name);
                    this.state = 714;
                    this.match(SyslParser.EQ);
                    this.state = 715;
                    this.match(SyslParser.Name);
                    this.state = 720;
                    this._errHandler.sync(this);
                    _la = this._input.LA(1);
                }
            }

            break;
        case SyslParser.DIGITS:
            this.enterOuterAlt(localctx, 2);
            this.state = 723;
            this.match(SyslParser.DIGITS);
            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Http_path_var_with_typeContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_http_path_var_with_type;
    return this;
}

Http_path_var_with_typeContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Http_path_var_with_typeContext.prototype.constructor = Http_path_var_with_typeContext;

Http_path_var_with_typeContext.prototype.CURLY_OPEN = function() {
    return this.getToken(SyslParser.CURLY_OPEN, 0);
};

Http_path_var_with_typeContext.prototype.http_path_part = function() {
    return this.getTypedRuleContext(Http_path_partContext,0);
};

Http_path_var_with_typeContext.prototype.LESS_COLON = function() {
    return this.getToken(SyslParser.LESS_COLON, 0);
};

Http_path_var_with_typeContext.prototype.CURLY_CLOSE = function() {
    return this.getToken(SyslParser.CURLY_CLOSE, 0);
};

Http_path_var_with_typeContext.prototype.NativeDataTypes = function() {
    return this.getToken(SyslParser.NativeDataTypes, 0);
};

Http_path_var_with_typeContext.prototype.name_str = function() {
    return this.getTypedRuleContext(Name_strContext,0);
};

Http_path_var_with_typeContext.prototype.reference = function() {
    return this.getTypedRuleContext(ReferenceContext,0);
};

Http_path_var_with_typeContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterHttp_path_var_with_type(this);
	}
};

Http_path_var_with_typeContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitHttp_path_var_with_type(this);
	}
};




SyslParser.Http_path_var_with_typeContext = Http_path_var_with_typeContext;

SyslParser.prototype.http_path_var_with_type = function() {

    var localctx = new Http_path_var_with_typeContext(this, this._ctx, this.state);
    this.enterRule(localctx, 96, SyslParser.RULE_http_path_var_with_type);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 726;
        this.match(SyslParser.CURLY_OPEN);
        this.state = 727;
        this.http_path_part();
        this.state = 728;
        this.match(SyslParser.LESS_COLON);
        this.state = 732;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,55,this._ctx);
        switch(la_) {
        case 1:
            this.state = 729;
            this.match(SyslParser.NativeDataTypes);
            break;

        case 2:
            this.state = 730;
            this.name_str();
            break;

        case 3:
            this.state = 731;
            this.reference();
            break;

        }
        this.state = 734;
        this.match(SyslParser.CURLY_CLOSE);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Http_path_staticContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_http_path_static;
    return this;
}

Http_path_staticContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Http_path_staticContext.prototype.constructor = Http_path_staticContext;

Http_path_staticContext.prototype.http_path_part = function() {
    return this.getTypedRuleContext(Http_path_partContext,0);
};

Http_path_staticContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterHttp_path_static(this);
	}
};

Http_path_staticContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitHttp_path_static(this);
	}
};




SyslParser.Http_path_staticContext = Http_path_staticContext;

SyslParser.prototype.http_path_static = function() {

    var localctx = new Http_path_staticContext(this, this._ctx, this.state);
    this.enterRule(localctx, 98, SyslParser.RULE_http_path_static);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 736;
        this.http_path_part();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Http_path_suffixContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_http_path_suffix;
    return this;
}

Http_path_suffixContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Http_path_suffixContext.prototype.constructor = Http_path_suffixContext;

Http_path_suffixContext.prototype.FORWARD_SLASH = function() {
    return this.getToken(SyslParser.FORWARD_SLASH, 0);
};

Http_path_suffixContext.prototype.http_path_static = function() {
    return this.getTypedRuleContext(Http_path_staticContext,0);
};

Http_path_suffixContext.prototype.http_path_var_with_type = function() {
    return this.getTypedRuleContext(Http_path_var_with_typeContext,0);
};

Http_path_suffixContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterHttp_path_suffix(this);
	}
};

Http_path_suffixContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitHttp_path_suffix(this);
	}
};




SyslParser.Http_path_suffixContext = Http_path_suffixContext;

SyslParser.prototype.http_path_suffix = function() {

    var localctx = new Http_path_suffixContext(this, this._ctx, this.state);
    this.enterRule(localctx, 100, SyslParser.RULE_http_path_suffix);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 738;
        this.match(SyslParser.FORWARD_SLASH);
        this.state = 741;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case SyslParser.DIGITS:
        case SyslParser.TEXT_LINE:
        case SyslParser.Name:
        case SyslParser.E_Name:
            this.state = 739;
            this.http_path_static();
            break;
        case SyslParser.CURLY_OPEN:
            this.state = 740;
            this.http_path_var_with_type();
            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Http_pathContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_http_path;
    return this;
}

Http_pathContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Http_pathContext.prototype.constructor = Http_pathContext;

Http_pathContext.prototype.FORWARD_SLASH = function() {
    return this.getToken(SyslParser.FORWARD_SLASH, 0);
};

Http_pathContext.prototype.http_path_suffix = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Http_path_suffixContext);
    } else {
        return this.getTypedRuleContext(Http_path_suffixContext,i);
    }
};

Http_pathContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterHttp_path(this);
	}
};

Http_pathContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitHttp_path(this);
	}
};




SyslParser.Http_pathContext = Http_pathContext;

SyslParser.prototype.http_path = function() {

    var localctx = new Http_pathContext(this, this._ctx, this.state);
    this.enterRule(localctx, 102, SyslParser.RULE_http_path);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 749;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,58,this._ctx);
        switch(la_) {
        case 1:
            this.state = 743;
            this.match(SyslParser.FORWARD_SLASH);
            break;

        case 2:
            this.state = 745; 
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            do {
                this.state = 744;
                this.http_path_suffix();
                this.state = 747; 
                this._errHandler.sync(this);
                _la = this._input.LA(1);
            } while(_la===SyslParser.FORWARD_SLASH);
            break;

        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Endpoint_nameContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_endpoint_name;
    return this;
}

Endpoint_nameContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Endpoint_nameContext.prototype.constructor = Endpoint_nameContext;

Endpoint_nameContext.prototype.name_str = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Name_strContext);
    } else {
        return this.getTypedRuleContext(Name_strContext,i);
    }
};

Endpoint_nameContext.prototype.FORWARD_SLASH = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SyslParser.FORWARD_SLASH);
    } else {
        return this.getToken(SyslParser.FORWARD_SLASH, i);
    }
};


Endpoint_nameContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterEndpoint_name(this);
	}
};

Endpoint_nameContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitEndpoint_name(this);
	}
};




SyslParser.Endpoint_nameContext = Endpoint_nameContext;

SyslParser.prototype.endpoint_name = function() {

    var localctx = new Endpoint_nameContext(this, this._ctx, this.state);
    this.enterRule(localctx, 104, SyslParser.RULE_endpoint_name);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 751;
        this.name_str();
        this.state = 756;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===SyslParser.FORWARD_SLASH) {
            this.state = 752;
            this.match(SyslParser.FORWARD_SLASH);
            this.state = 753;
            this.name_str();
            this.state = 758;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Ret_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_ret_stmt;
    return this;
}

Ret_stmtContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Ret_stmtContext.prototype.constructor = Ret_stmtContext;

Ret_stmtContext.prototype.RETURN = function() {
    return this.getToken(SyslParser.RETURN, 0);
};

Ret_stmtContext.prototype.TEXT = function() {
    return this.getToken(SyslParser.TEXT, 0);
};

Ret_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterRet_stmt(this);
	}
};

Ret_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitRet_stmt(this);
	}
};




SyslParser.Ret_stmtContext = Ret_stmtContext;

SyslParser.prototype.ret_stmt = function() {

    var localctx = new Ret_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 106, SyslParser.RULE_ret_stmt);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 759;
        this.match(SyslParser.RETURN);
        this.state = 760;
        this.match(SyslParser.TEXT);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function TargetContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_target;
    return this;
}

TargetContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
TargetContext.prototype.constructor = TargetContext;

TargetContext.prototype.app_name = function() {
    return this.getTypedRuleContext(App_nameContext,0);
};

TargetContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterTarget(this);
	}
};

TargetContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitTarget(this);
	}
};




SyslParser.TargetContext = TargetContext;

SyslParser.prototype.target = function() {

    var localctx = new TargetContext(this, this._ctx, this.state);
    this.enterRule(localctx, 108, SyslParser.RULE_target);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 762;
        this.app_name();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Target_endpointContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_target_endpoint;
    return this;
}

Target_endpointContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Target_endpointContext.prototype.constructor = Target_endpointContext;

Target_endpointContext.prototype.name_str = function() {
    return this.getTypedRuleContext(Name_strContext,0);
};

Target_endpointContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterTarget_endpoint(this);
	}
};

Target_endpointContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitTarget_endpoint(this);
	}
};




SyslParser.Target_endpointContext = Target_endpointContext;

SyslParser.prototype.target_endpoint = function() {

    var localctx = new Target_endpointContext(this, this._ctx, this.state);
    this.enterRule(localctx, 110, SyslParser.RULE_target_endpoint);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 764;
        this.name_str();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Call_argContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_call_arg;
    return this;
}

Call_argContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Call_argContext.prototype.constructor = Call_argContext;

Call_argContext.prototype.QSTRING = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SyslParser.QSTRING);
    } else {
        return this.getToken(SyslParser.QSTRING, i);
    }
};


Call_argContext.prototype.name_str = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Name_strContext);
    } else {
        return this.getTypedRuleContext(Name_strContext,i);
    }
};

Call_argContext.prototype.LESS_COLON = function() {
    return this.getToken(SyslParser.LESS_COLON, 0);
};

Call_argContext.prototype.NativeDataTypes = function() {
    return this.getToken(SyslParser.NativeDataTypes, 0);
};

Call_argContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterCall_arg(this);
	}
};

Call_argContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitCall_arg(this);
	}
};




SyslParser.Call_argContext = Call_argContext;

SyslParser.prototype.call_arg = function() {

    var localctx = new Call_argContext(this, this._ctx, this.state);
    this.enterRule(localctx, 112, SyslParser.RULE_call_arg);
    var _la = 0; // Token type
    try {
        this.state = 778;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,63,this._ctx);
        switch(la_) {
        case 1:
            this.enterOuterAlt(localctx, 1);
            this.state = 768; 
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            do {
                this.state = 768;
                this._errHandler.sync(this);
                switch(this._input.LA(1)) {
                case SyslParser.QSTRING:
                    this.state = 766;
                    this.match(SyslParser.QSTRING);
                    break;
                case SyslParser.TEXT_LINE:
                case SyslParser.Name:
                case SyslParser.E_Name:
                    this.state = 767;
                    this.name_str();
                    break;
                default:
                    throw new antlr4.error.NoViableAltException(this);
                }
                this.state = 770; 
                this._errHandler.sync(this);
                _la = this._input.LA(1);
            } while(((((_la - 57)) & ~0x1f) == 0 && ((1 << (_la - 57)) & ((1 << (SyslParser.QSTRING - 57)) | (1 << (SyslParser.TEXT_LINE - 57)) | (1 << (SyslParser.Name - 57)))) !== 0) || _la===SyslParser.E_Name);
            break;

        case 2:
            this.enterOuterAlt(localctx, 2);
            this.state = 772;
            this.name_str();
            this.state = 773;
            this.match(SyslParser.LESS_COLON);
            this.state = 776;
            this._errHandler.sync(this);
            switch(this._input.LA(1)) {
            case SyslParser.TEXT_LINE:
            case SyslParser.Name:
            case SyslParser.E_Name:
                this.state = 774;
                this.name_str();
                break;
            case SyslParser.NativeDataTypes:
                this.state = 775;
                this.match(SyslParser.NativeDataTypes);
                break;
            default:
                throw new antlr4.error.NoViableAltException(this);
            }
            break;

        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Call_argsContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_call_args;
    return this;
}

Call_argsContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Call_argsContext.prototype.constructor = Call_argsContext;

Call_argsContext.prototype.OPEN_PAREN = function() {
    return this.getToken(SyslParser.OPEN_PAREN, 0);
};

Call_argsContext.prototype.call_arg = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Call_argContext);
    } else {
        return this.getTypedRuleContext(Call_argContext,i);
    }
};

Call_argsContext.prototype.CLOSE_PAREN = function() {
    return this.getToken(SyslParser.CLOSE_PAREN, 0);
};

Call_argsContext.prototype.COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SyslParser.COMMA);
    } else {
        return this.getToken(SyslParser.COMMA, i);
    }
};


Call_argsContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterCall_args(this);
	}
};

Call_argsContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitCall_args(this);
	}
};




SyslParser.Call_argsContext = Call_argsContext;

SyslParser.prototype.call_args = function() {

    var localctx = new Call_argsContext(this, this._ctx, this.state);
    this.enterRule(localctx, 114, SyslParser.RULE_call_args);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 780;
        this.match(SyslParser.OPEN_PAREN);
        this.state = 781;
        this.call_arg();
        this.state = 786;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===SyslParser.COMMA) {
            this.state = 782;
            this.match(SyslParser.COMMA);
            this.state = 783;
            this.call_arg();
            this.state = 788;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
        this.state = 789;
        this.match(SyslParser.CLOSE_PAREN);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Call_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_call_stmt;
    return this;
}

Call_stmtContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Call_stmtContext.prototype.constructor = Call_stmtContext;

Call_stmtContext.prototype.target_endpoint = function() {
    return this.getTypedRuleContext(Target_endpointContext,0);
};

Call_stmtContext.prototype.DOT_ARROW = function() {
    return this.getToken(SyslParser.DOT_ARROW, 0);
};

Call_stmtContext.prototype.target = function() {
    return this.getTypedRuleContext(TargetContext,0);
};

Call_stmtContext.prototype.ARROW_LEFT = function() {
    return this.getToken(SyslParser.ARROW_LEFT, 0);
};

Call_stmtContext.prototype.call_args = function() {
    return this.getTypedRuleContext(Call_argsContext,0);
};

Call_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterCall_stmt(this);
	}
};

Call_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitCall_stmt(this);
	}
};




SyslParser.Call_stmtContext = Call_stmtContext;

SyslParser.prototype.call_stmt = function() {

    var localctx = new Call_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 116, SyslParser.RULE_call_stmt);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 795;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case SyslParser.DOT_ARROW:
            this.state = 791;
            this.match(SyslParser.DOT_ARROW);
            break;
        case SyslParser.TEXT_LINE:
        case SyslParser.Name:
        case SyslParser.E_Name:
            this.state = 792;
            this.target();
            this.state = 793;
            this.match(SyslParser.ARROW_LEFT);
            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
        this.state = 797;
        this.target_endpoint();
        this.state = 799;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SyslParser.OPEN_PAREN) {
            this.state = 798;
            this.call_args();
        }

    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function If_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_if_stmt;
    return this;
}

If_stmtContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
If_stmtContext.prototype.constructor = If_stmtContext;

If_stmtContext.prototype.IF = function() {
    return this.getToken(SyslParser.IF, 0);
};

If_stmtContext.prototype.PREDICATE_VALUE = function() {
    return this.getToken(SyslParser.PREDICATE_VALUE, 0);
};

If_stmtContext.prototype.COLON = function() {
    return this.getToken(SyslParser.COLON, 0);
};

If_stmtContext.prototype.INDENT = function() {
    return this.getToken(SyslParser.INDENT, 0);
};

If_stmtContext.prototype.DEDENT = function() {
    return this.getToken(SyslParser.DEDENT, 0);
};

If_stmtContext.prototype.statements = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(StatementsContext);
    } else {
        return this.getTypedRuleContext(StatementsContext,i);
    }
};

If_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterIf_stmt(this);
	}
};

If_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitIf_stmt(this);
	}
};




SyslParser.If_stmtContext = If_stmtContext;

SyslParser.prototype.if_stmt = function() {

    var localctx = new If_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 118, SyslParser.RULE_if_stmt);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 801;
        this.match(SyslParser.IF);
        this.state = 802;
        this.match(SyslParser.PREDICATE_VALUE);
        this.state = 803;
        this.match(SyslParser.COLON);
        this.state = 804;
        this.match(SyslParser.INDENT);
        this.state = 808;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << SyslParser.RETURN) | (1 << SyslParser.IF) | (1 << SyslParser.FOR_EACH) | (1 << SyslParser.FOR) | (1 << SyslParser.UNTIL) | (1 << SyslParser.LOOP) | (1 << SyslParser.ALT) | (1 << SyslParser.WHILE) | (1 << SyslParser.WHATEVER) | (1 << SyslParser.ONE_OF) | (1 << SyslParser.DOT_ARROW))) !== 0) || ((((_la - 43)) & ~0x1f) == 0 && ((1 << (_la - 43)) & ((1 << (SyslParser.AT - 43)) | (1 << (SyslParser.PIPE - 43)) | (1 << (SyslParser.QSTRING - 43)) | (1 << (SyslParser.SYSL_COMMENT - 43)) | (1 << (SyslParser.TEXT_LINE - 43)) | (1 << (SyslParser.Name - 43)))) !== 0) || _la===SyslParser.E_Name) {
            this.state = 805;
            this.statements();
            this.state = 810;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
        this.state = 811;
        this.match(SyslParser.DEDENT);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Else_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_else_stmt;
    return this;
}

Else_stmtContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Else_stmtContext.prototype.constructor = Else_stmtContext;

Else_stmtContext.prototype.ELSE = function() {
    return this.getToken(SyslParser.ELSE, 0);
};

Else_stmtContext.prototype.COLON = function() {
    return this.getToken(SyslParser.COLON, 0);
};

Else_stmtContext.prototype.INDENT = function() {
    return this.getToken(SyslParser.INDENT, 0);
};

Else_stmtContext.prototype.DEDENT = function() {
    return this.getToken(SyslParser.DEDENT, 0);
};

Else_stmtContext.prototype.PREDICATE_VALUE = function() {
    return this.getToken(SyslParser.PREDICATE_VALUE, 0);
};

Else_stmtContext.prototype.statements = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(StatementsContext);
    } else {
        return this.getTypedRuleContext(StatementsContext,i);
    }
};

Else_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterElse_stmt(this);
	}
};

Else_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitElse_stmt(this);
	}
};




SyslParser.Else_stmtContext = Else_stmtContext;

SyslParser.prototype.else_stmt = function() {

    var localctx = new Else_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 120, SyslParser.RULE_else_stmt);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 813;
        this.match(SyslParser.ELSE);
        this.state = 815;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SyslParser.PREDICATE_VALUE) {
            this.state = 814;
            this.match(SyslParser.PREDICATE_VALUE);
        }

        this.state = 817;
        this.match(SyslParser.COLON);
        this.state = 818;
        this.match(SyslParser.INDENT);
        this.state = 822;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << SyslParser.RETURN) | (1 << SyslParser.IF) | (1 << SyslParser.FOR_EACH) | (1 << SyslParser.FOR) | (1 << SyslParser.UNTIL) | (1 << SyslParser.LOOP) | (1 << SyslParser.ALT) | (1 << SyslParser.WHILE) | (1 << SyslParser.WHATEVER) | (1 << SyslParser.ONE_OF) | (1 << SyslParser.DOT_ARROW))) !== 0) || ((((_la - 43)) & ~0x1f) == 0 && ((1 << (_la - 43)) & ((1 << (SyslParser.AT - 43)) | (1 << (SyslParser.PIPE - 43)) | (1 << (SyslParser.QSTRING - 43)) | (1 << (SyslParser.SYSL_COMMENT - 43)) | (1 << (SyslParser.TEXT_LINE - 43)) | (1 << (SyslParser.Name - 43)))) !== 0) || _la===SyslParser.E_Name) {
            this.state = 819;
            this.statements();
            this.state = 824;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
        this.state = 825;
        this.match(SyslParser.DEDENT);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function If_elseContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_if_else;
    return this;
}

If_elseContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
If_elseContext.prototype.constructor = If_elseContext;

If_elseContext.prototype.if_stmt = function() {
    return this.getTypedRuleContext(If_stmtContext,0);
};

If_elseContext.prototype.else_stmt = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Else_stmtContext);
    } else {
        return this.getTypedRuleContext(Else_stmtContext,i);
    }
};

If_elseContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterIf_else(this);
	}
};

If_elseContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitIf_else(this);
	}
};




SyslParser.If_elseContext = If_elseContext;

SyslParser.prototype.if_else = function() {

    var localctx = new If_elseContext(this, this._ctx, this.state);
    this.enterRule(localctx, 122, SyslParser.RULE_if_else);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 827;
        this.if_stmt();
        this.state = 831;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===SyslParser.ELSE) {
            this.state = 828;
            this.else_stmt();
            this.state = 833;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function For_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_for_stmt;
    return this;
}

For_stmtContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
For_stmtContext.prototype.constructor = For_stmtContext;

For_stmtContext.prototype.PREDICATE_VALUE = function() {
    return this.getToken(SyslParser.PREDICATE_VALUE, 0);
};

For_stmtContext.prototype.COLON = function() {
    return this.getToken(SyslParser.COLON, 0);
};

For_stmtContext.prototype.INDENT = function() {
    return this.getToken(SyslParser.INDENT, 0);
};

For_stmtContext.prototype.DEDENT = function() {
    return this.getToken(SyslParser.DEDENT, 0);
};

For_stmtContext.prototype.ALT = function() {
    return this.getToken(SyslParser.ALT, 0);
};

For_stmtContext.prototype.UNTIL = function() {
    return this.getToken(SyslParser.UNTIL, 0);
};

For_stmtContext.prototype.FOR_EACH = function() {
    return this.getToken(SyslParser.FOR_EACH, 0);
};

For_stmtContext.prototype.FOR = function() {
    return this.getToken(SyslParser.FOR, 0);
};

For_stmtContext.prototype.LOOP = function() {
    return this.getToken(SyslParser.LOOP, 0);
};

For_stmtContext.prototype.WHILE = function() {
    return this.getToken(SyslParser.WHILE, 0);
};

For_stmtContext.prototype.statements = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(StatementsContext);
    } else {
        return this.getTypedRuleContext(StatementsContext,i);
    }
};

For_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterFor_stmt(this);
	}
};

For_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitFor_stmt(this);
	}
};




SyslParser.For_stmtContext = For_stmtContext;

SyslParser.prototype.for_stmt = function() {

    var localctx = new For_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 124, SyslParser.RULE_for_stmt);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 834;
        _la = this._input.LA(1);
        if(!((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << SyslParser.FOR_EACH) | (1 << SyslParser.FOR) | (1 << SyslParser.UNTIL) | (1 << SyslParser.LOOP) | (1 << SyslParser.ALT) | (1 << SyslParser.WHILE))) !== 0))) {
        this._errHandler.recoverInline(this);
        }
        else {
        	this._errHandler.reportMatch(this);
            this.consume();
        }
        this.state = 835;
        this.match(SyslParser.PREDICATE_VALUE);
        this.state = 836;
        this.match(SyslParser.COLON);
        this.state = 837;
        this.match(SyslParser.INDENT);
        this.state = 841;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << SyslParser.RETURN) | (1 << SyslParser.IF) | (1 << SyslParser.FOR_EACH) | (1 << SyslParser.FOR) | (1 << SyslParser.UNTIL) | (1 << SyslParser.LOOP) | (1 << SyslParser.ALT) | (1 << SyslParser.WHILE) | (1 << SyslParser.WHATEVER) | (1 << SyslParser.ONE_OF) | (1 << SyslParser.DOT_ARROW))) !== 0) || ((((_la - 43)) & ~0x1f) == 0 && ((1 << (_la - 43)) & ((1 << (SyslParser.AT - 43)) | (1 << (SyslParser.PIPE - 43)) | (1 << (SyslParser.QSTRING - 43)) | (1 << (SyslParser.SYSL_COMMENT - 43)) | (1 << (SyslParser.TEXT_LINE - 43)) | (1 << (SyslParser.Name - 43)))) !== 0) || _la===SyslParser.E_Name) {
            this.state = 838;
            this.statements();
            this.state = 843;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
        this.state = 844;
        this.match(SyslParser.DEDENT);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Http_method_commentContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_http_method_comment;
    return this;
}

Http_method_commentContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Http_method_commentContext.prototype.constructor = Http_method_commentContext;

Http_method_commentContext.prototype.SYSL_COMMENT = function() {
    return this.getToken(SyslParser.SYSL_COMMENT, 0);
};

Http_method_commentContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterHttp_method_comment(this);
	}
};

Http_method_commentContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitHttp_method_comment(this);
	}
};




SyslParser.Http_method_commentContext = Http_method_commentContext;

SyslParser.prototype.http_method_comment = function() {

    var localctx = new Http_method_commentContext(this, this._ctx, this.state);
    this.enterRule(localctx, 126, SyslParser.RULE_http_method_comment);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 846;
        this.match(SyslParser.SYSL_COMMENT);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Group_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_group_stmt;
    return this;
}

Group_stmtContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Group_stmtContext.prototype.constructor = Group_stmtContext;

Group_stmtContext.prototype.name_str = function() {
    return this.getTypedRuleContext(Name_strContext,0);
};

Group_stmtContext.prototype.COLON = function() {
    return this.getToken(SyslParser.COLON, 0);
};

Group_stmtContext.prototype.INDENT = function() {
    return this.getToken(SyslParser.INDENT, 0);
};

Group_stmtContext.prototype.DEDENT = function() {
    return this.getToken(SyslParser.DEDENT, 0);
};

Group_stmtContext.prototype.statements = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(StatementsContext);
    } else {
        return this.getTypedRuleContext(StatementsContext,i);
    }
};

Group_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterGroup_stmt(this);
	}
};

Group_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitGroup_stmt(this);
	}
};




SyslParser.Group_stmtContext = Group_stmtContext;

SyslParser.prototype.group_stmt = function() {

    var localctx = new Group_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 128, SyslParser.RULE_group_stmt);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 848;
        this.name_str();
        this.state = 849;
        this.match(SyslParser.COLON);
        this.state = 850;
        this.match(SyslParser.INDENT);
        this.state = 852; 
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        do {
            this.state = 851;
            this.statements();
            this.state = 854; 
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        } while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << SyslParser.RETURN) | (1 << SyslParser.IF) | (1 << SyslParser.FOR_EACH) | (1 << SyslParser.FOR) | (1 << SyslParser.UNTIL) | (1 << SyslParser.LOOP) | (1 << SyslParser.ALT) | (1 << SyslParser.WHILE) | (1 << SyslParser.WHATEVER) | (1 << SyslParser.ONE_OF) | (1 << SyslParser.DOT_ARROW))) !== 0) || ((((_la - 43)) & ~0x1f) == 0 && ((1 << (_la - 43)) & ((1 << (SyslParser.AT - 43)) | (1 << (SyslParser.PIPE - 43)) | (1 << (SyslParser.QSTRING - 43)) | (1 << (SyslParser.SYSL_COMMENT - 43)) | (1 << (SyslParser.TEXT_LINE - 43)) | (1 << (SyslParser.Name - 43)))) !== 0) || _la===SyslParser.E_Name);
        this.state = 856;
        this.match(SyslParser.DEDENT);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function One_of_case_labelContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_one_of_case_label;
    return this;
}

One_of_case_labelContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
One_of_case_labelContext.prototype.constructor = One_of_case_labelContext;

One_of_case_labelContext.prototype.Name = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SyslParser.Name);
    } else {
        return this.getToken(SyslParser.Name, i);
    }
};


One_of_case_labelContext.prototype.TEXT_LINE = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SyslParser.TEXT_LINE);
    } else {
        return this.getToken(SyslParser.TEXT_LINE, i);
    }
};


One_of_case_labelContext.prototype.QSTRING = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SyslParser.QSTRING);
    } else {
        return this.getToken(SyslParser.QSTRING, i);
    }
};


One_of_case_labelContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterOne_of_case_label(this);
	}
};

One_of_case_labelContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitOne_of_case_label(this);
	}
};




SyslParser.One_of_case_labelContext = One_of_case_labelContext;

SyslParser.prototype.one_of_case_label = function() {

    var localctx = new One_of_case_labelContext(this, this._ctx, this.state);
    this.enterRule(localctx, 130, SyslParser.RULE_one_of_case_label);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 859; 
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        do {
            this.state = 858;
            _la = this._input.LA(1);
            if(!(((((_la - 57)) & ~0x1f) == 0 && ((1 << (_la - 57)) & ((1 << (SyslParser.QSTRING - 57)) | (1 << (SyslParser.TEXT_LINE - 57)) | (1 << (SyslParser.Name - 57)))) !== 0))) {
            this._errHandler.recoverInline(this);
            }
            else {
            	this._errHandler.reportMatch(this);
                this.consume();
            }
            this.state = 861; 
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        } while(((((_la - 57)) & ~0x1f) == 0 && ((1 << (_la - 57)) & ((1 << (SyslParser.QSTRING - 57)) | (1 << (SyslParser.TEXT_LINE - 57)) | (1 << (SyslParser.Name - 57)))) !== 0));
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function One_of_casesContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_one_of_cases;
    return this;
}

One_of_casesContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
One_of_casesContext.prototype.constructor = One_of_casesContext;

One_of_casesContext.prototype.COLON = function() {
    return this.getToken(SyslParser.COLON, 0);
};

One_of_casesContext.prototype.INDENT = function() {
    return this.getToken(SyslParser.INDENT, 0);
};

One_of_casesContext.prototype.DEDENT = function() {
    return this.getToken(SyslParser.DEDENT, 0);
};

One_of_casesContext.prototype.one_of_case_label = function() {
    return this.getTypedRuleContext(One_of_case_labelContext,0);
};

One_of_casesContext.prototype.statements = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(StatementsContext);
    } else {
        return this.getTypedRuleContext(StatementsContext,i);
    }
};

One_of_casesContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterOne_of_cases(this);
	}
};

One_of_casesContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitOne_of_cases(this);
	}
};




SyslParser.One_of_casesContext = One_of_casesContext;

SyslParser.prototype.one_of_cases = function() {

    var localctx = new One_of_casesContext(this, this._ctx, this.state);
    this.enterRule(localctx, 132, SyslParser.RULE_one_of_cases);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 864;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(((((_la - 57)) & ~0x1f) == 0 && ((1 << (_la - 57)) & ((1 << (SyslParser.QSTRING - 57)) | (1 << (SyslParser.TEXT_LINE - 57)) | (1 << (SyslParser.Name - 57)))) !== 0)) {
            this.state = 863;
            this.one_of_case_label();
        }

        this.state = 866;
        this.match(SyslParser.COLON);
        this.state = 867;
        this.match(SyslParser.INDENT);
        this.state = 869; 
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        do {
            this.state = 868;
            this.statements();
            this.state = 871; 
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        } while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << SyslParser.RETURN) | (1 << SyslParser.IF) | (1 << SyslParser.FOR_EACH) | (1 << SyslParser.FOR) | (1 << SyslParser.UNTIL) | (1 << SyslParser.LOOP) | (1 << SyslParser.ALT) | (1 << SyslParser.WHILE) | (1 << SyslParser.WHATEVER) | (1 << SyslParser.ONE_OF) | (1 << SyslParser.DOT_ARROW))) !== 0) || ((((_la - 43)) & ~0x1f) == 0 && ((1 << (_la - 43)) & ((1 << (SyslParser.AT - 43)) | (1 << (SyslParser.PIPE - 43)) | (1 << (SyslParser.QSTRING - 43)) | (1 << (SyslParser.SYSL_COMMENT - 43)) | (1 << (SyslParser.TEXT_LINE - 43)) | (1 << (SyslParser.Name - 43)))) !== 0) || _la===SyslParser.E_Name);
        this.state = 873;
        this.match(SyslParser.DEDENT);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function One_of_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_one_of_stmt;
    return this;
}

One_of_stmtContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
One_of_stmtContext.prototype.constructor = One_of_stmtContext;

One_of_stmtContext.prototype.ONE_OF = function() {
    return this.getToken(SyslParser.ONE_OF, 0);
};

One_of_stmtContext.prototype.COLON = function() {
    return this.getToken(SyslParser.COLON, 0);
};

One_of_stmtContext.prototype.INDENT = function() {
    return this.getToken(SyslParser.INDENT, 0);
};

One_of_stmtContext.prototype.DEDENT = function() {
    return this.getToken(SyslParser.DEDENT, 0);
};

One_of_stmtContext.prototype.one_of_cases = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(One_of_casesContext);
    } else {
        return this.getTypedRuleContext(One_of_casesContext,i);
    }
};

One_of_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterOne_of_stmt(this);
	}
};

One_of_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitOne_of_stmt(this);
	}
};




SyslParser.One_of_stmtContext = One_of_stmtContext;

SyslParser.prototype.one_of_stmt = function() {

    var localctx = new One_of_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 134, SyslParser.RULE_one_of_stmt);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 875;
        this.match(SyslParser.ONE_OF);
        this.state = 876;
        this.match(SyslParser.COLON);
        this.state = 877;
        this.match(SyslParser.INDENT);
        this.state = 879; 
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        do {
            this.state = 878;
            this.one_of_cases();
            this.state = 881; 
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        } while(((((_la - 40)) & ~0x1f) == 0 && ((1 << (_la - 40)) & ((1 << (SyslParser.COLON - 40)) | (1 << (SyslParser.QSTRING - 40)) | (1 << (SyslParser.TEXT_LINE - 40)) | (1 << (SyslParser.Name - 40)))) !== 0));
        this.state = 883;
        this.match(SyslParser.DEDENT);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Text_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_text_stmt;
    return this;
}

Text_stmtContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Text_stmtContext.prototype.constructor = Text_stmtContext;

Text_stmtContext.prototype.doc_string = function() {
    return this.getTypedRuleContext(Doc_stringContext,0);
};

Text_stmtContext.prototype.QSTRING = function() {
    return this.getToken(SyslParser.QSTRING, 0);
};

Text_stmtContext.prototype.app_name = function() {
    return this.getTypedRuleContext(App_nameContext,0);
};

Text_stmtContext.prototype.ARROW_RIGHT = function() {
    return this.getToken(SyslParser.ARROW_RIGHT, 0);
};

Text_stmtContext.prototype.name_str = function() {
    return this.getTypedRuleContext(Name_strContext,0);
};

Text_stmtContext.prototype.WHATEVER = function() {
    return this.getToken(SyslParser.WHATEVER, 0);
};

Text_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterText_stmt(this);
	}
};

Text_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitText_stmt(this);
	}
};




SyslParser.Text_stmtContext = Text_stmtContext;

SyslParser.prototype.text_stmt = function() {

    var localctx = new Text_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 136, SyslParser.RULE_text_stmt);
    var _la = 0; // Token type
    try {
        this.state = 893;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case SyslParser.PIPE:
            this.enterOuterAlt(localctx, 1);
            this.state = 885;
            this.doc_string();
            break;
        case SyslParser.QSTRING:
            this.enterOuterAlt(localctx, 2);
            this.state = 886;
            this.match(SyslParser.QSTRING);
            break;
        case SyslParser.TEXT_LINE:
        case SyslParser.Name:
        case SyslParser.E_Name:
            this.enterOuterAlt(localctx, 3);
            this.state = 887;
            this.app_name();
            this.state = 890;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===SyslParser.ARROW_RIGHT) {
                this.state = 888;
                this.match(SyslParser.ARROW_RIGHT);
                this.state = 889;
                this.name_str();
            }

            break;
        case SyslParser.WHATEVER:
            this.enterOuterAlt(localctx, 4);
            this.state = 892;
            this.match(SyslParser.WHATEVER);
            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function MixinContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_mixin;
    return this;
}

MixinContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
MixinContext.prototype.constructor = MixinContext;

MixinContext.prototype.MIXIN = function() {
    return this.getToken(SyslParser.MIXIN, 0);
};

MixinContext.prototype.app_name = function() {
    return this.getTypedRuleContext(App_nameContext,0);
};

MixinContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterMixin(this);
	}
};

MixinContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitMixin(this);
	}
};




SyslParser.MixinContext = MixinContext;

SyslParser.prototype.mixin = function() {

    var localctx = new MixinContext(this, this._ctx, this.state);
    this.enterRule(localctx, 138, SyslParser.RULE_mixin);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 895;
        this.match(SyslParser.MIXIN);
        this.state = 896;
        this.app_name();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function ParamContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_param;
    return this;
}

ParamContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
ParamContext.prototype.constructor = ParamContext;

ParamContext.prototype.reference = function() {
    return this.getTypedRuleContext(ReferenceContext,0);
};

ParamContext.prototype.field = function() {
    return this.getTypedRuleContext(FieldContext,0);
};

ParamContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterParam(this);
	}
};

ParamContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitParam(this);
	}
};




SyslParser.ParamContext = ParamContext;

SyslParser.prototype.param = function() {

    var localctx = new ParamContext(this, this._ctx, this.state);
    this.enterRule(localctx, 140, SyslParser.RULE_param);
    try {
        this.state = 900;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,79,this._ctx);
        switch(la_) {
        case 1:
            this.enterOuterAlt(localctx, 1);
            this.state = 898;
            this.reference();
            break;

        case 2:
            this.enterOuterAlt(localctx, 2);
            this.state = 899;
            this.field();
            break;

        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Param_listContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_param_list;
    return this;
}

Param_listContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Param_listContext.prototype.constructor = Param_listContext;

Param_listContext.prototype.param = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(ParamContext);
    } else {
        return this.getTypedRuleContext(ParamContext,i);
    }
};

Param_listContext.prototype.COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SyslParser.COMMA);
    } else {
        return this.getToken(SyslParser.COMMA, i);
    }
};


Param_listContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterParam_list(this);
	}
};

Param_listContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitParam_list(this);
	}
};




SyslParser.Param_listContext = Param_listContext;

SyslParser.prototype.param_list = function() {

    var localctx = new Param_listContext(this, this._ctx, this.state);
    this.enterRule(localctx, 142, SyslParser.RULE_param_list);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 902;
        this.param();
        this.state = 907;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===SyslParser.COMMA) {
            this.state = 903;
            this.match(SyslParser.COMMA);
            this.state = 904;
            this.param();
            this.state = 909;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function ParamsContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_params;
    return this;
}

ParamsContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
ParamsContext.prototype.constructor = ParamsContext;

ParamsContext.prototype.OPEN_PAREN = function() {
    return this.getToken(SyslParser.OPEN_PAREN, 0);
};

ParamsContext.prototype.param_list = function() {
    return this.getTypedRuleContext(Param_listContext,0);
};

ParamsContext.prototype.CLOSE_PAREN = function() {
    return this.getToken(SyslParser.CLOSE_PAREN, 0);
};

ParamsContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterParams(this);
	}
};

ParamsContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitParams(this);
	}
};




SyslParser.ParamsContext = ParamsContext;

SyslParser.prototype.params = function() {

    var localctx = new ParamsContext(this, this._ctx, this.state);
    this.enterRule(localctx, 144, SyslParser.RULE_params);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 910;
        this.match(SyslParser.OPEN_PAREN);
        this.state = 911;
        this.param_list();
        this.state = 912;
        this.match(SyslParser.CLOSE_PAREN);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function StatementsContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_statements;
    return this;
}

StatementsContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
StatementsContext.prototype.constructor = StatementsContext;

StatementsContext.prototype.if_else = function() {
    return this.getTypedRuleContext(If_elseContext,0);
};

StatementsContext.prototype.for_stmt = function() {
    return this.getTypedRuleContext(For_stmtContext,0);
};

StatementsContext.prototype.ret_stmt = function() {
    return this.getTypedRuleContext(Ret_stmtContext,0);
};

StatementsContext.prototype.call_stmt = function() {
    return this.getTypedRuleContext(Call_stmtContext,0);
};

StatementsContext.prototype.one_of_stmt = function() {
    return this.getTypedRuleContext(One_of_stmtContext,0);
};

StatementsContext.prototype.http_method_comment = function() {
    return this.getTypedRuleContext(Http_method_commentContext,0);
};

StatementsContext.prototype.group_stmt = function() {
    return this.getTypedRuleContext(Group_stmtContext,0);
};

StatementsContext.prototype.text_stmt = function() {
    return this.getTypedRuleContext(Text_stmtContext,0);
};

StatementsContext.prototype.annotation = function() {
    return this.getTypedRuleContext(AnnotationContext,0);
};

StatementsContext.prototype.attribs_or_modifiers = function() {
    return this.getTypedRuleContext(Attribs_or_modifiersContext,0);
};

StatementsContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterStatements(this);
	}
};

StatementsContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitStatements(this);
	}
};




SyslParser.StatementsContext = StatementsContext;

SyslParser.prototype.statements = function() {

    var localctx = new StatementsContext(this, this._ctx, this.state);
    this.enterRule(localctx, 146, SyslParser.RULE_statements);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 923;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,81,this._ctx);
        switch(la_) {
        case 1:
            this.state = 914;
            this.if_else();
            break;

        case 2:
            this.state = 915;
            this.for_stmt();
            break;

        case 3:
            this.state = 916;
            this.ret_stmt();
            break;

        case 4:
            this.state = 917;
            this.call_stmt();
            break;

        case 5:
            this.state = 918;
            this.one_of_stmt();
            break;

        case 6:
            this.state = 919;
            this.http_method_comment();
            break;

        case 7:
            this.state = 920;
            this.group_stmt();
            break;

        case 8:
            this.state = 921;
            this.text_stmt();
            break;

        case 9:
            this.state = 922;
            this.annotation();
            break;

        }
        this.state = 926;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SyslParser.SQ_OPEN) {
            this.state = 925;
            this.attribs_or_modifiers();
        }

    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Method_defContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_method_def;
    return this;
}

Method_defContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Method_defContext.prototype.constructor = Method_defContext;

Method_defContext.prototype.HTTP_VERBS = function() {
    return this.getToken(SyslParser.HTTP_VERBS, 0);
};

Method_defContext.prototype.COLON = function() {
    return this.getToken(SyslParser.COLON, 0);
};

Method_defContext.prototype.INDENT = function() {
    return this.getToken(SyslParser.INDENT, 0);
};

Method_defContext.prototype.DEDENT = function() {
    return this.getToken(SyslParser.DEDENT, 0);
};

Method_defContext.prototype.params = function() {
    return this.getTypedRuleContext(ParamsContext,0);
};

Method_defContext.prototype.query_param = function() {
    return this.getTypedRuleContext(Query_paramContext,0);
};

Method_defContext.prototype.attribs_or_modifiers = function() {
    return this.getTypedRuleContext(Attribs_or_modifiersContext,0);
};

Method_defContext.prototype.statements = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(StatementsContext);
    } else {
        return this.getTypedRuleContext(StatementsContext,i);
    }
};

Method_defContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterMethod_def(this);
	}
};

Method_defContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitMethod_def(this);
	}
};




SyslParser.Method_defContext = Method_defContext;

SyslParser.prototype.method_def = function() {

    var localctx = new Method_defContext(this, this._ctx, this.state);
    this.enterRule(localctx, 148, SyslParser.RULE_method_def);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 928;
        this.match(SyslParser.HTTP_VERBS);
        this.state = 930;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SyslParser.OPEN_PAREN) {
            this.state = 929;
            this.params();
        }

        this.state = 933;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SyslParser.QN) {
            this.state = 932;
            this.query_param();
        }

        this.state = 936;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SyslParser.SQ_OPEN) {
            this.state = 935;
            this.attribs_or_modifiers();
        }

        this.state = 938;
        this.match(SyslParser.COLON);
        this.state = 939;
        this.match(SyslParser.INDENT);
        this.state = 941; 
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        do {
            this.state = 940;
            this.statements();
            this.state = 943; 
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        } while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << SyslParser.RETURN) | (1 << SyslParser.IF) | (1 << SyslParser.FOR_EACH) | (1 << SyslParser.FOR) | (1 << SyslParser.UNTIL) | (1 << SyslParser.LOOP) | (1 << SyslParser.ALT) | (1 << SyslParser.WHILE) | (1 << SyslParser.WHATEVER) | (1 << SyslParser.ONE_OF) | (1 << SyslParser.DOT_ARROW))) !== 0) || ((((_la - 43)) & ~0x1f) == 0 && ((1 << (_la - 43)) & ((1 << (SyslParser.AT - 43)) | (1 << (SyslParser.PIPE - 43)) | (1 << (SyslParser.QSTRING - 43)) | (1 << (SyslParser.SYSL_COMMENT - 43)) | (1 << (SyslParser.TEXT_LINE - 43)) | (1 << (SyslParser.Name - 43)))) !== 0) || _la===SyslParser.E_Name);
        this.state = 945;
        this.match(SyslParser.DEDENT);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function ShortcutContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_shortcut;
    return this;
}

ShortcutContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
ShortcutContext.prototype.constructor = ShortcutContext;

ShortcutContext.prototype.WHATEVER = function() {
    return this.getToken(SyslParser.WHATEVER, 0);
};

ShortcutContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterShortcut(this);
	}
};

ShortcutContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitShortcut(this);
	}
};




SyslParser.ShortcutContext = ShortcutContext;

SyslParser.prototype.shortcut = function() {

    var localctx = new ShortcutContext(this, this._ctx, this.state);
    this.enterRule(localctx, 150, SyslParser.RULE_shortcut);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 947;
        this.match(SyslParser.WHATEVER);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Simple_endpointContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_simple_endpoint;
    return this;
}

Simple_endpointContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Simple_endpointContext.prototype.constructor = Simple_endpointContext;

Simple_endpointContext.prototype.WHATEVER = function() {
    return this.getToken(SyslParser.WHATEVER, 0);
};

Simple_endpointContext.prototype.endpoint_name = function() {
    return this.getTypedRuleContext(Endpoint_nameContext,0);
};

Simple_endpointContext.prototype.COLON = function() {
    return this.getToken(SyslParser.COLON, 0);
};

Simple_endpointContext.prototype.shortcut = function() {
    return this.getTypedRuleContext(ShortcutContext,0);
};

Simple_endpointContext.prototype.QSTRING = function() {
    return this.getToken(SyslParser.QSTRING, 0);
};

Simple_endpointContext.prototype.params = function() {
    return this.getTypedRuleContext(ParamsContext,0);
};

Simple_endpointContext.prototype.attribs_or_modifiers = function() {
    return this.getTypedRuleContext(Attribs_or_modifiersContext,0);
};

Simple_endpointContext.prototype.INDENT = function() {
    return this.getToken(SyslParser.INDENT, 0);
};

Simple_endpointContext.prototype.DEDENT = function() {
    return this.getToken(SyslParser.DEDENT, 0);
};

Simple_endpointContext.prototype.statements = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(StatementsContext);
    } else {
        return this.getTypedRuleContext(StatementsContext,i);
    }
};

Simple_endpointContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterSimple_endpoint(this);
	}
};

Simple_endpointContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitSimple_endpoint(this);
	}
};




SyslParser.Simple_endpointContext = Simple_endpointContext;

SyslParser.prototype.simple_endpoint = function() {

    var localctx = new Simple_endpointContext(this, this._ctx, this.state);
    this.enterRule(localctx, 152, SyslParser.RULE_simple_endpoint);
    var _la = 0; // Token type
    try {
        this.state = 972;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case SyslParser.WHATEVER:
            this.enterOuterAlt(localctx, 1);
            this.state = 949;
            this.match(SyslParser.WHATEVER);
            break;
        case SyslParser.TEXT_LINE:
        case SyslParser.Name:
        case SyslParser.E_Name:
            this.enterOuterAlt(localctx, 2);
            this.state = 950;
            this.endpoint_name();
            this.state = 952;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===SyslParser.QSTRING) {
                this.state = 951;
                this.match(SyslParser.QSTRING);
            }

            this.state = 955;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===SyslParser.OPEN_PAREN) {
                this.state = 954;
                this.params();
            }

            this.state = 958;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===SyslParser.SQ_OPEN) {
                this.state = 957;
                this.attribs_or_modifiers();
            }

            this.state = 960;
            this.match(SyslParser.COLON);
            this.state = 970;
            this._errHandler.sync(this);
            switch(this._input.LA(1)) {
            case SyslParser.WHATEVER:
                this.state = 961;
                this.shortcut();
                break;
            case SyslParser.INDENT:
                this.state = 962;
                this.match(SyslParser.INDENT);
                this.state = 964; 
                this._errHandler.sync(this);
                _la = this._input.LA(1);
                do {
                    this.state = 963;
                    this.statements();
                    this.state = 966; 
                    this._errHandler.sync(this);
                    _la = this._input.LA(1);
                } while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << SyslParser.RETURN) | (1 << SyslParser.IF) | (1 << SyslParser.FOR_EACH) | (1 << SyslParser.FOR) | (1 << SyslParser.UNTIL) | (1 << SyslParser.LOOP) | (1 << SyslParser.ALT) | (1 << SyslParser.WHILE) | (1 << SyslParser.WHATEVER) | (1 << SyslParser.ONE_OF) | (1 << SyslParser.DOT_ARROW))) !== 0) || ((((_la - 43)) & ~0x1f) == 0 && ((1 << (_la - 43)) & ((1 << (SyslParser.AT - 43)) | (1 << (SyslParser.PIPE - 43)) | (1 << (SyslParser.QSTRING - 43)) | (1 << (SyslParser.SYSL_COMMENT - 43)) | (1 << (SyslParser.TEXT_LINE - 43)) | (1 << (SyslParser.Name - 43)))) !== 0) || _la===SyslParser.E_Name);
                this.state = 968;
                this.match(SyslParser.DEDENT);
                break;
            default:
                throw new antlr4.error.NoViableAltException(this);
            }
            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Rest_endpointContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_rest_endpoint;
    return this;
}

Rest_endpointContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Rest_endpointContext.prototype.constructor = Rest_endpointContext;

Rest_endpointContext.prototype.http_path = function() {
    return this.getTypedRuleContext(Http_pathContext,0);
};

Rest_endpointContext.prototype.COLON = function() {
    return this.getToken(SyslParser.COLON, 0);
};

Rest_endpointContext.prototype.INDENT = function() {
    return this.getToken(SyslParser.INDENT, 0);
};

Rest_endpointContext.prototype.DEDENT = function() {
    return this.getToken(SyslParser.DEDENT, 0);
};

Rest_endpointContext.prototype.attribs_or_modifiers = function() {
    return this.getTypedRuleContext(Attribs_or_modifiersContext,0);
};

Rest_endpointContext.prototype.method_def = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Method_defContext);
    } else {
        return this.getTypedRuleContext(Method_defContext,i);
    }
};

Rest_endpointContext.prototype.rest_endpoint = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Rest_endpointContext);
    } else {
        return this.getTypedRuleContext(Rest_endpointContext,i);
    }
};

Rest_endpointContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterRest_endpoint(this);
	}
};

Rest_endpointContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitRest_endpoint(this);
	}
};




SyslParser.Rest_endpointContext = Rest_endpointContext;

SyslParser.prototype.rest_endpoint = function() {

    var localctx = new Rest_endpointContext(this, this._ctx, this.state);
    this.enterRule(localctx, 154, SyslParser.RULE_rest_endpoint);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 974;
        this.http_path();
        this.state = 976;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SyslParser.SQ_OPEN) {
            this.state = 975;
            this.attribs_or_modifiers();
        }

        this.state = 978;
        this.match(SyslParser.COLON);

        this.state = 979;
        this.match(SyslParser.INDENT);
        this.state = 982; 
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        do {
            this.state = 982;
            this._errHandler.sync(this);
            switch(this._input.LA(1)) {
            case SyslParser.HTTP_VERBS:
                this.state = 980;
                this.method_def();
                break;
            case SyslParser.FORWARD_SLASH:
                this.state = 981;
                this.rest_endpoint();
                break;
            default:
                throw new antlr4.error.NoViableAltException(this);
            }
            this.state = 984; 
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        } while(_la===SyslParser.HTTP_VERBS || _la===SyslParser.FORWARD_SLASH);
        this.state = 986;
        this.match(SyslParser.DEDENT);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Collector_query_varContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_collector_query_var;
    return this;
}

Collector_query_varContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Collector_query_varContext.prototype.constructor = Collector_query_varContext;

Collector_query_varContext.prototype.name_str = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Name_strContext);
    } else {
        return this.getTypedRuleContext(Name_strContext,i);
    }
};

Collector_query_varContext.prototype.EQ = function() {
    return this.getToken(SyslParser.EQ, 0);
};

Collector_query_varContext.prototype.NativeDataTypes = function() {
    return this.getToken(SyslParser.NativeDataTypes, 0);
};

Collector_query_varContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterCollector_query_var(this);
	}
};

Collector_query_varContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitCollector_query_var(this);
	}
};




SyslParser.Collector_query_varContext = Collector_query_varContext;

SyslParser.prototype.collector_query_var = function() {

    var localctx = new Collector_query_varContext(this, this._ctx, this.state);
    this.enterRule(localctx, 156, SyslParser.RULE_collector_query_var);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 988;
        this.name_str();
        this.state = 989;
        this.match(SyslParser.EQ);
        this.state = 992;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case SyslParser.NativeDataTypes:
            this.state = 990;
            this.match(SyslParser.NativeDataTypes);
            break;
        case SyslParser.TEXT_LINE:
        case SyslParser.Name:
        case SyslParser.E_Name:
            this.state = 991;
            this.name_str();
            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Collector_query_paramContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_collector_query_param;
    return this;
}

Collector_query_paramContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Collector_query_paramContext.prototype.constructor = Collector_query_paramContext;

Collector_query_paramContext.prototype.QN = function() {
    return this.getToken(SyslParser.QN, 0);
};

Collector_query_paramContext.prototype.collector_query_var = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Collector_query_varContext);
    } else {
        return this.getTypedRuleContext(Collector_query_varContext,i);
    }
};

Collector_query_paramContext.prototype.AMP = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SyslParser.AMP);
    } else {
        return this.getToken(SyslParser.AMP, i);
    }
};


Collector_query_paramContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterCollector_query_param(this);
	}
};

Collector_query_paramContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitCollector_query_param(this);
	}
};




SyslParser.Collector_query_paramContext = Collector_query_paramContext;

SyslParser.prototype.collector_query_param = function() {

    var localctx = new Collector_query_paramContext(this, this._ctx, this.state);
    this.enterRule(localctx, 158, SyslParser.RULE_collector_query_param);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 994;
        this.match(SyslParser.QN);
        this.state = 995;
        this.collector_query_var();
        this.state = 1000;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===SyslParser.AMP) {
            this.state = 996;
            this.match(SyslParser.AMP);
            this.state = 997;
            this.collector_query_var();
            this.state = 1002;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Collector_call_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_collector_call_stmt;
    return this;
}

Collector_call_stmtContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Collector_call_stmtContext.prototype.constructor = Collector_call_stmtContext;

Collector_call_stmtContext.prototype.target = function() {
    return this.getTypedRuleContext(TargetContext,0);
};

Collector_call_stmtContext.prototype.ARROW_LEFT = function() {
    return this.getToken(SyslParser.ARROW_LEFT, 0);
};

Collector_call_stmtContext.prototype.target_endpoint = function() {
    return this.getTypedRuleContext(Target_endpointContext,0);
};

Collector_call_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterCollector_call_stmt(this);
	}
};

Collector_call_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitCollector_call_stmt(this);
	}
};




SyslParser.Collector_call_stmtContext = Collector_call_stmtContext;

SyslParser.prototype.collector_call_stmt = function() {

    var localctx = new Collector_call_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 160, SyslParser.RULE_collector_call_stmt);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1003;
        this.target();
        this.state = 1004;
        this.match(SyslParser.ARROW_LEFT);
        this.state = 1005;
        this.target_endpoint();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Collector_http_stmt_partContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_collector_http_stmt_part;
    return this;
}

Collector_http_stmt_partContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Collector_http_stmt_partContext.prototype.constructor = Collector_http_stmt_partContext;

Collector_http_stmt_partContext.prototype.name_str = function() {
    return this.getTypedRuleContext(Name_strContext,0);
};

Collector_http_stmt_partContext.prototype.CURLY_OPEN = function() {
    return this.getToken(SyslParser.CURLY_OPEN, 0);
};

Collector_http_stmt_partContext.prototype.CURLY_CLOSE = function() {
    return this.getToken(SyslParser.CURLY_CLOSE, 0);
};

Collector_http_stmt_partContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterCollector_http_stmt_part(this);
	}
};

Collector_http_stmt_partContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitCollector_http_stmt_part(this);
	}
};




SyslParser.Collector_http_stmt_partContext = Collector_http_stmt_partContext;

SyslParser.prototype.collector_http_stmt_part = function() {

    var localctx = new Collector_http_stmt_partContext(this, this._ctx, this.state);
    this.enterRule(localctx, 162, SyslParser.RULE_collector_http_stmt_part);
    try {
        this.state = 1012;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case SyslParser.TEXT_LINE:
        case SyslParser.Name:
        case SyslParser.E_Name:
            this.enterOuterAlt(localctx, 1);
            this.state = 1007;
            this.name_str();
            break;
        case SyslParser.CURLY_OPEN:
            this.enterOuterAlt(localctx, 2);
            this.state = 1008;
            this.match(SyslParser.CURLY_OPEN);
            this.state = 1009;
            this.name_str();
            this.state = 1010;
            this.match(SyslParser.CURLY_CLOSE);
            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Collector_http_stmt_suffixContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_collector_http_stmt_suffix;
    return this;
}

Collector_http_stmt_suffixContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Collector_http_stmt_suffixContext.prototype.constructor = Collector_http_stmt_suffixContext;

Collector_http_stmt_suffixContext.prototype.FORWARD_SLASH = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SyslParser.FORWARD_SLASH);
    } else {
        return this.getToken(SyslParser.FORWARD_SLASH, i);
    }
};


Collector_http_stmt_suffixContext.prototype.collector_http_stmt_part = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Collector_http_stmt_partContext);
    } else {
        return this.getTypedRuleContext(Collector_http_stmt_partContext,i);
    }
};

Collector_http_stmt_suffixContext.prototype.collector_query_param = function() {
    return this.getTypedRuleContext(Collector_query_paramContext,0);
};

Collector_http_stmt_suffixContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterCollector_http_stmt_suffix(this);
	}
};

Collector_http_stmt_suffixContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitCollector_http_stmt_suffix(this);
	}
};




SyslParser.Collector_http_stmt_suffixContext = Collector_http_stmt_suffixContext;

SyslParser.prototype.collector_http_stmt_suffix = function() {

    var localctx = new Collector_http_stmt_suffixContext(this, this._ctx, this.state);
    this.enterRule(localctx, 164, SyslParser.RULE_collector_http_stmt_suffix);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1016; 
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        do {
            this.state = 1014;
            this.match(SyslParser.FORWARD_SLASH);
            this.state = 1015;
            this.collector_http_stmt_part();
            this.state = 1018; 
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        } while(_la===SyslParser.FORWARD_SLASH);
        this.state = 1021;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SyslParser.QN) {
            this.state = 1020;
            this.collector_query_param();
        }

    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Collector_http_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_collector_http_stmt;
    return this;
}

Collector_http_stmtContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Collector_http_stmtContext.prototype.constructor = Collector_http_stmtContext;

Collector_http_stmtContext.prototype.HTTP_VERBS = function() {
    return this.getToken(SyslParser.HTTP_VERBS, 0);
};

Collector_http_stmtContext.prototype.collector_http_stmt_suffix = function() {
    return this.getTypedRuleContext(Collector_http_stmt_suffixContext,0);
};

Collector_http_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterCollector_http_stmt(this);
	}
};

Collector_http_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitCollector_http_stmt(this);
	}
};




SyslParser.Collector_http_stmtContext = Collector_http_stmtContext;

SyslParser.prototype.collector_http_stmt = function() {

    var localctx = new Collector_http_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 166, SyslParser.RULE_collector_http_stmt);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1023;
        this.match(SyslParser.HTTP_VERBS);
        this.state = 1024;
        this.collector_http_stmt_suffix();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function PublisherContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_publisher;
    return this;
}

PublisherContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
PublisherContext.prototype.constructor = PublisherContext;

PublisherContext.prototype.app_name = function() {
    return this.getTypedRuleContext(App_nameContext,0);
};

PublisherContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterPublisher(this);
	}
};

PublisherContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitPublisher(this);
	}
};




SyslParser.PublisherContext = PublisherContext;

SyslParser.prototype.publisher = function() {

    var localctx = new PublisherContext(this, this._ctx, this.state);
    this.enterRule(localctx, 168, SyslParser.RULE_publisher);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1026;
        this.app_name();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function SubscriberContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_subscriber;
    return this;
}

SubscriberContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
SubscriberContext.prototype.constructor = SubscriberContext;

SubscriberContext.prototype.app_name = function() {
    return this.getTypedRuleContext(App_nameContext,0);
};

SubscriberContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterSubscriber(this);
	}
};

SubscriberContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitSubscriber(this);
	}
};




SyslParser.SubscriberContext = SubscriberContext;

SyslParser.prototype.subscriber = function() {

    var localctx = new SubscriberContext(this, this._ctx, this.state);
    this.enterRule(localctx, 170, SyslParser.RULE_subscriber);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1028;
        this.app_name();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Collector_pubsub_callContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_collector_pubsub_call;
    return this;
}

Collector_pubsub_callContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Collector_pubsub_callContext.prototype.constructor = Collector_pubsub_callContext;

Collector_pubsub_callContext.prototype.subscriber = function() {
    return this.getTypedRuleContext(SubscriberContext,0);
};

Collector_pubsub_callContext.prototype.ARROW_LEFT = function() {
    return this.getToken(SyslParser.ARROW_LEFT, 0);
};

Collector_pubsub_callContext.prototype.publisher = function() {
    return this.getTypedRuleContext(PublisherContext,0);
};

Collector_pubsub_callContext.prototype.ARROW_RIGHT = function() {
    return this.getToken(SyslParser.ARROW_RIGHT, 0);
};

Collector_pubsub_callContext.prototype.name_str = function() {
    return this.getTypedRuleContext(Name_strContext,0);
};

Collector_pubsub_callContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterCollector_pubsub_call(this);
	}
};

Collector_pubsub_callContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitCollector_pubsub_call(this);
	}
};




SyslParser.Collector_pubsub_callContext = Collector_pubsub_callContext;

SyslParser.prototype.collector_pubsub_call = function() {

    var localctx = new Collector_pubsub_callContext(this, this._ctx, this.state);
    this.enterRule(localctx, 172, SyslParser.RULE_collector_pubsub_call);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1030;
        this.subscriber();
        this.state = 1031;
        this.match(SyslParser.ARROW_LEFT);
        this.state = 1032;
        this.publisher();
        this.state = 1033;
        this.match(SyslParser.ARROW_RIGHT);
        this.state = 1034;
        this.name_str();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Collector_action_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_collector_action_stmt;
    return this;
}

Collector_action_stmtContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Collector_action_stmtContext.prototype.constructor = Collector_action_stmtContext;

Collector_action_stmtContext.prototype.name_str = function() {
    return this.getTypedRuleContext(Name_strContext,0);
};

Collector_action_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterCollector_action_stmt(this);
	}
};

Collector_action_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitCollector_action_stmt(this);
	}
};




SyslParser.Collector_action_stmtContext = Collector_action_stmtContext;

SyslParser.prototype.collector_action_stmt = function() {

    var localctx = new Collector_action_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 174, SyslParser.RULE_collector_action_stmt);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1036;
        this.name_str();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Collector_stmtsContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_collector_stmts;
    return this;
}

Collector_stmtsContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Collector_stmtsContext.prototype.constructor = Collector_stmtsContext;

Collector_stmtsContext.prototype.attribs_or_modifiers = function() {
    return this.getTypedRuleContext(Attribs_or_modifiersContext,0);
};

Collector_stmtsContext.prototype.collector_action_stmt = function() {
    return this.getTypedRuleContext(Collector_action_stmtContext,0);
};

Collector_stmtsContext.prototype.collector_call_stmt = function() {
    return this.getTypedRuleContext(Collector_call_stmtContext,0);
};

Collector_stmtsContext.prototype.collector_http_stmt = function() {
    return this.getTypedRuleContext(Collector_http_stmtContext,0);
};

Collector_stmtsContext.prototype.collector_pubsub_call = function() {
    return this.getTypedRuleContext(Collector_pubsub_callContext,0);
};

Collector_stmtsContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterCollector_stmts(this);
	}
};

Collector_stmtsContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitCollector_stmts(this);
	}
};




SyslParser.Collector_stmtsContext = Collector_stmtsContext;

SyslParser.prototype.collector_stmts = function() {

    var localctx = new Collector_stmtsContext(this, this._ctx, this.state);
    this.enterRule(localctx, 176, SyslParser.RULE_collector_stmts);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1042;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,101,this._ctx);
        switch(la_) {
        case 1:
            this.state = 1038;
            this.collector_action_stmt();
            break;

        case 2:
            this.state = 1039;
            this.collector_call_stmt();
            break;

        case 3:
            this.state = 1040;
            this.collector_http_stmt();
            break;

        case 4:
            this.state = 1041;
            this.collector_pubsub_call();
            break;

        }
        this.state = 1044;
        this.attribs_or_modifiers();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function CollectorContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_collector;
    return this;
}

CollectorContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
CollectorContext.prototype.constructor = CollectorContext;

CollectorContext.prototype.COLLECTOR = function() {
    return this.getToken(SyslParser.COLLECTOR, 0);
};

CollectorContext.prototype.COLON = function() {
    return this.getToken(SyslParser.COLON, 0);
};

CollectorContext.prototype.WHATEVER = function() {
    return this.getToken(SyslParser.WHATEVER, 0);
};

CollectorContext.prototype.INDENT = function() {
    return this.getToken(SyslParser.INDENT, 0);
};

CollectorContext.prototype.DEDENT = function() {
    return this.getToken(SyslParser.DEDENT, 0);
};

CollectorContext.prototype.collector_stmts = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Collector_stmtsContext);
    } else {
        return this.getTypedRuleContext(Collector_stmtsContext,i);
    }
};

CollectorContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterCollector(this);
	}
};

CollectorContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitCollector(this);
	}
};




SyslParser.CollectorContext = CollectorContext;

SyslParser.prototype.collector = function() {

    var localctx = new CollectorContext(this, this._ctx, this.state);
    this.enterRule(localctx, 178, SyslParser.RULE_collector);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1046;
        this.match(SyslParser.COLLECTOR);
        this.state = 1047;
        this.match(SyslParser.COLON);
        this.state = 1057;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case SyslParser.WHATEVER:
            this.state = 1048;
            this.match(SyslParser.WHATEVER);
            break;
        case SyslParser.INDENT:
            this.state = 1049;
            this.match(SyslParser.INDENT);
            this.state = 1051; 
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            do {
                this.state = 1050;
                this.collector_stmts();
                this.state = 1053; 
                this._errHandler.sync(this);
                _la = this._input.LA(1);
            } while(_la===SyslParser.HTTP_VERBS || _la===SyslParser.TEXT_LINE || _la===SyslParser.Name || _la===SyslParser.E_Name);
            this.state = 1055;
            this.match(SyslParser.DEDENT);
            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function EventContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_event;
    return this;
}

EventContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
EventContext.prototype.constructor = EventContext;

EventContext.prototype.DISTANCE = function() {
    return this.getToken(SyslParser.DISTANCE, 0);
};

EventContext.prototype.name_str = function() {
    return this.getTypedRuleContext(Name_strContext,0);
};

EventContext.prototype.COLON = function() {
    return this.getToken(SyslParser.COLON, 0);
};

EventContext.prototype.WHATEVER = function() {
    return this.getToken(SyslParser.WHATEVER, 0);
};

EventContext.prototype.INDENT = function() {
    return this.getToken(SyslParser.INDENT, 0);
};

EventContext.prototype.DEDENT = function() {
    return this.getToken(SyslParser.DEDENT, 0);
};

EventContext.prototype.params = function() {
    return this.getTypedRuleContext(ParamsContext,0);
};

EventContext.prototype.attribs_or_modifiers = function() {
    return this.getTypedRuleContext(Attribs_or_modifiersContext,0);
};

EventContext.prototype.statements = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(StatementsContext);
    } else {
        return this.getTypedRuleContext(StatementsContext,i);
    }
};

EventContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterEvent(this);
	}
};

EventContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitEvent(this);
	}
};




SyslParser.EventContext = EventContext;

SyslParser.prototype.event = function() {

    var localctx = new EventContext(this, this._ctx, this.state);
    this.enterRule(localctx, 180, SyslParser.RULE_event);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1059;
        this.match(SyslParser.DISTANCE);
        this.state = 1060;
        this.name_str();
        this.state = 1062;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SyslParser.OPEN_PAREN) {
            this.state = 1061;
            this.params();
        }

        this.state = 1065;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SyslParser.SQ_OPEN) {
            this.state = 1064;
            this.attribs_or_modifiers();
        }

        this.state = 1067;
        this.match(SyslParser.COLON);
        this.state = 1077;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case SyslParser.WHATEVER:
            this.state = 1068;
            this.match(SyslParser.WHATEVER);
            break;
        case SyslParser.INDENT:
            this.state = 1069;
            this.match(SyslParser.INDENT);
            this.state = 1071; 
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            do {
                this.state = 1070;
                this.statements();
                this.state = 1073; 
                this._errHandler.sync(this);
                _la = this._input.LA(1);
            } while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << SyslParser.RETURN) | (1 << SyslParser.IF) | (1 << SyslParser.FOR_EACH) | (1 << SyslParser.FOR) | (1 << SyslParser.UNTIL) | (1 << SyslParser.LOOP) | (1 << SyslParser.ALT) | (1 << SyslParser.WHILE) | (1 << SyslParser.WHATEVER) | (1 << SyslParser.ONE_OF) | (1 << SyslParser.DOT_ARROW))) !== 0) || ((((_la - 43)) & ~0x1f) == 0 && ((1 << (_la - 43)) & ((1 << (SyslParser.AT - 43)) | (1 << (SyslParser.PIPE - 43)) | (1 << (SyslParser.QSTRING - 43)) | (1 << (SyslParser.SYSL_COMMENT - 43)) | (1 << (SyslParser.TEXT_LINE - 43)) | (1 << (SyslParser.Name - 43)))) !== 0) || _la===SyslParser.E_Name);
            this.state = 1075;
            this.match(SyslParser.DEDENT);
            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function SubscribeContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_subscribe;
    return this;
}

SubscribeContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
SubscribeContext.prototype.constructor = SubscribeContext;

SubscribeContext.prototype.app_name = function() {
    return this.getTypedRuleContext(App_nameContext,0);
};

SubscribeContext.prototype.ARROW_RIGHT = function() {
    return this.getToken(SyslParser.ARROW_RIGHT, 0);
};

SubscribeContext.prototype.name_str = function() {
    return this.getTypedRuleContext(Name_strContext,0);
};

SubscribeContext.prototype.COLON = function() {
    return this.getToken(SyslParser.COLON, 0);
};

SubscribeContext.prototype.WHATEVER = function() {
    return this.getToken(SyslParser.WHATEVER, 0);
};

SubscribeContext.prototype.INDENT = function() {
    return this.getToken(SyslParser.INDENT, 0);
};

SubscribeContext.prototype.DEDENT = function() {
    return this.getToken(SyslParser.DEDENT, 0);
};

SubscribeContext.prototype.attribs_or_modifiers = function() {
    return this.getTypedRuleContext(Attribs_or_modifiersContext,0);
};

SubscribeContext.prototype.statements = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(StatementsContext);
    } else {
        return this.getTypedRuleContext(StatementsContext,i);
    }
};

SubscribeContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterSubscribe(this);
	}
};

SubscribeContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitSubscribe(this);
	}
};




SyslParser.SubscribeContext = SubscribeContext;

SyslParser.prototype.subscribe = function() {

    var localctx = new SubscribeContext(this, this._ctx, this.state);
    this.enterRule(localctx, 182, SyslParser.RULE_subscribe);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1079;
        this.app_name();
        this.state = 1080;
        this.match(SyslParser.ARROW_RIGHT);
        this.state = 1081;
        this.name_str();
        this.state = 1083;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SyslParser.SQ_OPEN) {
            this.state = 1082;
            this.attribs_or_modifiers();
        }

        this.state = 1085;
        this.match(SyslParser.COLON);
        this.state = 1095;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case SyslParser.WHATEVER:
            this.state = 1086;
            this.match(SyslParser.WHATEVER);
            break;
        case SyslParser.INDENT:
            this.state = 1087;
            this.match(SyslParser.INDENT);
            this.state = 1089; 
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            do {
                this.state = 1088;
                this.statements();
                this.state = 1091; 
                this._errHandler.sync(this);
                _la = this._input.LA(1);
            } while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << SyslParser.RETURN) | (1 << SyslParser.IF) | (1 << SyslParser.FOR_EACH) | (1 << SyslParser.FOR) | (1 << SyslParser.UNTIL) | (1 << SyslParser.LOOP) | (1 << SyslParser.ALT) | (1 << SyslParser.WHILE) | (1 << SyslParser.WHATEVER) | (1 << SyslParser.ONE_OF) | (1 << SyslParser.DOT_ARROW))) !== 0) || ((((_la - 43)) & ~0x1f) == 0 && ((1 << (_la - 43)) & ((1 << (SyslParser.AT - 43)) | (1 << (SyslParser.PIPE - 43)) | (1 << (SyslParser.QSTRING - 43)) | (1 << (SyslParser.SYSL_COMMENT - 43)) | (1 << (SyslParser.TEXT_LINE - 43)) | (1 << (SyslParser.Name - 43)))) !== 0) || _la===SyslParser.E_Name);
            this.state = 1093;
            this.match(SyslParser.DEDENT);
            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function View_type_specContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_view_type_spec;
    return this;
}

View_type_specContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
View_type_specContext.prototype.constructor = View_type_specContext;

View_type_specContext.prototype.collection_type = function() {
    return this.getTypedRuleContext(Collection_typeContext,0);
};

View_type_specContext.prototype.types = function() {
    return this.getTypedRuleContext(TypesContext,0);
};

View_type_specContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterView_type_spec(this);
	}
};

View_type_specContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitView_type_spec(this);
	}
};




SyslParser.View_type_specContext = View_type_specContext;

SyslParser.prototype.view_type_spec = function() {

    var localctx = new View_type_specContext(this, this._ctx, this.state);
    this.enterRule(localctx, 184, SyslParser.RULE_view_type_spec);
    try {
        this.state = 1099;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case SyslParser.SEQUENCE_OF:
        case SyslParser.SET_OF:
        case SyslParser.E_SEQUENCE_OF:
        case SyslParser.E_SET_OF:
            this.enterOuterAlt(localctx, 1);
            this.state = 1097;
            this.collection_type();
            break;
        case SyslParser.NativeDataTypes:
        case SyslParser.TEXT_LINE:
        case SyslParser.Name:
        case SyslParser.E_Name:
            this.enterOuterAlt(localctx, 2);
            this.state = 1098;
            this.types();
            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function LiteralContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_literal;
    return this;
}

LiteralContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
LiteralContext.prototype.constructor = LiteralContext;

LiteralContext.prototype.E_DIGITS = function() {
    return this.getToken(SyslParser.E_DIGITS, 0);
};

LiteralContext.prototype.E_DECIMAL = function() {
    return this.getToken(SyslParser.E_DECIMAL, 0);
};

LiteralContext.prototype.E_STRING_DBL = function() {
    return this.getToken(SyslParser.E_STRING_DBL, 0);
};

LiteralContext.prototype.E_STRING_SINGLE = function() {
    return this.getToken(SyslParser.E_STRING_SINGLE, 0);
};

LiteralContext.prototype.E_NULL = function() {
    return this.getToken(SyslParser.E_NULL, 0);
};

LiteralContext.prototype.E_TRUE = function() {
    return this.getToken(SyslParser.E_TRUE, 0);
};

LiteralContext.prototype.E_FALSE = function() {
    return this.getToken(SyslParser.E_FALSE, 0);
};

LiteralContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterLiteral(this);
	}
};

LiteralContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitLiteral(this);
	}
};




SyslParser.LiteralContext = LiteralContext;

SyslParser.prototype.literal = function() {

    var localctx = new LiteralContext(this, this._ctx, this.state);
    this.enterRule(localctx, 186, SyslParser.RULE_literal);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1101;
        _la = this._input.LA(1);
        if(!(((((_la - 115)) & ~0x1f) == 0 && ((1 << (_la - 115)) & ((1 << (SyslParser.E_TRUE - 115)) | (1 << (SyslParser.E_FALSE - 115)) | (1 << (SyslParser.E_NULL - 115)) | (1 << (SyslParser.E_STRING_DBL - 115)) | (1 << (SyslParser.E_STRING_SINGLE - 115)) | (1 << (SyslParser.E_DECIMAL - 115)) | (1 << (SyslParser.E_DIGITS - 115)))) !== 0))) {
        this._errHandler.recoverInline(this);
        }
        else {
        	this._errHandler.reportMatch(this);
            this.consume();
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Expr_table_of_opContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_expr_table_of_op;
    return this;
}

Expr_table_of_opContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Expr_table_of_opContext.prototype.constructor = Expr_table_of_opContext;

Expr_table_of_opContext.prototype.E_Name = function() {
    return this.getToken(SyslParser.E_Name, 0);
};

Expr_table_of_opContext.prototype.E_DOT = function() {
    return this.getToken(SyslParser.E_DOT, 0);
};

Expr_table_of_opContext.prototype.E_NULLSAFE_DOT = function() {
    return this.getToken(SyslParser.E_NULLSAFE_DOT, 0);
};

Expr_table_of_opContext.prototype.E_TABLE_OF = function() {
    return this.getToken(SyslParser.E_TABLE_OF, 0);
};

Expr_table_of_opContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterExpr_table_of_op(this);
	}
};

Expr_table_of_opContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitExpr_table_of_op(this);
	}
};




SyslParser.Expr_table_of_opContext = Expr_table_of_opContext;

SyslParser.prototype.expr_table_of_op = function() {

    var localctx = new Expr_table_of_opContext(this, this._ctx, this.state);
    this.enterRule(localctx, 188, SyslParser.RULE_expr_table_of_op);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1103;
        _la = this._input.LA(1);
        if(!(_la===SyslParser.E_NULLSAFE_DOT || _la===SyslParser.E_DOT)) {
        this._errHandler.recoverInline(this);
        }
        else {
        	this._errHandler.reportMatch(this);
            this.consume();
        }
        this.state = 1105;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SyslParser.E_TABLE_OF) {
            this.state = 1104;
            this.match(SyslParser.E_TABLE_OF);
        }

        this.state = 1107;
        this.match(SyslParser.E_Name);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Func_argContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_func_arg;
    return this;
}

Func_argContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Func_argContext.prototype.constructor = Func_argContext;

Func_argContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Func_argContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterFunc_arg(this);
	}
};

Func_argContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitFunc_arg(this);
	}
};




SyslParser.Func_argContext = Func_argContext;

SyslParser.prototype.func_arg = function() {

    var localctx = new Func_argContext(this, this._ctx, this.state);
    this.enterRule(localctx, 190, SyslParser.RULE_func_arg);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1109;
        this.expr();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Func_argsContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_func_args;
    return this;
}

Func_argsContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Func_argsContext.prototype.constructor = Func_argsContext;

Func_argsContext.prototype.func_arg = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Func_argContext);
    } else {
        return this.getTypedRuleContext(Func_argContext,i);
    }
};

Func_argsContext.prototype.E_COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SyslParser.E_COMMA);
    } else {
        return this.getToken(SyslParser.E_COMMA, i);
    }
};


Func_argsContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterFunc_args(this);
	}
};

Func_argsContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitFunc_args(this);
	}
};




SyslParser.Func_argsContext = Func_argsContext;

SyslParser.prototype.func_args = function() {

    var localctx = new Func_argsContext(this, this._ctx, this.state);
    this.enterRule(localctx, 192, SyslParser.RULE_func_args);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1111;
        this.func_arg();
        this.state = 1116;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===SyslParser.E_COMMA) {
            this.state = 1112;
            this.match(SyslParser.E_COMMA);
            this.state = 1113;
            this.func_arg();
            this.state = 1118;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Expr_funcContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_expr_func;
    return this;
}

Expr_funcContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Expr_funcContext.prototype.constructor = Expr_funcContext;

Expr_funcContext.prototype.E_OPEN_PAREN = function() {
    return this.getToken(SyslParser.E_OPEN_PAREN, 0);
};

Expr_funcContext.prototype.E_CLOSE_PAREN = function() {
    return this.getToken(SyslParser.E_CLOSE_PAREN, 0);
};

Expr_funcContext.prototype.E_FUNC = function() {
    return this.getToken(SyslParser.E_FUNC, 0);
};

Expr_funcContext.prototype.E_Name = function() {
    return this.getToken(SyslParser.E_Name, 0);
};

Expr_funcContext.prototype.NativeDataTypes = function() {
    return this.getToken(SyslParser.NativeDataTypes, 0);
};

Expr_funcContext.prototype.func_args = function() {
    return this.getTypedRuleContext(Func_argsContext,0);
};

Expr_funcContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterExpr_func(this);
	}
};

Expr_funcContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitExpr_func(this);
	}
};




SyslParser.Expr_funcContext = Expr_funcContext;

SyslParser.prototype.expr_func = function() {

    var localctx = new Expr_funcContext(this, this._ctx, this.state);
    this.enterRule(localctx, 194, SyslParser.RULE_expr_func);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1119;
        _la = this._input.LA(1);
        if(!(_la===SyslParser.NativeDataTypes || _la===SyslParser.E_FUNC || _la===SyslParser.E_Name)) {
        this._errHandler.recoverInline(this);
        }
        else {
        	this._errHandler.reportMatch(this);
            this.consume();
        }
        this.state = 1120;
        this.match(SyslParser.E_OPEN_PAREN);
        this.state = 1122;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SyslParser.NativeDataTypes || ((((_la - 73)) & ~0x1f) == 0 && ((1 << (_la - 73)) & ((1 << (SyslParser.E_WHATEVER - 73)) | (1 << (SyslParser.E_ARROW_RIGHT - 73)) | (1 << (SyslParser.E_SQ_OPEN - 73)) | (1 << (SyslParser.E_EMPTY_TUPLE - 73)) | (1 << (SyslParser.E_CURLY_OPEN - 73)) | (1 << (SyslParser.E_NULLSAFE_DOT - 73)) | (1 << (SyslParser.E_OPEN_PAREN - 73)) | (1 << (SyslParser.E_PLUS - 73)) | (1 << (SyslParser.E_MINUS - 73)) | (1 << (SyslParser.E_QN - 73)) | (1 << (SyslParser.E_TILDE - 73)) | (1 << (SyslParser.E_NOT - 73)))) !== 0) || ((((_la - 111)) & ~0x1f) == 0 && ((1 << (_la - 111)) & ((1 << (SyslParser.E_IF - 111)) | (1 << (SyslParser.E_TRUE - 111)) | (1 << (SyslParser.E_FALSE - 111)) | (1 << (SyslParser.E_NULL - 111)) | (1 << (SyslParser.E_FUNC - 111)) | (1 << (SyslParser.E_STRING_DBL - 111)) | (1 << (SyslParser.E_STRING_SINGLE - 111)) | (1 << (SyslParser.E_DECIMAL - 111)) | (1 << (SyslParser.E_DIGITS - 111)) | (1 << (SyslParser.E_Name - 111)) | (1 << (SyslParser.E_DOT - 111)))) !== 0)) {
            this.state = 1121;
            this.func_args();
        }

        this.state = 1124;
        this.match(SyslParser.E_CLOSE_PAREN);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Rank_exprContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_rank_expr;
    return this;
}

Rank_exprContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Rank_exprContext.prototype.constructor = Rank_exprContext;

Rank_exprContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Rank_exprContext.prototype.E_ASC = function() {
    return this.getToken(SyslParser.E_ASC, 0);
};

Rank_exprContext.prototype.E_DESC = function() {
    return this.getToken(SyslParser.E_DESC, 0);
};

Rank_exprContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterRank_expr(this);
	}
};

Rank_exprContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitRank_expr(this);
	}
};




SyslParser.Rank_exprContext = Rank_exprContext;

SyslParser.prototype.rank_expr = function() {

    var localctx = new Rank_exprContext(this, this._ctx, this.state);
    this.enterRule(localctx, 196, SyslParser.RULE_rank_expr);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1126;
        this.expr();
        this.state = 1128;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SyslParser.E_ASC || _la===SyslParser.E_DESC) {
            this.state = 1127;
            _la = this._input.LA(1);
            if(!(_la===SyslParser.E_ASC || _la===SyslParser.E_DESC)) {
            this._errHandler.recoverInline(this);
            }
            else {
            	this._errHandler.reportMatch(this);
                this.consume();
            }
        }

    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Rank_expr_listContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_rank_expr_list;
    return this;
}

Rank_expr_listContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Rank_expr_listContext.prototype.constructor = Rank_expr_listContext;

Rank_expr_listContext.prototype.rank_expr = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Rank_exprContext);
    } else {
        return this.getTypedRuleContext(Rank_exprContext,i);
    }
};

Rank_expr_listContext.prototype.E_COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SyslParser.E_COMMA);
    } else {
        return this.getToken(SyslParser.E_COMMA, i);
    }
};


Rank_expr_listContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterRank_expr_list(this);
	}
};

Rank_expr_listContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitRank_expr_list(this);
	}
};




SyslParser.Rank_expr_listContext = Rank_expr_listContext;

SyslParser.prototype.rank_expr_list = function() {

    var localctx = new Rank_expr_listContext(this, this._ctx, this.state);
    this.enterRule(localctx, 198, SyslParser.RULE_rank_expr_list);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1130;
        this.rank_expr();
        this.state = 1135;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===SyslParser.E_COMMA) {
            this.state = 1131;
            this.match(SyslParser.E_COMMA);
            this.state = 1132;
            this.rank_expr();
            this.state = 1137;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Expr_rank_funcContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_expr_rank_func;
    return this;
}

Expr_rank_funcContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Expr_rank_funcContext.prototype.constructor = Expr_rank_funcContext;

Expr_rank_funcContext.prototype.E_RELOPS_RANK = function() {
    return this.getToken(SyslParser.E_RELOPS_RANK, 0);
};

Expr_rank_funcContext.prototype.E_OPEN_PAREN = function() {
    return this.getToken(SyslParser.E_OPEN_PAREN, 0);
};

Expr_rank_funcContext.prototype.rank_expr_list = function() {
    return this.getTypedRuleContext(Rank_expr_listContext,0);
};

Expr_rank_funcContext.prototype.E_AS = function() {
    return this.getToken(SyslParser.E_AS, 0);
};

Expr_rank_funcContext.prototype.E_Name = function() {
    return this.getToken(SyslParser.E_Name, 0);
};

Expr_rank_funcContext.prototype.E_CLOSE_PAREN = function() {
    return this.getToken(SyslParser.E_CLOSE_PAREN, 0);
};

Expr_rank_funcContext.prototype.E_ANGLE_OPEN = function() {
    return this.getToken(SyslParser.E_ANGLE_OPEN, 0);
};

Expr_rank_funcContext.prototype.view_type_spec = function() {
    return this.getTypedRuleContext(View_type_specContext,0);
};

Expr_rank_funcContext.prototype.E_ANGLE_CLOSE = function() {
    return this.getToken(SyslParser.E_ANGLE_CLOSE, 0);
};

Expr_rank_funcContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterExpr_rank_func(this);
	}
};

Expr_rank_funcContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitExpr_rank_func(this);
	}
};




SyslParser.Expr_rank_funcContext = Expr_rank_funcContext;

SyslParser.prototype.expr_rank_func = function() {

    var localctx = new Expr_rank_funcContext(this, this._ctx, this.state);
    this.enterRule(localctx, 200, SyslParser.RULE_expr_rank_func);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1138;
        this.match(SyslParser.E_RELOPS_RANK);
        this.state = 1143;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SyslParser.E_ANGLE_OPEN) {
            this.state = 1139;
            this.match(SyslParser.E_ANGLE_OPEN);
            this.state = 1140;
            this.view_type_spec();
            this.state = 1141;
            this.match(SyslParser.E_ANGLE_CLOSE);
        }

        this.state = 1145;
        this.match(SyslParser.E_OPEN_PAREN);
        this.state = 1146;
        this.rank_expr_list();
        this.state = 1147;
        this.match(SyslParser.E_AS);
        this.state = 1148;
        this.match(SyslParser.E_Name);
        this.state = 1149;
        this.match(SyslParser.E_CLOSE_PAREN);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Expr_agg_funcContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_expr_agg_func;
    return this;
}

Expr_agg_funcContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Expr_agg_funcContext.prototype.constructor = Expr_agg_funcContext;

Expr_agg_funcContext.prototype.E_RELOPS_AGG = function() {
    return this.getToken(SyslParser.E_RELOPS_AGG, 0);
};

Expr_agg_funcContext.prototype.E_OPEN_PAREN = function() {
    return this.getToken(SyslParser.E_OPEN_PAREN, 0);
};

Expr_agg_funcContext.prototype.func_args = function() {
    return this.getTypedRuleContext(Func_argsContext,0);
};

Expr_agg_funcContext.prototype.E_CLOSE_PAREN = function() {
    return this.getToken(SyslParser.E_CLOSE_PAREN, 0);
};

Expr_agg_funcContext.prototype.e_scope_var = function() {
    return this.getTypedRuleContext(E_scope_varContext,0);
};

Expr_agg_funcContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterExpr_agg_func(this);
	}
};

Expr_agg_funcContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitExpr_agg_func(this);
	}
};




SyslParser.Expr_agg_funcContext = Expr_agg_funcContext;

SyslParser.prototype.expr_agg_func = function() {

    var localctx = new Expr_agg_funcContext(this, this._ctx, this.state);
    this.enterRule(localctx, 202, SyslParser.RULE_expr_agg_func);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1151;
        this.match(SyslParser.E_RELOPS_AGG);
        this.state = 1152;
        this.match(SyslParser.E_OPEN_PAREN);
        this.state = 1154;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,118,this._ctx);
        if(la_===1) {
            this.state = 1153;
            this.e_scope_var();

        }
        this.state = 1156;
        this.func_args();
        this.state = 1157;
        this.match(SyslParser.E_CLOSE_PAREN);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function E_scope_varContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_e_scope_var;
    return this;
}

E_scope_varContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
E_scope_varContext.prototype.constructor = E_scope_varContext;

E_scope_varContext.prototype.E_Name = function() {
    return this.getToken(SyslParser.E_Name, 0);
};

E_scope_varContext.prototype.E_COLON = function() {
    return this.getToken(SyslParser.E_COLON, 0);
};

E_scope_varContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterE_scope_var(this);
	}
};

E_scope_varContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitE_scope_var(this);
	}
};




SyslParser.E_scope_varContext = E_scope_varContext;

SyslParser.prototype.e_scope_var = function() {

    var localctx = new E_scope_varContext(this, this._ctx, this.state);
    this.enterRule(localctx, 204, SyslParser.RULE_e_scope_var);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1159;
        this.match(SyslParser.E_Name);
        this.state = 1160;
        this.match(SyslParser.E_COLON);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function First_func_targetContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_first_func_target;
    return this;
}

First_func_targetContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
First_func_targetContext.prototype.constructor = First_func_targetContext;

First_func_targetContext.prototype.E_NULL = function() {
    return this.getToken(SyslParser.E_NULL, 0);
};

First_func_targetContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

First_func_targetContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterFirst_func_target(this);
	}
};

First_func_targetContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitFirst_func_target(this);
	}
};




SyslParser.First_func_targetContext = First_func_targetContext;

SyslParser.prototype.first_func_target = function() {

    var localctx = new First_func_targetContext(this, this._ctx, this.state);
    this.enterRule(localctx, 206, SyslParser.RULE_first_func_target);
    try {
        this.state = 1164;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,119,this._ctx);
        switch(la_) {
        case 1:
            this.enterOuterAlt(localctx, 1);
            this.state = 1162;
            this.match(SyslParser.E_NULL);
            break;

        case 2:
            this.enterOuterAlt(localctx, 2);
            this.state = 1163;
            this.expr();
            break;

        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Expr_first_funcContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_expr_first_func;
    return this;
}

Expr_first_funcContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Expr_first_funcContext.prototype.constructor = Expr_first_funcContext;

Expr_first_funcContext.prototype.E_RELOPS_FIRST = function() {
    return this.getToken(SyslParser.E_RELOPS_FIRST, 0);
};

Expr_first_funcContext.prototype.first_func_target = function() {
    return this.getTypedRuleContext(First_func_targetContext,0);
};

Expr_first_funcContext.prototype.E_BY = function() {
    return this.getToken(SyslParser.E_BY, 0);
};

Expr_first_funcContext.prototype.E_OPEN_PAREN = function() {
    return this.getToken(SyslParser.E_OPEN_PAREN, 0);
};

Expr_first_funcContext.prototype.rank_expr_list = function() {
    return this.getTypedRuleContext(Rank_expr_listContext,0);
};

Expr_first_funcContext.prototype.E_CLOSE_PAREN = function() {
    return this.getToken(SyslParser.E_CLOSE_PAREN, 0);
};

Expr_first_funcContext.prototype.e_scope_var = function() {
    return this.getTypedRuleContext(E_scope_varContext,0);
};

Expr_first_funcContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterExpr_first_func(this);
	}
};

Expr_first_funcContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitExpr_first_func(this);
	}
};




SyslParser.Expr_first_funcContext = Expr_first_funcContext;

SyslParser.prototype.expr_first_func = function() {

    var localctx = new Expr_first_funcContext(this, this._ctx, this.state);
    this.enterRule(localctx, 208, SyslParser.RULE_expr_first_func);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1166;
        this.match(SyslParser.E_RELOPS_FIRST);
        this.state = 1167;
        this.first_func_target();
        this.state = 1168;
        this.match(SyslParser.E_BY);
        this.state = 1169;
        this.match(SyslParser.E_OPEN_PAREN);
        this.state = 1171;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,120,this._ctx);
        if(la_===1) {
            this.state = 1170;
            this.e_scope_var();

        }
        this.state = 1173;
        this.rank_expr_list();
        this.state = 1174;
        this.match(SyslParser.E_CLOSE_PAREN);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function E_single_arg_funcContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_e_single_arg_func;
    return this;
}

E_single_arg_funcContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
E_single_arg_funcContext.prototype.constructor = E_single_arg_funcContext;

E_single_arg_funcContext.prototype.E_RELOPS_WHERE = function() {
    return this.getToken(SyslParser.E_RELOPS_WHERE, 0);
};

E_single_arg_funcContext.prototype.E_RELOPS_FLATTEN = function() {
    return this.getToken(SyslParser.E_RELOPS_FLATTEN, 0);
};

E_single_arg_funcContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterE_single_arg_func(this);
	}
};

E_single_arg_funcContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitE_single_arg_func(this);
	}
};




SyslParser.E_single_arg_funcContext = E_single_arg_funcContext;

SyslParser.prototype.e_single_arg_func = function() {

    var localctx = new E_single_arg_funcContext(this, this._ctx, this.state);
    this.enterRule(localctx, 210, SyslParser.RULE_e_single_arg_func);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1176;
        _la = this._input.LA(1);
        if(!(_la===SyslParser.E_RELOPS_WHERE || _la===SyslParser.E_RELOPS_FLATTEN)) {
        this._errHandler.recoverInline(this);
        }
        else {
        	this._errHandler.reportMatch(this);
            this.consume();
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Expr_single_arg_funcContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_expr_single_arg_func;
    return this;
}

Expr_single_arg_funcContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Expr_single_arg_funcContext.prototype.constructor = Expr_single_arg_funcContext;

Expr_single_arg_funcContext.prototype.e_single_arg_func = function() {
    return this.getTypedRuleContext(E_single_arg_funcContext,0);
};

Expr_single_arg_funcContext.prototype.E_OPEN_PAREN = function() {
    return this.getToken(SyslParser.E_OPEN_PAREN, 0);
};

Expr_single_arg_funcContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Expr_single_arg_funcContext.prototype.E_CLOSE_PAREN = function() {
    return this.getToken(SyslParser.E_CLOSE_PAREN, 0);
};

Expr_single_arg_funcContext.prototype.e_scope_var = function() {
    return this.getTypedRuleContext(E_scope_varContext,0);
};

Expr_single_arg_funcContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterExpr_single_arg_func(this);
	}
};

Expr_single_arg_funcContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitExpr_single_arg_func(this);
	}
};




SyslParser.Expr_single_arg_funcContext = Expr_single_arg_funcContext;

SyslParser.prototype.expr_single_arg_func = function() {

    var localctx = new Expr_single_arg_funcContext(this, this._ctx, this.state);
    this.enterRule(localctx, 212, SyslParser.RULE_expr_single_arg_func);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1178;
        this.e_single_arg_func();
        this.state = 1179;
        this.match(SyslParser.E_OPEN_PAREN);
        this.state = 1181;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,121,this._ctx);
        if(la_===1) {
            this.state = 1180;
            this.e_scope_var();

        }
        this.state = 1183;
        this.expr();
        this.state = 1184;
        this.match(SyslParser.E_CLOSE_PAREN);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Expr_any_funcContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_expr_any_func;
    return this;
}

Expr_any_funcContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Expr_any_funcContext.prototype.constructor = Expr_any_funcContext;

Expr_any_funcContext.prototype.E_RELOPS_ANY = function() {
    return this.getToken(SyslParser.E_RELOPS_ANY, 0);
};

Expr_any_funcContext.prototype.E_OPEN_PAREN = function() {
    return this.getToken(SyslParser.E_OPEN_PAREN, 0);
};

Expr_any_funcContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Expr_any_funcContext.prototype.E_CLOSE_PAREN = function() {
    return this.getToken(SyslParser.E_CLOSE_PAREN, 0);
};

Expr_any_funcContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterExpr_any_func(this);
	}
};

Expr_any_funcContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitExpr_any_func(this);
	}
};




SyslParser.Expr_any_funcContext = Expr_any_funcContext;

SyslParser.prototype.expr_any_func = function() {

    var localctx = new Expr_any_funcContext(this, this._ctx, this.state);
    this.enterRule(localctx, 214, SyslParser.RULE_expr_any_func);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1186;
        this.match(SyslParser.E_RELOPS_ANY);
        this.state = 1187;
        this.match(SyslParser.E_OPEN_PAREN);
        this.state = 1188;
        this.expr();
        this.state = 1189;
        this.match(SyslParser.E_CLOSE_PAREN);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Expr_single_or_nullContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_expr_single_or_null;
    return this;
}

Expr_single_or_nullContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Expr_single_or_nullContext.prototype.constructor = Expr_single_or_nullContext;

Expr_single_or_nullContext.prototype.E_RELOPS_SINGLE_NULL = function() {
    return this.getToken(SyslParser.E_RELOPS_SINGLE_NULL, 0);
};

Expr_single_or_nullContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterExpr_single_or_null(this);
	}
};

Expr_single_or_nullContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitExpr_single_or_null(this);
	}
};




SyslParser.Expr_single_or_nullContext = Expr_single_or_nullContext;

SyslParser.prototype.expr_single_or_null = function() {

    var localctx = new Expr_single_or_nullContext(this, this._ctx, this.state);
    this.enterRule(localctx, 216, SyslParser.RULE_expr_single_or_null);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1191;
        this.match(SyslParser.E_RELOPS_SINGLE_NULL);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Expr_snapshotContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_expr_snapshot;
    return this;
}

Expr_snapshotContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Expr_snapshotContext.prototype.constructor = Expr_snapshotContext;

Expr_snapshotContext.prototype.E_RELOPS_SNAPSHOT = function() {
    return this.getToken(SyslParser.E_RELOPS_SNAPSHOT, 0);
};

Expr_snapshotContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterExpr_snapshot(this);
	}
};

Expr_snapshotContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitExpr_snapshot(this);
	}
};




SyslParser.Expr_snapshotContext = Expr_snapshotContext;

SyslParser.prototype.expr_snapshot = function() {

    var localctx = new Expr_snapshotContext(this, this._ctx, this.state);
    this.enterRule(localctx, 218, SyslParser.RULE_expr_snapshot);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1193;
        this.match(SyslParser.E_RELOPS_SNAPSHOT);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Expr_countContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_expr_count;
    return this;
}

Expr_countContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Expr_countContext.prototype.constructor = Expr_countContext;

Expr_countContext.prototype.E_RELOPS_COUNT = function() {
    return this.getToken(SyslParser.E_RELOPS_COUNT, 0);
};

Expr_countContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterExpr_count(this);
	}
};

Expr_countContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitExpr_count(this);
	}
};




SyslParser.Expr_countContext = Expr_countContext;

SyslParser.prototype.expr_count = function() {

    var localctx = new Expr_countContext(this, this._ctx, this.state);
    this.enterRule(localctx, 220, SyslParser.RULE_expr_count);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1195;
        this.match(SyslParser.E_RELOPS_COUNT);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Expr_navigate_attrContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_expr_navigate_attr;
    return this;
}

Expr_navigate_attrContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Expr_navigate_attrContext.prototype.constructor = Expr_navigate_attrContext;

Expr_navigate_attrContext.prototype.E_Name = function() {
    return this.getToken(SyslParser.E_Name, 0);
};

Expr_navigate_attrContext.prototype.E_DOT = function() {
    return this.getToken(SyslParser.E_DOT, 0);
};

Expr_navigate_attrContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterExpr_navigate_attr(this);
	}
};

Expr_navigate_attrContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitExpr_navigate_attr(this);
	}
};




SyslParser.Expr_navigate_attrContext = Expr_navigate_attrContext;

SyslParser.prototype.expr_navigate_attr = function() {

    var localctx = new Expr_navigate_attrContext(this, this._ctx, this.state);
    this.enterRule(localctx, 222, SyslParser.RULE_expr_navigate_attr);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1198;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SyslParser.E_DOT) {
            this.state = 1197;
            this.match(SyslParser.E_DOT);
        }

        this.state = 1200;
        this.match(SyslParser.E_Name);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Expr_navigateContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_expr_navigate;
    return this;
}

Expr_navigateContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Expr_navigateContext.prototype.constructor = Expr_navigateContext;

Expr_navigateContext.prototype.E_ARROW_RIGHT = function() {
    return this.getToken(SyslParser.E_ARROW_RIGHT, 0);
};

Expr_navigateContext.prototype.expr_navigate_attr = function() {
    return this.getTypedRuleContext(Expr_navigate_attrContext,0);
};

Expr_navigateContext.prototype.E_QN = function() {
    return this.getToken(SyslParser.E_QN, 0);
};

Expr_navigateContext.prototype.E_VIA = function() {
    return this.getToken(SyslParser.E_VIA, 0);
};

Expr_navigateContext.prototype.E_Name = function() {
    return this.getToken(SyslParser.E_Name, 0);
};

Expr_navigateContext.prototype.E_SET_OF = function() {
    return this.getToken(SyslParser.E_SET_OF, 0);
};

Expr_navigateContext.prototype.E_SEQUENCE_OF = function() {
    return this.getToken(SyslParser.E_SEQUENCE_OF, 0);
};

Expr_navigateContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterExpr_navigate(this);
	}
};

Expr_navigateContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitExpr_navigate(this);
	}
};




SyslParser.Expr_navigateContext = Expr_navigateContext;

SyslParser.prototype.expr_navigate = function() {

    var localctx = new Expr_navigateContext(this, this._ctx, this.state);
    this.enterRule(localctx, 224, SyslParser.RULE_expr_navigate);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1203;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SyslParser.E_QN) {
            this.state = 1202;
            this.match(SyslParser.E_QN);
        }

        this.state = 1205;
        this.match(SyslParser.E_ARROW_RIGHT);
        this.state = 1207;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SyslParser.E_SEQUENCE_OF || _la===SyslParser.E_SET_OF) {
            this.state = 1206;
            _la = this._input.LA(1);
            if(!(_la===SyslParser.E_SEQUENCE_OF || _la===SyslParser.E_SET_OF)) {
            this._errHandler.recoverInline(this);
            }
            else {
            	this._errHandler.reportMatch(this);
                this.consume();
            }
        }

        this.state = 1209;
        this.expr_navigate_attr();
        this.state = 1212;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,125,this._ctx);
        if(la_===1) {
            this.state = 1210;
            this.match(SyslParser.E_VIA);
            this.state = 1211;
            this.match(SyslParser.E_Name);

        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Matching_rhsContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_matching_rhs;
    return this;
}

Matching_rhsContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Matching_rhsContext.prototype.constructor = Matching_rhsContext;

Matching_rhsContext.prototype.expr_table_of_op = function() {
    return this.getTypedRuleContext(Expr_table_of_opContext,0);
};

Matching_rhsContext.prototype.expr_navigate = function() {
    return this.getTypedRuleContext(Expr_navigateContext,0);
};

Matching_rhsContext.prototype.atomT_paren = function() {
    return this.getTypedRuleContext(AtomT_parenContext,0);
};

Matching_rhsContext.prototype.E_Name = function() {
    return this.getToken(SyslParser.E_Name, 0);
};

Matching_rhsContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterMatching_rhs(this);
	}
};

Matching_rhsContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitMatching_rhs(this);
	}
};




SyslParser.Matching_rhsContext = Matching_rhsContext;

SyslParser.prototype.matching_rhs = function() {

    var localctx = new Matching_rhsContext(this, this._ctx, this.state);
    this.enterRule(localctx, 226, SyslParser.RULE_matching_rhs);
    try {
        this.state = 1218;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case SyslParser.E_NULLSAFE_DOT:
        case SyslParser.E_DOT:
            this.enterOuterAlt(localctx, 1);
            this.state = 1214;
            this.expr_table_of_op();
            break;
        case SyslParser.E_ARROW_RIGHT:
        case SyslParser.E_QN:
            this.enterOuterAlt(localctx, 2);
            this.state = 1215;
            this.expr_navigate();
            break;
        case SyslParser.E_OPEN_PAREN:
            this.enterOuterAlt(localctx, 3);
            this.state = 1216;
            this.atomT_paren();
            break;
        case SyslParser.E_Name:
            this.enterOuterAlt(localctx, 4);
            this.state = 1217;
            this.match(SyslParser.E_Name);
            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Squiggly_argsContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_squiggly_args;
    return this;
}

Squiggly_argsContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Squiggly_argsContext.prototype.constructor = Squiggly_argsContext;

Squiggly_argsContext.prototype.E_SQ_OPEN = function() {
    return this.getToken(SyslParser.E_SQ_OPEN, 0);
};

Squiggly_argsContext.prototype.E_Name = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SyslParser.E_Name);
    } else {
        return this.getToken(SyslParser.E_Name, i);
    }
};


Squiggly_argsContext.prototype.E_SQ_CLOSE = function() {
    return this.getToken(SyslParser.E_SQ_CLOSE, 0);
};

Squiggly_argsContext.prototype.E_COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SyslParser.E_COMMA);
    } else {
        return this.getToken(SyslParser.E_COMMA, i);
    }
};


Squiggly_argsContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterSquiggly_args(this);
	}
};

Squiggly_argsContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitSquiggly_args(this);
	}
};




SyslParser.Squiggly_argsContext = Squiggly_argsContext;

SyslParser.prototype.squiggly_args = function() {

    var localctx = new Squiggly_argsContext(this, this._ctx, this.state);
    this.enterRule(localctx, 228, SyslParser.RULE_squiggly_args);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1220;
        this.match(SyslParser.E_SQ_OPEN);
        this.state = 1221;
        this.match(SyslParser.E_Name);
        this.state = 1226;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===SyslParser.E_COMMA) {
            this.state = 1222;
            this.match(SyslParser.E_COMMA);
            this.state = 1223;
            this.match(SyslParser.E_Name);
            this.state = 1228;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
        this.state = 1229;
        this.match(SyslParser.E_SQ_CLOSE);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Expr_matchingContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_expr_matching;
    return this;
}

Expr_matchingContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Expr_matchingContext.prototype.constructor = Expr_matchingContext;

Expr_matchingContext.prototype.E_TILDE = function() {
    return this.getToken(SyslParser.E_TILDE, 0);
};

Expr_matchingContext.prototype.E_ANGLE_CLOSE = function() {
    return this.getToken(SyslParser.E_ANGLE_CLOSE, 0);
};

Expr_matchingContext.prototype.matching_rhs = function() {
    return this.getTypedRuleContext(Matching_rhsContext,0);
};

Expr_matchingContext.prototype.E_NOT = function() {
    return this.getToken(SyslParser.E_NOT, 0);
};

Expr_matchingContext.prototype.squiggly_args = function() {
    return this.getTypedRuleContext(Squiggly_argsContext,0);
};

Expr_matchingContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterExpr_matching(this);
	}
};

Expr_matchingContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitExpr_matching(this);
	}
};




SyslParser.Expr_matchingContext = Expr_matchingContext;

SyslParser.prototype.expr_matching = function() {

    var localctx = new Expr_matchingContext(this, this._ctx, this.state);
    this.enterRule(localctx, 230, SyslParser.RULE_expr_matching);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1232;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SyslParser.E_NOT) {
            this.state = 1231;
            this.match(SyslParser.E_NOT);
        }

        this.state = 1234;
        this.match(SyslParser.E_TILDE);
        this.state = 1236;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SyslParser.E_SQ_OPEN) {
            this.state = 1235;
            this.squiggly_args();
        }

        this.state = 1238;
        this.match(SyslParser.E_ANGLE_CLOSE);
        this.state = 1239;
        this.matching_rhs();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function RelopContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_relop;
    return this;
}

RelopContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
RelopContext.prototype.constructor = RelopContext;

RelopContext.prototype.expr_table_of_op = function() {
    return this.getTypedRuleContext(Expr_table_of_opContext,0);
};

RelopContext.prototype.expr_rank_func = function() {
    return this.getTypedRuleContext(Expr_rank_funcContext,0);
};

RelopContext.prototype.expr_agg_func = function() {
    return this.getTypedRuleContext(Expr_agg_funcContext,0);
};

RelopContext.prototype.expr_single_arg_func = function() {
    return this.getTypedRuleContext(Expr_single_arg_funcContext,0);
};

RelopContext.prototype.expr_any_func = function() {
    return this.getTypedRuleContext(Expr_any_funcContext,0);
};

RelopContext.prototype.expr_count = function() {
    return this.getTypedRuleContext(Expr_countContext,0);
};

RelopContext.prototype.expr_single_or_null = function() {
    return this.getTypedRuleContext(Expr_single_or_nullContext,0);
};

RelopContext.prototype.expr_snapshot = function() {
    return this.getTypedRuleContext(Expr_snapshotContext,0);
};

RelopContext.prototype.expr_first_func = function() {
    return this.getTypedRuleContext(Expr_first_funcContext,0);
};

RelopContext.prototype.expr_navigate = function() {
    return this.getTypedRuleContext(Expr_navigateContext,0);
};

RelopContext.prototype.expr_matching = function() {
    return this.getTypedRuleContext(Expr_matchingContext,0);
};

RelopContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterRelop(this);
	}
};

RelopContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitRelop(this);
	}
};




SyslParser.RelopContext = RelopContext;

SyslParser.prototype.relop = function() {

    var localctx = new RelopContext(this, this._ctx, this.state);
    this.enterRule(localctx, 232, SyslParser.RULE_relop);
    try {
        this.state = 1252;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case SyslParser.E_NULLSAFE_DOT:
        case SyslParser.E_DOT:
            this.enterOuterAlt(localctx, 1);
            this.state = 1241;
            this.expr_table_of_op();
            break;
        case SyslParser.E_RELOPS_RANK:
            this.enterOuterAlt(localctx, 2);
            this.state = 1242;
            this.expr_rank_func();
            break;
        case SyslParser.E_RELOPS_AGG:
            this.enterOuterAlt(localctx, 3);
            this.state = 1243;
            this.expr_agg_func();
            break;
        case SyslParser.E_RELOPS_WHERE:
        case SyslParser.E_RELOPS_FLATTEN:
            this.enterOuterAlt(localctx, 4);
            this.state = 1244;
            this.expr_single_arg_func();
            break;
        case SyslParser.E_RELOPS_ANY:
            this.enterOuterAlt(localctx, 5);
            this.state = 1245;
            this.expr_any_func();
            break;
        case SyslParser.E_RELOPS_COUNT:
            this.enterOuterAlt(localctx, 6);
            this.state = 1246;
            this.expr_count();
            break;
        case SyslParser.E_RELOPS_SINGLE_NULL:
            this.enterOuterAlt(localctx, 7);
            this.state = 1247;
            this.expr_single_or_null();
            break;
        case SyslParser.E_RELOPS_SNAPSHOT:
            this.enterOuterAlt(localctx, 8);
            this.state = 1248;
            this.expr_snapshot();
            break;
        case SyslParser.E_RELOPS_FIRST:
            this.enterOuterAlt(localctx, 9);
            this.state = 1249;
            this.expr_first_func();
            break;
        case SyslParser.E_ARROW_RIGHT:
        case SyslParser.E_QN:
            this.enterOuterAlt(localctx, 10);
            this.state = 1250;
            this.expr_navigate();
            break;
        case SyslParser.E_TILDE:
        case SyslParser.E_NOT:
            this.enterOuterAlt(localctx, 11);
            this.state = 1251;
            this.expr_matching();
            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function List_itemContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_list_item;
    return this;
}

List_itemContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
List_itemContext.prototype.constructor = List_itemContext;

List_itemContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

List_itemContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterList_item(this);
	}
};

List_itemContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitList_item(this);
	}
};




SyslParser.List_itemContext = List_itemContext;

SyslParser.prototype.list_item = function() {

    var localctx = new List_itemContext(this, this._ctx, this.state);
    this.enterRule(localctx, 234, SyslParser.RULE_list_item);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1254;
        this.expr();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Expr_listContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_expr_list;
    return this;
}

Expr_listContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Expr_listContext.prototype.constructor = Expr_listContext;

Expr_listContext.prototype.list_item = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(List_itemContext);
    } else {
        return this.getTypedRuleContext(List_itemContext,i);
    }
};

Expr_listContext.prototype.E_COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SyslParser.E_COMMA);
    } else {
        return this.getToken(SyslParser.E_COMMA, i);
    }
};


Expr_listContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterExpr_list(this);
	}
};

Expr_listContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitExpr_list(this);
	}
};




SyslParser.Expr_listContext = Expr_listContext;

SyslParser.prototype.expr_list = function() {

    var localctx = new Expr_listContext(this, this._ctx, this.state);
    this.enterRule(localctx, 236, SyslParser.RULE_expr_list);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1256;
        this.list_item();
        this.state = 1261;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===SyslParser.E_COMMA) {
            this.state = 1257;
            this.match(SyslParser.E_COMMA);
            this.state = 1258;
            this.list_item();
            this.state = 1263;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Expr_setContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_expr_set;
    return this;
}

Expr_setContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Expr_setContext.prototype.constructor = Expr_setContext;

Expr_setContext.prototype.E_CURLY_OPEN = function() {
    return this.getToken(SyslParser.E_CURLY_OPEN, 0);
};

Expr_setContext.prototype.expr_list = function() {
    return this.getTypedRuleContext(Expr_listContext,0);
};

Expr_setContext.prototype.E_CURLY_CLOSE = function() {
    return this.getToken(SyslParser.E_CURLY_CLOSE, 0);
};

Expr_setContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterExpr_set(this);
	}
};

Expr_setContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitExpr_set(this);
	}
};




SyslParser.Expr_setContext = Expr_setContext;

SyslParser.prototype.expr_set = function() {

    var localctx = new Expr_setContext(this, this._ctx, this.state);
    this.enterRule(localctx, 238, SyslParser.RULE_expr_set);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1264;
        this.match(SyslParser.E_CURLY_OPEN);
        this.state = 1265;
        this.expr_list();
        this.state = 1266;
        this.match(SyslParser.E_CURLY_CLOSE);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Empty_tupleContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_empty_tuple;
    return this;
}

Empty_tupleContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Empty_tupleContext.prototype.constructor = Empty_tupleContext;

Empty_tupleContext.prototype.E_EMPTY_TUPLE = function() {
    return this.getToken(SyslParser.E_EMPTY_TUPLE, 0);
};

Empty_tupleContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterEmpty_tuple(this);
	}
};

Empty_tupleContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitEmpty_tuple(this);
	}
};




SyslParser.Empty_tupleContext = Empty_tupleContext;

SyslParser.prototype.empty_tuple = function() {

    var localctx = new Empty_tupleContext(this, this._ctx, this.state);
    this.enterRule(localctx, 240, SyslParser.RULE_empty_tuple);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1268;
        this.match(SyslParser.E_EMPTY_TUPLE);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Atom_dot_relopContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_atom_dot_relop;
    return this;
}

Atom_dot_relopContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Atom_dot_relopContext.prototype.constructor = Atom_dot_relopContext;

Atom_dot_relopContext.prototype.E_DOT = function() {
    return this.getToken(SyslParser.E_DOT, 0);
};

Atom_dot_relopContext.prototype.expr_rank_func = function() {
    return this.getTypedRuleContext(Expr_rank_funcContext,0);
};

Atom_dot_relopContext.prototype.expr_agg_func = function() {
    return this.getTypedRuleContext(Expr_agg_funcContext,0);
};

Atom_dot_relopContext.prototype.expr_single_arg_func = function() {
    return this.getTypedRuleContext(Expr_single_arg_funcContext,0);
};

Atom_dot_relopContext.prototype.expr_any_func = function() {
    return this.getTypedRuleContext(Expr_any_funcContext,0);
};

Atom_dot_relopContext.prototype.expr_count = function() {
    return this.getTypedRuleContext(Expr_countContext,0);
};

Atom_dot_relopContext.prototype.expr_single_or_null = function() {
    return this.getTypedRuleContext(Expr_single_or_nullContext,0);
};

Atom_dot_relopContext.prototype.expr_snapshot = function() {
    return this.getTypedRuleContext(Expr_snapshotContext,0);
};

Atom_dot_relopContext.prototype.expr_first_func = function() {
    return this.getTypedRuleContext(Expr_first_funcContext,0);
};

Atom_dot_relopContext.prototype.expr_navigate = function() {
    return this.getTypedRuleContext(Expr_navigateContext,0);
};

Atom_dot_relopContext.prototype.expr_matching = function() {
    return this.getTypedRuleContext(Expr_matchingContext,0);
};

Atom_dot_relopContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterAtom_dot_relop(this);
	}
};

Atom_dot_relopContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitAtom_dot_relop(this);
	}
};




SyslParser.Atom_dot_relopContext = Atom_dot_relopContext;

SyslParser.prototype.atom_dot_relop = function() {

    var localctx = new Atom_dot_relopContext(this, this._ctx, this.state);
    this.enterRule(localctx, 242, SyslParser.RULE_atom_dot_relop);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1270;
        this.match(SyslParser.E_DOT);
        this.state = 1281;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case SyslParser.E_RELOPS_RANK:
            this.state = 1271;
            this.expr_rank_func();
            break;
        case SyslParser.E_RELOPS_AGG:
            this.state = 1272;
            this.expr_agg_func();
            break;
        case SyslParser.E_RELOPS_WHERE:
        case SyslParser.E_RELOPS_FLATTEN:
            this.state = 1273;
            this.expr_single_arg_func();
            break;
        case SyslParser.E_RELOPS_ANY:
            this.state = 1274;
            this.expr_any_func();
            break;
        case SyslParser.E_RELOPS_COUNT:
            this.state = 1275;
            this.expr_count();
            break;
        case SyslParser.E_RELOPS_SINGLE_NULL:
            this.state = 1276;
            this.expr_single_or_null();
            break;
        case SyslParser.E_RELOPS_SNAPSHOT:
            this.state = 1277;
            this.expr_snapshot();
            break;
        case SyslParser.E_RELOPS_FIRST:
            this.state = 1278;
            this.expr_first_func();
            break;
        case SyslParser.E_ARROW_RIGHT:
        case SyslParser.E_QN:
            this.state = 1279;
            this.expr_navigate();
            break;
        case SyslParser.E_TILDE:
        case SyslParser.E_NOT:
            this.state = 1280;
            this.expr_matching();
            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function AtomT_implied_dotContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_atomT_implied_dot;
    return this;
}

AtomT_implied_dotContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
AtomT_implied_dotContext.prototype.constructor = AtomT_implied_dotContext;

AtomT_implied_dotContext.prototype.atom_dot_relop = function() {
    return this.getTypedRuleContext(Atom_dot_relopContext,0);
};

AtomT_implied_dotContext.prototype.expr_navigate = function() {
    return this.getTypedRuleContext(Expr_navigateContext,0);
};

AtomT_implied_dotContext.prototype.expr_matching = function() {
    return this.getTypedRuleContext(Expr_matchingContext,0);
};

AtomT_implied_dotContext.prototype.expr_table_of_op = function() {
    return this.getTypedRuleContext(Expr_table_of_opContext,0);
};

AtomT_implied_dotContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterAtomT_implied_dot(this);
	}
};

AtomT_implied_dotContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitAtomT_implied_dot(this);
	}
};




SyslParser.AtomT_implied_dotContext = AtomT_implied_dotContext;

SyslParser.prototype.atomT_implied_dot = function() {

    var localctx = new AtomT_implied_dotContext(this, this._ctx, this.state);
    this.enterRule(localctx, 244, SyslParser.RULE_atomT_implied_dot);
    try {
        this.state = 1287;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,133,this._ctx);
        switch(la_) {
        case 1:
            this.enterOuterAlt(localctx, 1);
            this.state = 1283;
            this.atom_dot_relop();
            break;

        case 2:
            this.enterOuterAlt(localctx, 2);
            this.state = 1284;
            this.expr_navigate();
            break;

        case 3:
            this.enterOuterAlt(localctx, 3);
            this.state = 1285;
            this.expr_matching();
            break;

        case 4:
            this.enterOuterAlt(localctx, 4);
            this.state = 1286;
            this.expr_table_of_op();
            break;

        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function AtomT_nameContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_atomT_name;
    return this;
}

AtomT_nameContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
AtomT_nameContext.prototype.constructor = AtomT_nameContext;

AtomT_nameContext.prototype.E_Name = function() {
    return this.getToken(SyslParser.E_Name, 0);
};

AtomT_nameContext.prototype.E_WHATEVER = function() {
    return this.getToken(SyslParser.E_WHATEVER, 0);
};

AtomT_nameContext.prototype.E_DOT = function() {
    return this.getToken(SyslParser.E_DOT, 0);
};

AtomT_nameContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterAtomT_name(this);
	}
};

AtomT_nameContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitAtomT_name(this);
	}
};




SyslParser.AtomT_nameContext = AtomT_nameContext;

SyslParser.prototype.atomT_name = function() {

    var localctx = new AtomT_nameContext(this, this._ctx, this.state);
    this.enterRule(localctx, 246, SyslParser.RULE_atomT_name);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1289;
        _la = this._input.LA(1);
        if(!(_la===SyslParser.E_WHATEVER || _la===SyslParser.E_Name || _la===SyslParser.E_DOT)) {
        this._errHandler.recoverInline(this);
        }
        else {
        	this._errHandler.reportMatch(this);
            this.consume();
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function AtomT_parenContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_atomT_paren;
    return this;
}

AtomT_parenContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
AtomT_parenContext.prototype.constructor = AtomT_parenContext;

AtomT_parenContext.prototype.E_OPEN_PAREN = function() {
    return this.getToken(SyslParser.E_OPEN_PAREN, 0);
};

AtomT_parenContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

AtomT_parenContext.prototype.E_CLOSE_PAREN = function() {
    return this.getToken(SyslParser.E_CLOSE_PAREN, 0);
};

AtomT_parenContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterAtomT_paren(this);
	}
};

AtomT_parenContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitAtomT_paren(this);
	}
};




SyslParser.AtomT_parenContext = AtomT_parenContext;

SyslParser.prototype.atomT_paren = function() {

    var localctx = new AtomT_parenContext(this, this._ctx, this.state);
    this.enterRule(localctx, 248, SyslParser.RULE_atomT_paren);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1291;
        this.match(SyslParser.E_OPEN_PAREN);
        this.state = 1292;
        this.expr();
        this.state = 1293;
        this.match(SyslParser.E_CLOSE_PAREN);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Expr_atom_listContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_expr_atom_list;
    return this;
}

Expr_atom_listContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Expr_atom_listContext.prototype.constructor = Expr_atom_listContext;

Expr_atom_listContext.prototype.E_SQ_OPEN = function() {
    return this.getToken(SyslParser.E_SQ_OPEN, 0);
};

Expr_atom_listContext.prototype.expr_list = function() {
    return this.getTypedRuleContext(Expr_listContext,0);
};

Expr_atom_listContext.prototype.E_SQ_CLOSE = function() {
    return this.getToken(SyslParser.E_SQ_CLOSE, 0);
};

Expr_atom_listContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterExpr_atom_list(this);
	}
};

Expr_atom_listContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitExpr_atom_list(this);
	}
};




SyslParser.Expr_atom_listContext = Expr_atom_listContext;

SyslParser.prototype.expr_atom_list = function() {

    var localctx = new Expr_atom_listContext(this, this._ctx, this.state);
    this.enterRule(localctx, 250, SyslParser.RULE_expr_atom_list);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1295;
        this.match(SyslParser.E_SQ_OPEN);
        this.state = 1296;
        this.expr_list();
        this.state = 1297;
        this.match(SyslParser.E_SQ_CLOSE);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function AtomTContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_atomT;
    return this;
}

AtomTContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
AtomTContext.prototype.constructor = AtomTContext;

AtomTContext.prototype.expr_func = function() {
    return this.getTypedRuleContext(Expr_funcContext,0);
};

AtomTContext.prototype.expr_set = function() {
    return this.getTypedRuleContext(Expr_setContext,0);
};

AtomTContext.prototype.expr_atom_list = function() {
    return this.getTypedRuleContext(Expr_atom_listContext,0);
};

AtomTContext.prototype.empty_tuple = function() {
    return this.getTypedRuleContext(Empty_tupleContext,0);
};

AtomTContext.prototype.atomT_paren = function() {
    return this.getTypedRuleContext(AtomT_parenContext,0);
};

AtomTContext.prototype.literal = function() {
    return this.getTypedRuleContext(LiteralContext,0);
};

AtomTContext.prototype.atomT_implied_dot = function() {
    return this.getTypedRuleContext(AtomT_implied_dotContext,0);
};

AtomTContext.prototype.atomT_name = function() {
    return this.getTypedRuleContext(AtomT_nameContext,0);
};

AtomTContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterAtomT(this);
	}
};

AtomTContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitAtomT(this);
	}
};




SyslParser.AtomTContext = AtomTContext;

SyslParser.prototype.atomT = function() {

    var localctx = new AtomTContext(this, this._ctx, this.state);
    this.enterRule(localctx, 252, SyslParser.RULE_atomT);
    try {
        this.state = 1307;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,134,this._ctx);
        switch(la_) {
        case 1:
            this.enterOuterAlt(localctx, 1);
            this.state = 1299;
            this.expr_func();
            break;

        case 2:
            this.enterOuterAlt(localctx, 2);
            this.state = 1300;
            this.expr_set();
            break;

        case 3:
            this.enterOuterAlt(localctx, 3);
            this.state = 1301;
            this.expr_atom_list();
            break;

        case 4:
            this.enterOuterAlt(localctx, 4);
            this.state = 1302;
            this.empty_tuple();
            break;

        case 5:
            this.enterOuterAlt(localctx, 5);
            this.state = 1303;
            this.atomT_paren();
            break;

        case 6:
            this.enterOuterAlt(localctx, 6);
            this.state = 1304;
            this.literal();
            break;

        case 7:
            this.enterOuterAlt(localctx, 7);
            this.state = 1305;
            this.atomT_implied_dot();
            break;

        case 8:
            this.enterOuterAlt(localctx, 8);
            this.state = 1306;
            this.atomT_name();
            break;

        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function AtomContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_atom;
    return this;
}

AtomContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
AtomContext.prototype.constructor = AtomContext;

AtomContext.prototype.atomT = function() {
    return this.getTypedRuleContext(AtomTContext,0);
};

AtomContext.prototype.relop = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(RelopContext);
    } else {
        return this.getTypedRuleContext(RelopContext,i);
    }
};

AtomContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterAtom(this);
	}
};

AtomContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitAtom(this);
	}
};




SyslParser.AtomContext = AtomContext;

SyslParser.prototype.atom = function() {

    var localctx = new AtomContext(this, this._ctx, this.state);
    this.enterRule(localctx, 254, SyslParser.RULE_atom);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1309;
        this.atomT();
        this.state = 1313;
        this._errHandler.sync(this);
        var _alt = this._interp.adaptivePredict(this._input,135,this._ctx)
        while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
            if(_alt===1) {
                this.state = 1310;
                this.relop(); 
            }
            this.state = 1315;
            this._errHandler.sync(this);
            _alt = this._interp.adaptivePredict(this._input,135,this._ctx);
        }

    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function PowerTContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_powerT;
    return this;
}

PowerTContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
PowerTContext.prototype.constructor = PowerTContext;

PowerTContext.prototype.E_POW = function() {
    return this.getToken(SyslParser.E_POW, 0);
};

PowerTContext.prototype.unaryTerm = function() {
    return this.getTypedRuleContext(UnaryTermContext,0);
};

PowerTContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterPowerT(this);
	}
};

PowerTContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitPowerT(this);
	}
};




SyslParser.PowerTContext = PowerTContext;

SyslParser.prototype.powerT = function() {

    var localctx = new PowerTContext(this, this._ctx, this.state);
    this.enterRule(localctx, 256, SyslParser.RULE_powerT);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1316;
        this.match(SyslParser.E_POW);
        this.state = 1317;
        this.unaryTerm();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function PowerContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_power;
    return this;
}

PowerContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
PowerContext.prototype.constructor = PowerContext;

PowerContext.prototype.atom = function() {
    return this.getTypedRuleContext(AtomContext,0);
};

PowerContext.prototype.powerT = function() {
    return this.getTypedRuleContext(PowerTContext,0);
};

PowerContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterPower(this);
	}
};

PowerContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitPower(this);
	}
};




SyslParser.PowerContext = PowerContext;

SyslParser.prototype.power = function() {

    var localctx = new PowerContext(this, this._ctx, this.state);
    this.enterRule(localctx, 258, SyslParser.RULE_power);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1319;
        this.atom();
        this.state = 1321;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,136,this._ctx);
        if(la_===1) {
            this.state = 1320;
            this.powerT();

        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function UnaryTermContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_unaryTerm;
    return this;
}

UnaryTermContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
UnaryTermContext.prototype.constructor = UnaryTermContext;

UnaryTermContext.prototype.power = function() {
    return this.getTypedRuleContext(PowerContext,0);
};

UnaryTermContext.prototype.E_PLUS = function() {
    return this.getToken(SyslParser.E_PLUS, 0);
};

UnaryTermContext.prototype.E_MINUS = function() {
    return this.getToken(SyslParser.E_MINUS, 0);
};

UnaryTermContext.prototype.E_NOT = function() {
    return this.getToken(SyslParser.E_NOT, 0);
};

UnaryTermContext.prototype.E_TILDE = function() {
    return this.getToken(SyslParser.E_TILDE, 0);
};

UnaryTermContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterUnaryTerm(this);
	}
};

UnaryTermContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitUnaryTerm(this);
	}
};




SyslParser.UnaryTermContext = UnaryTermContext;

SyslParser.prototype.unaryTerm = function() {

    var localctx = new UnaryTermContext(this, this._ctx, this.state);
    this.enterRule(localctx, 260, SyslParser.RULE_unaryTerm);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1324;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,137,this._ctx);
        if(la_===1) {
            this.state = 1323;
            _la = this._input.LA(1);
            if(!(((((_la - 94)) & ~0x1f) == 0 && ((1 << (_la - 94)) & ((1 << (SyslParser.E_PLUS - 94)) | (1 << (SyslParser.E_MINUS - 94)) | (1 << (SyslParser.E_TILDE - 94)) | (1 << (SyslParser.E_NOT - 94)))) !== 0))) {
            this._errHandler.recoverInline(this);
            }
            else {
            	this._errHandler.reportMatch(this);
                this.consume();
            }

        }
        this.state = 1326;
        this.power();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function TermTContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_termT;
    return this;
}

TermTContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
TermTContext.prototype.constructor = TermTContext;

TermTContext.prototype.unaryTerm = function() {
    return this.getTypedRuleContext(UnaryTermContext,0);
};

TermTContext.prototype.E_STAR = function() {
    return this.getToken(SyslParser.E_STAR, 0);
};

TermTContext.prototype.E_DIVIDE = function() {
    return this.getToken(SyslParser.E_DIVIDE, 0);
};

TermTContext.prototype.E_MOD = function() {
    return this.getToken(SyslParser.E_MOD, 0);
};

TermTContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterTermT(this);
	}
};

TermTContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitTermT(this);
	}
};




SyslParser.TermTContext = TermTContext;

SyslParser.prototype.termT = function() {

    var localctx = new TermTContext(this, this._ctx, this.state);
    this.enterRule(localctx, 262, SyslParser.RULE_termT);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1328;
        _la = this._input.LA(1);
        if(!(((((_la - 95)) & ~0x1f) == 0 && ((1 << (_la - 95)) & ((1 << (SyslParser.E_DIVIDE - 95)) | (1 << (SyslParser.E_MOD - 95)) | (1 << (SyslParser.E_STAR - 95)))) !== 0))) {
        this._errHandler.recoverInline(this);
        }
        else {
        	this._errHandler.reportMatch(this);
            this.consume();
        }
        this.state = 1329;
        this.unaryTerm();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function TermContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_term;
    return this;
}

TermContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
TermContext.prototype.constructor = TermContext;

TermContext.prototype.unaryTerm = function() {
    return this.getTypedRuleContext(UnaryTermContext,0);
};

TermContext.prototype.termT = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(TermTContext);
    } else {
        return this.getTypedRuleContext(TermTContext,i);
    }
};

TermContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterTerm(this);
	}
};

TermContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitTerm(this);
	}
};




SyslParser.TermContext = TermContext;

SyslParser.prototype.term = function() {

    var localctx = new TermContext(this, this._ctx, this.state);
    this.enterRule(localctx, 264, SyslParser.RULE_term);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1331;
        this.unaryTerm();
        this.state = 1335;
        this._errHandler.sync(this);
        var _alt = this._interp.adaptivePredict(this._input,138,this._ctx)
        while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
            if(_alt===1) {
                this.state = 1332;
                this.termT(); 
            }
            this.state = 1337;
            this._errHandler.sync(this);
            _alt = this._interp.adaptivePredict(this._input,138,this._ctx);
        }

    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function BinexprTContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_binexprT;
    return this;
}

BinexprTContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
BinexprTContext.prototype.constructor = BinexprTContext;

BinexprTContext.prototype.term = function() {
    return this.getTypedRuleContext(TermContext,0);
};

BinexprTContext.prototype.E_PLUS = function() {
    return this.getToken(SyslParser.E_PLUS, 0);
};

BinexprTContext.prototype.E_MINUS = function() {
    return this.getToken(SyslParser.E_MINUS, 0);
};

BinexprTContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterBinexprT(this);
	}
};

BinexprTContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitBinexprT(this);
	}
};




SyslParser.BinexprTContext = BinexprTContext;

SyslParser.prototype.binexprT = function() {

    var localctx = new BinexprTContext(this, this._ctx, this.state);
    this.enterRule(localctx, 266, SyslParser.RULE_binexprT);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1338;
        _la = this._input.LA(1);
        if(!(_la===SyslParser.E_PLUS || _la===SyslParser.E_MINUS)) {
        this._errHandler.recoverInline(this);
        }
        else {
        	this._errHandler.reportMatch(this);
            this.consume();
        }
        this.state = 1339;
        this.term();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function BinexprContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_binexpr;
    return this;
}

BinexprContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
BinexprContext.prototype.constructor = BinexprContext;

BinexprContext.prototype.term = function() {
    return this.getTypedRuleContext(TermContext,0);
};

BinexprContext.prototype.binexprT = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(BinexprTContext);
    } else {
        return this.getTypedRuleContext(BinexprTContext,i);
    }
};

BinexprContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterBinexpr(this);
	}
};

BinexprContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitBinexpr(this);
	}
};




SyslParser.BinexprContext = BinexprContext;

SyslParser.prototype.binexpr = function() {

    var localctx = new BinexprContext(this, this._ctx, this.state);
    this.enterRule(localctx, 268, SyslParser.RULE_binexpr);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1341;
        this.term();
        this.state = 1345;
        this._errHandler.sync(this);
        var _alt = this._interp.adaptivePredict(this._input,139,this._ctx)
        while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
            if(_alt===1) {
                this.state = 1342;
                this.binexprT(); 
            }
            this.state = 1347;
            this._errHandler.sync(this);
            _alt = this._interp.adaptivePredict(this._input,139,this._ctx);
        }

    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function E_compare_opsContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_e_compare_ops;
    return this;
}

E_compare_opsContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
E_compare_opsContext.prototype.constructor = E_compare_opsContext;

E_compare_opsContext.prototype.E_REL = function() {
    return this.getToken(SyslParser.E_REL, 0);
};

E_compare_opsContext.prototype.E_ANGLE_OPEN = function() {
    return this.getToken(SyslParser.E_ANGLE_OPEN, 0);
};

E_compare_opsContext.prototype.E_ANGLE_CLOSE = function() {
    return this.getToken(SyslParser.E_ANGLE_CLOSE, 0);
};

E_compare_opsContext.prototype.E_DOUBLE_EQ = function() {
    return this.getToken(SyslParser.E_DOUBLE_EQ, 0);
};

E_compare_opsContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterE_compare_ops(this);
	}
};

E_compare_opsContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitE_compare_ops(this);
	}
};




SyslParser.E_compare_opsContext = E_compare_opsContext;

SyslParser.prototype.e_compare_ops = function() {

    var localctx = new E_compare_opsContext(this, this._ctx, this.state);
    this.enterRule(localctx, 270, SyslParser.RULE_e_compare_ops);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1348;
        _la = this._input.LA(1);
        if(!(((((_la - 76)) & ~0x1f) == 0 && ((1 << (_la - 76)) & ((1 << (SyslParser.E_DOUBLE_EQ - 76)) | (1 << (SyslParser.E_REL - 76)) | (1 << (SyslParser.E_ANGLE_OPEN - 76)) | (1 << (SyslParser.E_ANGLE_CLOSE - 76)))) !== 0))) {
        this._errHandler.recoverInline(this);
        }
        else {
        	this._errHandler.reportMatch(this);
            this.consume();
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Expr_relContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_expr_rel;
    return this;
}

Expr_relContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Expr_relContext.prototype.constructor = Expr_relContext;

Expr_relContext.prototype.binexpr = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(BinexprContext);
    } else {
        return this.getTypedRuleContext(BinexprContext,i);
    }
};

Expr_relContext.prototype.e_compare_ops = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(E_compare_opsContext);
    } else {
        return this.getTypedRuleContext(E_compare_opsContext,i);
    }
};

Expr_relContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterExpr_rel(this);
	}
};

Expr_relContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitExpr_rel(this);
	}
};




SyslParser.Expr_relContext = Expr_relContext;

SyslParser.prototype.expr_rel = function() {

    var localctx = new Expr_relContext(this, this._ctx, this.state);
    this.enterRule(localctx, 272, SyslParser.RULE_expr_rel);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1350;
        this.binexpr();
        this.state = 1356;
        this._errHandler.sync(this);
        var _alt = this._interp.adaptivePredict(this._input,140,this._ctx)
        while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
            if(_alt===1) {
                this.state = 1351;
                this.e_compare_ops();
                this.state = 1352;
                this.binexpr(); 
            }
            this.state = 1358;
            this._errHandler.sync(this);
            _alt = this._interp.adaptivePredict(this._input,140,this._ctx);
        }

    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Expr_bitandContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_expr_bitand;
    return this;
}

Expr_bitandContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Expr_bitandContext.prototype.constructor = Expr_bitandContext;

Expr_bitandContext.prototype.expr_rel = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Expr_relContext);
    } else {
        return this.getTypedRuleContext(Expr_relContext,i);
    }
};

Expr_bitandContext.prototype.E_AMP = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SyslParser.E_AMP);
    } else {
        return this.getToken(SyslParser.E_AMP, i);
    }
};


Expr_bitandContext.prototype.E_AND = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SyslParser.E_AND);
    } else {
        return this.getToken(SyslParser.E_AND, i);
    }
};


Expr_bitandContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterExpr_bitand(this);
	}
};

Expr_bitandContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitExpr_bitand(this);
	}
};




SyslParser.Expr_bitandContext = Expr_bitandContext;

SyslParser.prototype.expr_bitand = function() {

    var localctx = new Expr_bitandContext(this, this._ctx, this.state);
    this.enterRule(localctx, 274, SyslParser.RULE_expr_bitand);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1359;
        this.expr_rel();
        this.state = 1364;
        this._errHandler.sync(this);
        var _alt = this._interp.adaptivePredict(this._input,141,this._ctx)
        while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
            if(_alt===1) {
                this.state = 1360;
                _la = this._input.LA(1);
                if(!(_la===SyslParser.E_AMP || _la===SyslParser.E_AND)) {
                this._errHandler.recoverInline(this);
                }
                else {
                	this._errHandler.reportMatch(this);
                    this.consume();
                }
                this.state = 1361;
                this.expr_rel(); 
            }
            this.state = 1366;
            this._errHandler.sync(this);
            _alt = this._interp.adaptivePredict(this._input,141,this._ctx);
        }

    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Expr_bitxorContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_expr_bitxor;
    return this;
}

Expr_bitxorContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Expr_bitxorContext.prototype.constructor = Expr_bitxorContext;

Expr_bitxorContext.prototype.expr_bitand = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Expr_bitandContext);
    } else {
        return this.getTypedRuleContext(Expr_bitandContext,i);
    }
};

Expr_bitxorContext.prototype.E_XOR = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SyslParser.E_XOR);
    } else {
        return this.getToken(SyslParser.E_XOR, i);
    }
};


Expr_bitxorContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterExpr_bitxor(this);
	}
};

Expr_bitxorContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitExpr_bitxor(this);
	}
};




SyslParser.Expr_bitxorContext = Expr_bitxorContext;

SyslParser.prototype.expr_bitxor = function() {

    var localctx = new Expr_bitxorContext(this, this._ctx, this.state);
    this.enterRule(localctx, 276, SyslParser.RULE_expr_bitxor);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1367;
        this.expr_bitand();
        this.state = 1372;
        this._errHandler.sync(this);
        var _alt = this._interp.adaptivePredict(this._input,142,this._ctx)
        while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
            if(_alt===1) {
                this.state = 1368;
                this.match(SyslParser.E_XOR);
                this.state = 1369;
                this.expr_bitand(); 
            }
            this.state = 1374;
            this._errHandler.sync(this);
            _alt = this._interp.adaptivePredict(this._input,142,this._ctx);
        }

    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Expr_bitorContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_expr_bitor;
    return this;
}

Expr_bitorContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Expr_bitorContext.prototype.constructor = Expr_bitorContext;

Expr_bitorContext.prototype.expr_bitxor = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Expr_bitxorContext);
    } else {
        return this.getTypedRuleContext(Expr_bitxorContext,i);
    }
};

Expr_bitorContext.prototype.E_BITOR = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SyslParser.E_BITOR);
    } else {
        return this.getToken(SyslParser.E_BITOR, i);
    }
};


Expr_bitorContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterExpr_bitor(this);
	}
};

Expr_bitorContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitExpr_bitor(this);
	}
};




SyslParser.Expr_bitorContext = Expr_bitorContext;

SyslParser.prototype.expr_bitor = function() {

    var localctx = new Expr_bitorContext(this, this._ctx, this.state);
    this.enterRule(localctx, 278, SyslParser.RULE_expr_bitor);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1375;
        this.expr_bitxor();
        this.state = 1380;
        this._errHandler.sync(this);
        var _alt = this._interp.adaptivePredict(this._input,143,this._ctx)
        while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
            if(_alt===1) {
                this.state = 1376;
                this.match(SyslParser.E_BITOR);
                this.state = 1377;
                this.expr_bitxor(); 
            }
            this.state = 1382;
            this._errHandler.sync(this);
            _alt = this._interp.adaptivePredict(this._input,143,this._ctx);
        }

    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Expr_andContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_expr_and;
    return this;
}

Expr_andContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Expr_andContext.prototype.constructor = Expr_andContext;

Expr_andContext.prototype.expr_bitor = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Expr_bitorContext);
    } else {
        return this.getTypedRuleContext(Expr_bitorContext,i);
    }
};

Expr_andContext.prototype.E_DOUBLE_AMP = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SyslParser.E_DOUBLE_AMP);
    } else {
        return this.getToken(SyslParser.E_DOUBLE_AMP, i);
    }
};


Expr_andContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterExpr_and(this);
	}
};

Expr_andContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitExpr_and(this);
	}
};




SyslParser.Expr_andContext = Expr_andContext;

SyslParser.prototype.expr_and = function() {

    var localctx = new Expr_andContext(this, this._ctx, this.state);
    this.enterRule(localctx, 280, SyslParser.RULE_expr_and);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1383;
        this.expr_bitor();
        this.state = 1388;
        this._errHandler.sync(this);
        var _alt = this._interp.adaptivePredict(this._input,144,this._ctx)
        while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
            if(_alt===1) {
                this.state = 1384;
                this.match(SyslParser.E_DOUBLE_AMP);
                this.state = 1385;
                this.expr_bitor(); 
            }
            this.state = 1390;
            this._errHandler.sync(this);
            _alt = this._interp.adaptivePredict(this._input,144,this._ctx);
        }

    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Expr_orContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_expr_or;
    return this;
}

Expr_orContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Expr_orContext.prototype.constructor = Expr_orContext;

Expr_orContext.prototype.expr_and = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Expr_andContext);
    } else {
        return this.getTypedRuleContext(Expr_andContext,i);
    }
};

Expr_orContext.prototype.E_LOGIC_OR = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SyslParser.E_LOGIC_OR);
    } else {
        return this.getToken(SyslParser.E_LOGIC_OR, i);
    }
};


Expr_orContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterExpr_or(this);
	}
};

Expr_orContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitExpr_or(this);
	}
};




SyslParser.Expr_orContext = Expr_orContext;

SyslParser.prototype.expr_or = function() {

    var localctx = new Expr_orContext(this, this._ctx, this.state);
    this.enterRule(localctx, 282, SyslParser.RULE_expr_or);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1391;
        this.expr_and();
        this.state = 1396;
        this._errHandler.sync(this);
        var _alt = this._interp.adaptivePredict(this._input,145,this._ctx)
        while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
            if(_alt===1) {
                this.state = 1392;
                this.match(SyslParser.E_LOGIC_OR);
                this.state = 1393;
                this.expr_and(); 
            }
            this.state = 1398;
            this._errHandler.sync(this);
            _alt = this._interp.adaptivePredict(this._input,145,this._ctx);
        }

    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Expr_but_notContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_expr_but_not;
    return this;
}

Expr_but_notContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Expr_but_notContext.prototype.constructor = Expr_but_notContext;

Expr_but_notContext.prototype.expr_or = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Expr_orContext);
    } else {
        return this.getTypedRuleContext(Expr_orContext,i);
    }
};

Expr_but_notContext.prototype.E_BUTNOT = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SyslParser.E_BUTNOT);
    } else {
        return this.getToken(SyslParser.E_BUTNOT, i);
    }
};


Expr_but_notContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterExpr_but_not(this);
	}
};

Expr_but_notContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitExpr_but_not(this);
	}
};




SyslParser.Expr_but_notContext = Expr_but_notContext;

SyslParser.prototype.expr_but_not = function() {

    var localctx = new Expr_but_notContext(this, this._ctx, this.state);
    this.enterRule(localctx, 284, SyslParser.RULE_expr_but_not);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1399;
        this.expr_or();
        this.state = 1404;
        this._errHandler.sync(this);
        var _alt = this._interp.adaptivePredict(this._input,146,this._ctx)
        while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
            if(_alt===1) {
                this.state = 1400;
                this.match(SyslParser.E_BUTNOT);
                this.state = 1401;
                this.expr_or(); 
            }
            this.state = 1406;
            this._errHandler.sync(this);
            _alt = this._interp.adaptivePredict(this._input,146,this._ctx);
        }

    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Expr_coalesceContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_expr_coalesce;
    return this;
}

Expr_coalesceContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Expr_coalesceContext.prototype.constructor = Expr_coalesceContext;

Expr_coalesceContext.prototype.expr_but_not = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Expr_but_notContext);
    } else {
        return this.getTypedRuleContext(Expr_but_notContext,i);
    }
};

Expr_coalesceContext.prototype.E_COALESCE = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SyslParser.E_COALESCE);
    } else {
        return this.getToken(SyslParser.E_COALESCE, i);
    }
};


Expr_coalesceContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterExpr_coalesce(this);
	}
};

Expr_coalesceContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitExpr_coalesce(this);
	}
};




SyslParser.Expr_coalesceContext = Expr_coalesceContext;

SyslParser.prototype.expr_coalesce = function() {

    var localctx = new Expr_coalesceContext(this, this._ctx, this.state);
    this.enterRule(localctx, 286, SyslParser.RULE_expr_coalesce);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1407;
        this.expr_but_not();
        this.state = 1412;
        this._errHandler.sync(this);
        var _alt = this._interp.adaptivePredict(this._input,147,this._ctx)
        while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
            if(_alt===1) {
                this.state = 1408;
                this.match(SyslParser.E_COALESCE);
                this.state = 1409;
                this.expr_but_not(); 
            }
            this.state = 1414;
            this._errHandler.sync(this);
            _alt = this._interp.adaptivePredict(this._input,147,this._ctx);
        }

    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function If_one_linerContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_if_one_liner;
    return this;
}

If_one_linerContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
If_one_linerContext.prototype.constructor = If_one_linerContext;

If_one_linerContext.prototype.expr = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(ExprContext);
    } else {
        return this.getTypedRuleContext(ExprContext,i);
    }
};

If_one_linerContext.prototype.E_THEN = function() {
    return this.getToken(SyslParser.E_THEN, 0);
};

If_one_linerContext.prototype.E_ELSE = function() {
    return this.getToken(SyslParser.E_ELSE, 0);
};

If_one_linerContext.prototype.E_QN = function() {
    return this.getToken(SyslParser.E_QN, 0);
};

If_one_linerContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterIf_one_liner(this);
	}
};

If_one_linerContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitIf_one_liner(this);
	}
};




SyslParser.If_one_linerContext = If_one_linerContext;

SyslParser.prototype.if_one_liner = function() {

    var localctx = new If_one_linerContext(this, this._ctx, this.state);
    this.enterRule(localctx, 288, SyslParser.RULE_if_one_liner);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1415;
        this.expr();
        this.state = 1417;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SyslParser.E_QN) {
            this.state = 1416;
            this.match(SyslParser.E_QN);
        }

        this.state = 1419;
        this.match(SyslParser.E_THEN);
        this.state = 1420;
        this.expr();
        this.state = 1421;
        this.match(SyslParser.E_ELSE);
        this.state = 1422;
        this.expr();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Else_block_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_else_block_stmt;
    this.nested = false;
    this._expr = null; // ExprContext
    return this;
}

Else_block_stmtContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Else_block_stmtContext.prototype.constructor = Else_block_stmtContext;

Else_block_stmtContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Else_block_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterElse_block_stmt(this);
	}
};

Else_block_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitElse_block_stmt(this);
	}
};




SyslParser.Else_block_stmtContext = Else_block_stmtContext;

SyslParser.prototype.else_block_stmt = function() {

    var localctx = new Else_block_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 290, SyslParser.RULE_else_block_stmt);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1424;
        localctx._expr = this.expr();
         localctx.nested = localctx._expr.nested
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Control_itemContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_control_item;
    return this;
}

Control_itemContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Control_itemContext.prototype.constructor = Control_itemContext;

Control_itemContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Control_itemContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterControl_item(this);
	}
};

Control_itemContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitControl_item(this);
	}
};




SyslParser.Control_itemContext = Control_itemContext;

SyslParser.prototype.control_item = function() {

    var localctx = new Control_itemContext(this, this._ctx, this.state);
    this.enterRule(localctx, 292, SyslParser.RULE_control_item);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1427;
        this.expr();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function If_controlsContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_if_controls;
    return this;
}

If_controlsContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
If_controlsContext.prototype.constructor = If_controlsContext;

If_controlsContext.prototype.control_item = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Control_itemContext);
    } else {
        return this.getTypedRuleContext(Control_itemContext,i);
    }
};

If_controlsContext.prototype.E_COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SyslParser.E_COMMA);
    } else {
        return this.getToken(SyslParser.E_COMMA, i);
    }
};


If_controlsContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterIf_controls(this);
	}
};

If_controlsContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitIf_controls(this);
	}
};




SyslParser.If_controlsContext = If_controlsContext;

SyslParser.prototype.if_controls = function() {

    var localctx = new If_controlsContext(this, this._ctx, this.state);
    this.enterRule(localctx, 294, SyslParser.RULE_if_controls);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1429;
        this.control_item();
        this.state = 1434;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===SyslParser.E_COMMA) {
            this.state = 1430;
            this.match(SyslParser.E_COMMA);
            this.state = 1431;
            this.control_item();
            this.state = 1436;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Cond_blockContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_cond_block;
    this._else_block_stmt = null; // Else_block_stmtContext
    return this;
}

Cond_blockContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Cond_blockContext.prototype.constructor = Cond_blockContext;

Cond_blockContext.prototype.if_controls = function() {
    return this.getTypedRuleContext(If_controlsContext,0);
};

Cond_blockContext.prototype.E_EQ_RIGHT = function() {
    return this.getToken(SyslParser.E_EQ_RIGHT, 0);
};

Cond_blockContext.prototype.else_block_stmt = function() {
    return this.getTypedRuleContext(Else_block_stmtContext,0);
};

Cond_blockContext.prototype.E_NL = function() {
    return this.getToken(SyslParser.E_NL, 0);
};

Cond_blockContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterCond_block(this);
	}
};

Cond_blockContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitCond_block(this);
	}
};




SyslParser.Cond_blockContext = Cond_blockContext;

SyslParser.prototype.cond_block = function() {

    var localctx = new Cond_blockContext(this, this._ctx, this.state);
    this.enterRule(localctx, 296, SyslParser.RULE_cond_block);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1437;
        this.if_controls();
        this.state = 1438;
        this.match(SyslParser.E_EQ_RIGHT);
        this.state = 1439;
        localctx._else_block_stmt = this.else_block_stmt();
        this.state = 1442;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,150,this._ctx);
        switch(la_) {
        case 1:
            this.state = 1440;
            if (!( localctx._else_block_stmt.nested == true)) {
                throw new antlr4.error.FailedPredicateException(this, "$else_block_stmt.nested == true");
            }
            break;

        case 2:
            this.state = 1441;
            this.match(SyslParser.E_NL);
            break;

        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Final_elseContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_final_else;
    this._expr = null; // ExprContext
    return this;
}

Final_elseContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Final_elseContext.prototype.constructor = Final_elseContext;

Final_elseContext.prototype.E_ELSE = function() {
    return this.getToken(SyslParser.E_ELSE, 0);
};

Final_elseContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Final_elseContext.prototype.E_NL = function() {
    return this.getToken(SyslParser.E_NL, 0);
};

Final_elseContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterFinal_else(this);
	}
};

Final_elseContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitFinal_else(this);
	}
};




SyslParser.Final_elseContext = Final_elseContext;

SyslParser.prototype.final_else = function() {

    var localctx = new Final_elseContext(this, this._ctx, this.state);
    this.enterRule(localctx, 298, SyslParser.RULE_final_else);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1444;
        this.match(SyslParser.E_ELSE);
        this.state = 1445;
        localctx._expr = this.expr();
        this.state = 1448;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,151,this._ctx);
        switch(la_) {
        case 1:
            this.state = 1446;
            if (!( localctx._expr.nested == true)) {
                throw new antlr4.error.FailedPredicateException(this, "$expr.nested == true");
            }
            break;

        case 2:
            this.state = 1447;
            this.match(SyslParser.E_NL);
            break;

        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function IfvarContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_ifvar;
    return this;
}

IfvarContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
IfvarContext.prototype.constructor = IfvarContext;

IfvarContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

IfvarContext.prototype.E_DOUBLE_EQ = function() {
    return this.getToken(SyslParser.E_DOUBLE_EQ, 0);
};

IfvarContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterIfvar(this);
	}
};

IfvarContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitIfvar(this);
	}
};




SyslParser.IfvarContext = IfvarContext;

SyslParser.prototype.ifvar = function() {

    var localctx = new IfvarContext(this, this._ctx, this.state);
    this.enterRule(localctx, 300, SyslParser.RULE_ifvar);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1450;
        this.expr();
        this.state = 1451;
        this.match(SyslParser.E_DOUBLE_EQ);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function If_multiple_linesContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_if_multiple_lines;
    return this;
}

If_multiple_linesContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
If_multiple_linesContext.prototype.constructor = If_multiple_linesContext;

If_multiple_linesContext.prototype.E_COLON = function() {
    return this.getToken(SyslParser.E_COLON, 0);
};

If_multiple_linesContext.prototype.E_NL = function() {
    return this.getToken(SyslParser.E_NL, 0);
};

If_multiple_linesContext.prototype.INDENT = function() {
    return this.getToken(SyslParser.INDENT, 0);
};

If_multiple_linesContext.prototype.DEDENT = function() {
    return this.getToken(SyslParser.DEDENT, 0);
};

If_multiple_linesContext.prototype.ifvar = function() {
    return this.getTypedRuleContext(IfvarContext,0);
};

If_multiple_linesContext.prototype.cond_block = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Cond_blockContext);
    } else {
        return this.getTypedRuleContext(Cond_blockContext,i);
    }
};

If_multiple_linesContext.prototype.final_else = function() {
    return this.getTypedRuleContext(Final_elseContext,0);
};

If_multiple_linesContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterIf_multiple_lines(this);
	}
};

If_multiple_linesContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitIf_multiple_lines(this);
	}
};




SyslParser.If_multiple_linesContext = If_multiple_linesContext;

SyslParser.prototype.if_multiple_lines = function() {

    var localctx = new If_multiple_linesContext(this, this._ctx, this.state);
    this.enterRule(localctx, 302, SyslParser.RULE_if_multiple_lines);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1454;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SyslParser.NativeDataTypes || ((((_la - 73)) & ~0x1f) == 0 && ((1 << (_la - 73)) & ((1 << (SyslParser.E_WHATEVER - 73)) | (1 << (SyslParser.E_ARROW_RIGHT - 73)) | (1 << (SyslParser.E_SQ_OPEN - 73)) | (1 << (SyslParser.E_EMPTY_TUPLE - 73)) | (1 << (SyslParser.E_CURLY_OPEN - 73)) | (1 << (SyslParser.E_NULLSAFE_DOT - 73)) | (1 << (SyslParser.E_OPEN_PAREN - 73)) | (1 << (SyslParser.E_PLUS - 73)) | (1 << (SyslParser.E_MINUS - 73)) | (1 << (SyslParser.E_QN - 73)) | (1 << (SyslParser.E_TILDE - 73)) | (1 << (SyslParser.E_NOT - 73)))) !== 0) || ((((_la - 111)) & ~0x1f) == 0 && ((1 << (_la - 111)) & ((1 << (SyslParser.E_IF - 111)) | (1 << (SyslParser.E_TRUE - 111)) | (1 << (SyslParser.E_FALSE - 111)) | (1 << (SyslParser.E_NULL - 111)) | (1 << (SyslParser.E_FUNC - 111)) | (1 << (SyslParser.E_STRING_DBL - 111)) | (1 << (SyslParser.E_STRING_SINGLE - 111)) | (1 << (SyslParser.E_DECIMAL - 111)) | (1 << (SyslParser.E_DIGITS - 111)) | (1 << (SyslParser.E_Name - 111)) | (1 << (SyslParser.E_DOT - 111)))) !== 0)) {
            this.state = 1453;
            this.ifvar();
        }

        this.state = 1456;
        this.match(SyslParser.E_COLON);
        this.state = 1457;
        this.match(SyslParser.E_NL);
        this.state = 1458;
        this.match(SyslParser.INDENT);
        this.state = 1460; 
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        do {
            this.state = 1459;
            this.cond_block();
            this.state = 1462; 
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        } while(_la===SyslParser.NativeDataTypes || ((((_la - 73)) & ~0x1f) == 0 && ((1 << (_la - 73)) & ((1 << (SyslParser.E_WHATEVER - 73)) | (1 << (SyslParser.E_ARROW_RIGHT - 73)) | (1 << (SyslParser.E_SQ_OPEN - 73)) | (1 << (SyslParser.E_EMPTY_TUPLE - 73)) | (1 << (SyslParser.E_CURLY_OPEN - 73)) | (1 << (SyslParser.E_NULLSAFE_DOT - 73)) | (1 << (SyslParser.E_OPEN_PAREN - 73)) | (1 << (SyslParser.E_PLUS - 73)) | (1 << (SyslParser.E_MINUS - 73)) | (1 << (SyslParser.E_QN - 73)) | (1 << (SyslParser.E_TILDE - 73)) | (1 << (SyslParser.E_NOT - 73)))) !== 0) || ((((_la - 111)) & ~0x1f) == 0 && ((1 << (_la - 111)) & ((1 << (SyslParser.E_IF - 111)) | (1 << (SyslParser.E_TRUE - 111)) | (1 << (SyslParser.E_FALSE - 111)) | (1 << (SyslParser.E_NULL - 111)) | (1 << (SyslParser.E_FUNC - 111)) | (1 << (SyslParser.E_STRING_DBL - 111)) | (1 << (SyslParser.E_STRING_SINGLE - 111)) | (1 << (SyslParser.E_DECIMAL - 111)) | (1 << (SyslParser.E_DIGITS - 111)) | (1 << (SyslParser.E_Name - 111)) | (1 << (SyslParser.E_DOT - 111)))) !== 0));
        this.state = 1465;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SyslParser.E_ELSE) {
            this.state = 1464;
            this.final_else();
        }

        this.state = 1467;
        this.match(SyslParser.DEDENT);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Expr_if_elseContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_expr_if_else;
    this.nested = false;
    return this;
}

Expr_if_elseContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Expr_if_elseContext.prototype.constructor = Expr_if_elseContext;

Expr_if_elseContext.prototype.E_IF = function() {
    return this.getToken(SyslParser.E_IF, 0);
};

Expr_if_elseContext.prototype.if_one_liner = function() {
    return this.getTypedRuleContext(If_one_linerContext,0);
};

Expr_if_elseContext.prototype.if_multiple_lines = function() {
    return this.getTypedRuleContext(If_multiple_linesContext,0);
};

Expr_if_elseContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterExpr_if_else(this);
	}
};

Expr_if_elseContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitExpr_if_else(this);
	}
};




SyslParser.Expr_if_elseContext = Expr_if_elseContext;

SyslParser.prototype.expr_if_else = function() {

    var localctx = new Expr_if_elseContext(this, this._ctx, this.state);
    this.enterRule(localctx, 304, SyslParser.RULE_expr_if_else);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1469;
        this.match(SyslParser.E_IF);
        this.state = 1474;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,155,this._ctx);
        switch(la_) {
        case 1:
            this.state = 1470;
            this.if_one_liner();
            break;

        case 2:
            this.state = 1471;
            this.if_multiple_lines();
             localctx.nested = true
            break;

        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function ExprContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_expr;
    this.nested = false;
    this._expr_if_else = null; // Expr_if_elseContext
    return this;
}

ExprContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
ExprContext.prototype.constructor = ExprContext;

ExprContext.prototype.expr_if_else = function() {
    return this.getTypedRuleContext(Expr_if_elseContext,0);
};

ExprContext.prototype.expr_coalesce = function() {
    return this.getTypedRuleContext(Expr_coalesceContext,0);
};

ExprContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterExpr(this);
	}
};

ExprContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitExpr(this);
	}
};




SyslParser.ExprContext = ExprContext;

SyslParser.prototype.expr = function() {

    var localctx = new ExprContext(this, this._ctx, this.state);
    this.enterRule(localctx, 306, SyslParser.RULE_expr);
    try {
        this.state = 1480;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case SyslParser.E_IF:
            this.enterOuterAlt(localctx, 1);
            this.state = 1476;
            localctx._expr_if_else = this.expr_if_else();
             localctx.nested = localctx._expr_if_else.nested
            break;
        case SyslParser.NativeDataTypes:
        case SyslParser.E_WHATEVER:
        case SyslParser.E_ARROW_RIGHT:
        case SyslParser.E_SQ_OPEN:
        case SyslParser.E_EMPTY_TUPLE:
        case SyslParser.E_CURLY_OPEN:
        case SyslParser.E_NULLSAFE_DOT:
        case SyslParser.E_OPEN_PAREN:
        case SyslParser.E_PLUS:
        case SyslParser.E_MINUS:
        case SyslParser.E_QN:
        case SyslParser.E_TILDE:
        case SyslParser.E_NOT:
        case SyslParser.E_TRUE:
        case SyslParser.E_FALSE:
        case SyslParser.E_NULL:
        case SyslParser.E_FUNC:
        case SyslParser.E_STRING_DBL:
        case SyslParser.E_STRING_SINGLE:
        case SyslParser.E_DECIMAL:
        case SyslParser.E_DIGITS:
        case SyslParser.E_Name:
        case SyslParser.E_DOT:
            this.enterOuterAlt(localctx, 2);
            this.state = 1479;
            this.expr_coalesce();
            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Expr_assignContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_expr_assign;
    this.nested = false;
    this._expr = null; // ExprContext
    return this;
}

Expr_assignContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Expr_assignContext.prototype.constructor = Expr_assignContext;

Expr_assignContext.prototype.E_EQ = function() {
    return this.getToken(SyslParser.E_EQ, 0);
};

Expr_assignContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Expr_assignContext.prototype.transform = function() {
    return this.getTypedRuleContext(TransformContext,0);
};

Expr_assignContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterExpr_assign(this);
	}
};

Expr_assignContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitExpr_assign(this);
	}
};




SyslParser.Expr_assignContext = Expr_assignContext;

SyslParser.prototype.expr_assign = function() {

    var localctx = new Expr_assignContext(this, this._ctx, this.state);
    this.enterRule(localctx, 308, SyslParser.RULE_expr_assign);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1482;
        this.match(SyslParser.E_EQ);
        this.state = 1489;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,157,this._ctx);
        switch(la_) {
        case 1:
            this.state = 1483;
            localctx._expr = this.expr();
             localctx.nested = localctx._expr.nested
            break;

        case 2:
            this.state = 1486;
            this.transform();
             localctx.nested = true
            break;

        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Expr_simple_assignContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_expr_simple_assign;
    this.nested = false;
    this._expr_assign = null; // Expr_assignContext
    return this;
}

Expr_simple_assignContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Expr_simple_assignContext.prototype.constructor = Expr_simple_assignContext;

Expr_simple_assignContext.prototype.E_Name = function() {
    return this.getToken(SyslParser.E_Name, 0);
};

Expr_simple_assignContext.prototype.expr_assign = function() {
    return this.getTypedRuleContext(Expr_assignContext,0);
};

Expr_simple_assignContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterExpr_simple_assign(this);
	}
};

Expr_simple_assignContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitExpr_simple_assign(this);
	}
};




SyslParser.Expr_simple_assignContext = Expr_simple_assignContext;

SyslParser.prototype.expr_simple_assign = function() {

    var localctx = new Expr_simple_assignContext(this, this._ctx, this.state);
    this.enterRule(localctx, 310, SyslParser.RULE_expr_simple_assign);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1491;
        this.match(SyslParser.E_Name);
        this.state = 1492;
        localctx._expr_assign = this.expr_assign();
        localctx.nested =  localctx._expr_assign.nested
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Expr_let_statementContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_expr_let_statement;
    this.nested = false;
    this._expr_assign = null; // Expr_assignContext
    return this;
}

Expr_let_statementContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Expr_let_statementContext.prototype.constructor = Expr_let_statementContext;

Expr_let_statementContext.prototype.E_LET = function() {
    return this.getToken(SyslParser.E_LET, 0);
};

Expr_let_statementContext.prototype.E_Name = function() {
    return this.getToken(SyslParser.E_Name, 0);
};

Expr_let_statementContext.prototype.expr_assign = function() {
    return this.getTypedRuleContext(Expr_assignContext,0);
};

Expr_let_statementContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterExpr_let_statement(this);
	}
};

Expr_let_statementContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitExpr_let_statement(this);
	}
};




SyslParser.Expr_let_statementContext = Expr_let_statementContext;

SyslParser.prototype.expr_let_statement = function() {

    var localctx = new Expr_let_statementContext(this, this._ctx, this.state);
    this.enterRule(localctx, 312, SyslParser.RULE_expr_let_statement);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1495;
        this.match(SyslParser.E_LET);
        this.state = 1496;
        this.match(SyslParser.E_Name);
        this.state = 1497;
        localctx._expr_assign = this.expr_assign();
        localctx.nested =  localctx._expr_assign.nested
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Expr_table_of_statementContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_expr_table_of_statement;
    this.nested = null
    this._expr_assign = null; // Expr_assignContext
    return this;
}

Expr_table_of_statementContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Expr_table_of_statementContext.prototype.constructor = Expr_table_of_statementContext;

Expr_table_of_statementContext.prototype.E_TABLE_OF = function() {
    return this.getToken(SyslParser.E_TABLE_OF, 0);
};

Expr_table_of_statementContext.prototype.E_Name = function() {
    return this.getToken(SyslParser.E_Name, 0);
};

Expr_table_of_statementContext.prototype.expr_assign = function() {
    return this.getTypedRuleContext(Expr_assignContext,0);
};

Expr_table_of_statementContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterExpr_table_of_statement(this);
	}
};

Expr_table_of_statementContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitExpr_table_of_statement(this);
	}
};




SyslParser.Expr_table_of_statementContext = Expr_table_of_statementContext;

SyslParser.prototype.expr_table_of_statement = function() {

    var localctx = new Expr_table_of_statementContext(this, this._ctx, this.state);
    this.enterRule(localctx, 314, SyslParser.RULE_expr_table_of_statement);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1500;
        this.match(SyslParser.E_TABLE_OF);
        this.state = 1501;
        this.match(SyslParser.E_Name);
        this.state = 1502;
        localctx._expr_assign = this.expr_assign();
        localctx.nested =  localctx._expr_assign.nested
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Expr_dot_assignContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_expr_dot_assign;
    return this;
}

Expr_dot_assignContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Expr_dot_assignContext.prototype.constructor = Expr_dot_assignContext;

Expr_dot_assignContext.prototype.E_DOT_NAME_NL = function() {
    return this.getToken(SyslParser.E_DOT_NAME_NL, 0);
};

Expr_dot_assignContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterExpr_dot_assign(this);
	}
};

Expr_dot_assignContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitExpr_dot_assign(this);
	}
};




SyslParser.Expr_dot_assignContext = Expr_dot_assignContext;

SyslParser.prototype.expr_dot_assign = function() {

    var localctx = new Expr_dot_assignContext(this, this._ctx, this.state);
    this.enterRule(localctx, 316, SyslParser.RULE_expr_dot_assign);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1505;
        this.match(SyslParser.E_DOT_NAME_NL);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Expr_statement_no_nlContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_expr_statement_no_nl;
    return this;
}

Expr_statement_no_nlContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Expr_statement_no_nlContext.prototype.constructor = Expr_statement_no_nlContext;

Expr_statement_no_nlContext.prototype.expr_dot_assign = function() {
    return this.getTypedRuleContext(Expr_dot_assignContext,0);
};

Expr_statement_no_nlContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterExpr_statement_no_nl(this);
	}
};

Expr_statement_no_nlContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitExpr_statement_no_nl(this);
	}
};




SyslParser.Expr_statement_no_nlContext = Expr_statement_no_nlContext;

SyslParser.prototype.expr_statement_no_nl = function() {

    var localctx = new Expr_statement_no_nlContext(this, this._ctx, this.state);
    this.enterRule(localctx, 318, SyslParser.RULE_expr_statement_no_nl);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1507;
        this.expr_dot_assign();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Expr_statementContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_expr_statement;
    this.nested = false;
    this._expr_let_statement = null; // Expr_let_statementContext
    this._expr_table_of_statement = null; // Expr_table_of_statementContext
    this._expr_simple_assign = null; // Expr_simple_assignContext
    return this;
}

Expr_statementContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Expr_statementContext.prototype.constructor = Expr_statementContext;

Expr_statementContext.prototype.expr_let_statement = function() {
    return this.getTypedRuleContext(Expr_let_statementContext,0);
};

Expr_statementContext.prototype.expr_table_of_statement = function() {
    return this.getTypedRuleContext(Expr_table_of_statementContext,0);
};

Expr_statementContext.prototype.expr_simple_assign = function() {
    return this.getTypedRuleContext(Expr_simple_assignContext,0);
};

Expr_statementContext.prototype.E_NL = function() {
    return this.getToken(SyslParser.E_NL, 0);
};

Expr_statementContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterExpr_statement(this);
	}
};

Expr_statementContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitExpr_statement(this);
	}
};




SyslParser.Expr_statementContext = Expr_statementContext;

SyslParser.prototype.expr_statement = function() {

    var localctx = new Expr_statementContext(this, this._ctx, this.state);
    this.enterRule(localctx, 320, SyslParser.RULE_expr_statement);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1518;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case SyslParser.E_LET:
            this.state = 1509;
            localctx._expr_let_statement = this.expr_let_statement();
            localctx.nested =  localctx._expr_let_statement.nested
            break;
        case SyslParser.E_TABLE_OF:
            this.state = 1512;
            localctx._expr_table_of_statement = this.expr_table_of_statement();
            localctx.nested =  localctx._expr_table_of_statement.nested
            break;
        case SyslParser.E_Name:
            this.state = 1515;
            localctx._expr_simple_assign = this.expr_simple_assign();
            localctx.nested =  localctx._expr_simple_assign.nested
            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
        this.state = 1522;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,159,this._ctx);
        switch(la_) {
        case 1:
            this.state = 1520;
            if (!( localctx.nested == true)) {
                throw new antlr4.error.FailedPredicateException(this, "$nested == true");
            }
            break;

        case 2:
            this.state = 1521;
            this.match(SyslParser.E_NL);
            break;

        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Expr_inject_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_expr_inject_stmt;
    return this;
}

Expr_inject_stmtContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Expr_inject_stmtContext.prototype.constructor = Expr_inject_stmtContext;

Expr_inject_stmtContext.prototype.expr_func = function() {
    return this.getTypedRuleContext(Expr_funcContext,0);
};

Expr_inject_stmtContext.prototype.E_DOT = function() {
    return this.getToken(SyslParser.E_DOT, 0);
};

Expr_inject_stmtContext.prototype.E_STAR = function() {
    return this.getToken(SyslParser.E_STAR, 0);
};

Expr_inject_stmtContext.prototype.E_NL = function() {
    return this.getToken(SyslParser.E_NL, 0);
};

Expr_inject_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterExpr_inject_stmt(this);
	}
};

Expr_inject_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitExpr_inject_stmt(this);
	}
};




SyslParser.Expr_inject_stmtContext = Expr_inject_stmtContext;

SyslParser.prototype.expr_inject_stmt = function() {

    var localctx = new Expr_inject_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 322, SyslParser.RULE_expr_inject_stmt);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1524;
        this.expr_func();
        this.state = 1525;
        this.match(SyslParser.E_DOT);
        this.state = 1526;
        this.match(SyslParser.E_STAR);
        this.state = 1527;
        this.match(SyslParser.E_NL);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Expr_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_expr_stmt;
    return this;
}

Expr_stmtContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Expr_stmtContext.prototype.constructor = Expr_stmtContext;

Expr_stmtContext.prototype.expr_statement_no_nl = function() {
    return this.getTypedRuleContext(Expr_statement_no_nlContext,0);
};

Expr_stmtContext.prototype.expr_statement = function() {
    return this.getTypedRuleContext(Expr_statementContext,0);
};

Expr_stmtContext.prototype.expr_inject_stmt = function() {
    return this.getTypedRuleContext(Expr_inject_stmtContext,0);
};

Expr_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterExpr_stmt(this);
	}
};

Expr_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitExpr_stmt(this);
	}
};




SyslParser.Expr_stmtContext = Expr_stmtContext;

SyslParser.prototype.expr_stmt = function() {

    var localctx = new Expr_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 324, SyslParser.RULE_expr_stmt);
    try {
        this.state = 1532;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,160,this._ctx);
        switch(la_) {
        case 1:
            this.enterOuterAlt(localctx, 1);
            this.state = 1529;
            this.expr_statement_no_nl();
            break;

        case 2:
            this.enterOuterAlt(localctx, 2);
            this.state = 1530;
            this.expr_statement();
            break;

        case 3:
            this.enterOuterAlt(localctx, 3);
            this.state = 1531;
            this.expr_inject_stmt();
            break;

        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Transform_return_typeContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_transform_return_type;
    return this;
}

Transform_return_typeContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Transform_return_typeContext.prototype.constructor = Transform_return_typeContext;

Transform_return_typeContext.prototype.set_of = function() {
    return this.getTypedRuleContext(Set_ofContext,0);
};

Transform_return_typeContext.prototype.sequence_of = function() {
    return this.getTypedRuleContext(Sequence_ofContext,0);
};

Transform_return_typeContext.prototype.view_type_spec = function() {
    return this.getTypedRuleContext(View_type_specContext,0);
};

Transform_return_typeContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterTransform_return_type(this);
	}
};

Transform_return_typeContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitTransform_return_type(this);
	}
};




SyslParser.Transform_return_typeContext = Transform_return_typeContext;

SyslParser.prototype.transform_return_type = function() {

    var localctx = new Transform_return_typeContext(this, this._ctx, this.state);
    this.enterRule(localctx, 326, SyslParser.RULE_transform_return_type);
    try {
        this.state = 1537;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,161,this._ctx);
        switch(la_) {
        case 1:
            this.enterOuterAlt(localctx, 1);
            this.state = 1534;
            this.set_of();
            break;

        case 2:
            this.enterOuterAlt(localctx, 2);
            this.state = 1535;
            this.sequence_of();
            break;

        case 3:
            this.enterOuterAlt(localctx, 3);
            this.state = 1536;
            this.view_type_spec();
            break;

        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function View_return_typeContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_view_return_type;
    return this;
}

View_return_typeContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
View_return_typeContext.prototype.constructor = View_return_typeContext;

View_return_typeContext.prototype.view_type_spec = function() {
    return this.getTypedRuleContext(View_type_specContext,0);
};

View_return_typeContext.prototype.QN = function() {
    return this.getToken(SyslParser.QN, 0);
};

View_return_typeContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterView_return_type(this);
	}
};

View_return_typeContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitView_return_type(this);
	}
};




SyslParser.View_return_typeContext = View_return_typeContext;

SyslParser.prototype.view_return_type = function() {

    var localctx = new View_return_typeContext(this, this._ctx, this.state);
    this.enterRule(localctx, 328, SyslParser.RULE_view_return_type);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1539;
        this.view_type_spec();
        this.state = 1541;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SyslParser.QN) {
            this.state = 1540;
            this.match(SyslParser.QN);
        }

    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Transform_scope_varContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_transform_scope_var;
    return this;
}

Transform_scope_varContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Transform_scope_varContext.prototype.constructor = Transform_scope_varContext;

Transform_scope_varContext.prototype.E_Name = function() {
    return this.getToken(SyslParser.E_Name, 0);
};

Transform_scope_varContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterTransform_scope_var(this);
	}
};

Transform_scope_varContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitTransform_scope_var(this);
	}
};




SyslParser.Transform_scope_varContext = Transform_scope_varContext;

SyslParser.prototype.transform_scope_var = function() {

    var localctx = new Transform_scope_varContext(this, this._ctx, this.state);
    this.enterRule(localctx, 330, SyslParser.RULE_transform_scope_var);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1543;
        this.match(SyslParser.E_Name);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Transform_argContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_transform_arg;
    return this;
}

Transform_argContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Transform_argContext.prototype.constructor = Transform_argContext;

Transform_argContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Transform_argContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterTransform_arg(this);
	}
};

Transform_argContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitTransform_arg(this);
	}
};




SyslParser.Transform_argContext = Transform_argContext;

SyslParser.prototype.transform_arg = function() {

    var localctx = new Transform_argContext(this, this._ctx, this.state);
    this.enterRule(localctx, 332, SyslParser.RULE_transform_arg);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1545;
        this.expr();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function TransformContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_transform;
    return this;
}

TransformContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
TransformContext.prototype.constructor = TransformContext;

TransformContext.prototype.E_ARROW_RIGHT = function() {
    return this.getToken(SyslParser.E_ARROW_RIGHT, 0);
};

TransformContext.prototype.E_OPEN_PAREN = function() {
    return this.getToken(SyslParser.E_OPEN_PAREN, 0);
};

TransformContext.prototype.E_COLON = function() {
    return this.getToken(SyslParser.E_COLON, 0);
};

TransformContext.prototype.E_NL = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SyslParser.E_NL);
    } else {
        return this.getToken(SyslParser.E_NL, i);
    }
};


TransformContext.prototype.INDENT = function() {
    return this.getToken(SyslParser.INDENT, 0);
};

TransformContext.prototype.DEDENT = function() {
    return this.getToken(SyslParser.DEDENT, 0);
};

TransformContext.prototype.E_CLOSE_PAREN = function() {
    return this.getToken(SyslParser.E_CLOSE_PAREN, 0);
};

TransformContext.prototype.transform_arg = function() {
    return this.getTypedRuleContext(Transform_argContext,0);
};

TransformContext.prototype.E_ANGLE_OPEN = function() {
    return this.getToken(SyslParser.E_ANGLE_OPEN, 0);
};

TransformContext.prototype.transform_return_type = function() {
    return this.getTypedRuleContext(Transform_return_typeContext,0);
};

TransformContext.prototype.E_ANGLE_CLOSE = function() {
    return this.getToken(SyslParser.E_ANGLE_CLOSE, 0);
};

TransformContext.prototype.transform_scope_var = function() {
    return this.getTypedRuleContext(Transform_scope_varContext,0);
};

TransformContext.prototype.expr_stmt = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Expr_stmtContext);
    } else {
        return this.getTypedRuleContext(Expr_stmtContext,i);
    }
};

TransformContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterTransform(this);
	}
};

TransformContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitTransform(this);
	}
};




SyslParser.TransformContext = TransformContext;

SyslParser.prototype.transform = function() {

    var localctx = new TransformContext(this, this._ctx, this.state);
    this.enterRule(localctx, 334, SyslParser.RULE_transform);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1548;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,163,this._ctx);
        if(la_===1) {
            this.state = 1547;
            this.transform_arg();

        }
        this.state = 1550;
        this.match(SyslParser.E_ARROW_RIGHT);
        this.state = 1555;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SyslParser.E_ANGLE_OPEN) {
            this.state = 1551;
            this.match(SyslParser.E_ANGLE_OPEN);
            this.state = 1552;
            this.transform_return_type();
            this.state = 1553;
            this.match(SyslParser.E_ANGLE_CLOSE);
        }

        this.state = 1557;
        this.match(SyslParser.E_OPEN_PAREN);
        this.state = 1559;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SyslParser.E_Name) {
            this.state = 1558;
            this.transform_scope_var();
        }

        this.state = 1561;
        this.match(SyslParser.E_COLON);
        this.state = 1562;
        this.match(SyslParser.E_NL);
        this.state = 1563;
        this.match(SyslParser.INDENT);
        this.state = 1565; 
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        do {
            this.state = 1564;
            this.expr_stmt();
            this.state = 1567; 
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        } while(_la===SyslParser.NativeDataTypes || _la===SyslParser.E_TABLE_OF || _la===SyslParser.E_LET || ((((_la - 132)) & ~0x1f) == 0 && ((1 << (_la - 132)) & ((1 << (SyslParser.E_FUNC - 132)) | (1 << (SyslParser.E_DOT_NAME_NL - 132)) | (1 << (SyslParser.E_Name - 132)))) !== 0));
        this.state = 1569;
        this.match(SyslParser.DEDENT);
        this.state = 1570;
        this.match(SyslParser.E_CLOSE_PAREN);
        this.state = 1571;
        this.match(SyslParser.E_NL);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Expr_blockContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_expr_block;
    return this;
}

Expr_blockContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Expr_blockContext.prototype.constructor = Expr_blockContext;

Expr_blockContext.prototype.INDENT = function() {
    return this.getToken(SyslParser.INDENT, 0);
};

Expr_blockContext.prototype.transform = function() {
    return this.getTypedRuleContext(TransformContext,0);
};

Expr_blockContext.prototype.DEDENT = function() {
    return this.getToken(SyslParser.DEDENT, 0);
};

Expr_blockContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterExpr_block(this);
	}
};

Expr_blockContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitExpr_block(this);
	}
};




SyslParser.Expr_blockContext = Expr_blockContext;

SyslParser.prototype.expr_block = function() {

    var localctx = new Expr_blockContext(this, this._ctx, this.state);
    this.enterRule(localctx, 336, SyslParser.RULE_expr_block);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1573;
        this.match(SyslParser.INDENT);
        this.state = 1574;
        this.transform();
        this.state = 1575;
        this.match(SyslParser.DEDENT);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function View_paramContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_view_param;
    return this;
}

View_paramContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
View_paramContext.prototype.constructor = View_paramContext;

View_paramContext.prototype.name_str = function() {
    return this.getTypedRuleContext(Name_strContext,0);
};

View_paramContext.prototype.LESS_COLON = function() {
    return this.getToken(SyslParser.LESS_COLON, 0);
};

View_paramContext.prototype.view_type_spec = function() {
    return this.getTypedRuleContext(View_type_specContext,0);
};

View_paramContext.prototype.QN = function() {
    return this.getToken(SyslParser.QN, 0);
};

View_paramContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterView_param(this);
	}
};

View_paramContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitView_param(this);
	}
};




SyslParser.View_paramContext = View_paramContext;

SyslParser.prototype.view_param = function() {

    var localctx = new View_paramContext(this, this._ctx, this.state);
    this.enterRule(localctx, 338, SyslParser.RULE_view_param);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1577;
        this.name_str();
        this.state = 1578;
        this.match(SyslParser.LESS_COLON);
        this.state = 1579;
        this.view_type_spec();
        this.state = 1581;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SyslParser.QN) {
            this.state = 1580;
            this.match(SyslParser.QN);
        }

    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function View_paramsContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_view_params;
    return this;
}

View_paramsContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
View_paramsContext.prototype.constructor = View_paramsContext;

View_paramsContext.prototype.view_param = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(View_paramContext);
    } else {
        return this.getTypedRuleContext(View_paramContext,i);
    }
};

View_paramsContext.prototype.COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SyslParser.COMMA);
    } else {
        return this.getToken(SyslParser.COMMA, i);
    }
};


View_paramsContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterView_params(this);
	}
};

View_paramsContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitView_params(this);
	}
};




SyslParser.View_paramsContext = View_paramsContext;

SyslParser.prototype.view_params = function() {

    var localctx = new View_paramsContext(this, this._ctx, this.state);
    this.enterRule(localctx, 340, SyslParser.RULE_view_params);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1583;
        this.view_param();
        this.state = 1588;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===SyslParser.COMMA) {
            this.state = 1584;
            this.match(SyslParser.COMMA);
            this.state = 1585;
            this.view_param();
            this.state = 1590;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Abstract_viewContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_abstract_view;
    return this;
}

Abstract_viewContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Abstract_viewContext.prototype.constructor = Abstract_viewContext;

Abstract_viewContext.prototype.ABSTRACT = function() {
    return this.getToken(SyslParser.ABSTRACT, 0);
};

Abstract_viewContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterAbstract_view(this);
	}
};

Abstract_viewContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitAbstract_view(this);
	}
};




SyslParser.Abstract_viewContext = Abstract_viewContext;

SyslParser.prototype.abstract_view = function() {

    var localctx = new Abstract_viewContext(this, this._ctx, this.state);
    this.enterRule(localctx, 342, SyslParser.RULE_abstract_view);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1591;
        this.match(SyslParser.ABSTRACT);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function ViewContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_view;
    this.abstractView = false;
    return this;
}

ViewContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
ViewContext.prototype.constructor = ViewContext;

ViewContext.prototype.VIEW = function() {
    return this.getToken(SyslParser.VIEW, 0);
};

ViewContext.prototype.name_str = function() {
    return this.getTypedRuleContext(Name_strContext,0);
};

ViewContext.prototype.OPEN_PAREN = function() {
    return this.getToken(SyslParser.OPEN_PAREN, 0);
};

ViewContext.prototype.view_params = function() {
    return this.getTypedRuleContext(View_paramsContext,0);
};

ViewContext.prototype.CLOSE_PAREN = function() {
    return this.getToken(SyslParser.CLOSE_PAREN, 0);
};

ViewContext.prototype.COLON = function() {
    return this.getToken(SyslParser.COLON, 0);
};

ViewContext.prototype.expr_block = function() {
    return this.getTypedRuleContext(Expr_blockContext,0);
};

ViewContext.prototype.abstract_view = function() {
    return this.getTypedRuleContext(Abstract_viewContext,0);
};

ViewContext.prototype.ARROW_RIGHT = function() {
    return this.getToken(SyslParser.ARROW_RIGHT, 0);
};

ViewContext.prototype.view_return_type = function() {
    return this.getTypedRuleContext(View_return_typeContext,0);
};

ViewContext.prototype.attribs_or_modifiers = function() {
    return this.getTypedRuleContext(Attribs_or_modifiersContext,0);
};

ViewContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterView(this);
	}
};

ViewContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitView(this);
	}
};




SyslParser.ViewContext = ViewContext;

SyslParser.prototype.view = function() {

    var localctx = new ViewContext(this, this._ctx, this.state);
    this.enterRule(localctx, 344, SyslParser.RULE_view);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1593;
        this.match(SyslParser.VIEW);
        this.state = 1594;
        this.name_str();
        this.state = 1595;
        this.match(SyslParser.OPEN_PAREN);
        this.state = 1596;
        this.view_params();
        this.state = 1597;
        this.match(SyslParser.CLOSE_PAREN);
        this.state = 1600;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SyslParser.ARROW_RIGHT) {
            this.state = 1598;
            this.match(SyslParser.ARROW_RIGHT);
            this.state = 1599;
            this.view_return_type();
        }

        this.state = 1610;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case SyslParser.COLON:
        case SyslParser.SQ_OPEN:
            this.state = 1603;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===SyslParser.SQ_OPEN) {
                this.state = 1602;
                this.attribs_or_modifiers();
            }

            this.state = 1605;
            this.match(SyslParser.COLON);
            this.state = 1606;
            this.expr_block();
            break;
        case SyslParser.ABSTRACT:
            this.state = 1607;
            this.abstract_view();
            localctx.abstractView = true
            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function AliasContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_alias;
    return this;
}

AliasContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
AliasContext.prototype.constructor = AliasContext;

AliasContext.prototype.ALIAS = function() {
    return this.getToken(SyslParser.ALIAS, 0);
};

AliasContext.prototype.name_str = function() {
    return this.getTypedRuleContext(Name_strContext,0);
};

AliasContext.prototype.COLON = function() {
    return this.getToken(SyslParser.COLON, 0);
};

AliasContext.prototype.INDENT = function() {
    return this.getToken(SyslParser.INDENT, 0);
};

AliasContext.prototype.DEDENT = function() {
    return this.getToken(SyslParser.DEDENT, 0);
};

AliasContext.prototype.types = function() {
    return this.getTypedRuleContext(TypesContext,0);
};

AliasContext.prototype.collection_type = function() {
    return this.getTypedRuleContext(Collection_typeContext,0);
};

AliasContext.prototype.attribs_or_modifiers = function() {
    return this.getTypedRuleContext(Attribs_or_modifiersContext,0);
};

AliasContext.prototype.annotation = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(AnnotationContext);
    } else {
        return this.getTypedRuleContext(AnnotationContext,i);
    }
};

AliasContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterAlias(this);
	}
};

AliasContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitAlias(this);
	}
};




SyslParser.AliasContext = AliasContext;

SyslParser.prototype.alias = function() {

    var localctx = new AliasContext(this, this._ctx, this.state);
    this.enterRule(localctx, 346, SyslParser.RULE_alias);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1612;
        this.match(SyslParser.ALIAS);
        this.state = 1613;
        this.name_str();
        this.state = 1615;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SyslParser.SQ_OPEN) {
            this.state = 1614;
            this.attribs_or_modifiers();
        }

        this.state = 1617;
        this.match(SyslParser.COLON);
        this.state = 1618;
        this.match(SyslParser.INDENT);
        this.state = 1622;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===SyslParser.AT) {
            this.state = 1619;
            this.annotation();
            this.state = 1624;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
        this.state = 1627;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case SyslParser.NativeDataTypes:
        case SyslParser.TEXT_LINE:
        case SyslParser.Name:
        case SyslParser.E_Name:
            this.state = 1625;
            this.types();
            break;
        case SyslParser.SEQUENCE_OF:
        case SyslParser.SET_OF:
        case SyslParser.E_SEQUENCE_OF:
        case SyslParser.E_SET_OF:
            this.state = 1626;
            this.collection_type();
            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
        this.state = 1629;
        this.match(SyslParser.DEDENT);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function App_declContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_app_decl;
    this.check = false;
    this._view = null; // ViewContext
    return this;
}

App_declContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
App_declContext.prototype.constructor = App_declContext;

App_declContext.prototype.INDENT = function() {
    return this.getToken(SyslParser.INDENT, 0);
};

App_declContext.prototype.DEDENT = function() {
    return this.getToken(SyslParser.DEDENT, 0);
};

App_declContext.prototype.alias = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(AliasContext);
    } else {
        return this.getTypedRuleContext(AliasContext,i);
    }
};

App_declContext.prototype.annotation = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(AnnotationContext);
    } else {
        return this.getTypedRuleContext(AnnotationContext,i);
    }
};

App_declContext.prototype.collector = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(CollectorContext);
    } else {
        return this.getTypedRuleContext(CollectorContext,i);
    }
};

App_declContext.prototype.event = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(EventContext);
    } else {
        return this.getTypedRuleContext(EventContext,i);
    }
};

App_declContext.prototype.facade = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(FacadeContext);
    } else {
        return this.getTypedRuleContext(FacadeContext,i);
    }
};

App_declContext.prototype.mixin = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(MixinContext);
    } else {
        return this.getTypedRuleContext(MixinContext,i);
    }
};

App_declContext.prototype.rest_endpoint = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Rest_endpointContext);
    } else {
        return this.getTypedRuleContext(Rest_endpointContext,i);
    }
};

App_declContext.prototype.simple_endpoint = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Simple_endpointContext);
    } else {
        return this.getTypedRuleContext(Simple_endpointContext,i);
    }
};

App_declContext.prototype.subscribe = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(SubscribeContext);
    } else {
        return this.getTypedRuleContext(SubscribeContext,i);
    }
};

App_declContext.prototype.SYSL_COMMENT = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SyslParser.SYSL_COMMENT);
    } else {
        return this.getToken(SyslParser.SYSL_COMMENT, i);
    }
};


App_declContext.prototype.union = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(UnionContext);
    } else {
        return this.getTypedRuleContext(UnionContext,i);
    }
};

App_declContext.prototype.view = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(ViewContext);
    } else {
        return this.getTypedRuleContext(ViewContext,i);
    }
};

App_declContext.prototype.table = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(TableContext);
    } else {
        return this.getTypedRuleContext(TableContext,i);
    }
};

App_declContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterApp_decl(this);
	}
};

App_declContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitApp_decl(this);
	}
};




SyslParser.App_declContext = App_declContext;

SyslParser.prototype.app_decl = function() {

    var localctx = new App_declContext(this, this._ctx, this.state);
    this.enterRule(localctx, 348, SyslParser.RULE_app_decl);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1631;
        this.match(SyslParser.INDENT);
        this.state = 1647; 
        this._errHandler.sync(this);
        var _alt = 1;
        do {
        	switch (_alt) {
        	case 1:
        		this.state = 1647;
        		this._errHandler.sync(this);
        		var la_ = this._interp.adaptivePredict(this._input,175,this._ctx);
        		switch(la_) {
        		case 1:
        		    this.state = 1632;
        		    this.alias();
        		    break;

        		case 2:
        		    this.state = 1633;
        		    this.annotation();
        		    break;

        		case 3:
        		    this.state = 1634;
        		    this.collector();
        		    break;

        		case 4:
        		    this.state = 1635;
        		    this.event();
        		    break;

        		case 5:
        		    this.state = 1636;
        		    this.facade();
        		    break;

        		case 6:
        		    this.state = 1637;
        		    this.mixin();
        		    break;

        		case 7:
        		    this.state = 1638;
        		    this.rest_endpoint();
        		    break;

        		case 8:
        		    this.state = 1639;
        		    this.simple_endpoint();
        		    break;

        		case 9:
        		    this.state = 1640;
        		    this.subscribe();
        		    break;

        		case 10:
        		    this.state = 1641;
        		    this.match(SyslParser.SYSL_COMMENT);
        		    break;

        		case 11:
        		    this.state = 1642;
        		    this.union();
        		    break;

        		case 12:
        		    this.state = 1643;
        		    localctx._view = this.view();
        		     localctx.check =  localctx._view.abstractView
        		    break;

        		case 13:
        		    this.state = 1646;
        		    this.table();
        		    break;

        		}
        		break;
        	default:
        		throw new antlr4.error.NoViableAltException(this);
        	}
        	this.state = 1649; 
        	this._errHandler.sync(this);
        	_alt = this._interp.adaptivePredict(this._input,176, this._ctx);
        } while ( _alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER );
        this.state = 1653;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,177,this._ctx);
        switch(la_) {
        case 1:
            this.state = 1651;
            if (!( localctx.check)) {
                throw new antlr4.error.FailedPredicateException(this, "$check");
            }
            break;

        case 2:
            this.state = 1652;
            this.match(SyslParser.DEDENT);
            break;

        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function ApplicationContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_application;
    return this;
}

ApplicationContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
ApplicationContext.prototype.constructor = ApplicationContext;

ApplicationContext.prototype.name_with_attribs = function() {
    return this.getTypedRuleContext(Name_with_attribsContext,0);
};

ApplicationContext.prototype.COLON = function() {
    return this.getToken(SyslParser.COLON, 0);
};

ApplicationContext.prototype.app_decl = function() {
    return this.getTypedRuleContext(App_declContext,0);
};

ApplicationContext.prototype.SYSL_COMMENT = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SyslParser.SYSL_COMMENT);
    } else {
        return this.getToken(SyslParser.SYSL_COMMENT, i);
    }
};


ApplicationContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterApplication(this);
	}
};

ApplicationContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitApplication(this);
	}
};




SyslParser.ApplicationContext = ApplicationContext;

SyslParser.prototype.application = function() {

    var localctx = new ApplicationContext(this, this._ctx, this.state);
    this.enterRule(localctx, 350, SyslParser.RULE_application);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1658;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===SyslParser.SYSL_COMMENT) {
            this.state = 1655;
            this.match(SyslParser.SYSL_COMMENT);
            this.state = 1660;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
        this.state = 1661;
        this.name_with_attribs();
        this.state = 1662;
        this.match(SyslParser.COLON);
        this.state = 1663;
        this.app_decl();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function PathContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_path;
    return this;
}

PathContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
PathContext.prototype.constructor = PathContext;

PathContext.prototype.Name = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SyslParser.Name);
    } else {
        return this.getToken(SyslParser.Name, i);
    }
};


PathContext.prototype.FORWARD_SLASH = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SyslParser.FORWARD_SLASH);
    } else {
        return this.getToken(SyslParser.FORWARD_SLASH, i);
    }
};


PathContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterPath(this);
	}
};

PathContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitPath(this);
	}
};




SyslParser.PathContext = PathContext;

SyslParser.prototype.path = function() {

    var localctx = new PathContext(this, this._ctx, this.state);
    this.enterRule(localctx, 352, SyslParser.RULE_path);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1666;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SyslParser.FORWARD_SLASH) {
            this.state = 1665;
            this.match(SyslParser.FORWARD_SLASH);
        }

        this.state = 1668;
        this.match(SyslParser.Name);
        this.state = 1673;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===SyslParser.FORWARD_SLASH) {
            this.state = 1669;
            this.match(SyslParser.FORWARD_SLASH);
            this.state = 1670;
            this.match(SyslParser.Name);
            this.state = 1675;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Import_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_import_stmt;
    return this;
}

Import_stmtContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Import_stmtContext.prototype.constructor = Import_stmtContext;

Import_stmtContext.prototype.IMPORT = function() {
    return this.getToken(SyslParser.IMPORT, 0);
};

Import_stmtContext.prototype.SYSL_COMMENT = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SyslParser.SYSL_COMMENT);
    } else {
        return this.getToken(SyslParser.SYSL_COMMENT, i);
    }
};


Import_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterImport_stmt(this);
	}
};

Import_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitImport_stmt(this);
	}
};




SyslParser.Import_stmtContext = Import_stmtContext;

SyslParser.prototype.import_stmt = function() {

    var localctx = new Import_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 354, SyslParser.RULE_import_stmt);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1676;
        this.match(SyslParser.IMPORT);
        this.state = 1680;
        this._errHandler.sync(this);
        var _alt = this._interp.adaptivePredict(this._input,181,this._ctx)
        while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
            if(_alt===1) {
                this.state = 1677;
                this.match(SyslParser.SYSL_COMMENT); 
            }
            this.state = 1682;
            this._errHandler.sync(this);
            _alt = this._interp.adaptivePredict(this._input,181,this._ctx);
        }

    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Imports_declContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_imports_decl;
    return this;
}

Imports_declContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Imports_declContext.prototype.constructor = Imports_declContext;

Imports_declContext.prototype.import_stmt = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Import_stmtContext);
    } else {
        return this.getTypedRuleContext(Import_stmtContext,i);
    }
};

Imports_declContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterImports_decl(this);
	}
};

Imports_declContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitImports_decl(this);
	}
};




SyslParser.Imports_declContext = Imports_declContext;

SyslParser.prototype.imports_decl = function() {

    var localctx = new Imports_declContext(this, this._ctx, this.state);
    this.enterRule(localctx, 356, SyslParser.RULE_imports_decl);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1684; 
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        do {
            this.state = 1683;
            this.import_stmt();
            this.state = 1686; 
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        } while(_la===SyslParser.IMPORT);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};

function Sysl_fileContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SyslParser.RULE_sysl_file;
    return this;
}

Sysl_fileContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Sysl_fileContext.prototype.constructor = Sysl_fileContext;

Sysl_fileContext.prototype.EOF = function() {
    return this.getToken(SyslParser.EOF, 0);
};

Sysl_fileContext.prototype.imports_decl = function() {
    return this.getTypedRuleContext(Imports_declContext,0);
};

Sysl_fileContext.prototype.application = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(ApplicationContext);
    } else {
        return this.getTypedRuleContext(ApplicationContext,i);
    }
};

Sysl_fileContext.prototype.enterRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.enterSysl_file(this);
	}
};

Sysl_fileContext.prototype.exitRule = function(listener) {
    if(listener instanceof SyslParserListener ) {
        listener.exitSysl_file(this);
	}
};




SyslParser.Sysl_fileContext = Sysl_fileContext;

SyslParser.prototype.sysl_file = function() {

    var localctx = new Sysl_fileContext(this, this._ctx, this.state);
    this.enterRule(localctx, 358, SyslParser.RULE_sysl_file);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1689;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SyslParser.IMPORT) {
            this.state = 1688;
            this.imports_decl();
        }

        this.state = 1692; 
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        do {
            this.state = 1691;
            this.application();
            this.state = 1694; 
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        } while(((((_la - 59)) & ~0x1f) == 0 && ((1 << (_la - 59)) & ((1 << (SyslParser.SYSL_COMMENT - 59)) | (1 << (SyslParser.TEXT_LINE - 59)) | (1 << (SyslParser.Name - 59)))) !== 0) || _la===SyslParser.E_Name);
        this.state = 1696;
        this.match(SyslParser.EOF);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


SyslParser.prototype.sempred = function(localctx, ruleIndex, predIndex) {
	switch(ruleIndex) {
	case 148:
			return this.cond_block_sempred(localctx, predIndex);
	case 149:
			return this.final_else_sempred(localctx, predIndex);
	case 160:
			return this.expr_statement_sempred(localctx, predIndex);
	case 174:
			return this.app_decl_sempred(localctx, predIndex);
    default:
        throw "No predicate with index:" + ruleIndex;
   }
};

SyslParser.prototype.cond_block_sempred = function(localctx, predIndex) {
	switch(predIndex) {
		case 0:
			return localctx._else_block_stmt.nested == true;
		default:
			throw "No predicate with index:" + predIndex;
	}
};

SyslParser.prototype.final_else_sempred = function(localctx, predIndex) {
	switch(predIndex) {
		case 1:
			return localctx._expr.nested == true;
		default:
			throw "No predicate with index:" + predIndex;
	}
};

SyslParser.prototype.expr_statement_sempred = function(localctx, predIndex) {
	switch(predIndex) {
		case 2:
			return localctx.nested == true;
		default:
			throw "No predicate with index:" + predIndex;
	}
};

SyslParser.prototype.app_decl_sempred = function(localctx, predIndex) {
	switch(predIndex) {
		case 3:
			return localctx.check;
		default:
			throw "No predicate with index:" + predIndex;
	}
};


exports.SyslParser = SyslParser;
