univac
Version:
Generate AST of lots of common programming languages using antlr4. JavaScript API and CLI tool.
948 lines (881 loc) • 207 kB
JavaScript
// @ts-nocheck
// Generated from ANTLRv4Parser.g4 by ANTLR 4.7.2
// jshint ignore: start
var antlr4 = require('antlr4/index');
var ANTLRv4ParserListener = require('./ANTLRv4ParserListener').ANTLRv4ParserListener;
var grammarFileName = "ANTLRv4Parser.g4";
var serializedATN = ["\u0003\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964",
"\u0003?\u0286\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\u00042\t2\u0004",
"3\t3\u00044\t4\u00045\t5\u00046\t6\u00047\t7\u00048\t8\u00049\t9\u0004",
":\t:\u0004;\t;\u0004<\t<\u0004=\t=\u0004>\t>\u0004?\t?\u0004@\t@\u0004",
"A\tA\u0003\u0002\u0007\u0002\u0084\n\u0002\f\u0002\u000e\u0002\u0087",
"\u000b\u0002\u0003\u0002\u0003\u0002\u0007\u0002\u008b\n\u0002\f\u0002",
"\u000e\u0002\u008e\u000b\u0002\u0003\u0002\u0003\u0002\u0007\u0002\u0092",
"\n\u0002\f\u0002\u000e\u0002\u0095\u000b\u0002\u0003\u0002\u0003\u0002",
"\u0003\u0003\u0003\u0003\u0003\u0003\u0003\u0003\u0003\u0004\u0003\u0004",
"\u0003\u0004\u0003\u0004\u0003\u0004\u0005\u0004\u00a2\n\u0004\u0003",
"\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0005\u0005\u00a9",
"\n\u0005\u0003\u0006\u0003\u0006\u0003\u0006\u0003\u0006\u0003\u0006",
"\u0007\u0006\u00b0\n\u0006\f\u0006\u000e\u0006\u00b3\u000b\u0006\u0003",
"\u0006\u0003\u0006\u0003\u0007\u0003\u0007\u0003\u0007\u0003\u0007\u0003",
"\b\u0003\b\u0003\b\u0007\b\u00be\n\b\f\b\u000e\b\u00c1\u000b\b\u0003",
"\b\u0003\b\u0003\b\u0005\b\u00c6\n\b\u0003\t\u0003\t\u0003\t\u0003\t",
"\u0007\t\u00cc\n\t\f\t\u000e\t\u00cf\u000b\t\u0003\t\u0003\t\u0003\n",
"\u0003\n\u0003\n\u0003\n\u0003\n\u0005\n\u00d8\n\n\u0003\u000b\u0003",
"\u000b\u0003\u000b\u0005\u000b\u00dd\n\u000b\u0003\u000b\u0003\u000b",
"\u0003\f\u0003\f\u0003\f\u0005\f\u00e4\n\f\u0003\f\u0003\f\u0003\r\u0003",
"\r\u0003\r\u0007\r\u00eb\n\r\f\r\u000e\r\u00ee\u000b\r\u0003\r\u0005",
"\r\u00f1\n\r\u0003\u000e\u0003\u000e\u0003\u000e\u0003\u000e\u0005\u000e",
"\u00f7\n\u000e\u0003\u000e\u0003\u000e\u0003\u000e\u0003\u000f\u0003",
"\u000f\u0003\u000f\u0005\u000f\u00ff\n\u000f\u0003\u0010\u0003\u0010",
"\u0007\u0010\u0103\n\u0010\f\u0010\u000e\u0010\u0106\u000b\u0010\u0003",
"\u0010\u0003\u0010\u0003\u0011\u0003\u0011\u0007\u0011\u010c\n\u0011",
"\f\u0011\u000e\u0011\u010f\u000b\u0011\u0003\u0011\u0003\u0011\u0003",
"\u0012\u0003\u0012\u0003\u0012\u0003\u0012\u0007\u0012\u0117\n\u0012",
"\f\u0012\u000e\u0012\u011a\u000b\u0012\u0003\u0013\u0007\u0013\u011d",
"\n\u0013\f\u0013\u000e\u0013\u0120\u000b\u0013\u0003\u0014\u0003\u0014",
"\u0005\u0014\u0124\n\u0014\u0003\u0015\u0007\u0015\u0127\n\u0015\f\u0015",
"\u000e\u0015\u012a\u000b\u0015\u0003\u0015\u0005\u0015\u012d\n\u0015",
"\u0003\u0015\u0003\u0015\u0005\u0015\u0131\n\u0015\u0003\u0015\u0005",
"\u0015\u0134\n\u0015\u0003\u0015\u0005\u0015\u0137\n\u0015\u0003\u0015",
"\u0005\u0015\u013a\n\u0015\u0003\u0015\u0007\u0015\u013d\n\u0015\f\u0015",
"\u000e\u0015\u0140\u000b\u0015\u0003\u0015\u0003\u0015\u0003\u0015\u0003",
"\u0015\u0003\u0015\u0003\u0016\u0007\u0016\u0148\n\u0016\f\u0016\u000e",
"\u0016\u014b\u000b\u0016\u0003\u0016\u0005\u0016\u014e\n\u0016\u0003",
"\u0017\u0003\u0017\u0003\u0017\u0003\u0017\u0003\u0018\u0003\u0018\u0003",
"\u0018\u0003\u0019\u0003\u0019\u0005\u0019\u0159\n\u0019\u0003\u001a",
"\u0003\u001a\u0003\u001a\u0003\u001b\u0003\u001b\u0003\u001b\u0003\u001b",
"\u0007\u001b\u0162\n\u001b\f\u001b\u000e\u001b\u0165\u000b\u001b\u0003",
"\u001c\u0003\u001c\u0003\u001c\u0003\u001d\u0003\u001d\u0003\u001d\u0003",
"\u001d\u0003\u001e\u0006\u001e\u016f\n\u001e\r\u001e\u000e\u001e\u0170",
"\u0003\u001f\u0003\u001f\u0003 \u0003 \u0003!\u0003!\u0003!\u0007!\u017a",
"\n!\f!\u000e!\u017d\u000b!\u0003\"\u0003\"\u0003\"\u0005\"\u0182\n\"",
"\u0003#\u0007#\u0185\n#\f#\u000e#\u0188\u000b#\u0003#\u0005#\u018b\n",
"#\u0003#\u0003#\u0003#\u0003#\u0003#\u0003$\u0003$\u0003%\u0003%\u0003",
"%\u0007%\u0197\n%\f%\u000e%\u019a\u000b%\u0003&\u0003&\u0005&\u019e",
"\n&\u0003&\u0005&\u01a1\n&\u0003\'\u0006\'\u01a4\n\'\r\'\u000e\'\u01a5",
"\u0003(\u0003(\u0005(\u01aa\n(\u0003(\u0003(\u0005(\u01ae\n(\u0003(",
"\u0003(\u0005(\u01b2\n(\u0003(\u0003(\u0005(\u01b6\n(\u0005(\u01b8\n",
"(\u0003)\u0003)\u0003)\u0003)\u0005)\u01be\n)\u0003*\u0003*\u0003*\u0003",
"*\u0003+\u0003+\u0003+\u0003+\u0007+\u01c8\n+\f+\u000e+\u01cb\u000b",
"+\u0003,\u0003,\u0003,\u0003,\u0003,\u0003,\u0005,\u01d3\n,\u0003-\u0003",
"-\u0005-\u01d7\n-\u0003.\u0003.\u0005.\u01db\n.\u0003/\u0003/\u0003",
"/\u0007/\u01e0\n/\f/\u000e/\u01e3\u000b/\u00030\u00050\u01e6\n0\u0003",
"0\u00060\u01e9\n0\r0\u000e0\u01ea\u00030\u00050\u01ee\n0\u00031\u0003",
"1\u00031\u00051\u01f3\n1\u00031\u00031\u00031\u00051\u01f8\n1\u0003",
"1\u00031\u00031\u00051\u01fd\n1\u00051\u01ff\n1\u00032\u00032\u0003",
"2\u00032\u00052\u0205\n2\u00033\u00033\u00053\u0209\n3\u00034\u0003",
"4\u00035\u00035\u00055\u020f\n5\u00035\u00035\u00055\u0213\n5\u0003",
"5\u00035\u00055\u0217\n5\u00055\u0219\n5\u00036\u00036\u00036\u0003",
"6\u00036\u00036\u00056\u0221\n6\u00056\u0223\n6\u00037\u00037\u0003",
"7\u00037\u00037\u00057\u022a\n7\u00057\u022c\n7\u00038\u00038\u0003",
"8\u00038\u00058\u0232\n8\u00039\u00039\u00039\u00039\u00079\u0238\n",
"9\f9\u000e9\u023b\u000b9\u00039\u00039\u0003:\u0003:\u0005:\u0241\n",
":\u0003:\u0003:\u0005:\u0245\n:\u0003:\u0003:\u0005:\u0249\n:\u0003",
";\u0003;\u0005;\u024d\n;\u0003;\u0007;\u0250\n;\f;\u000e;\u0253\u000b",
";\u0003;\u0005;\u0256\n;\u0003;\u0003;\u0003;\u0003<\u0003<\u0005<\u025d",
"\n<\u0003<\u0005<\u0260\n<\u0003=\u0003=\u0003=\u0003=\u0003>\u0003",
">\u0005>\u0268\n>\u0003>\u0003>\u0005>\u026c\n>\u0005>\u026e\n>\u0003",
"?\u0003?\u0003?\u0003?\u0007?\u0274\n?\f?\u000e?\u0277\u000b?\u0003",
"?\u0003?\u0003@\u0003@\u0003@\u0003@\u0003@\u0005@\u0280\n@\u0005@\u0282",
"\n@\u0003A\u0003A\u0003A\u0002\u0002B\u0002\u0004\u0006\b\n\f\u000e",
"\u0010\u0012\u0014\u0016\u0018\u001a\u001c\u001e \"$&(*,.02468:<>@B",
"DFHJLNPRTVXZ\\^`bdfhjlnprtvxz|~\u0080\u0002\u0005\u0004\u0002\u0012",
"\u0012\u0016\u0018\u0004\u0002**--\u0003\u0002\u0003\u0004\u0002\u02ad",
"\u0002\u0085\u0003\u0002\u0002\u0002\u0004\u0098\u0003\u0002\u0002\u0002",
"\u0006\u00a1\u0003\u0002\u0002\u0002\b\u00a8\u0003\u0002\u0002\u0002",
"\n\u00aa\u0003\u0002\u0002\u0002\f\u00b6\u0003\u0002\u0002\u0002\u000e",
"\u00c5\u0003\u0002\u0002\u0002\u0010\u00c7\u0003\u0002\u0002\u0002\u0012",
"\u00d7\u0003\u0002\u0002\u0002\u0014\u00d9\u0003\u0002\u0002\u0002\u0016",
"\u00e0\u0003\u0002\u0002\u0002\u0018\u00e7\u0003\u0002\u0002\u0002\u001a",
"\u00f2\u0003\u0002\u0002\u0002\u001c\u00fe\u0003\u0002\u0002\u0002\u001e",
"\u0100\u0003\u0002\u0002\u0002 \u0109\u0003\u0002\u0002\u0002\"\u0112",
"\u0003\u0002\u0002\u0002$\u011e\u0003\u0002\u0002\u0002&\u0123\u0003",
"\u0002\u0002\u0002(\u0128\u0003\u0002\u0002\u0002*\u0149\u0003\u0002",
"\u0002\u0002,\u014f\u0003\u0002\u0002\u0002.\u0153\u0003\u0002\u0002",
"\u00020\u0158\u0003\u0002\u0002\u00022\u015a\u0003\u0002\u0002\u0002",
"4\u015d\u0003\u0002\u0002\u00026\u0166\u0003\u0002\u0002\u00028\u0169",
"\u0003\u0002\u0002\u0002:\u016e\u0003\u0002\u0002\u0002<\u0172\u0003",
"\u0002\u0002\u0002>\u0174\u0003\u0002\u0002\u0002@\u0176\u0003\u0002",
"\u0002\u0002B\u017e\u0003\u0002\u0002\u0002D\u0186\u0003\u0002\u0002",
"\u0002F\u0191\u0003\u0002\u0002\u0002H\u0193\u0003\u0002\u0002\u0002",
"J\u01a0\u0003\u0002\u0002\u0002L\u01a3\u0003\u0002\u0002\u0002N\u01b7",
"\u0003\u0002\u0002\u0002P\u01b9\u0003\u0002\u0002\u0002R\u01bf\u0003",
"\u0002\u0002\u0002T\u01c3\u0003\u0002\u0002\u0002V\u01d2\u0003\u0002",
"\u0002\u0002X\u01d6\u0003\u0002\u0002\u0002Z\u01da\u0003\u0002\u0002",
"\u0002\\\u01dc\u0003\u0002\u0002\u0002^\u01ed\u0003\u0002\u0002\u0002",
"`\u01fe\u0003\u0002\u0002\u0002b\u0200\u0003\u0002\u0002\u0002d\u0206",
"\u0003\u0002\u0002\u0002f\u020a\u0003\u0002\u0002\u0002h\u0218\u0003",
"\u0002\u0002\u0002j\u0222\u0003\u0002\u0002\u0002l\u022b\u0003\u0002",
"\u0002\u0002n\u0231\u0003\u0002\u0002\u0002p\u0233\u0003\u0002\u0002",
"\u0002r\u0248\u0003\u0002\u0002\u0002t\u024a\u0003\u0002\u0002\u0002",
"v\u025a\u0003\u0002\u0002\u0002x\u0261\u0003\u0002\u0002\u0002z\u026d",
"\u0003\u0002\u0002\u0002|\u026f\u0003\u0002\u0002\u0002~\u0281\u0003",
"\u0002\u0002\u0002\u0080\u0283\u0003\u0002\u0002\u0002\u0082\u0084\u0007",
"\u0006\u0002\u0002\u0083\u0082\u0003\u0002\u0002\u0002\u0084\u0087\u0003",
"\u0002\u0002\u0002\u0085\u0083\u0003\u0002\u0002\u0002\u0085\u0086\u0003",
"\u0002\u0002\u0002\u0086\u0088\u0003\u0002\u0002\u0002\u0087\u0085\u0003",
"\u0002\u0002\u0002\u0088\u008c\u0005\u0004\u0003\u0002\u0089\u008b\u0005",
"\b\u0005\u0002\u008a\u0089\u0003\u0002\u0002\u0002\u008b\u008e\u0003",
"\u0002\u0002\u0002\u008c\u008a\u0003\u0002\u0002\u0002\u008c\u008d\u0003",
"\u0002\u0002\u0002\u008d\u008f\u0003\u0002\u0002\u0002\u008e\u008c\u0003",
"\u0002\u0002\u0002\u008f\u0093\u0005$\u0013\u0002\u0090\u0092\u0005",
"\"\u0012\u0002\u0091\u0090\u0003\u0002\u0002\u0002\u0092\u0095\u0003",
"\u0002\u0002\u0002\u0093\u0091\u0003\u0002\u0002\u0002\u0093\u0094\u0003",
"\u0002\u0002\u0002\u0094\u0096\u0003\u0002\u0002\u0002\u0095\u0093\u0003",
"\u0002\u0002\u0002\u0096\u0097\u0007\u0002\u0002\u0003\u0097\u0003\u0003",
"\u0002\u0002\u0002\u0098\u0099\u0005\u0006\u0004\u0002\u0099\u009a\u0005",
"\u0080A\u0002\u009a\u009b\u0007\"\u0002\u0002\u009b\u0005\u0003\u0002",
"\u0002\u0002\u009c\u009d\u0007\u0013\u0002\u0002\u009d\u00a2\u0007\u0015",
"\u0002\u0002\u009e\u009f\u0007\u0014\u0002\u0002\u009f\u00a2\u0007\u0015",
"\u0002\u0002\u00a0\u00a2\u0007\u0015\u0002\u0002\u00a1\u009c\u0003\u0002",
"\u0002\u0002\u00a1\u009e\u0003\u0002\u0002\u0002\u00a1\u00a0\u0003\u0002",
"\u0002\u0002\u00a2\u0007\u0003\u0002\u0002\u0002\u00a3\u00a9\u0005\n",
"\u0006\u0002\u00a4\u00a9\u0005\u0010\t\u0002\u00a5\u00a9\u0005\u0014",
"\u000b\u0002\u00a6\u00a9\u0005\u0016\f\u0002\u00a7\u00a9\u0005\u001a",
"\u000e\u0002\u00a8\u00a3\u0003\u0002\u0002\u0002\u00a8\u00a4\u0003\u0002",
"\u0002\u0002\u00a8\u00a5\u0003\u0002\u0002\u0002\u00a8\u00a6\u0003\u0002",
"\u0002\u0002\u00a8\u00a7\u0003\u0002\u0002\u0002\u00a9\t\u0003\u0002",
"\u0002\u0002\u00aa\u00ab\u0007\u000e\u0002\u0002\u00ab\u00b1\u0007%",
"\u0002\u0002\u00ac\u00ad\u0005\f\u0007\u0002\u00ad\u00ae\u0007\"\u0002",
"\u0002\u00ae\u00b0\u0003\u0002\u0002\u0002\u00af\u00ac\u0003\u0002\u0002",
"\u0002\u00b0\u00b3\u0003\u0002\u0002\u0002\u00b1\u00af\u0003\u0002\u0002",
"\u0002\u00b1\u00b2\u0003\u0002\u0002\u0002\u00b2\u00b4\u0003\u0002\u0002",
"\u0002\u00b3\u00b1\u0003\u0002\u0002\u0002\u00b4\u00b5\u0007&\u0002",
"\u0002\u00b5\u000b\u0003\u0002\u0002\u0002\u00b6\u00b7\u0005\u0080A",
"\u0002\u00b7\u00b8\u0007*\u0002\u0002\u00b8\u00b9\u0005\u000e\b\u0002",
"\u00b9\r\u0003\u0002\u0002\u0002\u00ba\u00bf\u0005\u0080A\u0002\u00bb",
"\u00bc\u00072\u0002\u0002\u00bc\u00be\u0005\u0080A\u0002\u00bd\u00bb",
"\u0003\u0002\u0002\u0002\u00be\u00c1\u0003\u0002\u0002\u0002\u00bf\u00bd",
"\u0003\u0002\u0002\u0002\u00bf\u00c0\u0003\u0002\u0002\u0002\u00c0\u00c6",
"\u0003\u0002\u0002\u0002\u00c1\u00bf\u0003\u0002\u0002\u0002\u00c2\u00c6",
"\u0007\n\u0002\u0002\u00c3\u00c6\u0005\u001e\u0010\u0002\u00c4\u00c6",
"\u0007\t\u0002\u0002\u00c5\u00ba\u0003\u0002\u0002\u0002\u00c5\u00c2",
"\u0003\u0002\u0002\u0002\u00c5\u00c3\u0003\u0002\u0002\u0002\u00c5\u00c4",
"\u0003\u0002\u0002\u0002\u00c6\u000f\u0003\u0002\u0002\u0002\u00c7\u00c8",
"\u0007\u0011\u0002\u0002\u00c8\u00cd\u0005\u0012\n\u0002\u00c9\u00ca",
"\u0007!\u0002\u0002\u00ca\u00cc\u0005\u0012\n\u0002\u00cb\u00c9\u0003",
"\u0002\u0002\u0002\u00cc\u00cf\u0003\u0002\u0002\u0002\u00cd\u00cb\u0003",
"\u0002\u0002\u0002\u00cd\u00ce\u0003\u0002\u0002\u0002\u00ce\u00d0\u0003",
"\u0002\u0002\u0002\u00cf\u00cd\u0003\u0002\u0002\u0002\u00d0\u00d1\u0007",
"\"\u0002\u0002\u00d1\u0011\u0003\u0002\u0002\u0002\u00d2\u00d3\u0005",
"\u0080A\u0002\u00d3\u00d4\u0007*\u0002\u0002\u00d4\u00d5\u0005\u0080",
"A\u0002\u00d5\u00d8\u0003\u0002\u0002\u0002\u00d6\u00d8\u0005\u0080",
"A\u0002\u00d7\u00d2\u0003\u0002\u0002\u0002\u00d7\u00d6\u0003\u0002",
"\u0002\u0002\u00d8\u0013\u0003\u0002\u0002\u0002\u00d9\u00da\u0007\u000f",
"\u0002\u0002\u00da\u00dc\u0007%\u0002\u0002\u00db\u00dd\u0005\u0018",
"\r\u0002\u00dc\u00db\u0003\u0002\u0002\u0002\u00dc\u00dd\u0003\u0002",
"\u0002\u0002\u00dd\u00de\u0003\u0002\u0002\u0002\u00de\u00df\u0007&",
"\u0002\u0002\u00df\u0015\u0003\u0002\u0002\u0002\u00e0\u00e1\u0007\u0010",
"\u0002\u0002\u00e1\u00e3\u0007%\u0002\u0002\u00e2\u00e4\u0005\u0018",
"\r\u0002\u00e3\u00e2\u0003\u0002\u0002\u0002\u00e3\u00e4\u0003\u0002",
"\u0002\u0002\u00e4\u00e5\u0003\u0002\u0002\u0002\u00e5\u00e6\u0007&",
"\u0002\u0002\u00e6\u0017\u0003\u0002\u0002\u0002\u00e7\u00ec\u0005\u0080",
"A\u0002\u00e8\u00e9\u0007!\u0002\u0002\u00e9\u00eb\u0005\u0080A\u0002",
"\u00ea\u00e8\u0003\u0002\u0002\u0002\u00eb\u00ee\u0003\u0002\u0002\u0002",
"\u00ec\u00ea\u0003\u0002\u0002\u0002\u00ec\u00ed\u0003\u0002\u0002\u0002",
"\u00ed\u00f0\u0003\u0002\u0002\u0002\u00ee\u00ec\u0003\u0002\u0002\u0002",
"\u00ef\u00f1\u0007!\u0002\u0002\u00f0\u00ef\u0003\u0002\u0002\u0002",
"\u00f0\u00f1\u0003\u0002\u0002\u0002\u00f1\u0019\u0003\u0002\u0002\u0002",
"\u00f2\u00f6\u00073\u0002\u0002\u00f3\u00f4\u0005\u001c\u000f\u0002",
"\u00f4\u00f5\u0007 \u0002\u0002\u00f5\u00f7\u0003\u0002\u0002\u0002",
"\u00f6\u00f3\u0003\u0002\u0002\u0002\u00f6\u00f7\u0003\u0002\u0002\u0002",
"\u00f7\u00f8\u0003\u0002\u0002\u0002\u00f8\u00f9\u0005\u0080A\u0002",
"\u00f9\u00fa\u0005\u001e\u0010\u0002\u00fa\u001b\u0003\u0002\u0002\u0002",
"\u00fb\u00ff\u0005\u0080A\u0002\u00fc\u00ff\u0007\u0013\u0002\u0002",
"\u00fd\u00ff\u0007\u0014\u0002\u0002\u00fe\u00fb\u0003\u0002\u0002\u0002",
"\u00fe\u00fc\u0003\u0002\u0002\u0002\u00fe\u00fd\u0003\u0002\u0002\u0002",
"\u00ff\u001d\u0003\u0002\u0002\u0002\u0100\u0104\u0007\r\u0002\u0002",
"\u0101\u0103\u0007>\u0002\u0002\u0102\u0101\u0003\u0002\u0002\u0002",
"\u0103\u0106\u0003\u0002\u0002\u0002\u0104\u0102\u0003\u0002\u0002\u0002",
"\u0104\u0105\u0003\u0002\u0002\u0002\u0105\u0107\u0003\u0002\u0002\u0002",
"\u0106\u0104\u0003\u0002\u0002\u0002\u0107\u0108\u0007<\u0002\u0002",
"\u0108\u001f\u0003\u0002\u0002\u0002\u0109\u010d\u0007\f\u0002\u0002",
"\u010a\u010c\u0007;\u0002\u0002\u010b\u010a\u0003\u0002\u0002\u0002",
"\u010c\u010f\u0003\u0002\u0002\u0002\u010d\u010b\u0003\u0002\u0002\u0002",
"\u010d\u010e\u0003\u0002\u0002\u0002\u010e\u0110\u0003\u0002\u0002\u0002",
"\u010f\u010d\u0003\u0002\u0002\u0002\u0110\u0111\u00079\u0002\u0002",
"\u0111!\u0003\u0002\u0002\u0002\u0112\u0113\u0007\u001e\u0002\u0002",
"\u0113\u0114\u0005\u0080A\u0002\u0114\u0118\u0007\"\u0002\u0002\u0115",
"\u0117\u0005D#\u0002\u0116\u0115\u0003\u0002\u0002\u0002\u0117\u011a",
"\u0003\u0002\u0002\u0002\u0118\u0116\u0003\u0002\u0002\u0002\u0118\u0119",
"\u0003\u0002\u0002\u0002\u0119#\u0003\u0002\u0002\u0002\u011a\u0118",
"\u0003\u0002\u0002\u0002\u011b\u011d\u0005&\u0014\u0002\u011c\u011b",
"\u0003\u0002\u0002\u0002\u011d\u0120\u0003\u0002\u0002\u0002\u011e\u011c",
"\u0003\u0002\u0002\u0002\u011e\u011f\u0003\u0002\u0002\u0002\u011f%",
"\u0003\u0002\u0002\u0002\u0120\u011e\u0003\u0002\u0002\u0002\u0121\u0124",
"\u0005(\u0015\u0002\u0122\u0124\u0005D#\u0002\u0123\u0121\u0003\u0002",
"\u0002\u0002\u0123\u0122\u0003\u0002\u0002\u0002\u0124\'\u0003\u0002",
"\u0002\u0002\u0125\u0127\u0007\u0006\u0002\u0002\u0126\u0125\u0003\u0002",
"\u0002\u0002\u0127\u012a\u0003\u0002\u0002\u0002\u0128\u0126\u0003\u0002",
"\u0002\u0002\u0128\u0129\u0003\u0002\u0002\u0002\u0129\u012c\u0003\u0002",
"\u0002\u0002\u012a\u0128\u0003\u0002\u0002\u0002\u012b\u012d\u0005:",
"\u001e\u0002\u012c\u012b\u0003\u0002\u0002\u0002\u012c\u012d\u0003\u0002",
"\u0002\u0002\u012d\u012e\u0003\u0002\u0002\u0002\u012e\u0130\u0007\u0004",
"\u0002\u0002\u012f\u0131\u0005 \u0011\u0002\u0130\u012f\u0003\u0002",
"\u0002\u0002\u0130\u0131\u0003\u0002\u0002\u0002\u0131\u0133\u0003\u0002",
"\u0002\u0002\u0132\u0134\u00052\u001a\u0002\u0133\u0132\u0003\u0002",
"\u0002\u0002\u0133\u0134\u0003\u0002\u0002\u0002\u0134\u0136\u0003\u0002",
"\u0002\u0002\u0135\u0137\u00054\u001b\u0002\u0136\u0135\u0003\u0002",
"\u0002\u0002\u0136\u0137\u0003\u0002\u0002\u0002\u0137\u0139\u0003\u0002",
"\u0002\u0002\u0138\u013a\u00056\u001c\u0002\u0139\u0138\u0003\u0002",
"\u0002\u0002\u0139\u013a\u0003\u0002\u0002\u0002\u013a\u013e\u0003\u0002",
"\u0002\u0002\u013b\u013d\u00050\u0019\u0002\u013c\u013b\u0003\u0002",
"\u0002\u0002\u013d\u0140\u0003\u0002\u0002\u0002\u013e\u013c\u0003\u0002",
"\u0002\u0002\u013e\u013f\u0003\u0002\u0002\u0002\u013f\u0141\u0003\u0002",
"\u0002\u0002\u0140\u013e\u0003\u0002\u0002\u0002\u0141\u0142\u0007\u001f",
"\u0002\u0002\u0142\u0143\u0005> \u0002\u0143\u0144\u0007\"\u0002\u0002",
"\u0144\u0145\u0005*\u0016\u0002\u0145)\u0003\u0002\u0002\u0002\u0146",
"\u0148\u0005,\u0017\u0002\u0147\u0146\u0003\u0002\u0002\u0002\u0148",
"\u014b\u0003\u0002\u0002\u0002\u0149\u0147\u0003\u0002\u0002\u0002\u0149",
"\u014a\u0003\u0002\u0002\u0002\u014a\u014d\u0003\u0002\u0002\u0002\u014b",
"\u0149\u0003\u0002\u0002\u0002\u014c\u014e\u0005.\u0018\u0002\u014d",
"\u014c\u0003\u0002\u0002\u0002\u014d\u014e\u0003\u0002\u0002\u0002\u014e",
"+\u0003\u0002\u0002\u0002\u014f\u0150\u0007\u001c\u0002\u0002\u0150",
"\u0151\u0005 \u0011\u0002\u0151\u0152\u0005\u001e\u0010\u0002\u0152",
"-\u0003\u0002\u0002\u0002\u0153\u0154\u0007\u001d\u0002\u0002\u0154",
"\u0155\u0005\u001e\u0010\u0002\u0155/\u0003\u0002\u0002\u0002\u0156",
"\u0159\u0005\n\u0006\u0002\u0157\u0159\u00058\u001d\u0002\u0158\u0156",
"\u0003\u0002\u0002\u0002\u0158\u0157\u0003\u0002\u0002\u0002\u01591",
"\u0003\u0002\u0002\u0002\u015a\u015b\u0007\u0019\u0002\u0002\u015b\u015c",
"\u0005 \u0011\u0002\u015c3\u0003\u0002\u0002\u0002\u015d\u015e\u0007",
"\u001b\u0002\u0002\u015e\u0163\u0005\u0080A\u0002\u015f\u0160\u0007",
"!\u0002\u0002\u0160\u0162\u0005\u0080A\u0002\u0161\u015f\u0003\u0002",
"\u0002\u0002\u0162\u0165\u0003\u0002\u0002\u0002\u0163\u0161\u0003\u0002",
"\u0002\u0002\u0163\u0164\u0003\u0002\u0002\u0002\u01645\u0003\u0002",
"\u0002\u0002\u0165\u0163\u0003\u0002\u0002\u0002\u0166\u0167\u0007\u001a",
"\u0002\u0002\u0167\u0168\u0005 \u0011\u0002\u01687\u0003\u0002\u0002",
"\u0002\u0169\u016a\u00073\u0002\u0002\u016a\u016b\u0005\u0080A\u0002",
"\u016b\u016c\u0005\u001e\u0010\u0002\u016c9\u0003\u0002\u0002\u0002",
"\u016d\u016f\u0005<\u001f\u0002\u016e\u016d\u0003\u0002\u0002\u0002",
"\u016f\u0170\u0003\u0002\u0002\u0002\u0170\u016e\u0003\u0002\u0002\u0002",
"\u0170\u0171\u0003\u0002\u0002\u0002\u0171;\u0003\u0002\u0002\u0002",
"\u0172\u0173\t\u0002\u0002\u0002\u0173=\u0003\u0002\u0002\u0002\u0174",
"\u0175\u0005@!\u0002\u0175?\u0003\u0002\u0002\u0002\u0176\u017b\u0005",
"B\"\u0002\u0177\u0178\u0007/\u0002\u0002\u0178\u017a\u0005B\"\u0002",
"\u0179\u0177\u0003\u0002\u0002\u0002\u017a\u017d\u0003\u0002\u0002\u0002",
"\u017b\u0179\u0003\u0002\u0002\u0002\u017b\u017c\u0003\u0002\u0002\u0002",
"\u017cA\u0003\u0002\u0002\u0002\u017d\u017b\u0003\u0002\u0002\u0002",
"\u017e\u0181\u0005^0\u0002\u017f\u0180\u00074\u0002\u0002\u0180\u0182",
"\u0005\u0080A\u0002\u0181\u017f\u0003\u0002\u0002\u0002\u0181\u0182",
"\u0003\u0002\u0002\u0002\u0182C\u0003\u0002\u0002\u0002\u0183\u0185",
"\u0007\u0006\u0002\u0002\u0184\u0183\u0003\u0002\u0002\u0002\u0185\u0188",
"\u0003\u0002\u0002\u0002\u0186\u0184\u0003\u0002\u0002\u0002\u0186\u0187",
"\u0003\u0002\u0002\u0002\u0187\u018a\u0003\u0002\u0002\u0002\u0188\u0186",
"\u0003\u0002\u0002\u0002\u0189\u018b\u0007\u0012\u0002\u0002\u018a\u0189",
"\u0003\u0002\u0002\u0002\u018a\u018b\u0003\u0002\u0002\u0002\u018b\u018c",
"\u0003\u0002\u0002\u0002\u018c\u018d\u0007\u0003\u0002\u0002\u018d\u018e",
"\u0007\u001f\u0002\u0002\u018e\u018f\u0005F$\u0002\u018f\u0190\u0007",
"\"\u0002\u0002\u0190E\u0003\u0002\u0002\u0002\u0191\u0192\u0005H%\u0002",
"\u0192G\u0003\u0002\u0002\u0002\u0193\u0198\u0005J&\u0002\u0194\u0195",
"\u0007/\u0002\u0002\u0195\u0197\u0005J&\u0002\u0196\u0194\u0003\u0002",
"\u0002\u0002\u0197\u019a\u0003\u0002\u0002\u0002\u0198\u0196\u0003\u0002",
"\u0002\u0002\u0198\u0199\u0003\u0002\u0002\u0002\u0199I\u0003\u0002",
"\u0002\u0002\u019a\u0198\u0003\u0002\u0002\u0002\u019b\u019d\u0005L",
"\'\u0002\u019c\u019e\u0005T+\u0002\u019d\u019c\u0003\u0002\u0002\u0002",
"\u019d\u019e\u0003\u0002\u0002\u0002\u019e\u01a1\u0003\u0002\u0002\u0002",
"\u019f\u01a1\u0003\u0002\u0002\u0002\u01a0\u019b\u0003\u0002\u0002\u0002",
"\u01a0\u019f\u0003\u0002\u0002\u0002\u01a1K\u0003\u0002\u0002\u0002",
"\u01a2\u01a4\u0005N(\u0002\u01a3\u01a2\u0003\u0002\u0002\u0002\u01a4",
"\u01a5\u0003\u0002\u0002\u0002\u01a5\u01a3\u0003\u0002\u0002\u0002\u01a5",
"\u01a6\u0003\u0002\u0002\u0002\u01a6M\u0003\u0002\u0002\u0002\u01a7",
"\u01a9\u0005P)\u0002\u01a8\u01aa\u0005h5\u0002\u01a9\u01a8\u0003\u0002",
"\u0002\u0002\u01a9\u01aa\u0003\u0002\u0002\u0002\u01aa\u01b8\u0003\u0002",
"\u0002\u0002\u01ab\u01ad\u0005j6\u0002\u01ac\u01ae\u0005h5\u0002\u01ad",
"\u01ac\u0003\u0002\u0002\u0002\u01ad\u01ae\u0003\u0002\u0002\u0002\u01ae",
"\u01b8\u0003\u0002\u0002\u0002\u01af\u01b1\u0005R*\u0002\u01b0\u01b2",
"\u0005h5\u0002\u01b1\u01b0\u0003\u0002\u0002\u0002\u01b1\u01b2\u0003",
"\u0002\u0002\u0002\u01b2\u01b8\u0003\u0002\u0002\u0002\u01b3\u01b5\u0005",
"\u001e\u0010\u0002\u01b4\u01b6\u0007+\u0002\u0002\u01b5\u01b4\u0003",
"\u0002\u0002\u0002\u01b5\u01b6\u0003\u0002\u0002\u0002\u01b6\u01b8\u0003",
"\u0002\u0002\u0002\u01b7\u01a7\u0003\u0002\u0002\u0002\u01b7\u01ab\u0003",
"\u0002\u0002\u0002\u01b7\u01af\u0003\u0002\u0002\u0002\u01b7\u01b3\u0003",
"\u0002\u0002\u0002\u01b8O\u0003\u0002\u0002\u0002\u01b9\u01ba\u0005",
"\u0080A\u0002\u01ba\u01bd\t\u0003\u0002\u0002\u01bb\u01be\u0005j6\u0002",
"\u01bc\u01be\u0005R*\u0002\u01bd\u01bb\u0003\u0002\u0002\u0002\u01bd",
"\u01bc\u0003\u0002\u0002\u0002\u01beQ\u0003\u0002\u0002\u0002\u01bf",
"\u01c0\u0007#\u0002\u0002\u01c0\u01c1\u0005H%\u0002\u01c1\u01c2\u0007",
"$\u0002\u0002\u01c2S\u0003\u0002\u0002\u0002\u01c3\u01c4\u0007\'\u0002",
"\u0002\u01c4\u01c9\u0005V,\u0002\u01c5\u01c6\u0007!\u0002\u0002\u01c6",
"\u01c8\u0005V,\u0002\u01c7\u01c5\u0003\u0002\u0002\u0002\u01c8\u01cb",
"\u0003\u0002\u0002\u0002\u01c9\u01c7\u0003\u0002\u0002\u0002\u01c9\u01ca",
"\u0003\u0002\u0002\u0002\u01caU\u0003\u0002\u0002\u0002\u01cb\u01c9",
"\u0003\u0002\u0002\u0002\u01cc\u01cd\u0005X-\u0002\u01cd\u01ce\u0007",
"#\u0002\u0002\u01ce\u01cf\u0005Z.\u0002\u01cf\u01d0\u0007$\u0002\u0002",
"\u01d0\u01d3\u0003\u0002\u0002\u0002\u01d1\u01d3\u0005X-\u0002\u01d2",
"\u01cc\u0003\u0002\u0002\u0002\u01d2\u01d1\u0003\u0002\u0002\u0002\u01d3",
"W\u0003\u0002\u0002\u0002\u01d4\u01d7\u0005\u0080A\u0002\u01d5\u01d7",
"\u0007\u001e\u0002\u0002\u01d6\u01d4\u0003\u0002\u0002\u0002\u01d6\u01d5",
"\u0003\u0002\u0002\u0002\u01d7Y\u0003\u0002\u0002\u0002\u01d8\u01db",
"\u0005\u0080A\u0002\u01d9\u01db\u0007\t\u0002\u0002\u01da\u01d8\u0003",
"\u0002\u0002\u0002\u01da\u01d9\u0003\u0002\u0002\u0002\u01db[\u0003",
"\u0002\u0002\u0002\u01dc\u01e1\u0005^0\u0002\u01dd\u01de\u0007/\u0002",
"\u0002\u01de\u01e0\u0005^0\u0002\u01df\u01dd\u0003\u0002\u0002\u0002",
"\u01e0\u01e3\u0003\u0002\u0002\u0002\u01e1\u01df\u0003\u0002\u0002\u0002",
"\u01e1\u01e2\u0003\u0002\u0002\u0002\u01e2]\u0003\u0002\u0002\u0002",
"\u01e3\u01e1\u0003\u0002\u0002\u0002\u01e4\u01e6\u0005|?\u0002\u01e5",
"\u01e4\u0003\u0002\u0002\u0002\u01e5\u01e6\u0003\u0002\u0002\u0002\u01e6",
"\u01e8\u0003\u0002\u0002\u0002\u01e7\u01e9\u0005`1\u0002\u01e8\u01e7",
"\u0003\u0002\u0002\u0002\u01e9\u01ea\u0003\u0002\u0002\u0002\u01ea\u01e8",
"\u0003\u0002\u0002\u0002\u01ea\u01eb\u0003\u0002\u0002\u0002\u01eb\u01ee",
"\u0003\u0002\u0002\u0002\u01ec\u01ee\u0003\u0002\u0002\u0002\u01ed\u01e5",
"\u0003\u0002\u0002\u0002\u01ed\u01ec\u0003\u0002\u0002\u0002\u01ee_",
"\u0003\u0002\u0002\u0002\u01ef\u01f2\u0005b2\u0002\u01f0\u01f3\u0005",
"h5\u0002\u01f1\u01f3\u0003\u0002\u0002\u0002\u01f2\u01f0\u0003\u0002",
"\u0002\u0002\u01f2\u01f1\u0003\u0002\u0002\u0002\u01f3\u01ff\u0003\u0002",
"\u0002\u0002\u01f4\u01f7\u0005l7\u0002\u01f5\u01f8\u0005h5\u0002\u01f6",
"\u01f8\u0003\u0002\u0002\u0002\u01f7\u01f5\u0003\u0002\u0002\u0002\u01f7",
"\u01f6\u0003\u0002\u0002\u0002\u01f8\u01ff\u0003\u0002\u0002\u0002\u01f9",
"\u01ff\u0005d3\u0002\u01fa\u01fc\u0005\u001e\u0010\u0002\u01fb\u01fd",
"\u0007+\u0002\u0002\u01fc\u01fb\u0003\u0002\u0002\u0002\u01fc\u01fd",
"\u0003\u0002\u0002\u0002\u01fd\u01ff\u0003\u0002\u0002\u0002\u01fe\u01ef",
"\u0003\u0002\u0002\u0002\u01fe\u01f4\u0003\u0002\u0002\u0002\u01fe\u01f9",
"\u0003\u0002\u0002\u0002\u01fe\u01fa\u0003\u0002\u0002\u0002\u01ffa",
"\u0003\u0002\u0002\u0002\u0200\u0201\u0005\u0080A\u0002\u0201\u0204",
"\t\u0003\u0002\u0002\u0202\u0205\u0005l7\u0002\u0203\u0205\u0005t;\u0002",
"\u0204\u0202\u0003\u0002\u0002\u0002\u0204\u0203\u0003\u0002\u0002\u0002",
"\u0205c\u0003\u0002\u0002\u0002\u0206\u0208\u0005t;\u0002\u0207\u0209",
"\u0005f4\u0002\u0208\u0207\u0003\u0002\u0002\u0002\u0208\u0209\u0003",
"\u0002\u0002\u0002\u0209e\u0003\u0002\u0002\u0002\u020a\u020b\u0005",
"h5\u0002\u020bg\u0003\u0002\u0002\u0002\u020c\u020e\u0007+\u0002\u0002",
"\u020d\u020f\u0007+\u0002\u0002\u020e\u020d\u0003\u0002\u0002\u0002",
"\u020e\u020f\u0003\u0002\u0002\u0002\u020f\u0219\u0003\u0002\u0002\u0002",
"\u0210\u0212\u0007,\u0002\u0002\u0211\u0213\u0007+\u0002\u0002\u0212",
"\u0211\u0003\u0002\u0002\u0002\u0212\u0213\u0003\u0002\u0002\u0002\u0213",
"\u0219\u0003\u0002\u0002\u0002\u0214\u0216\u0007.\u0002\u0002\u0215",
"\u0217\u0007+\u0002\u0002\u0216\u0215\u0003\u0002\u0002\u0002\u0216",
"\u0217\u0003\u0002\u0002\u0002\u0217\u0219\u0003\u0002\u0002\u0002\u0218",
"\u020c\u0003\u0002\u0002\u0002\u0218\u0210\u0003\u0002\u0002\u0002\u0218",
"\u0214\u0003\u0002\u0002\u0002\u0219i\u0003\u0002\u0002\u0002\u021a",
"\u0223\u0005x=\u0002\u021b\u0223\u0005z>\u0002\u021c\u0223\u0005n8\u0002",
"\u021d\u0223\u0007\u0005\u0002\u0002\u021e\u0220\u00072\u0002\u0002",
"\u021f\u0221\u0005|?\u0002\u0220\u021f\u0003\u0002\u0002\u0002\u0220",
"\u0221\u0003\u0002\u0002\u0002\u0221\u0223\u0003\u0002\u0002\u0002\u0222",
"\u021a\u0003\u0002\u0002\u0002\u0222\u021b\u0003\u0002\u0002\u0002\u0222",
"\u021c\u0003\u0002\u0002\u0002\u0222\u021d\u0003\u0002\u0002\u0002\u0222",
"\u021e\u0003\u0002\u0002\u0002\u0223k\u0003\u0002\u0002\u0002\u0224",
"\u022c\u0005z>\u0002\u0225\u022c\u0005v<\u0002\u0226\u022c\u0005n8\u0002",
"\u0227\u0229\u00072\u0002\u0002\u0228\u022a\u0005|?\u0002\u0229\u0228",
"\u0003\u0002\u0002\u0002\u0229\u022a\u0003\u0002\u0002\u0002\u022a\u022c",
"\u0003\u0002\u0002\u0002\u022b\u0224\u0003\u0002\u0002\u0002\u022b\u0225",
"\u0003\u0002\u0002\u0002\u022b\u0226\u0003\u0002\u0002\u0002\u022b\u0227",
"\u0003\u0002\u0002\u0002\u022cm\u0003\u0002\u0002\u0002\u022d\u022e",
"\u00075\u0002\u0002\u022e\u0232\u0005r:\u0002\u022f\u0230\u00075\u0002",
"\u0002\u0230\u0232\u0005p9\u0002\u0231\u022d\u0003\u0002\u0002\u0002",
"\u0231\u022f\u0003\u0002\u0002\u0002\u0232o\u0003\u0002\u0002\u0002",
"\u0233\u0234\u0007#\u0002\u0002\u0234\u0239\u0005r:\u0002\u0235\u0236",
"\u0007/\u0002\u0002\u0236\u0238\u0005r:\u0002\u0237\u0235\u0003\u0002",
"\u0002\u0002\u0238\u023b\u0003\u0002\u0002\u0002\u0239\u0237\u0003\u0002",
"\u0002\u0002\u0239\u023a\u0003\u0002\u0002\u0002\u023a\u023c\u0003\u0002",
"\u0002\u0002\u023b\u0239\u0003\u0002\u0002\u0002\u023c\u023d\u0007$",
"\u0002\u0002\u023dq\u0003\u0002\u0002\u0002\u023e\u0240\u0007\u0003",
"\u0002\u0002\u023f\u0241\u0005|?\u0002\u0240\u023f\u0003\u0002\u0002",
"\u0002\u0240\u0241\u0003\u0002\u0002\u0002\u0241\u0249\u0003\u0002\u0002",
"\u0002\u0242\u0244\u0007\n\u0002\u0002\u0243\u0245\u0005|?\u0002\u0244",
"\u0243\u0003\u0002\u0002\u0002\u0244\u0245\u0003\u0002\u0002\u0002\u0245",
"\u0249\u0003\u0002\u0002\u0002\u0246\u0249\u0005x=\u0002\u0247\u0249",
"\u0007\u0005\u0002\u0002\u0248\u023e\u0003\u0002\u0002\u0002\u0248\u0242",
"\u0003\u0002\u0002\u0002\u0248\u0246\u0003\u0002\u0002\u0002\u0248\u0247",
"\u0003\u0002\u0002\u0002\u0249s\u0003\u0002\u0002\u0002\u024a\u0255",
"\u0007#\u0002\u0002\u024b\u024d\u0005\n\u0006\u0002\u024c\u024b\u0003",
"\u0002\u0002\u0002\u024c\u024d\u0003\u0002\u0002\u0002\u024d\u0251\u0003",
"\u0002\u0002\u0002\u024e\u0250\u00058\u001d\u0002\u024f\u024e\u0003",
"\u0002\u0002\u0002\u0250\u0253\u0003\u0002\u0002\u0002\u0251\u024f\u0003",
"\u0002\u0002\u0002\u0251\u0252\u0003\u0002\u0002\u0002\u0252\u0254\u0003",
"\u0002\u0002\u0002\u0253\u0251\u0003\u0002\u0002\u0002\u0254\u0256\u0007",
"\u001f\u0002\u0002\u0255\u024c\u0003\u0002\u0002\u0002\u0255\u0256\u0003",
"\u0002\u0002\u0002\u0256\u0257\u0003\u0002\u0002\u0002\u0257\u0258\u0005",
"\\/\u0002\u0258\u0259\u0007$\u0002\u0002\u0259u\u0003\u0002\u0002\u0002",
"\u025a\u025c\u0007\u0004\u0002\u0002\u025b\u025d\u0005 \u0011\u0002",
"\u025c\u025b\u0003\u0002\u0002\u0002\u025c\u025d\u0003\u0002\u0002\u0002",
"\u025d\u025f\u0003\u0002\u0002\u0002\u025e\u0260\u0005|?\u0002\u025f",
"\u025e\u0003\u0002\u0002\u0002\u025f\u0260\u0003\u0002\u0002\u0002\u0260",
"w\u0003\u0002\u0002\u0002\u0261\u0262\u0007\n\u0002\u0002\u0262\u0263",
"\u00071\u0002\u0002\u0263\u0264\u0007\n\u0002\u0002\u0264y\u0003\u0002",
"\u0002\u0002\u0265\u0267\u0007\u0003\u0002\u0002\u0266\u0268\u0005|",
"?\u0002\u0267\u0266\u0003\u0002\u0002\u0002\u0267\u0268\u0003\u0002",
"\u0002\u0002\u0268\u026e\u0003\u0002\u0002\u0002\u0269\u026b\u0007\n",
"\u0002\u0002\u026a\u026c\u0005|?\u0002\u026b\u026a\u0003\u0002\u0002",
"\u0002\u026b\u026c\u0003\u0002\u0002\u0002\u026c\u026e\u0003\u0002\u0002",
"\u0002\u026d\u0265\u0003\u0002\u0002\u0002\u026d\u0269\u0003\u0002\u0002",
"\u0002\u026e{\u0003\u0002\u0002\u0002\u026f\u0270\u0007(\u0002\u0002",
"\u0270\u0275\u0005~@\u0002\u0271\u0272\u0007!\u0002\u0002\u0272\u0274",
"\u0005~@\u0002\u0273\u0271\u0003\u0002\u0002\u0002\u0274\u0277\u0003",
"\u0002\u0002\u0002\u0275\u0273\u0003\u0002\u0002\u0002\u0275\u0276\u0003",
"\u0002\u0002\u0002\u0276\u0278\u0003\u0002\u0002\u0002\u0277\u0275\u0003",
"\u0002\u0002\u0002\u0278\u0279\u0007)\u0002\u0002\u0279}\u0003\u0002",
"\u0002\u0002\u027a\u0282\u0005\u0080A\u0002\u027b\u027c\u0005\u0080",
"A\u0002\u027c\u027f\u0007*\u0002\u0002\u027d\u0280\u0005\u0080A\u0002",
"\u027e\u0280\u0007\n\u0002\u0002\u027f\u027d\u0003\u0002\u0002\u0002",
"\u027f\u027e\u0003\u0002\u0002\u0002\u0280\u0282\u0003\u0002\u0002\u0002",
"\u0281\u027a\u0003\u0002\u0002\u0002\u0281\u027b\u0003\u0002\u0002\u0002",
"\u0282\u007f\u0003\u0002\u0002\u0002\u0283\u0284\t\u0004\u0002\u0002",
"\u0284\u0081\u0003\u0002\u0002\u0002W\u0085\u008c\u0093\u00a1\u00a8",
"\u00b1\u00bf\u00c5\u00cd\u00d7\u00dc\u00e3\u00ec\u00f0\u00f6\u00fe\u0104",
"\u010d\u0118\u011e\u0123\u0128\u012c\u0130\u0133\u0136\u0139\u013e\u0149",
"\u014d\u0158\u0163\u0170\u017b\u0181\u0186\u018a\u0198\u019d\u01a0\u01a5",
"\u01a9\u01ad\u01b1\u01b5\u01b7\u01bd\u01c9\u01d2\u01d6\u01da\u01e1\u01e5",
"\u01ea\u01ed\u01f2\u01f7\u01fc\u01fe\u0204\u0208\u020e\u0212\u0216\u0218",
"\u0220\u0222\u0229\u022b\u0231\u0239\u0240\u0244\u0248\u024c\u0251\u0255",
"\u025c\u025f\u0267\u026b\u026d\u0275\u027f\u0281"].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, null, null, null, null,
null, null, null, "'options'", "'tokens'", "'channels'",
"'import'", "'fragment'", "'lexer'", "'parser'", "'grammar'",
"'protected'", "'public'", "'private'", "'returns'",
"'locals'", "'throws'", "'catch'", "'finally'", "'mode'" ];
var symbolicNames = [ null, "TOKEN_REF", "RULE_REF", "LEXER_CHAR_SET", "DOC_COMMENT",
"BLOCK_COMMENT", "LINE_COMMENT", "INT", "STRING_LITERAL",
"UNTERMINATED_STRING_LITERAL", "BEGIN_ARGUMENT", "BEGIN_ACTION",
"OPTIONS", "TOKENS", "CHANNELS", "IMPORT", "FRAGMENT",
"LEXER", "PARSER", "GRAMMAR", "PROTECTED", "PUBLIC",
"PRIVATE", "RETURNS", "LOCALS", "THROWS", "CATCH",
"FINALLY", "MODE", "COLON", "COLONCOLON", "COMMA",
"SEMI", "LPAREN", "RPAREN", "LBRACE", "RBRACE", "RARROW",
"LT", "GT", "ASSIGN", "QUESTION", "STAR", "PLUS_ASSIGN",
"PLUS", "OR", "DOLLAR", "RANGE", "DOT", "AT", "POUND",
"NOT", "ID", "WS", "ERRCHAR", "END_ARGUMENT", "UNTERMINATED_ARGUMENT",
"ARGUMENT_CONTENT", "END_ACTION", "UNTERMINATED_ACTION",
"ACTION_CONTENT", "UNTERMINATED_CHAR_SET" ];
var ruleNames = [ "grammarSpec", "grammarDecl", "grammarType", "prequelConstruct",
"optionsSpec", "option", "optionValue", "delegateGrammars",
"delegateGrammar", "tokensSpec", "channelsSpec", "idList",
"action_", "actionScopeName", "actionBlock", "argActionBlock",
"modeSpec", "rules", "ruleSpec", "parserRuleSpec", "exceptionGroup",
"exceptionHandler", "finallyClause", "rulePrequel", "ruleReturns",
"throwsSpec", "localsSpec", "ruleAction", "ruleModifiers",
"ruleModifier", "ruleBlock", "ruleAltList", "labeledAlt",
"lexerRuleSpec", "lexerRuleBlock", "lexerAltList", "lexerAlt",
"lexerElements", "lexerElement", "labeledLexerElement",
"lexerBlock", "lexerCommands", "lexerCommand", "lexerCommandName",
"lexerCommandExpr", "altList", "alternative", "element",
"labeledElement", "ebnf", "blockSuffix", "ebnfSuffix",
"lexerAtom", "atom", "notSet", "blockSet", "setElement",
"block", "ruleref", "characterRange", "terminal", "elementOptions",
"elementOption", "identifier" ];
function ANTLRv4Parser (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;
}
ANTLRv4Parser.prototype = Object.create(antlr4.Parser.prototype);
ANTLRv4Parser.prototype.constructor = ANTLRv4Parser;
Object.defineProperty(ANTLRv4Parser.prototype, "atn", {
get : function() {
return atn;
}
});
ANTLRv4Parser.EOF = antlr4.Token.EOF;
ANTLRv4Parser.TOKEN_REF = 1;
ANTLRv4Parser.RULE_REF = 2;
ANTLRv4Parser.LEXER_CHAR_SET = 3;
ANTLRv4Parser.DOC_COMMENT = 4;
ANTLRv4Parser.BLOCK_COMMENT = 5;
ANTLRv4Parser.LINE_COMMENT = 6;
ANTLRv4Parser.INT = 7;
ANTLRv4Parser.STRING_LITERAL = 8;
ANTLRv4Parser.UNTERMINATED_STRING_LITERAL = 9;
ANTLRv4Parser.BEGIN_ARGUMENT = 10;
ANTLRv4Parser.BEGIN_ACTION = 11;
ANTLRv4Parser.OPTIONS = 12;
ANTLRv4Parser.TOKENS = 13;
ANTLRv4Parser.CHANNELS = 14;
ANTLRv4Parser.IMPORT = 15;
ANTLRv4Parser.FRAGMENT = 16;
ANTLRv4Parser.LEXER = 17;
ANTLRv4Parser.PARSER = 18;
ANTLRv4Parser.GRAMMAR = 19;
ANTLRv4Parser.PROTECTED = 20;
ANTLRv4Parser.PUBLIC = 21;
ANTLRv4Parser.PRIVATE = 22;
ANTLRv4Parser.RETURNS = 23;
ANTLRv4Parser.LOCALS = 24;
ANTLRv4Parser.THROWS = 25;
ANTLRv4Parser.CATCH = 26;
ANTLRv4Parser.FINALLY = 27;
ANTLRv4Parser.MODE = 28;
ANTLRv4Parser.COLON = 29;
ANTLRv4Parser.COLONCOLON = 30;
ANTLRv4Parser.COMMA = 31;
ANTLRv4Parser.SEMI = 32;
ANTLRv4Parser.LPAREN = 33;
ANTLRv4Parser.RPAREN = 34;
ANTLRv4Parser.LBRACE = 35;
ANTLRv4Parser.RBRACE = 36;
ANTLRv4Parser.RARROW = 37;
ANTLRv4Parser.LT = 38;
ANTLRv4Parser.GT = 39;
ANTLRv4Parser.ASSIGN = 40;
ANTLRv4Parser.QUESTION = 41;
ANTLRv4Parser.STAR = 42;
ANTLRv4Parser.PLUS_ASSIGN = 43;
ANTLRv4Parser.PLUS = 44;
ANTLRv4Parser.OR = 45;
ANTLRv4Parser.DOLLAR = 46;
ANTLRv4Parser.RANGE = 47;
ANTLRv4Parser.DOT = 48;
ANTLRv4Parser.AT = 49;
ANTLRv4Parser.POUND = 50;
ANTLRv4Parser.NOT = 51;
ANTLRv4Parser.ID = 52;
ANTLRv4Parser.WS = 53;
ANTLRv4Parser.ERRCHAR = 54;
ANTLRv4Parser.END_ARGUMENT = 55;
ANTLRv4Parser.UNTERMINATED_ARGUMENT = 56;
ANTLRv4Parser.ARGUMENT_CONTENT = 57;
ANTLRv4Parser.END_ACTION = 58;
ANTLRv4Parser.UNTERMINATED_ACTION = 59;
ANTLRv4Parser.ACTION_CONTENT = 60;
ANTLRv4Parser.UNTERMINATED_CHAR_SET = 61;
ANTLRv4Parser.RULE_grammarSpec = 0;
ANTLRv4Parser.RULE_grammarDecl = 1;
ANTLRv4Parser.RULE_grammarType = 2;
ANTLRv4Parser.RULE_prequelConstruct = 3;
ANTLRv4Parser.RULE_optionsSpec = 4;
ANTLRv4Parser.RULE_option = 5;
ANTLRv4Parser.RULE_optionValue = 6;
ANTLRv4Parser.RULE_delegateGrammars = 7;
ANTLRv4Parser.RULE_delegateGrammar = 8;
ANTLRv4Parser.RULE_tokensSpec = 9;
ANTLRv4Parser.RULE_channelsSpec = 10;
ANTLRv4Parser.RULE_idList = 11;
ANTLRv4Parser.RULE_action_ = 12;
ANTLRv4Parser.RULE_actionScopeName = 13;
ANTLRv4Parser.RULE_actionBlock = 14;
ANTLRv4Parser.RULE_argActionBlock = 15;
ANTLRv4Parser.RULE_modeSpec = 16;
ANTLRv4Parser.RULE_rules = 17;
ANTLRv4Parser.RULE_ruleSpec = 18;
ANTLRv4Parser.RULE_parserRuleSpec = 19;
ANTLRv4Parser.RULE_exceptionGroup = 20;
ANTLRv4Parser.RULE_exceptionHandler = 21;
ANTLRv4Parser.RULE_finallyClause = 22;
ANTLRv4Parser.RULE_rulePrequel = 23;
ANTLRv4Parser.RULE_ruleReturns = 24;
ANTLRv4Parser.RULE_throwsSpec = 25;
ANTLRv4Parser.RULE_localsSpec = 26;
ANTLRv4Parser.RULE_ruleAction = 27;
ANTLRv4Parser.RULE_ruleModifiers = 28;
ANTLRv4Parser.RULE_ruleModifier = 29;
ANTLRv4Parser.RULE_ruleBlock = 30;
ANTLRv4Parser.RULE_ruleAltList = 31;
ANTLRv4Parser.RULE_labeledAlt = 32;
ANTLRv4Parser.RULE_lexerRuleSpec = 33;
ANTLRv4Parser.RULE_lexerRuleBlock = 34;
ANTLRv4Parser.RULE_lexerAltList = 35;
ANTLRv4Parser.RULE_lexerAlt = 36;
ANTLRv4Parser.RULE_lexerElements = 37;
ANTLRv4Parser.RULE_lexerElement = 38;
ANTLRv4Parser.RULE_labeledLexerElement = 39;
ANTLRv4Parser.RULE_lexerBlock = 40;
ANTLRv4Parser.RULE_lexerCommands = 41;
ANTLRv4Parser.RULE_lexerCommand = 42;
ANTLRv4Parser.RULE_lexerCommandName = 43;
ANTLRv4Parser.RULE_lexerCommandExpr = 44;
ANTLRv4Parser.RULE_altList = 45;
ANTLRv4Parser.RULE_alternative = 46;
ANTLRv4Parser.RULE_element = 47;
ANTLRv4Parser.RULE_labeledElement = 48;
ANTLRv4Parser.RULE_ebnf = 49;
ANTLRv4Parser.RULE_blockSuffix = 50;
ANTLRv4Parser.RULE_ebnfSuffix = 51;
ANTLRv4Parser.RULE_lexerAtom = 52;
ANTLRv4Parser.RULE_atom = 53;
ANTLRv4Parser.RULE_notSet = 54;
ANTLRv4Parser.RULE_blockSet = 55;
ANTLRv4Parser.RULE_setElement = 56;
ANTLRv4Parser.RULE_block = 57;
ANTLRv4Parser.RULE_ruleref = 58;
ANTLRv4Parser.RULE_characterRange = 59;
ANTLRv4Parser.RULE_terminal = 60;
ANTLRv4Parser.RULE_elementOptions = 61;
ANTLRv4Parser.RULE_elementOption = 62;
ANTLRv4Parser.RULE_identifier = 63;
function GrammarSpecContext(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 = ANTLRv4Parser.RULE_grammarSpec;
return this;
}
GrammarSpecContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
GrammarSpecContext.prototype.constructor = GrammarSpecContext;
GrammarSpecContext.prototype.grammarDecl = function() {
return this.getTypedRuleContext(GrammarDeclContext,0);
};
GrammarSpecContext.prototype.rules = function() {
return this.getTypedRuleContext(RulesContext,0);
};
GrammarSpecContext.prototype.EOF = function() {
return this.getToken(ANTLRv4Parser.EOF, 0);
};
GrammarSpecContext.prototype.DOC_COMMENT = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(ANTLRv4Parser.DOC_COMMENT);
} else {
return this.getToken(ANTLRv4Parser.DOC_COMMENT, i);
}
};
GrammarSpecContext.prototype.prequelConstruct = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(PrequelConstructContext);
} else {
return this.getTypedRuleContext(PrequelConstructContext,i);
}
};
GrammarSpecContext.prototype.modeSpec = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ModeSpecContext);
} else {
return this.getTypedRuleContext(ModeSpecContext,i);
}
};
GrammarSpecContext.prototype.enterRule = function(listener) {
if(listener instanceof ANTLRv4ParserListener ) {
listener.enterGrammarSpec(this);
}
};
GrammarSpecContext.prototype.exitRule = function(listener) {
if(listener instanceof ANTLRv4ParserListener ) {
listener.exitGrammarSpec(this);
}
};
ANTLRv4Parser.GrammarSpecContext = GrammarSpecContext;
ANTLRv4Parser.prototype.grammarSpec = function() {
var localctx = new GrammarSpecContext(this, this._ctx, this.state);
this.enterRule(localctx, 0, ANTLRv4Parser.RULE_grammarSpec);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 131;
this._errHandler.sync(this);
_la = this._input.LA(1);
while(_la===ANTLRv4Parser.DOC_COMMENT) {
this.state = 128;
this.match(ANTLRv4Parser.DOC_COMMENT);
this.state = 133;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
this.state = 134;
this.grammarDecl();
this.state = 138;
this._errHandler.sync(this);
_la = this._input.LA(1);
while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << ANTLRv4Parser.OPTIONS) | (1 << ANTLRv4Parser.TOKENS) | (1 << ANTLRv4Parser.CHANNELS) | (1 << ANTLRv4Parser.IMPORT))) !== 0) || _la===ANTLRv4Parser.AT) {
this.state = 135;
this.prequelConstruct();
this.state = 140;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
this.state = 141;
this.rules();
this.state = 145;
this._errHandler.sync(this);
_la = this._input.LA(1);
while(_la===ANTLRv4Parser.MODE) {
this.state = 142;
this.modeSpec();
this.state = 147;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
this.state = 148;
this.match(ANTLRv4Parser.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;
};
function GrammarDeclContext(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 = ANTLRv4Parser.RULE_grammarDecl;
return this;
}
GrammarDeclContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
GrammarDeclContext.prototype.constructor = GrammarDeclContext;
GrammarDeclContext.prototype.grammarType = function() {
return this.getTypedRuleContext(GrammarTypeContext,0);
};
GrammarDeclContext.prototype.identifier = function() {
return this.getTypedRuleContext(IdentifierContext,0);
};
GrammarDeclContext.prototype.SEMI = function() {
return this.getToken(ANTLRv4Parser.SEMI, 0);
};
GrammarDeclContext.prototype.enterRule = function(listener) {
if(listener instanceof ANTLRv4ParserListener ) {
listener.enterGrammarDecl(this);
}
};
GrammarDeclContext.prototype.exitRule = function(listener) {
if(listener instanceof ANTLRv4ParserListener ) {
listener.exitGrammarDecl(this);
}
};
ANTLRv4Parser.GrammarDeclContext = GrammarDeclContext;
ANTLRv4Parser.prototype.grammarDecl = function() {
var localctx = new GrammarDeclContext(this, this._ctx, this.state);
this.enterRule(localctx, 2, ANTLRv4Parser.RULE_grammarDecl);
try {
this.enterOuterAlt(localctx, 1);
this.state = 150;
this.grammarType();
this.state = 151;
this.identifier();
this.state = 152;
this.match(ANTLRv4Parser.SEMI);
} 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 GrammarTypeContext(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 = ANTLRv4Parser.RULE_grammarType;
return this;
}
GrammarTypeContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
GrammarTypeContext.prototype.constructor = GrammarTypeContext;
GrammarTypeContext.prototype.LEXER = function() {
return this.getToken(ANTLRv4Parser.LEXER, 0);
};
GrammarTypeContext.prototype.GRAMMAR = function() {
return this.getToken(ANTLRv4Parser.GRAMMAR, 0);
};
GrammarTypeContext.prototype.PARSER = function() {
return this.getToken(ANTLRv4Parser.PARSER, 0);
};
GrammarTypeContext.prototype.enterRule = function(listener) {
if(listener instanceof ANTLRv4ParserListener ) {
listener.enterGrammarType(this);
}
};
GrammarTypeContext.prototype.exitRule = function(listener) {
if(listener instanceof ANTLRv4ParserListener ) {
listener.exitGrammarType(this);
}
};
ANTLRv4Parser.GrammarTypeContext = GrammarTypeContext;
ANTLRv4Parser.prototype.grammarType = function() {
var localctx = new GrammarTypeContext(this, this._ctx, this.state);
this.enterRule(localctx, 4, ANTLRv4Parser.RULE_grammarType);
try {
this.enterOuterAlt(localctx, 1);
this.state = 159;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case ANTLRv4Parser.LEXER:
this.state = 154;
this.match(ANTLRv4Parser.LEXER);
this.state = 155;
this.match(ANTLRv4Parser.GRAMMAR);
break;
case ANTLRv4Parser.PARSER:
this.state = 156;
this.match(ANTLRv4Parser.PARSER);
this.state = 157;
this.match(ANTLRv4Parser.GRAMMAR);
break;
case ANTLRv4Parser.GRAMMAR:
this.state = 158;
this.match(ANTLRv4Parser.GRAMMAR);
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 PrequelConstructContext(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 = ANTLRv4Parser.RULE_prequelConstruct;
return this;
}
PrequelConstructContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
PrequelConstructContext.prototype.constructor = PrequelConstructContext;
PrequelConstructContext.prototype.optionsSpec = function() {
return this.getTypedRuleContext(OptionsSpecContext,0);
};
PrequelConstructContext.prototype.delegateGrammars = function() {
return this.getTypedRuleContext(DelegateGrammarsContext,0);
};
PrequelConstructContext.prototype.tokensSpec = function() {
return this.getTypedRuleContext(TokensSp