univac
Version:
Generate AST of lots of common programming languages using antlr4. JavaScript API and CLI tool.
11,646 lines • 425 kB
JavaScript
// @ts-nocheck
// Generated from C.g4 by ANTLR 4.7.2
// jshint ignore: start
var antlr4 = require('antlr4/index');
var CListener = require('./CListener').CListener;
var grammarFileName = "C.g4";
var serializedATN = ["\u0003\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964",
"\u0003x\u0516\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\u0004B\tB\u0004C\tC\u0004D\tD\u0004E\tE\u0004F\tF\u0004G\tG\u0004",
"H\tH\u0004I\tI\u0004J\tJ\u0004K\tK\u0004L\tL\u0004M\tM\u0004N\tN\u0004",
"O\tO\u0004P\tP\u0004Q\tQ\u0004R\tR\u0004S\tS\u0004T\tT\u0004U\tU\u0004",
"V\tV\u0004W\tW\u0004X\tX\u0003\u0002\u0003\u0002\u0003\u0002\u0006\u0002",
"\u00b4\n\u0002\r\u0002\u000e\u0002\u00b5\u0003\u0002\u0003\u0002\u0003",
"\u0002\u0003\u0002\u0003\u0002\u0003\u0002\u0005\u0002\u00be\n\u0002",
"\u0003\u0002\u0003\u0002\u0003\u0002\u0003\u0002\u0003\u0002\u0003\u0002",
"\u0003\u0002\u0003\u0002\u0003\u0002\u0003\u0002\u0003\u0002\u0003\u0002",
"\u0003\u0002\u0003\u0002\u0003\u0002\u0003\u0002\u0003\u0002\u0003\u0002",
"\u0005\u0002\u00d2\n\u0002\u0003\u0003\u0003\u0003\u0003\u0003\u0003",
"\u0003\u0003\u0003\u0003\u0003\u0003\u0003\u0003\u0004\u0003\u0004\u0003",
"\u0004\u0003\u0004\u0003\u0004\u0003\u0004\u0007\u0004\u00e1\n\u0004",
"\f\u0004\u000e\u0004\u00e4\u000b\u0004\u0003\u0005\u0003\u0005\u0003",
"\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0005\u0005\u00ed",
"\n\u0005\u0003\u0006\u0003\u0006\u0003\u0006\u0003\u0006\u0003\u0006",
"\u0003\u0006\u0003\u0006\u0003\u0006\u0003\u0006\u0003\u0006\u0003\u0006",
"\u0003\u0006\u0003\u0006\u0003\u0006\u0003\u0006\u0003\u0006\u0003\u0006",
"\u0003\u0006\u0003\u0006\u0003\u0006\u0003\u0006\u0003\u0006\u0003\u0006",
"\u0003\u0006\u0003\u0006\u0003\u0006\u0003\u0006\u0003\u0006\u0003\u0006",
"\u0003\u0006\u0003\u0006\u0003\u0006\u0003\u0006\u0003\u0006\u0005\u0006",
"\u0111\n\u0006\u0003\u0006\u0003\u0006\u0003\u0006\u0003\u0006\u0003",
"\u0006\u0003\u0006\u0003\u0006\u0003\u0006\u0005\u0006\u011b\n\u0006",
"\u0003\u0006\u0003\u0006\u0003\u0006\u0003\u0006\u0003\u0006\u0003\u0006",
"\u0003\u0006\u0003\u0006\u0003\u0006\u0003\u0006\u0003\u0006\u0007\u0006",
"\u0128\n\u0006\f\u0006\u000e\u0006\u012b\u000b\u0006\u0003\u0007\u0003",
"\u0007\u0003\u0007\u0003\u0007\u0003\u0007\u0003\u0007\u0007\u0007\u0133",
"\n\u0007\f\u0007\u000e\u0007\u0136\u000b\u0007\u0003\b\u0003\b\u0003",
"\b\u0003\b\u0003\b\u0003\b\u0003\b\u0003\b\u0003\b\u0003\b\u0003\b\u0003",
"\b\u0003\b\u0003\b\u0003\b\u0003\b\u0003\b\u0003\b\u0003\b\u0003\b\u0003",
"\b\u0003\b\u0005\b\u014e\n\b\u0003\t\u0003\t\u0003\n\u0003\n\u0003\n",
"\u0003\n\u0003\n\u0003\n\u0003\n\u0003\n\u0003\n\u0003\n\u0003\n\u0003",
"\n\u0003\n\u0005\n\u015f\n\n\u0003\u000b\u0003\u000b\u0003\u000b\u0003",
"\u000b\u0003\u000b\u0003\u000b\u0003\u000b\u0003\u000b\u0003\u000b\u0003",
"\u000b\u0003\u000b\u0003\u000b\u0007\u000b\u016d\n\u000b\f\u000b\u000e",
"\u000b\u0170\u000b\u000b\u0003\f\u0003\f\u0003\f\u0003\f\u0003\f\u0003",
"\f\u0003\f\u0003\f\u0003\f\u0007\f\u017b\n\f\f\f\u000e\f\u017e\u000b",
"\f\u0003\r\u0003\r\u0003\r\u0003\r\u0003\r\u0003\r\u0003\r\u0003\r\u0003",
"\r\u0007\r\u0189\n\r\f\r\u000e\r\u018c\u000b\r\u0003\u000e\u0003\u000e",
"\u0003\u000e\u0003\u000e\u0003\u000e\u0003\u000e\u0003\u000e\u0003\u000e",
"\u0003\u000e\u0003\u000e\u0003\u000e\u0003\u000e\u0003\u000e\u0003\u000e",
"\u0003\u000e\u0007\u000e\u019d\n\u000e\f\u000e\u000e\u000e\u01a0\u000b",
"\u000e\u0003\u000f\u0003\u000f\u0003\u000f\u0003\u000f\u0003\u000f\u0003",
"\u000f\u0003\u000f\u0003\u000f\u0003\u000f\u0007\u000f\u01ab\n\u000f",
"\f\u000f\u000e\u000f\u01ae\u000b\u000f\u0003\u0010\u0003\u0010\u0003",
"\u0010\u0003\u0010\u0003\u0010\u0003\u0010\u0007\u0010\u01b6\n\u0010",
"\f\u0010\u000e\u0010\u01b9\u000b\u0010\u0003\u0011\u0003\u0011\u0003",
"\u0011\u0003\u0011\u0003\u0011\u0003\u0011\u0007\u0011\u01c1\n\u0011",
"\f\u0011\u000e\u0011\u01c4\u000b\u0011\u0003\u0012\u0003\u0012\u0003",
"\u0012\u0003\u0012\u0003\u0012\u0003\u0012\u0007\u0012\u01cc\n\u0012",
"\f\u0012\u000e\u0012\u01cf\u000b\u0012\u0003\u0013\u0003\u0013\u0003",
"\u0013\u0003\u0013\u0003\u0013\u0003\u0013\u0007\u0013\u01d7\n\u0013",
"\f\u0013\u000e\u0013\u01da\u000b\u0013\u0003\u0014\u0003\u0014\u0003",
"\u0014\u0003\u0014\u0003\u0014\u0003\u0014\u0007\u0014\u01e2\n\u0014",
"\f\u0014\u000e\u0014\u01e5\u000b\u0014\u0003\u0015\u0003\u0015\u0003",
"\u0015\u0003\u0015\u0003\u0015\u0003\u0015\u0005\u0015\u01ed\n\u0015",
"\u0003\u0016\u0003\u0016\u0003\u0016\u0003\u0016\u0003\u0016\u0003\u0016",
"\u0005\u0016\u01f5\n\u0016\u0003\u0017\u0003\u0017\u0003\u0018\u0003",
"\u0018\u0003\u0018\u0003\u0018\u0003\u0018\u0003\u0018\u0007\u0018\u01ff",
"\n\u0018\f\u0018\u000e\u0018\u0202\u000b\u0018\u0003\u0019\u0003\u0019",
"\u0003\u001a\u0003\u001a\u0003\u001a\u0003\u001a\u0003\u001a\u0003\u001a",
"\u0003\u001a\u0003\u001a\u0005\u001a\u020e\n\u001a\u0003\u001b\u0006",
"\u001b\u0211\n\u001b\r\u001b\u000e\u001b\u0212\u0003\u001c\u0006\u001c",
"\u0216\n\u001c\r\u001c\u000e\u001c\u0217\u0003\u001d\u0003\u001d\u0003",
"\u001d\u0003\u001d\u0003\u001d\u0005\u001d\u021f\n\u001d\u0003\u001e",
"\u0003\u001e\u0003\u001e\u0003\u001e\u0003\u001e\u0003\u001e\u0007\u001e",
"\u0227\n\u001e\f\u001e\u000e\u001e\u022a\u000b\u001e\u0003\u001f\u0003",
"\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0005\u001f\u0231\n\u001f",
"\u0003 \u0003 \u0003!\u0003!\u0003!\u0003!\u0003!\u0003!\u0003!\u0003",
"!\u0003!\u0003!\u0003!\u0003!\u0003!\u0003!\u0003!\u0005!\u0244\n!\u0003",
"!\u0003!\u0007!\u0248\n!\f!\u000e!\u024b\u000b!\u0003\"\u0003\"\u0005",
"\"\u024f\n\"\u0003\"\u0003\"\u0003\"\u0003\"\u0003\"\u0003\"\u0003\"",
"\u0005\"\u0258\n\"\u0003#\u0003#\u0003$\u0003$\u0003$\u0003$\u0003$",
"\u0007$\u0261\n$\f$\u000e$\u0264\u000b$\u0003%\u0003%\u0005%\u0268\n",
"%\u0003%\u0003%\u0003%\u0005%\u026d\n%\u0003&\u0003&\u0005&\u0271\n",
"&\u0003&\u0003&\u0005&\u0275\n&\u0005&\u0277\n&\u0003\'\u0003\'\u0003",
"\'\u0003\'\u0003\'\u0003\'\u0007\'\u027f\n\'\f\'\u000e\'\u0282\u000b",
"\'\u0003(\u0003(\u0005(\u0286\n(\u0003(\u0003(\u0005(\u028a\n(\u0003",
")\u0003)\u0005)\u028e\n)\u0003)\u0003)\u0003)\u0003)\u0003)\u0003)\u0005",
")\u0296\n)\u0003)\u0003)\u0003)\u0003)\u0003)\u0003)\u0003)\u0005)\u029f",
"\n)\u0003*\u0003*\u0003*\u0003*\u0003*\u0003*\u0007*\u02a7\n*\f*\u000e",
"*\u02aa\u000b*\u0003+\u0003+\u0003+\u0003+\u0003+\u0005+\u02b1\n+\u0003",
",\u0003,\u0003-\u0003-\u0003-\u0003-\u0003-\u0003.\u0003.\u0003/\u0003",
"/\u0003/\u0003/\u0003/\u0003/\u0005/\u02c2\n/\u00030\u00030\u00030\u0003",
"0\u00030\u00030\u00030\u00030\u00030\u00030\u00050\u02ce\n0\u00031\u0005",
"1\u02d1\n1\u00031\u00031\u00071\u02d5\n1\f1\u000e1\u02d8\u000b1\u0003",
"2\u00032\u00032\u00032\u00032\u00032\u00032\u00032\u00032\u00032\u0003",
"2\u00052\u02e5\n2\u00032\u00032\u00032\u00032\u00052\u02eb\n2\u0003",
"2\u00032\u00032\u00052\u02f0\n2\u00032\u00052\u02f3\n2\u00032\u0003",
"2\u00032\u00032\u00032\u00052\u02fa\n2\u00032\u00032\u00032\u00032\u0003",
"2\u00032\u00032\u00032\u00032\u00032\u00032\u00032\u00032\u00052\u0309",
"\n2\u00032\u00032\u00032\u00032\u00032\u00032\u00032\u00032\u00032\u0003",
"2\u00052\u0315\n2\u00032\u00072\u0318\n2\f2\u000e2\u031b\u000b2\u0003",
"3\u00033\u00033\u00063\u0320\n3\r3\u000e3\u0321\u00033\u00033\u0005",
"3\u0326\n3\u00034\u00034\u00034\u00034\u00034\u00034\u00034\u00035\u0003",
"5\u00035\u00075\u0332\n5\f5\u000e5\u0335\u000b5\u00035\u00055\u0338",
"\n5\u00036\u00036\u00036\u00056\u033d\n6\u00036\u00056\u0340\n6\u0003",
"6\u00056\u0343\n6\u00037\u00037\u00037\u00037\u00037\u00077\u034a\n",
"7\f7\u000e7\u034d\u000b7\u00038\u00038\u00058\u0351\n8\u00038\u0003",
"8\u00058\u0355\n8\u00038\u00038\u00038\u00058\u035a\n8\u00038\u0003",
"8\u00058\u035e\n8\u00038\u00058\u0361\n8\u00039\u00039\u00039\u0003",
"9\u00039\u00079\u0368\n9\f9\u000e9\u036b\u000b9\u0003:\u0003:\u0003",
":\u0003:\u0003:\u0005:\u0372\n:\u0003;\u0003;\u0003;\u0003;\u0003;\u0003",
";\u0007;\u037a\n;\f;\u000e;\u037d\u000b;\u0003<\u0003<\u0003<\u0003",
"<\u0003<\u0005<\u0384\n<\u0005<\u0386\n<\u0003=\u0003=\u0003=\u0003",
"=\u0003=\u0003=\u0007=\u038e\n=\f=\u000e=\u0391\u000b=\u0003>\u0003",
">\u0005>\u0395\n>\u0003?\u0003?\u0005?\u0399\n?\u0003?\u0003?\u0007",
"?\u039d\n?\f?\u000e?\u03a0\u000b?\u0005?\u03a2\n?\u0003@\u0003@\u0003",
"@\u0003@\u0003@\u0007@\u03a9\n@\f@\u000e@\u03ac\u000b@\u0003@\u0003",
"@\u0005@\u03b0\n@\u0003@\u0005@\u03b3\n@\u0003@\u0003@\u0003@\u0003",
"@\u0005@\u03b9\n@\u0003@\u0003@\u0003@\u0003@\u0003@\u0003@\u0003@\u0003",
"@\u0003@\u0003@\u0003@\u0003@\u0003@\u0003@\u0005@\u03c9\n@\u0003@\u0003",
"@\u0007@\u03cd\n@\f@\u000e@\u03d0\u000b@\u0005@\u03d2\n@\u0003@\u0003",
"@\u0003@\u0005@\u03d7\n@\u0003@\u0005@\u03da\n@\u0003@\u0003@\u0003",
"@\u0003@\u0003@\u0005@\u03e1\n@\u0003@\u0003@\u0003@\u0003@\u0003@\u0003",
"@\u0003@\u0003@\u0003@\u0003@\u0003@\u0003@\u0003@\u0003@\u0003@\u0003",
"@\u0003@\u0005@\u03f4\n@\u0003@\u0003@\u0007@\u03f8\n@\f@\u000e@\u03fb",
"\u000b@\u0007@\u03fd\n@\f@\u000e@\u0400\u000b@\u0003A\u0003A\u0003B",
"\u0003B\u0003B\u0003B\u0003B\u0003B\u0003B\u0003B\u0003B\u0003B\u0005",
"B\u040e\nB\u0003C\u0003C\u0005C\u0412\nC\u0003C\u0003C\u0003C\u0003",
"C\u0003C\u0005C\u0419\nC\u0003C\u0007C\u041c\nC\fC\u000eC\u041f\u000b",
"C\u0003D\u0003D\u0003D\u0003E\u0003E\u0003E\u0003E\u0003E\u0007E\u0429",
"\nE\fE\u000eE\u042c\u000bE\u0003F\u0003F\u0003F\u0003F\u0003F\u0003",
"F\u0005F\u0434\nF\u0003G\u0003G\u0003G\u0003G\u0003G\u0006G\u043b\n",
"G\rG\u000eG\u043c\u0003G\u0003G\u0003G\u0003H\u0003H\u0003H\u0003H\u0003",
"H\u0003H\u0003H\u0003H\u0003H\u0003H\u0003H\u0003H\u0007H\u044e\nH\f",
"H\u000eH\u0451\u000bH\u0005H\u0453\nH\u0003H\u0003H\u0003H\u0003H\u0007",
"H\u0459\nH\fH\u000eH\u045c\u000bH\u0005H\u045e\nH\u0007H\u0460\nH\f",
"H\u000eH\u0463\u000bH\u0003H\u0003H\u0005H\u0467\nH\u0003I\u0003I\u0003",
"I\u0003I\u0003I\u0003I\u0003I\u0003I\u0003I\u0003I\u0003I\u0005I\u0474",
"\nI\u0003J\u0003J\u0005J\u0478\nJ\u0003J\u0003J\u0003K\u0003K\u0003",
"K\u0003K\u0003K\u0007K\u0481\nK\fK\u000eK\u0484\u000bK\u0003L\u0003",
"L\u0005L\u0488\nL\u0003M\u0005M\u048b\nM\u0003M\u0003M\u0003N\u0003",
"N\u0003N\u0003N\u0003N\u0003N\u0003N\u0005N\u0496\nN\u0003N\u0003N\u0003",
"N\u0003N\u0003N\u0003N\u0005N\u049e\nN\u0003O\u0003O\u0003O\u0003O\u0003",
"O\u0003O\u0003O\u0003O\u0003O\u0003O\u0003O\u0003O\u0003O\u0003O\u0003",
"O\u0003O\u0003O\u0003O\u0003O\u0003O\u0005O\u04b4\nO\u0003P\u0003P\u0003",
"P\u0005P\u04b9\nP\u0003P\u0003P\u0005P\u04bd\nP\u0003P\u0005P\u04c0",
"\nP\u0003P\u0003P\u0005P\u04c4\nP\u0003P\u0003P\u0005P\u04c8\nP\u0005",
"P\u04ca\nP\u0003Q\u0003Q\u0003Q\u0003Q\u0005Q\u04d0\nQ\u0003R\u0003",
"R\u0003R\u0003R\u0003R\u0003R\u0007R\u04d8\nR\fR\u000eR\u04db\u000b",
"R\u0003S\u0003S\u0003S\u0003S\u0003S\u0003S\u0003S\u0003S\u0003S\u0005",
"S\u04e6\nS\u0003S\u0003S\u0003S\u0003S\u0003S\u0005S\u04ed\nS\u0003",
"T\u0005T\u04f0\nT\u0003T\u0003T\u0003U\u0003U\u0003U\u0003U\u0003U\u0007",
"U\u04f9\nU\fU\u000eU\u04fc\u000bU\u0003V\u0003V\u0003V\u0005V\u0501",
"\nV\u0003W\u0005W\u0504\nW\u0003W\u0003W\u0005W\u0508\nW\u0003W\u0003",
"W\u0003X\u0003X\u0003X\u0003X\u0003X\u0007X\u0511\nX\fX\u000eX\u0514",
"\u000bX\u0003X\u0002 \u0006\n\f\u0014\u0016\u0018\u001a\u001c\u001e",
" \"$&.:@FLRbptx~\u0084\u0088\u0094\u00a2\u00a8\u00aeY\u0002\u0004\u0006",
"\b\n\f\u000e\u0010\u0012\u0014\u0016\u0018\u001a\u001c\u001e \"$&(*",
",.02468:<>@BDFHJLNPRTVXZ\\^`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\u0002\u000e\u0007\u0002",
"IIKKMMPPUV\u0003\u0002[e\b\u0002\u0011\u0011\u001c\u001c$$**--<<\n\u0002",
"\u0006\b\u0014\u0014\u0019\u0019\u001d\u001d\"#\'(/067\u0003\u0002\u0006",
"\b\u0004\u0002++..\u0006\u0002\u0015\u0015%%1155\u0005\u0002\n\u000b",
"!!::\u0004\u0002=>ZZ\u0003\u0002=>\u0004\u0002\r\r\u000f\u000f\u0004",
"\u0002\u0010\u001011\u0002\u058b\u0002\u00d1\u0003\u0002\u0002\u0002",
"\u0004\u00d3\u0003\u0002\u0002\u0002\u0006\u00da\u0003\u0002\u0002\u0002",
"\b\u00ec\u0003\u0002\u0002\u0002\n\u0110\u0003\u0002\u0002\u0002\f\u012c",
"\u0003\u0002\u0002\u0002\u000e\u014d\u0003\u0002\u0002\u0002\u0010\u014f",
"\u0003\u0002\u0002\u0002\u0012\u015e\u0003\u0002\u0002\u0002\u0014\u0160",
"\u0003\u0002\u0002\u0002\u0016\u0171\u0003\u0002\u0002\u0002\u0018\u017f",
"\u0003\u0002\u0002\u0002\u001a\u018d\u0003\u0002\u0002\u0002\u001c\u01a1",
"\u0003\u0002\u0002\u0002\u001e\u01af\u0003\u0002\u0002\u0002 \u01ba",
"\u0003\u0002\u0002\u0002\"\u01c5\u0003\u0002\u0002\u0002$\u01d0\u0003",
"\u0002\u0002\u0002&\u01db\u0003\u0002\u0002\u0002(\u01e6\u0003\u0002",
"\u0002\u0002*\u01f4\u0003\u0002\u0002\u0002,\u01f6\u0003\u0002\u0002",
"\u0002.\u01f8\u0003\u0002\u0002\u00020\u0203\u0003\u0002\u0002\u0002",
"2\u020d\u0003\u0002\u0002\u00024\u0210\u0003\u0002\u0002\u00026\u0215",
"\u0003\u0002\u0002\u00028\u021e\u0003\u0002\u0002\u0002:\u0220\u0003",
"\u0002\u0002\u0002<\u0230\u0003\u0002\u0002\u0002>\u0232\u0003\u0002",
"\u0002\u0002@\u0243\u0003\u0002\u0002\u0002B\u0257\u0003\u0002\u0002",
"\u0002D\u0259\u0003\u0002\u0002\u0002F\u025b\u0003\u0002\u0002\u0002",
"H\u026c\u0003\u0002\u0002\u0002J\u0276\u0003\u0002\u0002\u0002L\u0278",
"\u0003\u0002\u0002\u0002N\u0289\u0003\u0002\u0002\u0002P\u029e\u0003",
"\u0002\u0002\u0002R\u02a0\u0003\u0002\u0002\u0002T\u02b0\u0003\u0002",
"\u0002\u0002V\u02b2\u0003\u0002\u0002\u0002X\u02b4\u0003\u0002\u0002",
"\u0002Z\u02b9\u0003\u0002\u0002\u0002\\\u02c1\u0003\u0002\u0002\u0002",
"^\u02cd\u0003\u0002\u0002\u0002`\u02d0\u0003\u0002\u0002\u0002b\u02ea",
"\u0003\u0002\u0002\u0002d\u0325\u0003\u0002\u0002\u0002f\u0327\u0003",
"\u0002\u0002\u0002h\u0337\u0003\u0002\u0002\u0002j\u0342\u0003\u0002",
"\u0002\u0002l\u034b\u0003\u0002\u0002\u0002n\u0360\u0003\u0002\u0002",
"\u0002p\u0362\u0003\u0002\u0002\u0002r\u0371\u0003\u0002\u0002\u0002",
"t\u0373\u0003\u0002\u0002\u0002v\u0385\u0003\u0002\u0002\u0002x\u0387",
"\u0003\u0002\u0002\u0002z\u0392\u0003\u0002\u0002\u0002|\u03a1\u0003",
"\u0002\u0002\u0002~\u03d1\u0003\u0002\u0002\u0002\u0080\u0401\u0003",
"\u0002\u0002\u0002\u0082\u040d\u0003\u0002\u0002\u0002\u0084\u040f\u0003",
"\u0002\u0002\u0002\u0086\u0420\u0003\u0002\u0002\u0002\u0088\u0423\u0003",
"\u0002\u0002\u0002\u008a\u0433\u0003\u0002\u0002\u0002\u008c\u0435\u0003",
"\u0002\u0002\u0002\u008e\u0466\u0003\u0002\u0002\u0002\u0090\u0473\u0003",
"\u0002\u0002\u0002\u0092\u0475\u0003\u0002\u0002\u0002\u0094\u047b\u0003",
"\u0002\u0002\u0002\u0096\u0487\u0003\u0002\u0002\u0002\u0098\u048a\u0003",
"\u0002\u0002\u0002\u009a\u049d\u0003\u0002\u0002\u0002\u009c\u04b3\u0003",
"\u0002\u0002\u0002\u009e\u04c9\u0003\u0002\u0002\u0002\u00a0\u04cf\u0003",
"\u0002\u0002\u0002\u00a2\u04d1\u0003\u0002\u0002\u0002\u00a4\u04ec\u0003",
"\u0002\u0002\u0002\u00a6\u04ef\u0003\u0002\u0002\u0002\u00a8\u04f3\u0003",
"\u0002\u0002\u0002\u00aa\u0500\u0003\u0002\u0002\u0002\u00ac\u0503\u0003",
"\u0002\u0002\u0002\u00ae\u050b\u0003\u0002\u0002\u0002\u00b0\u00d2\u0007",
"k\u0002\u0002\u00b1\u00d2\u0007l\u0002\u0002\u00b2\u00b4\u0007n\u0002",
"\u0002\u00b3\u00b2\u0003\u0002\u0002\u0002\u00b4\u00b5\u0003\u0002\u0002",
"\u0002\u00b5\u00b3\u0003\u0002\u0002\u0002\u00b5\u00b6\u0003\u0002\u0002",
"\u0002\u00b6\u00d2\u0003\u0002\u0002\u0002\u00b7\u00b8\u0007=\u0002",
"\u0002\u00b8\u00b9\u0005.\u0018\u0002\u00b9\u00ba\u0007>\u0002\u0002",
"\u00ba\u00d2\u0003\u0002\u0002\u0002\u00bb\u00d2\u0005\u0004\u0003\u0002",
"\u00bc\u00be\u0007\u0003\u0002\u0002\u00bd\u00bc\u0003\u0002\u0002\u0002",
"\u00bd\u00be\u0003\u0002\u0002\u0002\u00be\u00bf\u0003\u0002\u0002\u0002",
"\u00bf\u00c0\u0007=\u0002\u0002\u00c0\u00c1\u0005\u0092J\u0002\u00c1",
"\u00c2\u0007>\u0002\u0002\u00c2\u00d2\u0003\u0002\u0002\u0002\u00c3",
"\u00c4\u0007\u0004\u0002\u0002\u00c4\u00c5\u0007=\u0002\u0002\u00c5",
"\u00c6\u0005\u000e\b\u0002\u00c6\u00c7\u0007Z\u0002\u0002\u00c7\u00c8",
"\u0005z>\u0002\u00c8\u00c9\u0007>\u0002\u0002\u00c9\u00d2\u0003\u0002",
"\u0002\u0002\u00ca\u00cb\u0007\u0005\u0002\u0002\u00cb\u00cc\u0007=",
"\u0002\u0002\u00cc\u00cd\u0005z>\u0002\u00cd\u00ce\u0007Z\u0002\u0002",
"\u00ce\u00cf\u0005\u000e\b\u0002\u00cf\u00d0\u0007>\u0002\u0002\u00d0",
"\u00d2\u0003\u0002\u0002\u0002\u00d1\u00b0\u0003\u0002\u0002\u0002\u00d1",
"\u00b1\u0003\u0002\u0002\u0002\u00d1\u00b3\u0003\u0002\u0002\u0002\u00d1",
"\u00b7\u0003\u0002\u0002\u0002\u00d1\u00bb\u0003\u0002\u0002\u0002\u00d1",
"\u00bd\u0003\u0002\u0002\u0002\u00d1\u00c3\u0003\u0002\u0002\u0002\u00d1",
"\u00ca\u0003\u0002\u0002\u0002\u00d2\u0003\u0003\u0002\u0002\u0002\u00d3",
"\u00d4\u00078\u0002\u0002\u00d4\u00d5\u0007=\u0002\u0002\u00d5\u00d6",
"\u0005*\u0016\u0002\u00d6\u00d7\u0007Z\u0002\u0002\u00d7\u00d8\u0005",
"\u0006\u0004\u0002\u00d8\u00d9\u0007>\u0002\u0002\u00d9\u0005\u0003",
"\u0002\u0002\u0002\u00da\u00db\b\u0004\u0001\u0002\u00db\u00dc\u0005",
"\b\u0005\u0002\u00dc\u00e2\u0003\u0002\u0002\u0002\u00dd\u00de\f\u0003",
"\u0002\u0002\u00de\u00df\u0007Z\u0002\u0002\u00df\u00e1\u0005\b\u0005",
"\u0002\u00e0\u00dd\u0003\u0002\u0002\u0002\u00e1\u00e4\u0003\u0002\u0002",
"\u0002\u00e2\u00e0\u0003\u0002\u0002\u0002\u00e2\u00e3\u0003\u0002\u0002",
"\u0002\u00e3\u0007\u0003\u0002\u0002\u0002\u00e4\u00e2\u0003\u0002\u0002",
"\u0002\u00e5\u00e6\u0005z>\u0002\u00e6\u00e7\u0007X\u0002\u0002\u00e7",
"\u00e8\u0005*\u0016\u0002\u00e8\u00ed\u0003\u0002\u0002\u0002\u00e9",
"\u00ea\u0007\u0017\u0002\u0002\u00ea\u00eb\u0007X\u0002\u0002\u00eb",
"\u00ed\u0005*\u0016\u0002\u00ec\u00e5\u0003\u0002\u0002\u0002\u00ec",
"\u00e9\u0003\u0002\u0002\u0002\u00ed\t\u0003\u0002\u0002\u0002\u00ee",
"\u00ef\b\u0006\u0001\u0002\u00ef\u0111\u0005\u0002\u0002\u0002\u00f0",
"\u00f1\u0007=\u0002\u0002\u00f1\u00f2\u0005z>\u0002\u00f2\u00f3\u0007",
">\u0002\u0002\u00f3\u00f4\u0007A\u0002\u0002\u00f4\u00f5\u0005\u0084",
"C\u0002\u00f5\u00f6\u0007B\u0002\u0002\u00f6\u0111\u0003\u0002\u0002",
"\u0002\u00f7\u00f8\u0007=\u0002\u0002\u00f8\u00f9\u0005z>\u0002\u00f9",
"\u00fa\u0007>\u0002\u0002\u00fa\u00fb\u0007A\u0002\u0002\u00fb\u00fc",
"\u0005\u0084C\u0002\u00fc\u00fd\u0007Z\u0002\u0002\u00fd\u00fe\u0007",
"B\u0002\u0002\u00fe\u0111\u0003\u0002\u0002\u0002\u00ff\u0100\u0007",
"\u0003\u0002\u0002\u0100\u0101\u0007=\u0002\u0002\u0101\u0102\u0005",
"z>\u0002\u0102\u0103\u0007>\u0002\u0002\u0103\u0104\u0007A\u0002\u0002",
"\u0104\u0105\u0005\u0084C\u0002\u0105\u0106\u0007B\u0002\u0002\u0106",
"\u0111\u0003\u0002\u0002\u0002\u0107\u0108\u0007\u0003\u0002\u0002\u0108",
"\u0109\u0007=\u0002\u0002\u0109\u010a\u0005z>\u0002\u010a\u010b\u0007",
">\u0002\u0002\u010b\u010c\u0007A\u0002\u0002\u010c\u010d\u0005\u0084",
"C\u0002\u010d\u010e\u0007Z\u0002\u0002\u010e\u010f\u0007B\u0002\u0002",
"\u010f\u0111\u0003\u0002\u0002\u0002\u0110\u00ee\u0003\u0002\u0002\u0002",
"\u0110\u00f0\u0003\u0002\u0002\u0002\u0110\u00f7\u0003\u0002\u0002\u0002",
"\u0110\u00ff\u0003\u0002\u0002\u0002\u0110\u0107\u0003\u0002\u0002\u0002",
"\u0111\u0129\u0003\u0002\u0002\u0002\u0112\u0113\f\f\u0002\u0002\u0113",
"\u0114\u0007?\u0002\u0002\u0114\u0115\u0005.\u0018\u0002\u0115\u0116",
"\u0007@\u0002\u0002\u0116\u0128\u0003\u0002\u0002\u0002\u0117\u0118",
"\f\u000b\u0002\u0002\u0118\u011a\u0007=\u0002\u0002\u0119\u011b\u0005",
"\f\u0007\u0002\u011a\u0119\u0003\u0002\u0002\u0002\u011a\u011b\u0003",
"\u0002\u0002\u0002\u011b\u011c\u0003\u0002\u0002\u0002\u011c\u0128\u0007",
">\u0002\u0002\u011d\u011e\f\n\u0002\u0002\u011e\u011f\u0007i\u0002\u0002",
"\u011f\u0128\u0007k\u0002\u0002\u0120\u0121\f\t\u0002\u0002\u0121\u0122",
"\u0007h\u0002\u0002\u0122\u0128\u0007k\u0002\u0002\u0123\u0124\f\b\u0002",
"\u0002\u0124\u0128\u0007J\u0002\u0002\u0125\u0126\f\u0007\u0002\u0002",
"\u0126\u0128\u0007L\u0002\u0002\u0127\u0112\u0003\u0002\u0002\u0002",
"\u0127\u0117\u0003\u0002\u0002\u0002\u0127\u011d\u0003\u0002\u0002\u0002",
"\u0127\u0120\u0003\u0002\u0002\u0002\u0127\u0123\u0003\u0002\u0002\u0002",
"\u0127\u0125\u0003\u0002\u0002\u0002\u0128\u012b\u0003\u0002\u0002\u0002",
"\u0129\u0127\u0003\u0002\u0002\u0002\u0129\u012a\u0003\u0002\u0002\u0002",
"\u012a\u000b\u0003\u0002\u0002\u0002\u012b\u0129\u0003\u0002\u0002\u0002",
"\u012c\u012d\b\u0007\u0001\u0002\u012d\u012e\u0005*\u0016\u0002\u012e",
"\u0134\u0003\u0002\u0002\u0002\u012f\u0130\f\u0003\u0002\u0002\u0130",
"\u0131\u0007Z\u0002\u0002\u0131\u0133\u0005*\u0016\u0002\u0132\u012f",
"\u0003\u0002\u0002\u0002\u0133\u0136\u0003\u0002\u0002\u0002\u0134\u0132",
"\u0003\u0002\u0002\u0002\u0134\u0135\u0003\u0002\u0002\u0002\u0135\r",
"\u0003\u0002\u0002\u0002\u0136\u0134\u0003\u0002\u0002\u0002\u0137\u014e",
"\u0005\n\u0006\u0002\u0138\u0139\u0007J\u0002\u0002\u0139\u014e\u0005",
"\u000e\b\u0002\u013a\u013b\u0007L\u0002\u0002\u013b\u014e\u0005\u000e",
"\b\u0002\u013c\u013d\u0005\u0010\t\u0002\u013d\u013e\u0005\u0012\n\u0002",
"\u013e\u014e\u0003\u0002\u0002\u0002\u013f\u0140\u0007)\u0002\u0002",
"\u0140\u014e\u0005\u000e\b\u0002\u0141\u0142\u0007)\u0002\u0002\u0142",
"\u0143\u0007=\u0002\u0002\u0143\u0144\u0005z>\u0002\u0144\u0145\u0007",
">\u0002\u0002\u0145\u014e\u0003\u0002\u0002\u0002\u0146\u0147\u0007",
"4\u0002\u0002\u0147\u0148\u0007=\u0002\u0002\u0148\u0149\u0005z>\u0002",
"\u0149\u014a\u0007>\u0002\u0002\u014a\u014e\u0003\u0002\u0002\u0002",
"\u014b\u014c\u0007R\u0002\u0002\u014c\u014e\u0007k\u0002\u0002\u014d",
"\u0137\u0003\u0002\u0002\u0002\u014d\u0138\u0003\u0002\u0002\u0002\u014d",
"\u013a\u0003\u0002\u0002\u0002\u014d\u013c\u0003\u0002\u0002\u0002\u014d",
"\u013f\u0003\u0002\u0002\u0002\u014d\u0141\u0003\u0002\u0002\u0002\u014d",
"\u0146\u0003\u0002\u0002\u0002\u014d\u014b\u0003\u0002\u0002\u0002\u014e",
"\u000f\u0003\u0002\u0002\u0002\u014f\u0150\t\u0002\u0002\u0002\u0150",
"\u0011\u0003\u0002\u0002\u0002\u0151\u0152\u0007=\u0002\u0002\u0152",
"\u0153\u0005z>\u0002\u0153\u0154\u0007>\u0002\u0002\u0154\u0155\u0005",
"\u0012\n\u0002\u0155\u015f\u0003\u0002\u0002\u0002\u0156\u0157\u0007",
"\u0003\u0002\u0002\u0157\u0158\u0007=\u0002\u0002\u0158\u0159\u0005",
"z>\u0002\u0159\u015a\u0007>\u0002\u0002\u015a\u015b\u0005\u0012\n\u0002",
"\u015b\u015f\u0003\u0002\u0002\u0002\u015c\u015f\u0005\u000e\b\u0002",
"\u015d\u015f\u0007m\u0002\u0002\u015e\u0151\u0003\u0002\u0002\u0002",
"\u015e\u0156\u0003\u0002\u0002\u0002\u015e\u015c\u0003\u0002\u0002\u0002",
"\u015e\u015d\u0003\u0002\u0002\u0002\u015f\u0013\u0003\u0002\u0002\u0002",
"\u0160\u0161\b\u000b\u0001\u0002\u0161\u0162\u0005\u0012\n\u0002\u0162",
"\u016e\u0003\u0002\u0002\u0002\u0163\u0164\f\u0005\u0002\u0002\u0164",
"\u0165\u0007M\u0002\u0002\u0165\u016d\u0005\u0012\n\u0002\u0166\u0167",
"\f\u0004\u0002\u0002\u0167\u0168\u0007N\u0002\u0002\u0168\u016d\u0005",
"\u0012\n\u0002\u0169\u016a\f\u0003\u0002\u0002\u016a\u016b\u0007O\u0002",
"\u0002\u016b\u016d\u0005\u0012\n\u0002\u016c\u0163\u0003\u0002\u0002",
"\u0002\u016c\u0166\u0003\u0002\u0002\u0002\u016c\u0169\u0003\u0002\u0002",
"\u0002\u016d\u0170\u0003\u0002\u0002\u0002\u016e\u016c\u0003\u0002\u0002",
"\u0002\u016e\u016f\u0003\u0002\u0002\u0002\u016f\u0015\u0003\u0002\u0002",
"\u0002\u0170\u016e\u0003\u0002\u0002\u0002\u0171\u0172\b\f\u0001\u0002",
"\u0172\u0173\u0005\u0014\u000b\u0002\u0173\u017c\u0003\u0002\u0002\u0002",
"\u0174\u0175\f\u0004\u0002\u0002\u0175\u0176\u0007I\u0002\u0002\u0176",
"\u017b\u0005\u0014\u000b\u0002\u0177\u0178\f\u0003\u0002\u0002\u0178",
"\u0179\u0007K\u0002\u0002\u0179\u017b\u0005\u0014\u000b\u0002\u017a",
"\u0174\u0003\u0002\u0002\u0002\u017a\u0177\u0003\u0002\u0002\u0002\u017b",
"\u017e\u0003\u0002\u0002\u0002\u017c\u017a\u0003\u0002\u0002\u0002\u017c",
"\u017d\u0003\u0002\u0002\u0002\u017d\u0017\u0003\u0002\u0002\u0002\u017e",
"\u017c\u0003\u0002\u0002\u0002\u017f\u0180\b\r\u0001\u0002\u0180\u0181",
"\u0005\u0016\f\u0002\u0181\u018a\u0003\u0002\u0002\u0002\u0182\u0183",
"\f\u0004\u0002\u0002\u0183\u0184\u0007G\u0002\u0002\u0184\u0189\u0005",
"\u0016\f\u0002\u0185\u0186\f\u0003\u0002\u0002\u0186\u0187\u0007H\u0002",
"\u0002\u0187\u0189\u0005\u0016\f\u0002\u0188\u0182\u0003\u0002\u0002",
"\u0002\u0188\u0185\u0003\u0002\u0002\u0002\u0189\u018c\u0003\u0002\u0002",
"\u0002\u018a\u0188\u0003\u0002\u0002\u0002\u018a\u018b\u0003\u0002\u0002",
"\u0002\u018b\u0019\u0003\u0002\u0002\u0002\u018c\u018a\u0003\u0002\u0002",
"\u0002\u018d\u018e\b\u000e\u0001\u0002\u018e\u018f\u0005\u0018\r\u0002",
"\u018f\u019e\u0003\u0002\u0002\u0002\u0190\u0191\f\u0006\u0002\u0002",
"\u0191\u0192\u0007C\u0002\u0002\u0192\u019d\u0005\u0018\r\u0002\u0193",
"\u0194\f\u0005\u0002\u0002\u0194\u0195\u0007E\u0002\u0002\u0195\u019d",
"\u0005\u0018\r\u0002\u0196\u0197\f\u0004\u0002\u0002\u0197\u0198\u0007",
"D\u0002\u0002\u0198\u019d\u0005\u0018\r\u0002\u0199\u019a\f\u0003\u0002",
"\u0002\u019a\u019b\u0007F\u0002\u0002\u019b\u019d\u0005\u0018\r\u0002",
"\u019c\u0190\u0003\u0002\u0002\u0002\u019c\u0193\u0003\u0002\u0002\u0002",
"\u019c\u0196\u0003\u0002\u0002\u0002\u019c\u0199\u0003\u0002\u0002\u0002",
"\u019d\u01a0\u0003\u0002\u0002\u0002\u019e\u019c\u0003\u0002\u0002\u0002",
"\u019e\u019f\u0003\u0002\u0002\u0002\u019f\u001b\u0003\u0002\u0002\u0002",
"\u01a0\u019e\u0003\u0002\u0002\u0002\u01a1\u01a2\b\u000f\u0001\u0002",
"\u01a2\u01a3\u0005\u001a\u000e\u0002\u01a3\u01ac\u0003\u0002\u0002\u0002",
"\u01a4\u01a5\f\u0004\u0002\u0002\u01a5\u01a6\u0007f\u0002\u0002\u01a6",
"\u01ab\u0005\u001a\u000e\u0002\u01a7\u01a8\f\u0003\u0002\u0002\u01a8",
"\u01a9\u0007g\u0002\u0002\u01a9\u01ab\u0005\u001a\u000e\u0002\u01aa",
"\u01a4\u0003\u0002\u0002\u0002\u01aa\u01a7\u0003\u0002\u0002\u0002\u01ab",
"\u01ae\u0003\u0002\u0002\u0002\u01ac\u01aa\u0003\u0002\u0002\u0002\u01ac",
"\u01ad\u0003\u0002\u0002\u0002\u01ad\u001d\u0003\u0002\u0002\u0002\u01ae",
"\u01ac\u0003\u0002\u0002\u0002\u01af\u01b0\b\u0010\u0001\u0002\u01b0",
"\u01b1\u0005\u001c\u000f\u0002\u01b1\u01b7\u0003\u0002\u0002\u0002\u01b2",
"\u01b3\f\u0003\u0002\u0002\u01b3\u01b4\u0007P\u0002\u0002\u01b4\u01b6",
"\u0005\u001c\u000f\u0002\u01b5\u01b2\u0003\u0002\u0002\u0002\u01b6\u01b9",
"\u0003\u0002\u0002\u0002\u01b7\u01b5\u0003\u0002\u0002\u0002\u01b7\u01b8",
"\u0003\u0002\u0002\u0002\u01b8\u001f\u0003\u0002\u0002\u0002\u01b9\u01b7",
"\u0003\u0002\u0002\u0002\u01ba\u01bb\b\u0011\u0001\u0002\u01bb\u01bc",
"\u0005\u001e\u0010\u0002\u01bc\u01c2\u0003\u0002\u0002\u0002\u01bd\u01be",
"\f\u0003\u0002\u0002\u01be\u01bf\u0007T\u0002\u0002\u01bf\u01c1\u0005",
"\u001e\u0010\u0002\u01c0\u01bd\u0003\u0002\u0002\u0002\u01c1\u01c4\u0003",
"\u0002\u0002\u0002\u01c2\u01c0\u0003\u0002\u0002\u0002\u01c2\u01c3\u0003",
"\u0002\u0002\u0002\u01c3!\u0003\u0002\u0002\u0002\u01c4\u01c2\u0003",
"\u0002\u0002\u0002\u01c5\u01c6\b\u0012\u0001\u0002\u01c6\u01c7\u0005",
" \u0011\u0002\u01c7\u01cd\u0003\u0002\u0002\u0002\u01c8\u01c9\f\u0003",
"\u0002\u0002\u01c9\u01ca\u0007Q\u0002\u0002\u01ca\u01cc\u0005 \u0011",
"\u0002\u01cb\u01c8\u0003\u0002\u0002\u0002\u01cc\u01cf\u0003\u0002\u0002",
"\u0002\u01cd\u01cb\u0003\u0002\u0002\u0002\u01cd\u01ce\u0003\u0002\u0002",
"\u0002\u01ce#\u0003\u0002\u0002\u0002\u01cf\u01cd\u0003\u0002\u0002",
"\u0002\u01d0\u01d1\b\u0013\u0001\u0002\u01d1\u01d2\u0005\"\u0012\u0002",
"\u01d2\u01d8\u0003\u0002\u0002\u0002\u01d3\u01d4\f\u0003\u0002\u0002",
"\u01d4\u01d5\u0007R\u0002\u0002\u01d5\u01d7\u0005\"\u0012\u0002\u01d6",
"\u01d3\u0003\u0002\u0002\u0002\u01d7\u01da\u0003\u0002\u0002\u0002\u01d8",
"\u01d6\u0003\u0002\u0002\u0002\u01d8\u01d9\u0003\u0002\u0002\u0002\u01d9",
"%\u0003\u0002\u0002\u0002\u01da\u01d8\u0003\u0002\u0002\u0002\u01db",
"\u01dc\b\u0014\u0001\u0002\u01dc\u01dd\u0005$\u0013\u0002\u01dd\u01e3",
"\u0003\u0002\u0002\u0002\u01de\u01df\f\u0003\u0002\u0002\u01df\u01e0",
"\u0007S\u0002\u0002\u01e0\u01e2\u0005$\u0013\u0002\u01e1\u01de\u0003",
"\u0002\u0002\u0002\u01e2\u01e5\u0003\u0002\u0002\u0002\u01e3\u01e1\u0003",
"\u0002\u0002\u0002\u01e3\u01e4\u0003\u0002\u0002\u0002\u01e4\'\u0003",
"\u0002\u0002\u0002\u01e5\u01e3\u0003\u0002\u0002\u0002\u01e6\u01ec\u0005",
"&\u0014\u0002\u01e7\u01e8\u0007W\u0002\u0002\u01e8\u01e9\u0005.\u0018",
"\u0002\u01e9\u01ea\u0007X\u0002\u0002\u01ea\u01eb\u0005(\u0015\u0002",
"\u01eb\u01ed\u0003\u0002\u0002\u0002\u01ec\u01e7\u0003\u0002\u0002\u0002",
"\u01ec\u01ed\u0003\u0002\u0002\u0002\u01ed)\u0003\u0002\u0002\u0002",
"\u01ee\u01f5\u0005(\u0015\u0002\u01ef\u01f0\u0005\u000e\b\u0002\u01f0",
"\u01f1\u0005,\u0017\u0002\u01f1\u01f2\u0005*\u0016\u0002\u01f2\u01f5",
"\u0003\u0002\u0002\u0002\u01f3\u01f5\u0007m\u0002\u0002\u01f4\u01ee",
"\u0003\u0002\u0002\u0002\u01f4\u01ef\u0003\u0002\u0002\u0002\u01f4\u01f3",
"\u0003\u0002\u0002\u0002\u01f5+\u0003\u0002\u0002\u0002\u01f6\u01f7",
"\t\u0003\u0002\u0002\u01f7-\u0003\u0002\u0002\u0002\u01f8\u01f9\b\u0018",
"\u0001\u0002\u01f9\u01fa\u0005*\u0016\u0002\u01fa\u0200\u0003\u0002",
"\u0002\u0002\u01fb\u01fc\f\u0003\u0002\u0002\u01fc\u01fd\u0007Z\u0002",
"\u0002\u01fd\u01ff\u0005*\u0016\u0002\u01fe\u01fb\u0003\u0002\u0002",
"\u0002\u01ff\u0202\u0003\u0002\u0002\u0002\u0200\u01fe\u0003\u0002\u0002",
"\u0002\u0200\u0201\u0003\u0002\u0002\u0002\u0201/\u0003\u0002\u0002",
"\u0002\u0202\u0200\u0003\u0002\u0002\u0002\u0203\u0204\u0005(\u0015",
"\u0002\u02041\u0003\u0002\u0002\u0002\u0205\u0206\u00054\u001b\u0002",
"\u0206\u0207\u0005:\u001e\u0002\u0207\u0208\u0007Y\u0002\u0002\u0208",
"\u020e\u0003\u0002\u0002\u0002\u0209\u020a\u00054\u001b\u0002\u020a",
"\u020b\u0007Y\u0002\u0002\u020b\u020e\u0003\u0002\u0002\u0002\u020c",
"\u020e\u0005\u008cG\u0002\u020d\u0205\u0003\u0002\u0002\u0002\u020d",
"\u0209\u0003\u0002\u0002\u0002\u020d\u020c\u0003\u0002\u0002\u0002\u020e",
"3\u0003\u0002\u0002\u0002\u020f\u0211\u00058\u001d\u0002\u0210\u020f",
"\u0003\u0002\u0002\u0002\u0211\u0212\u0003\u0002\u0002\u0002\u0212\u0210",
"\u0003\u0002\u0002\u0002\u0212\u0213\u0003\u0002\u0002\u0002\u02135",
"\u0003\u0002\u0002\u0002\u0214\u0216\u00058\u001d\u0002\u0215\u0214",
"\u0003\u0002\u0002\u0002\u0216\u0217\u0003\u0002\u0002\u0002\u0217\u0215",
"\u0003\u0002\u0002\u0002\u0217\u0218\u0003\u0002\u0002\u0002\u02187",
"\u0003\u0002\u0002\u0002\u0219\u021f\u0005> \u0002\u021a\u021f\u0005",
"@!\u0002\u021b\u021f\u0005Z.\u0002\u021c\u021f\u0005\\/\u0002\u021d",
"\u021f\u0005^0\u0002\u021e\u0219\u0003\u0002\u0002\u0002\u021e\u021a",
"\u0003\u0002\u0002\u0002\u021e\u021b\u0003\u0002\u0002\u0002\u021e\u021c",
"\u0003\u0002\u0002\u0002\u021e\u021d\u0003\u0002\u0002\u0002\u021f9",
"\u0003\u0002\u0002\u0002\u0220\u0221\b\u001e\u0001\u0002\u0221\u0222",
"\u0005<\u001f\u0002\u0222\u0228\u0003\u0002\u0002\u0002\u0223\u0224",
"\f\u0003\u0002\u0002\u0224\u0225\u0007Z\u0002\u0002\u0225\u0227\u0005",
"<\u001f\u0002\u0226\u0223\u0003\u0002\u0002\u0002\u0227\u022a\u0003",
"\u0002\u0002\u0002\u0228\u0226\u0003\u0002\u0002\u0002\u0228\u0229\u0003",
"\u0002\u0002\u0002\u0229;\u0003\u0002\u0002\u0002\u022a\u0228\u0003",
"\u0002\u0002\u0002\u022b\u0231\u0005`1\u0002\u022c\u022d\u0005`1\u0002",
"\u022d\u022e\u0007[\u0002\u0002\u022e\u022f\u0005\u0082B\u0002\u022f",
"\u0231\u0003\u0002\u0002\u0002\u0230\u022b\u0003\u0002\u0002\u0002\u0230",
"\u022c\u0003\u0002\u0002\u0002\u0231=\u0003\u0002\u0002\u0002\u0232",
"\u0233\t\u0004\u0002\u0002\u0233?\u0003\u0002\u0002\u0002\u0234\u0235",
"\b!\u0001\u0002\u0235\u0244\t\u0005\u0002\u0002\u0236\u0237\u0007\u0003",
"\u0002\u0002\u0237\u0238\u0007=\u0002\u0002\u0238\u0239\t\u0006\u0002",
"\u0002\u0239\u0244\u0007>\u0002\u0002\u023a\u0244\u0005X-\u0002\u023b",
"\u0244\u0005B\"\u0002\u023c\u0244\u0005P)\u0002\u023d\u0244\u0005\u0080",
"A\u0002\u023e\u023f\u0007\t\u0002\u0002\u023f\u0240\u0007=\u0002\u0002",
"\u0240\u0241\u00050\u0019\u0002\u0241\u0242\u0007>\u0002\u0002\u0242",
"\u0244\u0003\u0002\u0002\u0002\u0243\u0234\u0003\u0002\u0002\u0002\u0243",
"\u0236\u0003\u0002\u0002\u0002\u0243\u023a\u0003\u0002\u0002\u0002\u0243",
"\u023b\u0003\u0002\u0002\u0002\u0243\u023c\u0003\u0002\u0002\u0002\u0243",
"\u023d\u0003\u0002\u0002\u0002\u0243\u023e\u0003\u0002\u0002\u0002\u0244",
"\u0249\u0003\u0002\u0002\u0002\u0245\u0246\f\u0003\u0002\u0002\u0246",
"\u0248\u0005n8\u0002\u0247\u0245\u0003\u0002\u0002\u0002\u0248\u024b",
"\u0003\u0002\u0002\u0002\u0249\u0247\u0003\u0002\u0002\u0002\u0249\u024a",
"\u0003\u0002\u0002\u0002\u024aA\u0003\u0002\u0002\u0002\u024b\u0249",
"\u0003\u0002\u0002\u0002\u024c\u024e\u0005D#\u0002\u024d\u024f\u0007",
"k\u0002\u0002\u024e\u024d\u0003\u0002\u0002\u0002\u024e\u024f\u0003",
"\u0002\u0002\u0002\u024f\u0250\u0003\u0002\u0002\u0002\u0250\u0251\u0007",
"A\u0002\u0002\u0251\u0252\u0005F$\u0002\u0252\u0253\u0007B\u0002\u0002",
"\u0253\u0258\u0003\u0002\u0002\u0002\u0254\u0255\u0005D#\u0002\u0255",
"\u0256\u0007k\u0002\u0002\u0256\u0258\u0003\u0002\u0002\u0002\u0257",
"\u024c\u0003\u0002\u0002\u0002\u0257\u0254\u0003\u0002\u0002\u0002\u0258",
"C\u0003\u0002\u0002\u0002\u0259\u025a\t\u0007\u0002\u0002\u025aE\u0003",
"\u0002\u0002\u0002\u025b\u025c\b$\u0001\u0002\u025c\u025d\u0005H%\u0002",
"\u025d\u0262\u0003\u0002\u0002\u0002\u025e\u025f\f\u0003\u0002\u0002",
"\u025f\u0261\u0005H%\u0002\u0260\u025e\u0003\u0002\u0002\u0002\u0261",
"\u0264\u0003\u0002\u0002\u0002\u0262\u0260\u0003\u0002\u0002\u0002\u0262",
"\u0263\u0003\u0002\u0002\u0002\u0263G\u0003\u0002\u0002\u0002\u0264",
"\u0262\u0003\u0002\u0002\u0002\u0265\u0267\u0005J&\u0002\u0266\u0268",
"\u0005L\'\u0002\u0267\u0266\u0003\u0002\u0002\u0002\u0267\u0268\u0003",
"\u0002\u0002\u0002\u0268\u0269\u0003\u0002\u0002\u0002\u0269\u026a\u0007",
"Y\u0002\u0002\u026a\u026d\u0003\u0002\u0002\u0002\u026b\u026d\u0005",
"\u008cG\u0002\u026c\u0265\u0003\u0002\u0002\u0002\u026c\u026b\u0003",
"\u0002\u0002\u0002\u026dI\u0003\u0002\u0002\u0002\u026e\u0270\u0005",
"@!\u0002\u026f\u0271\u0005J&\u0002\u0270\u026f\u0003\u0002\u0002\u0002",
"\u0270\u0271\u0003\u0002\u0002\u0002\u0271\u0277\u0003\u0002\u0002\u0002",
"\u0272\u0274\u0005Z.\u0002\u0273\u0275\u0005J&\u0002\u0274\u0273\u0003",
"\u0002\u0002\u0002\u0274\u0275\u0003\u0002\u0002\u0002\u0275\u0277\u0003",
"\u0002\u0002\u0002\u0276\u026e\u0003\u0002\u0002\u0002\u0276\u0272\u0003",
"\u0002\u0002\u0002\u0277K\u0003\u0002\u0002\u0002\u0278\u0279\b\'\u0001",
"\u0002\u0279\u027a\u0005N(\u0002\u027a\u0280\u0003\u0002\u0002\u0002",
"\u027b\u027c\f\u0003\u0002\u0002\u027c\u027d\u0007Z\u0002\u0002\u027d",
"\u027f\u0005N(\u0002\u027e\u027b\u0003\u0002\u0002\u0002\u027f\u0282",
"\u0003\u0002\u0002\u0002\u0280\u027e\u0003\u0002\u0002\u0002\u0280\u0281",
"\u0003\u0002\u0002\u0002\u0281M\u0003\u0002\u0002\u0002\u0282\u0280",
"\u0003\u0002\u0002\u0002\u0283\u028a\u0005`1\u0002\u0284\u0286\u0005",
"`1\u0002\u0285\u0284\u0003\u0002\u0002\u0002\u0285\u0286\u0003\u0002",
"\u0002\u0002\u0286\u0287\u0003\u0002\u0002\u0002\u0287\u0288\u0007X",
"\u0002\u0002\u0288\u028a\u00050\u0019\u0002\u0289\u0283\u0003\u0002",
"\u0002\u0002\u0289\u0285\u0003\u0002\u0002\u0002\u028aO\u0003\u0002",
"\u0002\u0002\u028b\u028d\u0007\u001b\u0002\u0002\u028c\u028e\u0007k",
"\u0002\u0002\u028d\u028c\u0003\u0002\u0002\u0002\u028d\u028e\u0003\u0002",
"\u0002\u0002\u028e\u028f\u0003\u0002\u0002\u0002\u028f\u0290\u0007A",
"\u0002\u0002\u0290\u0291\u0005R*\u0002\u0291\u0292\u0007B\u0002\u0002",
"\u0292\u029f\u0003\u0002\u0002\u0002\u0293\u0295\u0007\u001b\u0002\u0002",
"\u0294\u0296\u0007k\u0002\u0002\u0295\u0294\u0003\u0002\u0002\u0002",
"\u0295\u0296\u0003\u0002\u0002\u0002\u0296\u0297\u0003\u0002\u0002\u0002",
"\u0297\u0298\u0007A\u0002\u0002\u0298\u0299\u0005R*\u0002\u0299\u029a",
"\u0007Z\u0002\u0002\u029a\u029b\u0007B\u0002\u0002\u029b\u029f\u0003",
"\u0002\u0002\u0002\u029c\u029d\u0007\u001b\u0002\u0002\u029d\u029f\u0007",
"k\u0002\u0002\u029e\u028b\u0003\u0002\u0002\u0002\u029e\u0293\u0003",
"\u0002\u0002\u0002\u029e\u029c\u0003\u0002\u0002\u0002\u029fQ\u0003",
"\u0002\u0002\u0002\u02a0\u02a1\b*\u0001\u0002\u02a1\u02a2\u0005T+\u0002",
"\u02a2\u02a8\u0003\u0002\u0002\u0002\u02a3\u02a4\f\u0003\u0002\u0002",
"\u02a4\u02a5\u0007Z\u0002\u0002\u02a5\u02a7\u0005T+\u0002\u02a6\u02a3",
"\u0003\u0002\u0002\u0002\u02a7\u02aa\u0003\u0002\u0002\u0002\u02a8\u02a6",
"\u0003\u0002\u0002\u0002\u02a8\u02a9\u0003\u0002\u0002\u0002\u02a9S",
"\u0003\u0002\u0002\u0002\u02aa\u02a8\u0003\u0002\u0002\u0002\u02ab\u02b1",
"\u0005V,\u0002\u02ac\u02ad\u0005V,\u0002\u02ad\u02ae\u0007[\u0002\u0002",
"\u02ae\u02af\u00050\u0019\u0002\u02af\u02b1\u0003\u0002\u0002\u0002",
"\u02b0\u02ab\u0003\u0002\u0002\u0002\u02b0\u02ac\u0003\u0002\u0002\u0002",
"\u02b1U\u0003\u0002\u0002\u0002\u02b2\u02b3\u0007k\u0002\u0002\u02b3",
"W\u0003\u0002\u0002\u0002\u02b4\u02b5\u00075\u0002\u0002\u02b5\u02b6",
"\u0007=\u0002\u0002\u02b6\u02b7\u0005z>\u0002\u02b7\u02b8\u0007>\u0002",
"\u0002\u02b8Y\u0003\u0002\u0002\u0002\u02b9\u02ba\t\b\u0002\u0002\u02ba",
"[\u0003\u0002\u0002\u0002\u02bb\u02c2\t\t\u0002\u0002\u02bc\u02c2\u0005",
"f4\u0002\u02bd\u02be\u0007\f\u0002\u0002\u02be\u02bf\u0007=\u0002\u0002",
"\u02bf\u02c0\u0007k\u0002\u0002\u02c0\u02c2\u0007>\u0002\u0002\u02c1",
"\u02bb\u0003\u0002\u0002\u0002\u02c1\u02bc\u0003\u0002\u0002\u0002\u02c1",
"\u02bd\u0003\u0002\u0002\u0002\u02c2]\u0003\u0002\u0002\u0002\u02c3",
"\u02c4\u00073\u0002\u0002\u02c4\u02c5\u0007=\u0002\u0002\u02c5\u02c6",
"\u0005z>\u0002\u02c6\u02c7\u0007>\u0002\u0002\u02c7\u02ce\u0003\u0002",
"\u0002\u0002\u02c8\u02c9\u00073\u0002\u0002\u02c9\u02ca\u0007=\u0002",
"\u0002\u02ca\u02cb\u00050\u0019\u0002\u02cb\u02cc\u0007>\u0002\u0002",
"\u02cc\u02ce\u0003\u0002\u0002\u0002\u02cd\u02c3\u0003\u0002\u0002\u0002",
"\u02cd\u02c8\u0003\u0002\u0002\u0002\u02ce_\u0003\u0002\u0002\u0002",
"\u02cf\u02d1\u0005n8\u0002\u02d0\u02cf\u0003\u0002\u0002\u0002\u02d0",
"\u02d1\u0003\u0002\u0002\u0002\u02d1\u02d2\u0003\u0002\u0002\u0002\u02d2",
"\u02d6\u0005b2\u0002\u02d3\u02d5\u0005d3\u0002\u02d4\u02d3\u0003\u0002",
"\u0002\u0002\u02d5\u02d8\u0003\u0002\u0002\u0002\u02d6\u02d4\u0003\u0002",
"\u0002\u0002\u02d6\u02d7\u0003\u0002\u0002\u0002\u02d7a\u0003\u0002",
"\u0002\u0002\u02d8\u02d6\u0003\u0002\u0002\u0002\u02d9\u02da\b2\u0001",
"\u0002\u02da\u02eb\u0007k\u0002\u0002\u02db\u02dc\u0007=\u0002\u0002",
"\u02dc\u02dd\u0005`1\u0002\u02dd\u02de\u0007>\u0002\u0002\u02de\u02eb",
"\u0003\u0002\u0002\u0002\u02df\u02e0\u0007k\u0002\u0002\u02e0\u02e1",
"\u0007X\u0002\u0002\u02e1\u02eb\u0007m\u0002\u0002\u02e2\u02e4\u0007",
"=\u0002\u0002\u02e3\u02e5\u0005@!\u0002\u02e4\u02e3\u0003\u0002\u0002",
"\u0002\u02e4\u02e5\u0003\u0002\u0002\u0002\u02e5\u02e6\u0003\u0002\u0002",
"\u0002\u02e6\u02e7\u0005n8\u0002\u02e7\u02e8\u0005b2\u0002\u02e8\u02e9",
"\u0007>\u0002\u0002\u02e9\u02eb\u0003\u0002\u0002\u0002\u02ea\u02d9",
"\u0003\u0002\u0002\u0002\u02ea\u02db\u0003\u0002\u0002\u0002\u02ea\u02df",
"\u0003\u0002\u0002\u0002\u02ea\u02e2\u0003\u0002\u0002\u0002\u02eb\u0319",
"\u0003\u0002\u0002\u0002\u02ec\u02ed\f\n\u0002\u0002\u02ed\u02ef\u0007",
"?\u0002\u0002\u02ee\u02f0\u0005p9\u0002\u02ef\u02ee\u0003\u0002\u0002",
"\u0002\u02ef\u02f0\u0003\u0002\u0002\u0002\u02f0\u02f2\u0003\u0002\u0002",
"\u0002\u02f1\u02f3\u0005*\u0016\u0002\u02f2\u02f1\u0003\u0002\u0002",
"\u0002\u02f2\u02f3\u0003\u0002\u0002\u0002\u02f3\u02f4\u0003\u0002\u0002",
"\u0002\u02f4\u0318\u0007@\u0002\u0002\u02f5\u02f6\f\t\u0002\u0002\u02f6",
"\u02f7\u0007?\u0002\u0002\u02f7\u02f9\u0007*\u0002\u0002\u02f8\u02fa",
"\u0005p9\u0002\u02f9\u02f8\u0003\u0002\u0002\u0002\u02f9\u02fa\u0003",
"\u0002\u0002\u0002\u02fa\u02fb\u0003\u0002\u0002\u0002\u02fb\u02fc\u0005",
"*\u0016\u0002\u02fc\u02fd\u0007@\u0002\u0002\u02fd\u0318\u0003\u0002",
"\u0002\u0002\u02fe\u02ff\f\b\u0002\u0002\u02ff\u0300\u0007?\u0002\u0002",
"\u0300\u0301\u0005p9\u0002\u0301\u0302\u0007*\u0002\u0002\u0302\u0303",
"\u0005*\u0016\u0002\u0303\u0304\u0007@\u0002\u0002\u0304\u0318\u0003",
"\u0002\u0002\u0002\u0305\u0306\f\u0007\u0002\u0002\u0306\u0308\u0007",
"?\u0002\u0002\u0307\u0309\u0005p9\u0002\u0308\u0307\u0003\u0002\u0002",
"\u0002\u0308\u0309\u0003\u0002\u0002\u0002\u0309\u030a\u0003\u0002\u0002",
"\u0002\u030a\u030b\u0007M\u0002\u0002\u030b\u0318\u0007@\u0002\u0002",
"\u030c\u030d\f\u0006\u0002\u0002\u030d\u030e\u0007=\u0002\u0002\u030e",
"\u030f\u0005r:\u0002\u030f\u0310\u0007>\u0002\u0002\u0310\u0318\u0003",
"\u0002\u0002\u0002\u0311\u0312\f\u0005\u0002\u0002\u0312\u0314\u0007",
"=\u0002\u0002\u0313\u0315\u0005x=\u0002\u0314\u0313\u0003\u0002\u0002",
"\u0002\u0314\u0315\u0003\u0002\u0002\u0002\u0315\u0316\u0003\u0002\u0002",
"\u0002\u0316\u0318\u0007>\u0002\u0002\u0317\u02ec\u0003\u0002\u0002",
"\u0002\u0317\u02f5\u0003\u0002\u0002\u0002\u0317\u02fe\u0003\u0002\u0002",
"\u0002\u0317\u0305\u0003\u0002\u0002\u0002\u0317\u030c\u0003\u0002\u0002",
"\u0002\u0317\u0311\u0003\u0002\u0002\u0002\u0318\u031b\u0003\u0002\u0002",
"\u0002\u0319\u0317\u0003\u0002\u0002\u0002\u0319\u031a\u0003\u0002\u0002",
"\u0002\u031ac\u0003\u0002\u0002\u0002\u031b\u0319\u0003\u0002\u0002",
"\u0002\u031c\u031d\u0007\r\u0002\u0002\u031d\u031f\u0007=\u0002\u0002",
"\u031e\u0320\u0007n\u0002\u0002\u031f\u031e\u0003\u0002\u0002\u0002",
"\u0320\u0321\u0003\u0002\u0002\u0002\u0321\u031f\u0003\u0002\u0002\u0002",
"\u0321\u0322\u0003\u0002\u0002\u0002\u0322\u0323\u0003\u0002\u0002\u0002",
"\u0323\u0326\u0007>\u0002\u0002\u0324\u0326\u0005f4\u0002\u0325\u031c",
"\u0003\u0002\u0002\u0002\u0325\u0324\u0003\u0002\u0002\u0002\u0326e",
"\u0003\u0002\u0002\u0002\u0327\u0328\u0007\u000e\u0002\u0002\u0328\u0329",
"\u0007=\u0002\u0002\u0329\u032a\u0007=\u0002\u0002\u032a\u032b\u0005",
"h5\u0002\u032b\u032c\u0007>\u0002\u0002\u032c\u032d\u0007>\u0002\u0002",
"\u032dg\u0003\u0002\u0002\u0002\u032e\u0333\u0005j6\u0002\u032f\u0330",
"\u0007Z\u0002\u0002\u0330\u0332\u0005j6\u0002\u0331\u032f\u0003\u0002",
"\u0002\u0002\u0332\u0335\u0003\u0002\u0002\u0002\u0333\u0331\u0003\u0002",
"\u0002\u0002\u0333\u0334\u0003\u0002\u0002\u0002\u0334\u0338\u0003\u0002",
"\u0002\u0002\u0335\u0333\u0003\u0002\u0002\u0002\u0336\u0338\u0003\u0002",
"\u0002\u0002\u0337\u032e\u0003\u0002\u0002\u0002\u0337\u0336\u0003\u0002",
"\u0002\u0002\u0338i\u0003\u0002\u0002\u0002\u0339\u033f\n\n\u0002\u0002",
"\u033a\u033c\u0007=\u0002\u0002\u033b\u033d\u0005\f\u0007\u0002\u033c",
"\u033b\u0003\u0002\u0002\u0002\u033c\u033d\u0003\u0002\u0002\u0002\u033d",
"\u033e\u0003\u0002\u0002\u0002\u033e\u0340\u0007>\u0002\u0002\u033f",
"\u033a\u0003\u0002\u0002\u0002\u033f\u0340\u0003\u0002\u0002\u0002\u0340",
"\u0343\u0003\u0002\u0002\u0002\u0341\u0343\u0003\u0002\u0002\u0002\u0342",
"\u0339\u0003\u0002\u0002\u0002\u0342\u0341\u0003\u0002\u0002\u0002\u0343",
"k\u0003\u0002\u0002\u0002\u0344\u034a\n\u000b\u0002\u0002\u0345\u0346",
"\u0007=\u0002\u0002\u0346\u0347\u0005l7\u0002\u0347\u0348\u0007>\u0002",
"\u0002\u0348\u034a\u0003\u0002\u0002\u0002\u0349\u0344\u0003\u0002\u0002",
"\u0002\u0349\u0345\u0003\u0002\u0002\u0002\u034a\u034d\u0003\u0002\u0002",
"\u0002\u034b\u0349\u0003\u0002\u0002\u0002\u034b\u034c\u0003\u0002\u0002",
"\u0002\u034cm\u0003\u0002\u0002\u0002\u034d\u034b\u0003\u0002\u0002",
"\u0002\u034e\u0350\u0007M\u0002\u0002\u034f\u0351\u0005p9\u0002\u0350",
"\u034f\u0003\u0002\u0002\u0002\u0350\u0351\u0003\u0002\u0002\u0002\u0351",
"\u0361\u0003\u0002\u0002\u0002\u0352\u0354\u0007M\u0002\u0002\u0353",
"\u0355\u0005p9\u0002\u0354\u0353\u0003\u0002\u0002\u0002\u0354\u0355",
"\u0003\u0002\u0002\u0002\u0355\u0356\u0003\u0002\u0002\u0002\u0356\u0361",
"\u0005n8\u0002\u0357\u0359\u0007T\u0002\u0002\u0358\u035a\u0005p9\u0002",
"\u0359\u0358\u0003\u0002\u0002\u0002\u0359\u035a\u0003\u0002\u0002\u0002",
"\u035a\u0361\u0003\u0002\u0002\u0002\u035b\u035d\u0007T\u0002\u0002",
"\u035c\u035e\u0005p9\u0002\u035d\u035c\u0003\u0002\u0002\u0002\u035d",
"\u035e\u0003\u0002\u0002\u0002\u035e\u035f\u0003\u0002\u0002\u0002\u035f",
"\u0361\u0005n8\u0002\u0360\u034e\u0003\u0002\u0002\u0002\u0360\u0352",
"\u0003\u0002\u0002\u0002\u0360\u0357\u0003\u0002\u0002\u0002\u0360\u035b",
"\u0003\u0002\u0002\u0002\u0361o\u0003\u0002\u0002\u0002\u0362\u0363",
"\b9\u0001\u0002\u0363\u0364\u0005Z.\u0002\u0364\u0369\u0003\u0002\u0002",
"\u0002\u0365\u0366\f\u0003\u0002\u0002\u0366\u0368\u0005Z.\u0002\u0367",
"\u0365\u0003\u0002\u0002\u0002\u0368\u036b\u0003\u0002\u0002\u0002\u0369",
"\u0367\u0003\u0002\u0002\u0002\u0369\u036a\u0003\u0002\u0002\u0002\u036a",
"q\u0003\u0002\u0002\u0002\u036b\u0369\u0003\u0002\u0002\u0002\u036c",
"\u0372\u0005t;\u0002\u036d\u036e\u0005t;\u0002\u036e\u036f\u0007Z\u0002",
"\u0002\u036f\u0370\u0007j\u0002\u0002\u0370\u0372\u0003\u0002\u0002",
"\u0002\u0371\u036c\u0003\u0002\u0002\u0002\u0371\u036d\u0003\u0002\u0002",
"\u0002\u0372s\u0003\u0002\u0002\u0002\u0373\u0374\b;\u0001\u0002\u0374",
"\u0375\u0005v<\u0002\u0375\u037b\u0003\u0002\u0002\u0002\u0376\u0377",
"\f\u0003\u0002\u0002\u0377\u0378\u0007Z\u0002\u0002\u0378\u037a\u0005",
"v<\u0002\u0379\u0376\u0003\u0002\u0002\u0002\u037a\u037d\u0003\u0002",
"\u0002\u0002\u037b\u0379\u0003\u0002\u0002\u0002\u037b\u037c\u0003\u0002",
"\u0002\u0002\u037cu\u0003\u0002\u0002\u0002\u037d\u037b\u0003\u0002",
"\u0002\u0002\u037e\u037f\u00054\u001b\u0002\u037f\u0380\u0005`1\u0002",
"\u0380\u0386\u0003\u0002\u0002\u0002\u0381\u0383\u00056\u001c\u0002",
"\u0382\u0384\u0005|?\u0002\u0383\u0382\u0003\u0002\u0002\u0002\u0383",
"\u0384\u0003\u0002\u0002\u0002\u0384\u0386\u0003\u0002\u0002\u0002\u0385",
"\u037e\u0003\u0002\u0002\u0002\u0385\u0381\u0003\u0002\u0002\u0002\u0386",
"w\u0003\u0002\u0002\u0002\u0387\u0388\b=\u0001\u0002\u0388\u0389\u0007",
"k\u0002\u0002\u0389\u038f\u0003\u0002\u0002\u0002\u038a\u038b\f\u0003",
"\u0002\u0002\u038b\u038c\u0007Z\u0002\u0002\u038c\u038e\u0007k\u0002",
"\u0002\u038d\u038a\u0003\u0002\u0002\u0002\u038e\u0391\u0003\u0002\u0002",
"\u0002\u038f\u038d\u0003\u0002\u0002\u0002\u038f\u0390\u0003\u0002\u0002",
"\u0002\u0390y\u0003\u0002\u0002\u0002\u0391\u038f\u0003\u0002\u0002",
"\u0002\u0392\u0394\u0005J&\u0002\u0393\u0395\u0005|?\u0002\u0394\u0393",
"\u0003\u0002\u0002\u0002\u0394\u0395\u0003\u0002\u0002\u0002\u0395{",
"\u0003\u0002\u0002\u0002\u0396\u03a2\u0005n8\u0002\u0397\u0399\u0005",
"n8\u0002\u0398\u0397\u0003\u0002\u0002\u0002\u0398\u0399\u0003\u0002",
"\u0002\u0002\u0399\u039a\u0003\u0002\u0002\u0002\u039a\u039e\u0005~",
"@\u0002\u039b\u039d\u0005d3\u0002\u039c\u039b\u0003\u0002\u0002\u0002",
"\u039d\u03a0\u0003\u0002\u0002\u0002\u039e\u039c\u0003\u0002\u0002\u0002",
"\u039e\u039f\u0003\u0002\u0002\u0002\u039f\u03a2\u0003\u0002\u0002\u0002",
"\u03a0\u039e\u0003\u0002\u0002\u0002\u03a1\u0396\u0003\u0002\u0002\u0002",
"\u03a1\u0398\u0003\u0002\u0002\u0002\u03a2}\u0003\u0002\u0002\u0002",
"\u03a3\u03a4\b@\u0001\u0002\u03a4\u03a5\u0007=\u0002\u0002\u03a5\u03a6",
"\u0005|?\u0002\u03a6\u03aa\u0007>\u0002\u0002\u03a7\u03a9\u0005d3\u0002",
"\u03a8\u03a7\u0003\u0002\u0002\u0002\u03a9\u03ac\u0003\u0002\u0002\u0002",
"\u03aa\u03a8\u0003\u0002\u0002\u0002\u03aa\u03ab\u0003\u0002\u0002\u0002",
"\u03ab\u03d2\u0003\u0002\u0002\u0002\u03ac\u03aa\u0003\u0002\u0002\u0002",
"\u03ad\u03af\u0007?\u0002\u0002\u03ae\u03b0\u0005p9\u0002\u03af\u03ae",
"\u0003\u0002\u0002\u0002\u03af\u03b0\u0003\u0002\u0002\u0002\u03b0\u03b2",
"\u0003\u0002\u0002\u0002\u03b1\u03b3\u0005*\u0016\u0002\u03b2\u03b1",
"\u0003\u0002\u0002\u0002\u03b2\u03b3\u0003\u0002\u0002\u0002\u03b3\u03b4",
"\u0003\u0002\u0002\u0002\u03b4\u03d2\u0007@\u0002\u0002\u03b5\u03b6",
"\u0007?\u0002\u0002\u03b6\u03b8\u0007*\u0002\u0002\u03b7\u03b9\u0005",
"p9\u0002\u03b8\u03b7\u0003\u0002\u0002\u0002\u03b8\u03b9\u0003\u0002",
"\u0002\u0002\u03b9\u03ba\u0003\u0002\u0002\u0002\u03ba\u03bb\u0005*",
"\u0016\u0002\u03bb\u03bc\u0007@\u0002\u0002\u03bc\u03d2\u0003\u0002",
"\u0002\u0002\u03bd\u03be\u0007?\u0002\u0002\u03be\u03bf\u0005p9\u0002",
"\u03bf\u03c0\u0007*\u0002\u0002\u03c0\u03c1\u0005*\u0016\u0002\u03c1",
"\u03c2\u0007@\u0002\u0002\u03c2\u03d2\u0003\u0002\u0002\u0002\u03c3",
"\u03c4\u0007?\u0002\u0002\u03c4\u03c5\u0007M\u0002\u0002\u03c5\u03d2",
"\u0007@\u0002\u0002\u03c6\u03c8\u0007=\u0002\u0002\u03c7\u03c9\u0005",
"r:\u0002\u03c8\u03c7\u0003\u0002\u0002\u0002\u03c8\u03c9\u0003\u0002",
"\u0002\u0002\u03c9\u03ca\u0003\u0002\u0002\u0002\u03ca\u03ce\u0007>",
"\u0002\u0002\u03cb\u03cd\u0005d3\u0002\u03cc\u03cb\u0003\u0002\u0002",
"\u0002\u03cd\u03d0\u0003\u0002\u0002\u0002\u03ce\u03cc\u0003\u0002\u0002",
"\u0002\u03ce\u03cf\u0003\u0002\u0002\u0002\u03cf\u03d2\u0003\u0002\u0002",
"\u0002\u03d0\u03ce\u0003\u0002\u0002\u0002\u03d1\u03a3\u0003\u0002\u0002",
"\u0002\u03d1\u03ad\u0003\u0002\u0002\u0002\u03d1\u03b5\u0003\u0002\u0002",
"\u0002\u03d1\u03bd\u0003\u0002\u0002\u0002\u03d1\u03c3\u0003\u0002\u0002",
"\u0002\u03d1\u03c6\u0003\u0002\u0002\u0002\u03d2\u03fe\u0003\u0002\u0002",
"\u0002\u03d3\u03d4\f\u0007\u0002\u0002\u03d4\u03d6\u0007?\u0002\u0002",
"\u03d5\u03d7\u0005p9\u0002\u03d6\u03d5\u0003\u0002\u0002\u0002\u03d6",
"\u03d7\u0003\u0002\u0002\u0002\u03d7\u03d9\u0003\u0002\u0002\u0002\u03d8",
"\u03da\u0005*\u0016\u0002\u03d9\u03d8\u0003\u0002\u0002\u0002\u03d9",
"\u03da\u0003\u0002\u0002\u0002\u03da\u03db\u0003\u0002\u0002\u0002\u03db",
"\u03fd\u0007@\u0002\u0002\u03dc\u03dd\f\u0006\u0002\u0002\u03dd\u03de",
"\u0007?\u0002\u0002\u03de\u03e0\u0007*\u0002\u0002\u03df\u03e1\u0005",
"p9\u0002\u03e0\u03df\u0003\u0002\u0002\u0002\u03e0\u03e1\u0003\u0002",
"\u0002\u0002\u03e1\u03e2\u0003\u0002\u0002\u0002\u03e2\u03e3\u0005*",
"\u0016\u0002\u03e3\u03e4\u0007@\u0002\u0002\u03e4\u03fd\u0003\u0002",
"\u0002\u0002\u03e5\u03e6\f\u0005\u0002\u0002\u03e6\u03e7\u0007?\u0002",
"\u0002\u03e7\u03e8\u0005p9\u0002\u03e8\u03e9\u0007*\u0002\u0002\u03e9",
"\u03ea\u0005*\u0016\u0002\u03ea\u03eb\u0007@\u0002\u0002\u03eb\u03fd",
"\u0003\u0002\u0002\u0002\u03ec\u03ed\f\u0004\u0002\u0002\u03ed\u03ee",
"\u0007?\u0002\u0002\u03ee\u03ef\u0007M\u0002\u0002\u03ef\u03fd\u0007",
"@\u0002\u0002\u03f0\u03f1\f\u0003\u0002\u0002\u03f1\u03f3\u0007=\u0002",
"\u0002\u03f2\u03f4\u0005r:\u0002\u03f3\u03f2\u0003\u0002\u0002\u0002",
"\u03f3\u03f4\u0003\u0002\u0002\u0002\u03f4\u03f5\u0003\u0002\u0002\u0002",
"\u03f5\u03f9\u0007>\u0002\u0002\u03f6\u03f8\u0005d3\u0002\u03f7\u03f6",
"\u0003\u0002\u0002\u0002\u03f8\u03fb\u0003\u0002\u0002\u0002\u03f9\u03f7",
"\u0003\u0002\u0002\u0002\u03f9\u03fa\u0003\u0002\u0002\u0002\u03fa\u03fd",
"\u0003\u0002\u0002\u0002\u03fb\u03f9\u0003\u0002\u0002\u0002\u03fc\u03d3",
"\u0003\u0002\u0002\u0002\u03fc\u03dc\u0003\u0002\u0002\u0002\u03fc\u03e5",
"\u0003\u0002\u0002\u0002\u03fc\u03ec\u0003\u0002\u0002\u0002\u03fc\u03f0",
"\u0003\u0002\u0002\u0002\u03fd\u0400\u0003\u0002\u0002\u0002\u03fe\u03fc",
"\u0003\u0002\u0002\u0002\u03fe\u03ff\u0003\u0002\u0002\u0002\u03ff\u007f",
"\u0003\u0002\u0002\u0002\u0400\u03fe\u0003\u0002\u0002\u0002\u0401\u0402",
"\u0007k\u0002\u0002\u0402\u0081\u0003\u0002\u0002\u0002\u0403\u040e",
"\u0005*\u0016\u0002\u0404\u0405\u0007A\u0002\u0002\u0405\u0406\u0005",
"\u0084C\u0002\u0406\u0407\u0007B\u0002\u0002\u0407\u040e\u0003\u0002",
"\u0002\u0002\u0408\u0409\u0007A\u0002\u0002\u0409\u040a\u0005\u0084",
"C\u0002\u040a\u040b\u0007Z\u0002\u0002\u040b\u040c\u0007B\u0002\u0002",
"\u040c\u040e\u0003\u0002\u0002\u0002\u040d\u0403\u0003\u0002\u0002\u0002",
"\u040d\u0404\u0003\u0002\u0002\u0002\u040d\u0408\u0003\u0002\u0002\u0002",
"\u040e\u0083\u0003\u0002\u0002\u0002\u040f\u0411\bC\u0001\u0002\u0410",
"\u0412\u0005\u0086D\u0002\u0411\u0410\u0003\u0002\u0002\u0002\u0411",
"\u0412\u0003\u0002\u0002\u0002\u0412\u0413\u0003\u0002\u0002\u0002\u0413",
"\u0414\u0005\u0082B\u0002\u0414\u041d\u0003\u0002\u0002\u0002\u0415",
"\u0416\f\u0003\u0002\u0002\u0416\u0418\u0007Z\u0002\u0002\u0417\u0419",
"\u0005\u0086D\u0002\u0418\u0417\u0003\u0002\u0002\u0002\u0418\u0419",
"\u0003\u0002\u0002\u0002\u0419\u041a\u0003\u0002\u0002\u0002\u041a\u041c",
"\u0005\u0082B\u0002\u041b\u0415\u0003\u0002\u0002\u0002\u041c\u041f",
"\u0003\u0002\u0002\u0002\u041d\u041b\u0003\u0002\u0002\u0002\u041d\u041e",
"\u0003\u0002\u0002\u0002\u041e\u0085\u0003\u0002\u0002\u0002\u041f\u041d",
"\u0003\u0002\u0002\u0002\u0420\u0421\u0005\u0088E\u0002\u0421\u0422",
"\u0007[\u0002\u0002\u0422\u0087\u0003\u0002\u0002\u0002\u0423\u0424",
"\bE\u0001\u0002\u0424\u0425\u0005\u008aF\u0002\u0425\u042a\u0003\u0002",
"\u0002\u0002\u0426\u0427\f\u0003\u0002\u0002\u0427\u0429\u0005\u008a",
"F\u0002\u0428\u0426\u0003\u0002\u0002\u0002\u0429\u042c\u0003\u0002",
"\u0002\u0002\u042a\u0428\u0003\u0002\u0002\u0002\u042a\u042b\u0003\u0002",
"\u0002\u0002\u042b\u0089\u0003\u0002\u0002\u0002\u042c\u042a\u0003\u0002",
"\u0002\u0002\u042d\u042e\u0007?\u0002\u0002\u042e\u042f\u00050\u0019",
"\u0002\u042f\u0430\u0007@\u0002\u0002\u0430\u0434\u0003\u0002\u0002",
"\u0002\u0431\u0432\u0007i\u0002\u0002\u0432\u0434\u0007k\u0002\u0002",
"\u0433\u042d\u0003\u0002\u0002\u0002\u0433\u0431\u0003\u0002\u0002\u0002",
"\u0434\u008b\u0003\u0002\u0002\u0002\u0435\u0436\u0007;\u0002\u0002",
"\u0436\u0437\u0007=\u0002\u0002\u0437\u0438\u00050\u0019\u0002\u0438",
"\u043a\u0007Z\u0002\u0002\u0439\u043b\u0007n\u0002\u0002\u043a\u0439",
"\u0003\u0002\u0002\u0002\u043b\u043c\u0003\u0002\u0002\u0002\u043c\u043a",
"\u0003\u0002\u0002\u0002\u043c\u043d\u0003\u0002\u0002\u0002\u043d\u043e",
"\u0003\u0002\u0002\u0002\u043e\u043f\u0007>\u0002\u0002\u043f\u0440",
"\u0007Y\u0002\u0002\u0440\u008d\u0003\u0002\u0002\u0002\u0441\u0467",
"\u0005\u0090I\u0002\u0442\u0467\u0005\u0092J\u0002\u0443\u0467\u0005",
"\u0098M\u0002\u0444\u0467\u0005\u009aN\u0002\u0445\u0467\u0005\u009c",
"O\u0002\u0446\u0467\u0005\u00a4S\u0002\u0447\u0448\t\f\u0002\u0002\u0448",
"\u0449\t\r\u0002\u0002\u0449\u0452\u0007=\u0002\u0002\u044a\u044f\u0005",
"&\u0014\u0002\u044b\u044c\u0007Z\u0002\u0002\u044c\u044e\u0005&\u0014",
"\u0002\u044d\u044b\u0003\u0002\u0002\u0002\u044e\u0451\u0003\u0002\u0002",
"\u0002\u044f\u044d\u0003\u0002\u0002\u0002\u044f\u0450\u0003\u0002\u0002",
"\u0002\u0450\u0453\u0003\u0002\u0002\u0002\u0451\u044f\u0003\u0002\u0002",
"\u0002\u0452\u044a\u0003\u0002\u0002\u0002\u0452\u0453\u0003\u0002\u0002",
"\u0002\u0453\u0461\u0003\u0002\u0002\u0002\u0454\u045d\u0007X\u0002",
"\u0002\u0455\u045a\u0005&\u0014\u0002\u0456\u0457\u0007Z\u0002\u0002",
"\u0457\u0459\u0005&\u0014\u0002\u0458\u0456\u0003\u0002\u0002\u0002",
"\u0459\u045c\u0003\u0002\u0002\u0002\u045a\u0458\u0003\u0002\u0002\u0002",
"\u045a\u045b\u0003\u0002\u0002\u0002\u045b\u045e\u0003\u0002\u0002\u0002",
"\u045c\u045a\u0003\u0002\u0002\u0002\u045d\u0455\u0003\u0002\u0002\u0002",
"\u045d\u045e\u0003\u0002\u0002\u0002\u045e\u0460\u0003\u0002\u0002\u0002",
"\u045f\u0454\u0003\u0002\u0002\u0002\u0460\u0463\u0003\u0002\u0002\u0002",
"\u0461\u045f\u0003\u0002\u0002\u0002\u0461\u0462\u0003\u0002\u0002\u0002",
"\u0462\u0464\u0003\u0002\u0002\u0002\u0463\u0461\u0003\u0002\u0002\u0002",
"\u0464\u0465\u0007>\u0002\u0002\u0465\u0467\u0007Y\u0002\u0002\u0466",
"\u0441\u0003\u0002\u0002\u0002\u0466\u0442\u0003\u0002\u0002\u0002\u0466",
"\u0443\u0003\u0002\u0002\u0002\u0466\u0444\u0003\u0002\u0002\u0002\u0466",
"\u0445\u0003\u0002\u0002\u0002\u0466\u0446\u0003\u0002\u0002\u0002\u0466",
"\u0447\u0003\u0002\u0002\u0002\u0467\u008f\u0003\u0002\u0002\u0002\u0468",
"\u0469\u0007k\u0002\u0002\u0469\u046a\u0007X\u0002\u0002\u046a\u0474",
"\u0005\u008eH\u0002\u046b\u046c\u0007\u0013\u0002\u0002\u046c\u046d",
"\u00050\u0019\u0002\u046d\u046e\u0007X\u0002\u0002\u046e\u046f\u0005",
"\u008eH\u0002\u046f\u0474\u0003\u0002\u0002\u0002\u0470\u0471\u0007",
"\u0017\u0002\u0002\u0471\u0472\u0007X\u0002\u0002\u0472\u0474\u0005",
"\u008eH\u0002\u0473\u0468\u0003\u0002\u0002\u0002\u0473\u046b\u0003",
"\u0002\u0002\u0002\u0473\u0470\u0003\u0002\u0002\u0002\u0474\u0091\u0003",
"\u0002\u0002\u0002\u0475\u0477\u0007A\u0002\u0002\u0476\u0478\u0005",
"\u0094K\u0002\u0477\u0476\u0003\u0002\u0002\u0002\u0477\u0478\u0003",
"\u0002\u0002\u0002\u0478\u0479\u0003\u0002\u0002\u0002\u0479\u047a\u0007",
"B\u0002\u0002\u047a\u0093\u0003\u0002\u0002\u0002\u047b\u047c\bK\u0001",
"\u0002\u047c\u047d\u0005\u0096L\u0002\u047d\u0482\u0003\u0002\u0002",
"\u0002\u047e\u047f\f\u0003\u0002\u0002\u047f\u0481\u0005\u0096L\u0002",
"\u0480\u047e\u0003\u0002\u0002\u0002\u0481\u0484\u0003\u0002\u0002\u0002",
"\u0482\u0480\u0003\u0002\u0002\u0002\u0482\u0483\u0003\u0002\u0002\u0002",
"\u0483\u0095\u0003\u0002\u0002\u0002\u0484\u0482\u0003\u0002\u0002\u0002",
"\u0485\u0488\u0005\u008eH\u0002\u0486\u0488\u00052\u001a\u0002\u0487",
"\u0485\u0003\u0002\u0002\u0002\u0487\u0486\u0003\u0002\u0002\u0002\u0488",
"\u0097\u0003\u0002\u0002\u0002\u0489\u048b\u0005.\u0018\u0002\u048a",
"\u0489\u0003\u0002\u0002\u0002\u048a\u048b\u0003\u0002\u0002\u0002\u048b",
"\u048c\u0003\u0002\u0002\u0002\u048c\u048d\u0007Y\u0002\u0002\u048d",
"\u0099\u0003\u0002\u0002\u0002\u048e\u048f\u0007 \u0002\u0002\u048f",
"\u0490\u0007=\u0002\u0002\u0490\u0491\u0005.\u0018\u0002\u0491\u0492",
"\u0007>\u0002\u0002\u0492\u0495\u0005\u008eH\u0002\u0493\u0494\u0007",
"\u001a\u0002\u0002\u0494\u0496\u0005\u008eH\u0002\u0495\u0493\u0003",
"\u0002\u0002\u0002\u0495\u0496\u0003\u0002\u0002\u0002\u0496\u049e\u0003",
"\u0002\u0002\u0002\u0497\u0498\u0007,\u0002\u0002\u0498\u0499\u0007",
"=\u0002\u0002\u0499\u049a\u0005.\u0018\u0002\u049a\u049b\u0007>\u0002",
"\u0002\u049b\u049c\u0005\u008eH\u0002\u049c\u049e\u0003\u0002\u0002",
"\u0002\u049d\u048e\u0003\u0002\u0002\u0002\u049d\u0497\u0003\u0002\u0002",
"\u0002\u049e\u009b\u0003\u0002\u0002\u0002\u049f\u04a0\u00072\u0002",
"\u0002\u04a0\u04a1\u0007=\u0002\u0002\u04a1\u04a2\u0005.\u0018\u0002",
"\u04a2\u04a3\u0007>\u0002\u0002\u04a3\u04a4\u0005\u008eH\u0002\u04a4",
"\u04b4\u0003\u0002\u0002\u0002\u04a5\u04a6\u0007\u0018\u0002\u0002\u04a6",
"\u04a7\u0005\u008eH\u0002\u04a7\u04a8\u00072\u0002\u0002\u04a8\u04a9",
"\u0007=\u0002\u0002\u04a9\u04aa\u0005.\u0018\u0002\u04aa\u04ab\u0007",
">\u0002\u0002\u04ab\u04ac\u0007Y\u0002\u0002\u04ac\u04b4\u0003\u0002",
"\u0002\u0002\u04ad\u04ae\u0007\u001e\u0002\u0002\u04ae\u04af\u0007=",
"\u0002\u0002\u04af\u04b0\u0005\u009eP\u0002\u04b0\u04b1\u0007>\u0002",
"\u0002\u04b1\u04b2\u0005\u008eH\u0002\u04b2\u04b4\u0003\u0002\u0002",
"\u0002\u04b3\u049f\u0003\u0002\u0002\u0002\u04b3\u04a5\u0003\u0002\u0002",
"\u0002\u04b3\u04ad\u0003\u0002\u0002\u0002\u04b4\u009d\u0003\u0002\u0002",
"\u0002\u04b5\u04b6\u0005\u00a0Q\u0002\u04b6\u04b8\u0007Y\u0002\u0002",
"\u04b7\u04b9\u0005\u00a2R\u0002\u04b8\u04b7\u0003\u0002\u0002\u0002",
"\u04b8\u04b9\u0003\u0002\u0002\u0002\u04b9\u04ba\u0003\u0002\u0002\u0002",
"\u04ba\u04bc\u0007Y\u0002\u0002\u04bb\u04bd\u0005\u00a2R\u0002\u04bc",
"\u04bb\u0003\u0002\u0002\u0002\u04bc\u04bd\u0003\u0002\u0002\u0002\u04bd",
"\u04ca\u0003\u0002\u0002\u0002\u04be\u04c0\u0005.\u0018\u0002\u04bf",
"\u04be\u0003\u0002\u0002\u0002\u04bf\u04c0\u0003\u0002\u0002\u0002\u04c0",
"\u04c1\u0003\u0002\u0002\u0002\u04c1\u04c3\u0007Y\u0002\u0002\u04c2",
"\u04c4\u0005\u00a2R\u0002\u04c3\u04c2\u0003\u0002\u0002\u0002\u04c3",
"\u04c4\u0003\u0002\u0002\u0002\u04c4\u04c5\u0003\u0002\u0002\u0002\u04c5",
"\u04c7\u0007Y\u0002\u0002\u04c6\u04c8\u0005\u00a2R\u0002\u04c7\u04c6",
"\u0003\u0002\u0002\u0002\u04c7\u04c8\u0003\u0002\u0002\u0002\u04c8\u04ca",
"\u0003\u0002\u0002\u0002\u04c9\u04b5\u0003\u0002\u0002\u0002\u04c9\u04bf",
"\u0003\u0002\u0002\u0002\u04ca\u009f\u0003\u0002\u0002\u0002\u04cb\u04cc",
"\u00054\u001b\u0002\u04cc\u04cd\u0005:\u001e\u0002\u04cd\u04d0\u0003",
"\u0002\u0002\u0002\u04ce\u04d0\u00054\u001b\u0002\u04cf\u04cb\u0003",
"\u0002\u0002\u0002\u04cf\u04ce\u0003\u0002\u0002\u0002\u04d0\u00a1\u0003",
"\u0002\u0002\u0002\u04d1\u04d2\bR\u0001\u0002\u04d2\u04d3\u0005*\u0016",
"\u0002\u04d3\u04d9\u0003\u0002\u0002\u0002\u04d4\u04d5\f\u0003\u0002",
"\u0002\u04d5\u04d6\u0007Z\u0002\u0002\u04d6\u04d8\u0005*\u0016\u0002",
"\u04d7\u04d4\u0003\u0002\u0002\u0002\u04d8\u04db\u0003\u0002\u0002\u0002",
"\u04d9\u04d7\u0003\u0002\u0002\u0002\u04d9\u04da\u0003\u0002\u0002\u0002",
"\u04da\u00a3\u0003\u0002\u0002\u0002\u04db\u04d9\u0003\u0002\u0002\u0002",
"\u04dc\u04dd\u0007\u001f\u0002\u0002\u04dd\u04de\u0007k\u0002\u0002",
"\u04de\u04ed\u0007Y\u0002\u0002\u04df\u04e0\u0007\u0016\u0002\u0002",
"\u04e0\u04ed\u0007Y\u0002\u0002\u04e1\u04e2\u0007\u0012\u0002\u0002",
"\u04e2\u04ed\u0007Y\u0002\u0002\u04e3\u04e5\u0007&\u0002\u0002\u04e4",
"\u04e6\u0005.\u0018\u0002\u04e5\u04e4\u0003\u0002\u0002\u0002\u04e5",
"\u04e6\u0003\u0002\u0002\u0002\u04e6\u04e7\u0003\u0002\u0002\u0002\u04e7",
"\u04ed\u0007Y\u0002\u0002\u04e8\u04e9\u0007\u001f\u0002\u0002\u04e9",
"\u04ea\u0005\u000e\b\u0002\u04ea\u04eb\u0007Y\u0002\u0002\u04eb\u04ed",
"\u0003\u0002\u0002\u0002\u04ec\u04dc\u0003\u0002\u0002\u0002\u04ec\u04df",
"\u0003\u0002\u0002\u0002\u04ec\u04e1\u0003\u0002\u0002\u0002\u04ec\u04e3",
"\u0003\u0002\u0002\u0002\u04ec\u04e8\u0003\u0002\u0002\u0002\u04ed\u00a5",
"\u0003\u0002\u0002\u0002\u04ee\u04f0\u0005\u00a8U\u0002\u04ef\u04ee",
"\u0003\u0002\u0002\u0002\u04ef\u04f0\u0003\u0002\u0002\u0002\u04f0\u04f1",
"\u0003\u0002\u0002\u0002\u04f1\u04f2\u0007\u0002\u0002\u0003\u04f2\u00a7",
"\u0003\u0002\u0002\u0002\u04f3\u04f4\bU\u0001\u0002\u04f4\u04f5\u0005",
"\u00aaV\u0002\u04f5\u04fa\u0003\u0002\u0002\u0002\u04f6\u04f7\f\u0003",
"\u0002\u0002\u04f7\u04f9\u0005\u00aaV\u0002\u04f8\u04f6\u0003\u0002",
"\u0002\u0002\u04f9\u04fc\u0003\u0002\u0002\u0002\u04fa\u04f8\u0003\u0002",
"\u0002\u0002\u04fa\u04fb\u0003\u0002\u0002\u0002\u04fb\u00a9\u0003\u0002",
"\u0002\u0002\u04fc\u04fa\u0003\u0002\u0002\u0002\u04fd\u0501\u0005\u00ac",
"W\u0002\u04fe\u0501\u00052\u001a\u0002\u04ff\u0501\u0007Y\u0002\u0002",
"\u0500\u04fd\u0003\u0002\u0002\u0002\u0500\u04fe\u0003\u0002\u0002\u0002",
"\u0500\u04ff\u0003\u0002\u0002\u0002\u0501\u00ab\u0003\u0002\u0002\u0002",
"\u0502\u0504\u00054\u001b\u0002\u0503\u0502\u0003\u0002\u0002\u0002",
"\u0503\u0504\u0003\u0002\u0002\u0002\u0504\u0505\u0003\u0002\u0002\u0002",
"\u0505\u0507\u0005`1\u0002\u0506\u0508\u0005\u00aeX\u0002\u0507\u0506",
"\u0003\u0002\u0002\u0002\u0507\u0508\u0003\u0002\u0002\u0002\u0508\u0509",
"\u0003\u0002\u0002\u0002\u0509\u050a\u0005\u0092J\u0002\u050a\u00ad",
"\u0003\u0002\u0002\u0002\u050b\u050c\bX\u0001\u0002\u050c\u050d\u0005",
"2\u001a\u0002\u050d\u0512\u0003\u0002\u0002\u0002\u050e\u050f\f\u0003",
"\u0002\u0002\u050f\u0511\u00052\u001a\u0002\u0510\u050e\u0003\u0002",
"\u0002\u0002\u0511\u0514\u0003\u0002\u0002\u0002\u0512\u0510\u0003\u0002",
"\u0002\u0002\u0512\u0513\u0003\u0002\u0002\u0002\u0513\u00af\u0003\u0002",
"\u0002\u0002\u0514\u0512\u0003\u0002\u0002\u0002\u0090\u00b5\u00bd\u00d1",
"\u00e2\u00ec\u0110\u011a\u0127\u0129\u0134\u014d\u015e\u016c\u016e\u017a",
"\u017c\u0188\u018a\u019c\u019e\u01aa\u01ac\u01b7\u01c2\u01cd\u01d8\u01e3",
"\u01ec\u01f4\u0200\u020d\u0212\u0217\u021e\u0228\u0230\u0243\u0249\u024e",
"\u0257\u0262\u0267\u026c\u0270\u0274\u0276\u0280\u0285\u0289\u028d\u0295",
"\u029e\u02a8\u02b0\u02c1\u02cd\u02d0\u02d6\u02e4\u02ea\u02ef\u02f2\u02f9",
"\u0308\u0314\u0317\u0319\u0321\u0325\u0333\u0337\u033c\u033f\u0342\u0349",
"\u034b\u0350\u0354\u0359\u035d\u0360\u0369\u0371\u037b\u0383\u0385\u038f",
"\u0394\u0398\u039e\u03a1\u03aa\u03af\u03b2\u03b8\u03c8\u03ce\u03d1\u03d6",
"\u03d9\u03e0\u03f3\u03f9\u03fc\u03fe\u040d\u0411\u0418\u041d\u042a\u0433",
"\u043c\u044f\u0452\u045a\u045d\u0461\u0466\u0473\u0477\u0482\u0487\u048a",
"\u0495\u049d\u04b3\u04b8\u04bc\u04bf\u04c3\u04c7\u04c9\u04cf\u04d9\u04e5",
"\u04ec\u04ef\u04fa\u0500\u0503\u0507\u0512"].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, "'__extension__'", "'__builtin_va_arg'", "'__builtin_offsetof'",
"'__m128'", "'__m128d'", "'__m128i'", "'__typeof__'",
"'__inline__'", "'__stdcall'", "'__declspec'", "'__asm'",
"'__attribute__'", "'__asm__'", "'__volatile__'", "'auto'",
"'break'", "'case'", "'char'", "'const'", "'continue'",
"'default'", "'do'", "'double'", "'else'", "'enum'",
"'extern'", "'float'", "'for'", "'goto'", "'if'", "'inline'",
"'int'", "'long'", "'register'", "'restrict'", "'return'",
"'short'", "'signed'", "'sizeof'", "'static'", "'struct'",
"'switch'", "'typedef'", "'union'", "'unsigned'", "'void'",
"'volatile'", "'while'", "'_Alignas'", "'_Alignof'",
"'_Atomic'", "'_Bool'", "'_Complex'", "'_Generic'",
"'_Imaginary'", "'_Noreturn'", "'_Static_assert'",
"'_Thread_local'", "'('", "')'", "'['", "']'", "'{'",
"'}'", "'<'", "'<='", "'>'", "'>='", "'<<'", "'>>'",
"'+'", "'++'", "'-'", "'--'", "'*'", "'/'", "'%'",
"'&'", "'|'", "'&&'", "'||'", "'^'", "'!'", "'~'",
"'?'", "':'", "';'", "','", "'='", "'*='", "'/='",
"'%='", "'+='", "'-='", "'<<='", "'>>='", "'&='", "'^='",
"'|='", "'=='", "'!='", "'->'", "'.'", "'...'" ];
var symbolicNames = [ null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, "Auto", "Break",
"Case", "Char", "Const", "Continue", "Default", "Do",
"Double", "Else", "Enum", "Extern", "Float", "For",
"Goto", "If", "Inline", "Int", "Long", "Register",
"Restrict", "Return", "Short", "Signed", "Sizeof",
"Static", "Struct", "Switch", "Typedef", "Union",
"Unsigned", "Void", "Volatile", "While", "Alignas",
"Alignof", "Atomic", "Bool", "Complex", "Generic",
"Imaginary", "Noreturn", "StaticAssert", "ThreadLocal",
"LeftParen", "RightParen", "LeftBracket", "RightBracket",
"LeftBrace", "RightBrace", "Less", "LessEqual", "Greater",
"GreaterEqual", "LeftShift", "RightShift", "Plus",
"PlusPlus", "Minus", "MinusMinus", "Star", "Div",
"Mod", "And", "Or", "AndAnd", "OrOr", "Caret", "Not",
"Tilde", "Question", "Colon", "Semi", "Comma", "Assign",
"StarAssign", "DivAssign", "ModAssign", "PlusAssign",
"MinusAssign", "LeftShiftAssign", "RightShiftAssign",
"AndAssign", "XorAssign", "OrAssign", "Equal", "NotEqual",
"Arrow", "Dot", "Ellipsis", "Identifier", "Constant",
"DigitSequence", "StringLiteral", "ComplexDefine",
"IncludeDirective", "AsmBlock", "LineAfterPreprocessing",
"LineDirective", "PragmaDirective", "Whitespace",
"Newline", "BlockComment", "LineComment" ];
var ruleNames = [ "primaryExpression", "genericSelection", "genericAssocList",
"genericAssociation", "postfixExpression", "argumentExpressionList",
"unaryExpression", "unaryOperator", "castExpression",
"multiplicativeExpression", "additiveExpression", "shiftExpression",
"relationalExpression", "equalityExpression", "andExpression",
"exclusiveOrExpression", "inclusiveOrExpression", "logicalAndExpression",
"logicalOrExpression", "conditionalExpression", "assignmentExpression",
"assignmentOperator", "expression", "constantExpression",
"declaration", "declarationSpecifiers", "declarationSpecifiers2",
"declarationSpecifier", "initDeclaratorList", "initDeclarator",
"storageClassSpecifier", "typeSpecifier", "structOrUnionSpecifier",
"structOrUnion", "structDeclarationList", "structDeclaration",
"specifierQualifierList", "structDeclaratorList", "structDeclarator",
"enumSpecifier", "enumeratorList", "enumerator", "enumerationConstant",
"atomicTypeSpecifier", "typeQualifier", "functionSpecifier",
"alignmentSpecifier", "declarator", "directDeclarator",
"gccDeclaratorExtension", "gccAttributeSpecifier", "gccAttributeList",
"gccAttribute", "nestedParenthesesBlock", "pointer",
"typeQualifierList", "parameterTypeList", "parameterList",
"parameterDeclaration", "identifierList", "typeName",
"abstractDeclarator", "directAbstractDeclarator", "typedefName",
"initializer", "initializerList", "designation", "designatorList",
"designator", "staticAssertDeclaration", "statement",
"labeledStatement", "compoundStatement", "blockItemList",
"blockItem", "expressionStatement", "selectionStatement",
"iterationStatement", "forCondition", "forDeclaration",
"forExpression", "jumpStatement", "compilationUnit",
"translationUnit", "externalDeclaration", "functionDefinition",
"declarationList" ];
function CParser (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;
}
CParser.prototype = Object.create(antlr4.Parser.prototype);
CParser.prototype.constructor = CParser;
Object.defineProperty(CParser.prototype, "atn", {
get : function() {
return atn;
}
});
CParser.EOF = antlr4.Token.EOF;
CParser.T__0 = 1;
CParser.T__1 = 2;
CParser.T__2 = 3;
CParser.T__3 = 4;
CParser.T__4 = 5;
CParser.T__5 = 6;
CParser.T__6 = 7;
CParser.T__7 = 8;
CParser.T__8 = 9;
CParser.T__9 = 10;
CParser.T__10 = 11;
CParser.T__11 = 12;
CParser.T__12 = 13;
CParser.T__13 = 14;
CParser.Auto = 15;
CParser.Break = 16;
CParser.Case = 17;
CParser.Char = 18;
CParser.Const = 19;
CParser.Continue = 20;
CParser.Default = 21;
CParser.Do = 22;
CParser.Double = 23;
CParser.Else = 24;
CParser.Enum = 25;
CParser.Extern = 26;
CParser.Float = 27;
CParser.For = 28;
CParser.Goto = 29;
CParser.If = 30;
CParser.Inline = 31;
CParser.Int = 32;
CParser.Long = 33;
CParser.Register = 34;
CParser.Restrict = 35;
CParser.Return = 36;
CParser.Short = 37;
CParser.Signed = 38;
CParser.Sizeof = 39;
CParser.Static = 40;
CParser.Struct = 41;
CParser.Switch = 42;
CParser.Typedef = 43;
CParser.Union = 44;
CParser.Unsigned = 45;
CParser.Void = 46;
CParser.Volatile = 47;
CParser.While = 48;
CParser.Alignas = 49;
CParser.Alignof = 50;
CParser.Atomic = 51;
CParser.Bool = 52;
CParser.Complex = 53;
CParser.Generic = 54;
CParser.Imaginary = 55;
CParser.Noreturn = 56;
CParser.StaticAssert = 57;
CParser.ThreadLocal = 58;
CParser.LeftParen = 59;
CParser.RightParen = 60;
CParser.LeftBracket = 61;
CParser.RightBracket = 62;
CParser.LeftBrace = 63;
CParser.RightBrace = 64;
CParser.Less = 65;
CParser.LessEqual = 66;
CParser.Greater = 67;
CParser.GreaterEqual = 68;
CParser.LeftShift = 69;
CParser.RightShift = 70;
CParser.Plus = 71;
CParser.PlusPlus = 72;
CParser.Minus = 73;
CParser.MinusMinus = 74;
CParser.Star = 75;
CParser.Div = 76;
CParser.Mod = 77;
CParser.And = 78;
CParser.Or = 79;
CParser.AndAnd = 80;
CParser.OrOr = 81;
CParser.Caret = 82;
CParser.Not = 83;
CParser.Tilde = 84;
CParser.Question = 85;
CParser.Colon = 86;
CParser.Semi = 87;
CParser.Comma = 88;
CParser.Assign = 89;
CParser.StarAssign = 90;
CParser.DivAssign = 91;
CParser.ModAssign = 92;
CParser.PlusAssign = 93;
CParser.MinusAssign = 94;
CParser.LeftShiftAssign = 95;
CParser.RightShiftAssign = 96;
CParser.AndAssign = 97;
CParser.XorAssign = 98;
CParser.OrAssign = 99;
CParser.Equal = 100;
CParser.NotEqual = 101;
CParser.Arrow = 102;
CParser.Dot = 103;
CParser.Ellipsis = 104;
CParser.Identifier = 105;
CParser.Constant = 106;
CParser.DigitSequence = 107;
CParser.StringLiteral = 108;
CParser.ComplexDefine = 109;
CParser.IncludeDirective = 110;
CParser.AsmBlock = 111;
CParser.LineAfterPreprocessing = 112;
CParser.LineDirective = 113;
CParser.PragmaDirective = 114;
CParser.Whitespace = 115;
CParser.Newline = 116;
CParser.BlockComment = 117;
CParser.LineComment = 118;
CParser.RULE_primaryExpression = 0;
CParser.RULE_genericSelection = 1;
CParser.RULE_genericAssocList = 2;
CParser.RULE_genericAssociation = 3;
CParser.RULE_postfixExpression = 4;
CParser.RULE_argumentExpressionList = 5;
CParser.RULE_unaryExpression = 6;
CParser.RULE_unaryOperator = 7;
CParser.RULE_castExpression = 8;
CParser.RULE_multiplicativeExpression = 9;
CParser.RULE_additiveExpression = 10;
CParser.RULE_shiftExpression = 11;
CParser.RULE_relationalExpression = 12;
CParser.RULE_equalityExpression = 13;
CParser.RULE_andExpression = 14;
CParser.RULE_exclusiveOrExpression = 15;
CParser.RULE_inclusiveOrExpression = 16;
CParser.RULE_logicalAndExpression = 17;
CParser.RULE_logicalOrExpression = 18;
CParser.RULE_conditionalExpression = 19;
CParser.RULE_assignmentExpression = 20;
CParser.RULE_assignmentOperator = 21;
CParser.RULE_expression = 22;
CParser.RULE_constantExpression = 23;
CParser.RULE_declaration = 24;
CParser.RULE_declarationSpecifiers = 25;
CParser.RULE_declarationSpecifiers2 = 26;
CParser.RULE_declarationSpecifier = 27;
CParser.RULE_initDeclaratorList = 28;
CParser.RULE_initDeclarator = 29;
CParser.RULE_storageClassSpecifier = 30;
CParser.RULE_typeSpecifier = 31;
CParser.RULE_structOrUnionSpecifier = 32;
CParser.RULE_structOrUnion = 33;
CParser.RULE_structDeclarationList = 34;
CParser.RULE_structDeclaration = 35;
CParser.RULE_specifierQualifierList = 36;
CParser.RULE_structDeclaratorList = 37;
CParser.RULE_structDeclarator = 38;
CParser.RULE_enumSpecifier = 39;
CParser.RULE_enumeratorList = 40;
CParser.RULE_enumerator = 41;
CParser.RULE_enumerationConstant = 42;
CParser.RULE_atomicTypeSpecifier = 43;
CParser.RULE_typeQualifier = 44;
CParser.RULE_functionSpecifier = 45;
CParser.RULE_alignmentSpecifier = 46;
CParser.RULE_declarator = 47;
CParser.RULE_directDeclarator = 48;
CParser.RULE_gccDeclaratorExtension = 49;
CParser.RULE_gccAttributeSpecifier = 50;
CParser.RULE_gccAttributeList = 51;
CParser.RULE_gccAttribute = 52;
CParser.RULE_nestedParenthesesBlock = 53;
CParser.RULE_pointer = 54;
CParser.RULE_typeQualifierList = 55;
CParser.RULE_parameterTypeList = 56;
CParser.RULE_parameterList = 57;
CParser.RULE_parameterDeclaration = 58;
CParser.RULE_identifierList = 59;
CParser.RULE_typeName = 60;
CParser.RULE_abstractDeclarator = 61;
CParser.RULE_directAbstractDeclarator = 62;
CParser.RULE_typedefName = 63;
CParser.RULE_initializer = 64;
CParser.RULE_initializerList = 65;
CParser.RULE_designation = 66;
CParser.RULE_designatorList = 67;
CParser.RULE_designator = 68;
CParser.RULE_staticAssertDeclaration = 69;
CParser.RULE_statement = 70;
CParser.RULE_labeledStatement = 71;
CParser.RULE_compoundStatement = 72;
CParser.RULE_blockItemList = 73;
CParser.RULE_blockItem = 74;
CParser.RULE_expressionStatement = 75;
CParser.RULE_selectionStatement = 76;
CParser.RULE_iterationStatement = 77;
CParser.RULE_forCondition = 78;
CParser.RULE_forDeclaration = 79;
CParser.RULE_forExpression = 80;
CParser.RULE_jumpStatement = 81;
CParser.RULE_compilationUnit = 82;
CParser.RULE_translationUnit = 83;
CParser.RULE_externalDeclaration = 84;
CParser.RULE_functionDefinition = 85;
CParser.RULE_declarationList = 86;
function PrimaryExpressionContext(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 = CParser.RULE_primaryExpression;
return this;
}
PrimaryExpressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
PrimaryExpressionContext.prototype.constructor = PrimaryExpressionContext;
PrimaryExpressionContext.prototype.Identifier = function() {
return this.getToken(CParser.Identifier, 0);
};
PrimaryExpressionContext.prototype.Constant = function() {
return this.getToken(CParser.Constant, 0);
};
PrimaryExpressionContext.prototype.StringLiteral = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(CParser.StringLiteral);
} else {
return this.getToken(CParser.StringLiteral, i);
}
};
PrimaryExpressionContext.prototype.LeftParen = function() {
return this.getToken(CParser.LeftParen, 0);
};
PrimaryExpressionContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
PrimaryExpressionContext.prototype.RightParen = function() {
return this.getToken(CParser.RightParen, 0);
};
PrimaryExpressionContext.prototype.genericSelection = function() {
return this.getTypedRuleContext(GenericSelectionContext,0);
};
PrimaryExpressionContext.prototype.compoundStatement = function() {
return this.getTypedRuleContext(CompoundStatementContext,0);
};
PrimaryExpressionContext.prototype.unaryExpression = function() {
return this.getTypedRuleContext(UnaryExpressionContext,0);
};
PrimaryExpressionContext.prototype.Comma = function() {
return this.getToken(CParser.Comma, 0);
};
PrimaryExpressionContext.prototype.typeName = function() {
return this.getTypedRuleContext(TypeNameContext,0);
};
PrimaryExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterPrimaryExpression(this);
}
};
PrimaryExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitPrimaryExpression(this);
}
};
CParser.PrimaryExpressionContext = PrimaryExpressionContext;
CParser.prototype.primaryExpression = function() {
var localctx = new PrimaryExpressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 0, CParser.RULE_primaryExpression);
var _la = 0; // Token type
try {
this.state = 207;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,2,this._ctx);
switch(la_) {
case 1:
this.enterOuterAlt(localctx, 1);
this.state = 174;
this.match(CParser.Identifier);
break;
case 2:
this.enterOuterAlt(localctx, 2);
this.state = 175;
this.match(CParser.Constant);
break;
case 3:
this.enterOuterAlt(localctx, 3);
this.state = 177;
this._errHandler.sync(this);
var _alt = 1;
do {
switch (_alt) {
case 1:
this.state = 176;
this.match(CParser.StringLiteral);
break;
default:
throw new antlr4.error.NoViableAltException(this);
}
this.state = 179;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,0, this._ctx);
} while ( _alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER );
break;
case 4:
this.enterOuterAlt(localctx, 4);
this.state = 181;
this.match(CParser.LeftParen);
this.state = 182;
this.expression(0);
this.state = 183;
this.match(CParser.RightParen);
break;
case 5:
this.enterOuterAlt(localctx, 5);
this.state = 185;
this.genericSelection();
break;
case 6:
this.enterOuterAlt(localctx, 6);
this.state = 187;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===CParser.T__0) {
this.state = 186;
this.match(CParser.T__0);
}
this.state = 189;
this.match(CParser.LeftParen);
this.state = 190;
this.compoundStatement();
this.state = 191;
this.match(CParser.RightParen);
break;
case 7:
this.enterOuterAlt(localctx, 7);
this.state = 193;
this.match(CParser.T__1);
this.state = 194;
this.match(CParser.LeftParen);
this.state = 195;
this.unaryExpression();
this.state = 196;
this.match(CParser.Comma);
this.state = 197;
this.typeName();
this.state = 198;
this.match(CParser.RightParen);
break;
case 8:
this.enterOuterAlt(localctx, 8);
this.state = 200;
this.match(CParser.T__2);
this.state = 201;
this.match(CParser.LeftParen);
this.state = 202;
this.typeName();
this.state = 203;
this.match(CParser.Comma);
this.state = 204;
this.unaryExpression();
this.state = 205;
this.match(CParser.RightParen);
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 GenericSelectionContext(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 = CParser.RULE_genericSelection;
return this;
}
GenericSelectionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
GenericSelectionContext.prototype.constructor = GenericSelectionContext;
GenericSelectionContext.prototype.Generic = function() {
return this.getToken(CParser.Generic, 0);
};
GenericSelectionContext.prototype.LeftParen = function() {
return this.getToken(CParser.LeftParen, 0);
};
GenericSelectionContext.prototype.assignmentExpression = function() {
return this.getTypedRuleContext(AssignmentExpressionContext,0);
};
GenericSelectionContext.prototype.Comma = function() {
return this.getToken(CParser.Comma, 0);
};
GenericSelectionContext.prototype.genericAssocList = function() {
return this.getTypedRuleContext(GenericAssocListContext,0);
};
GenericSelectionContext.prototype.RightParen = function() {
return this.getToken(CParser.RightParen, 0);
};
GenericSelectionContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterGenericSelection(this);
}
};
GenericSelectionContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitGenericSelection(this);
}
};
CParser.GenericSelectionContext = GenericSelectionContext;
CParser.prototype.genericSelection = function() {
var localctx = new GenericSelectionContext(this, this._ctx, this.state);
this.enterRule(localctx, 2, CParser.RULE_genericSelection);
try {
this.enterOuterAlt(localctx, 1);
this.state = 209;
this.match(CParser.Generic);
this.state = 210;
this.match(CParser.LeftParen);
this.state = 211;
this.assignmentExpression();
this.state = 212;
this.match(CParser.Comma);
this.state = 213;
this.genericAssocList(0);
this.state = 214;
this.match(CParser.RightParen);
} 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 GenericAssocListContext(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 = CParser.RULE_genericAssocList;
return this;
}
GenericAssocListContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
GenericAssocListContext.prototype.constructor = GenericAssocListContext;
GenericAssocListContext.prototype.genericAssociation = function() {
return this.getTypedRuleContext(GenericAssociationContext,0);
};
GenericAssocListContext.prototype.genericAssocList = function() {
return this.getTypedRuleContext(GenericAssocListContext,0);
};
GenericAssocListContext.prototype.Comma = function() {
return this.getToken(CParser.Comma, 0);
};
GenericAssocListContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterGenericAssocList(this);
}
};
GenericAssocListContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitGenericAssocList(this);
}
};
CParser.prototype.genericAssocList = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new GenericAssocListContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 4;
this.enterRecursionRule(localctx, 4, CParser.RULE_genericAssocList, _p);
try {
this.enterOuterAlt(localctx, 1);
this.state = 217;
this.genericAssociation();
this._ctx.stop = this._input.LT(-1);
this.state = 224;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,3,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
if(this._parseListeners!==null) {
this.triggerExitRuleEvent();
}
_prevctx = localctx;
localctx = new GenericAssocListContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CParser.RULE_genericAssocList);
this.state = 219;
if (!( this.precpred(this._ctx, 1))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
}
this.state = 220;
this.match(CParser.Comma);
this.state = 221;
this.genericAssociation();
}
this.state = 226;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,3,this._ctx);
}
} catch( error) {
if(error instanceof antlr4.error.RecognitionException) {
localctx.exception = error;
this._errHandler.reportError(this, error);
this._errHandler.recover(this, error);
} else {
throw error;
}
} finally {
this.unrollRecursionContexts(_parentctx)
}
return localctx;
};
function GenericAssociationContext(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 = CParser.RULE_genericAssociation;
return this;
}
GenericAssociationContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
GenericAssociationContext.prototype.constructor = GenericAssociationContext;
GenericAssociationContext.prototype.typeName = function() {
return this.getTypedRuleContext(TypeNameContext,0);
};
GenericAssociationContext.prototype.Colon = function() {
return this.getToken(CParser.Colon, 0);
};
GenericAssociationContext.prototype.assignmentExpression = function() {
return this.getTypedRuleContext(AssignmentExpressionContext,0);
};
GenericAssociationContext.prototype.Default = function() {
return this.getToken(CParser.Default, 0);
};
GenericAssociationContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterGenericAssociation(this);
}
};
GenericAssociationContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitGenericAssociation(this);
}
};
CParser.GenericAssociationContext = GenericAssociationContext;
CParser.prototype.genericAssociation = function() {
var localctx = new GenericAssociationContext(this, this._ctx, this.state);
this.enterRule(localctx, 6, CParser.RULE_genericAssociation);
try {
this.state = 234;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case CParser.T__0:
case CParser.T__3:
case CParser.T__4:
case CParser.T__5:
case CParser.T__6:
case CParser.Char:
case CParser.Const:
case CParser.Double:
case CParser.Enum:
case CParser.Float:
case CParser.Int:
case CParser.Long:
case CParser.Restrict:
case CParser.Short:
case CParser.Signed:
case CParser.Struct:
case CParser.Union:
case CParser.Unsigned:
case CParser.Void:
case CParser.Volatile:
case CParser.Atomic:
case CParser.Bool:
case CParser.Complex:
case CParser.Identifier:
this.enterOuterAlt(localctx, 1);
this.state = 227;
this.typeName();
this.state = 228;
this.match(CParser.Colon);
this.state = 229;
this.assignmentExpression();
break;
case CParser.Default:
this.enterOuterAlt(localctx, 2);
this.state = 231;
this.match(CParser.Default);
this.state = 232;
this.match(CParser.Colon);
this.state = 233;
this.assignmentExpression();
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 PostfixExpressionContext(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 = CParser.RULE_postfixExpression;
return this;
}
PostfixExpressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
PostfixExpressionContext.prototype.constructor = PostfixExpressionContext;
PostfixExpressionContext.prototype.primaryExpression = function() {
return this.getTypedRuleContext(PrimaryExpressionContext,0);
};
PostfixExpressionContext.prototype.LeftParen = function() {
return this.getToken(CParser.LeftParen, 0);
};
PostfixExpressionContext.prototype.typeName = function() {
return this.getTypedRuleContext(TypeNameContext,0);
};
PostfixExpressionContext.prototype.RightParen = function() {
return this.getToken(CParser.RightParen, 0);
};
PostfixExpressionContext.prototype.LeftBrace = function() {
return this.getToken(CParser.LeftBrace, 0);
};
PostfixExpressionContext.prototype.initializerList = function() {
return this.getTypedRuleContext(InitializerListContext,0);
};
PostfixExpressionContext.prototype.RightBrace = function() {
return this.getToken(CParser.RightBrace, 0);
};
PostfixExpressionContext.prototype.Comma = function() {
return this.getToken(CParser.Comma, 0);
};
PostfixExpressionContext.prototype.postfixExpression = function() {
return this.getTypedRuleContext(PostfixExpressionContext,0);
};
PostfixExpressionContext.prototype.LeftBracket = function() {
return this.getToken(CParser.LeftBracket, 0);
};
PostfixExpressionContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
PostfixExpressionContext.prototype.RightBracket = function() {
return this.getToken(CParser.RightBracket, 0);
};
PostfixExpressionContext.prototype.argumentExpressionList = function() {
return this.getTypedRuleContext(ArgumentExpressionListContext,0);
};
PostfixExpressionContext.prototype.Dot = function() {
return this.getToken(CParser.Dot, 0);
};
PostfixExpressionContext.prototype.Identifier = function() {
return this.getToken(CParser.Identifier, 0);
};
PostfixExpressionContext.prototype.Arrow = function() {
return this.getToken(CParser.Arrow, 0);
};
PostfixExpressionContext.prototype.PlusPlus = function() {
return this.getToken(CParser.PlusPlus, 0);
};
PostfixExpressionContext.prototype.MinusMinus = function() {
return this.getToken(CParser.MinusMinus, 0);
};
PostfixExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterPostfixExpression(this);
}
};
PostfixExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitPostfixExpression(this);
}
};
CParser.prototype.postfixExpression = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new PostfixExpressionContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 8;
this.enterRecursionRule(localctx, 8, CParser.RULE_postfixExpression, _p);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 270;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,5,this._ctx);
switch(la_) {
case 1:
this.state = 237;
this.primaryExpression();
break;
case 2:
this.state = 238;
this.match(CParser.LeftParen);
this.state = 239;
this.typeName();
this.state = 240;
this.match(CParser.RightParen);
this.state = 241;
this.match(CParser.LeftBrace);
this.state = 242;
this.initializerList(0);
this.state = 243;
this.match(CParser.RightBrace);
break;
case 3:
this.state = 245;
this.match(CParser.LeftParen);
this.state = 246;
this.typeName();
this.state = 247;
this.match(CParser.RightParen);
this.state = 248;
this.match(CParser.LeftBrace);
this.state = 249;
this.initializerList(0);
this.state = 250;
this.match(CParser.Comma);
this.state = 251;
this.match(CParser.RightBrace);
break;
case 4:
this.state = 253;
this.match(CParser.T__0);
this.state = 254;
this.match(CParser.LeftParen);
this.state = 255;
this.typeName();
this.state = 256;
this.match(CParser.RightParen);
this.state = 257;
this.match(CParser.LeftBrace);
this.state = 258;
this.initializerList(0);
this.state = 259;
this.match(CParser.RightBrace);
break;
case 5:
this.state = 261;
this.match(CParser.T__0);
this.state = 262;
this.match(CParser.LeftParen);
this.state = 263;
this.typeName();
this.state = 264;
this.match(CParser.RightParen);
this.state = 265;
this.match(CParser.LeftBrace);
this.state = 266;
this.initializerList(0);
this.state = 267;
this.match(CParser.Comma);
this.state = 268;
this.match(CParser.RightBrace);
break;
}
this._ctx.stop = this._input.LT(-1);
this.state = 295;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,8,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
if(this._parseListeners!==null) {
this.triggerExitRuleEvent();
}
_prevctx = localctx;
this.state = 293;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,7,this._ctx);
switch(la_) {
case 1:
localctx = new PostfixExpressionContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CParser.RULE_postfixExpression);
this.state = 272;
if (!( this.precpred(this._ctx, 10))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 10)");
}
this.state = 273;
this.match(CParser.LeftBracket);
this.state = 274;
this.expression(0);
this.state = 275;
this.match(CParser.RightBracket);
break;
case 2:
localctx = new PostfixExpressionContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CParser.RULE_postfixExpression);
this.state = 277;
if (!( this.precpred(this._ctx, 9))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 9)");
}
this.state = 278;
this.match(CParser.LeftParen);
this.state = 280;
this._errHandler.sync(this);
_la = this._input.LA(1);
if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << CParser.T__0) | (1 << CParser.T__1) | (1 << CParser.T__2))) !== 0) || ((((_la - 39)) & ~0x1f) == 0 && ((1 << (_la - 39)) & ((1 << (CParser.Sizeof - 39)) | (1 << (CParser.Alignof - 39)) | (1 << (CParser.Generic - 39)) | (1 << (CParser.LeftParen - 39)))) !== 0) || ((((_la - 71)) & ~0x1f) == 0 && ((1 << (_la - 71)) & ((1 << (CParser.Plus - 71)) | (1 << (CParser.PlusPlus - 71)) | (1 << (CParser.Minus - 71)) | (1 << (CParser.MinusMinus - 71)) | (1 << (CParser.Star - 71)) | (1 << (CParser.And - 71)) | (1 << (CParser.AndAnd - 71)) | (1 << (CParser.Not - 71)) | (1 << (CParser.Tilde - 71)))) !== 0) || ((((_la - 105)) & ~0x1f) == 0 && ((1 << (_la - 105)) & ((1 << (CParser.Identifier - 105)) | (1 << (CParser.Constant - 105)) | (1 << (CParser.DigitSequence - 105)) | (1 << (CParser.StringLiteral - 105)))) !== 0)) {
this.state = 279;
this.argumentExpressionList(0);
}
this.state = 282;
this.match(CParser.RightParen);
break;
case 3:
localctx = new PostfixExpressionContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CParser.RULE_postfixExpression);
this.state = 283;
if (!( this.precpred(this._ctx, 8))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 8)");
}
this.state = 284;
this.match(CParser.Dot);
this.state = 285;
this.match(CParser.Identifier);
break;
case 4:
localctx = new PostfixExpressionContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CParser.RULE_postfixExpression);
this.state = 286;
if (!( this.precpred(this._ctx, 7))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 7)");
}
this.state = 287;
this.match(CParser.Arrow);
this.state = 288;
this.match(CParser.Identifier);
break;
case 5:
localctx = new PostfixExpressionContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CParser.RULE_postfixExpression);
this.state = 289;
if (!( this.precpred(this._ctx, 6))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 6)");
}
this.state = 290;
this.match(CParser.PlusPlus);
break;
case 6:
localctx = new PostfixExpressionContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CParser.RULE_postfixExpression);
this.state = 291;
if (!( this.precpred(this._ctx, 5))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 5)");
}
this.state = 292;
this.match(CParser.MinusMinus);
break;
}
}
this.state = 297;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,8,this._ctx);
}
} catch( error) {
if(error instanceof antlr4.error.RecognitionException) {
localctx.exception = error;
this._errHandler.reportError(this, error);
this._errHandler.recover(this, error);
} else {
throw error;
}
} finally {
this.unrollRecursionContexts(_parentctx)
}
return localctx;
};
function ArgumentExpressionListContext(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 = CParser.RULE_argumentExpressionList;
return this;
}
ArgumentExpressionListContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
ArgumentExpressionListContext.prototype.constructor = ArgumentExpressionListContext;
ArgumentExpressionListContext.prototype.assignmentExpression = function() {
return this.getTypedRuleContext(AssignmentExpressionContext,0);
};
ArgumentExpressionListContext.prototype.argumentExpressionList = function() {
return this.getTypedRuleContext(ArgumentExpressionListContext,0);
};
ArgumentExpressionListContext.prototype.Comma = function() {
return this.getToken(CParser.Comma, 0);
};
ArgumentExpressionListContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterArgumentExpressionList(this);
}
};
ArgumentExpressionListContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitArgumentExpressionList(this);
}
};
CParser.prototype.argumentExpressionList = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new ArgumentExpressionListContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 10;
this.enterRecursionRule(localctx, 10, CParser.RULE_argumentExpressionList, _p);
try {
this.enterOuterAlt(localctx, 1);
this.state = 299;
this.assignmentExpression();
this._ctx.stop = this._input.LT(-1);
this.state = 306;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,9,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
if(this._parseListeners!==null) {
this.triggerExitRuleEvent();
}
_prevctx = localctx;
localctx = new ArgumentExpressionListContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CParser.RULE_argumentExpressionList);
this.state = 301;
if (!( this.precpred(this._ctx, 1))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
}
this.state = 302;
this.match(CParser.Comma);
this.state = 303;
this.assignmentExpression();
}
this.state = 308;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,9,this._ctx);
}
} catch( error) {
if(error instanceof antlr4.error.RecognitionException) {
localctx.exception = error;
this._errHandler.reportError(this, error);
this._errHandler.recover(this, error);
} else {
throw error;
}
} finally {
this.unrollRecursionContexts(_parentctx)
}
return localctx;
};
function UnaryExpressionContext(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 = CParser.RULE_unaryExpression;
return this;
}
UnaryExpressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
UnaryExpressionContext.prototype.constructor = UnaryExpressionContext;
UnaryExpressionContext.prototype.postfixExpression = function() {
return this.getTypedRuleContext(PostfixExpressionContext,0);
};
UnaryExpressionContext.prototype.PlusPlus = function() {
return this.getToken(CParser.PlusPlus, 0);
};
UnaryExpressionContext.prototype.unaryExpression = function() {
return this.getTypedRuleContext(UnaryExpressionContext,0);
};
UnaryExpressionContext.prototype.MinusMinus = function() {
return this.getToken(CParser.MinusMinus, 0);
};
UnaryExpressionContext.prototype.unaryOperator = function() {
return this.getTypedRuleContext(UnaryOperatorContext,0);
};
UnaryExpressionContext.prototype.castExpression = function() {
return this.getTypedRuleContext(CastExpressionContext,0);
};
UnaryExpressionContext.prototype.Sizeof = function() {
return this.getToken(CParser.Sizeof, 0);
};
UnaryExpressionContext.prototype.LeftParen = function() {
return this.getToken(CParser.LeftParen, 0);
};
UnaryExpressionContext.prototype.typeName = function() {
return this.getTypedRuleContext(TypeNameContext,0);
};
UnaryExpressionContext.prototype.RightParen = function() {
return this.getToken(CParser.RightParen, 0);
};
UnaryExpressionContext.prototype.Alignof = function() {
return this.getToken(CParser.Alignof, 0);
};
UnaryExpressionContext.prototype.AndAnd = function() {
return this.getToken(CParser.AndAnd, 0);
};
UnaryExpressionContext.prototype.Identifier = function() {
return this.getToken(CParser.Identifier, 0);
};
UnaryExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterUnaryExpression(this);
}
};
UnaryExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitUnaryExpression(this);
}
};
CParser.UnaryExpressionContext = UnaryExpressionContext;
CParser.prototype.unaryExpression = function() {
var localctx = new UnaryExpressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 12, CParser.RULE_unaryExpression);
try {
this.state = 331;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,10,this._ctx);
switch(la_) {
case 1:
this.enterOuterAlt(localctx, 1);
this.state = 309;
this.postfixExpression(0);
break;
case 2:
this.enterOuterAlt(localctx, 2);
this.state = 310;
this.match(CParser.PlusPlus);
this.state = 311;
this.unaryExpression();
break;
case 3:
this.enterOuterAlt(localctx, 3);
this.state = 312;
this.match(CParser.MinusMinus);
this.state = 313;
this.unaryExpression();
break;
case 4:
this.enterOuterAlt(localctx, 4);
this.state = 314;
this.unaryOperator();
this.state = 315;
this.castExpression();
break;
case 5:
this.enterOuterAlt(localctx, 5);
this.state = 317;
this.match(CParser.Sizeof);
this.state = 318;
this.unaryExpression();
break;
case 6:
this.enterOuterAlt(localctx, 6);
this.state = 319;
this.match(CParser.Sizeof);
this.state = 320;
this.match(CParser.LeftParen);
this.state = 321;
this.typeName();
this.state = 322;
this.match(CParser.RightParen);
break;
case 7:
this.enterOuterAlt(localctx, 7);
this.state = 324;
this.match(CParser.Alignof);
this.state = 325;
this.match(CParser.LeftParen);
this.state = 326;
this.typeName();
this.state = 327;
this.match(CParser.RightParen);
break;
case 8:
this.enterOuterAlt(localctx, 8);
this.state = 329;
this.match(CParser.AndAnd);
this.state = 330;
this.match(CParser.Identifier);
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 UnaryOperatorContext(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 = CParser.RULE_unaryOperator;
return this;
}
UnaryOperatorContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
UnaryOperatorContext.prototype.constructor = UnaryOperatorContext;
UnaryOperatorContext.prototype.And = function() {
return this.getToken(CParser.And, 0);
};
UnaryOperatorContext.prototype.Star = function() {
return this.getToken(CParser.Star, 0);
};
UnaryOperatorContext.prototype.Plus = function() {
return this.getToken(CParser.Plus, 0);
};
UnaryOperatorContext.prototype.Minus = function() {
return this.getToken(CParser.Minus, 0);
};
UnaryOperatorContext.prototype.Tilde = function() {
return this.getToken(CParser.Tilde, 0);
};
UnaryOperatorContext.prototype.Not = function() {
return this.getToken(CParser.Not, 0);
};
UnaryOperatorContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterUnaryOperator(this);
}
};
UnaryOperatorContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitUnaryOperator(this);
}
};
CParser.UnaryOperatorContext = UnaryOperatorContext;
CParser.prototype.unaryOperator = function() {
var localctx = new UnaryOperatorContext(this, this._ctx, this.state);
this.enterRule(localctx, 14, CParser.RULE_unaryOperator);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 333;
_la = this._input.LA(1);
if(!(((((_la - 71)) & ~0x1f) == 0 && ((1 << (_la - 71)) & ((1 << (CParser.Plus - 71)) | (1 << (CParser.Minus - 71)) | (1 << (CParser.Star - 71)) | (1 << (CParser.And - 71)) | (1 << (CParser.Not - 71)) | (1 << (CParser.Tilde - 71)))) !== 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 CastExpressionContext(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 = CParser.RULE_castExpression;
return this;
}
CastExpressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
CastExpressionContext.prototype.constructor = CastExpressionContext;
CastExpressionContext.prototype.LeftParen = function() {
return this.getToken(CParser.LeftParen, 0);
};
CastExpressionContext.prototype.typeName = function() {
return this.getTypedRuleContext(TypeNameContext,0);
};
CastExpressionContext.prototype.RightParen = function() {
return this.getToken(CParser.RightParen, 0);
};
CastExpressionContext.prototype.castExpression = function() {
return this.getTypedRuleContext(CastExpressionContext,0);
};
CastExpressionContext.prototype.unaryExpression = function() {
return this.getTypedRuleContext(UnaryExpressionContext,0);
};
CastExpressionContext.prototype.DigitSequence = function() {
return this.getToken(CParser.DigitSequence, 0);
};
CastExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterCastExpression(this);
}
};
CastExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitCastExpression(this);
}
};
CParser.CastExpressionContext = CastExpressionContext;
CParser.prototype.castExpression = function() {
var localctx = new CastExpressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 16, CParser.RULE_castExpression);
try {
this.state = 348;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,11,this._ctx);
switch(la_) {
case 1:
this.enterOuterAlt(localctx, 1);
this.state = 335;
this.match(CParser.LeftParen);
this.state = 336;
this.typeName();
this.state = 337;
this.match(CParser.RightParen);
this.state = 338;
this.castExpression();
break;
case 2:
this.enterOuterAlt(localctx, 2);
this.state = 340;
this.match(CParser.T__0);
this.state = 341;
this.match(CParser.LeftParen);
this.state = 342;
this.typeName();
this.state = 343;
this.match(CParser.RightParen);
this.state = 344;
this.castExpression();
break;
case 3:
this.enterOuterAlt(localctx, 3);
this.state = 346;
this.unaryExpression();
break;
case 4:
this.enterOuterAlt(localctx, 4);
this.state = 347;
this.match(CParser.DigitSequence);
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 MultiplicativeExpressionContext(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 = CParser.RULE_multiplicativeExpression;
return this;
}
MultiplicativeExpressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
MultiplicativeExpressionContext.prototype.constructor = MultiplicativeExpressionContext;
MultiplicativeExpressionContext.prototype.castExpression = function() {
return this.getTypedRuleContext(CastExpressionContext,0);
};
MultiplicativeExpressionContext.prototype.multiplicativeExpression = function() {
return this.getTypedRuleContext(MultiplicativeExpressionContext,0);
};
MultiplicativeExpressionContext.prototype.Star = function() {
return this.getToken(CParser.Star, 0);
};
MultiplicativeExpressionContext.prototype.Div = function() {
return this.getToken(CParser.Div, 0);
};
MultiplicativeExpressionContext.prototype.Mod = function() {
return this.getToken(CParser.Mod, 0);
};
MultiplicativeExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterMultiplicativeExpression(this);
}
};
MultiplicativeExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitMultiplicativeExpression(this);
}
};
CParser.prototype.multiplicativeExpression = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new MultiplicativeExpressionContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 18;
this.enterRecursionRule(localctx, 18, CParser.RULE_multiplicativeExpression, _p);
try {
this.enterOuterAlt(localctx, 1);
this.state = 351;
this.castExpression();
this._ctx.stop = this._input.LT(-1);
this.state = 364;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,13,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
if(this._parseListeners!==null) {
this.triggerExitRuleEvent();
}
_prevctx = localctx;
this.state = 362;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,12,this._ctx);
switch(la_) {
case 1:
localctx = new MultiplicativeExpressionContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CParser.RULE_multiplicativeExpression);
this.state = 353;
if (!( this.precpred(this._ctx, 3))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 3)");
}
this.state = 354;
this.match(CParser.Star);
this.state = 355;
this.castExpression();
break;
case 2:
localctx = new MultiplicativeExpressionContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CParser.RULE_multiplicativeExpression);
this.state = 356;
if (!( this.precpred(this._ctx, 2))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 2)");
}
this.state = 357;
this.match(CParser.Div);
this.state = 358;
this.castExpression();
break;
case 3:
localctx = new MultiplicativeExpressionContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CParser.RULE_multiplicativeExpression);
this.state = 359;
if (!( this.precpred(this._ctx, 1))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
}
this.state = 360;
this.match(CParser.Mod);
this.state = 361;
this.castExpression();
break;
}
}
this.state = 366;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,13,this._ctx);
}
} catch( error) {
if(error instanceof antlr4.error.RecognitionException) {
localctx.exception = error;
this._errHandler.reportError(this, error);
this._errHandler.recover(this, error);
} else {
throw error;
}
} finally {
this.unrollRecursionContexts(_parentctx)
}
return localctx;
};
function AdditiveExpressionContext(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 = CParser.RULE_additiveExpression;
return this;
}
AdditiveExpressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
AdditiveExpressionContext.prototype.constructor = AdditiveExpressionContext;
AdditiveExpressionContext.prototype.multiplicativeExpression = function() {
return this.getTypedRuleContext(MultiplicativeExpressionContext,0);
};
AdditiveExpressionContext.prototype.additiveExpression = function() {
return this.getTypedRuleContext(AdditiveExpressionContext,0);
};
AdditiveExpressionContext.prototype.Plus = function() {
return this.getToken(CParser.Plus, 0);
};
AdditiveExpressionContext.prototype.Minus = function() {
return this.getToken(CParser.Minus, 0);
};
AdditiveExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterAdditiveExpression(this);
}
};
AdditiveExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitAdditiveExpression(this);
}
};
CParser.prototype.additiveExpression = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new AdditiveExpressionContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 20;
this.enterRecursionRule(localctx, 20, CParser.RULE_additiveExpression, _p);
try {
this.enterOuterAlt(localctx, 1);
this.state = 368;
this.multiplicativeExpression(0);
this._ctx.stop = this._input.LT(-1);
this.state = 378;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,15,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
if(this._parseListeners!==null) {
this.triggerExitRuleEvent();
}
_prevctx = localctx;
this.state = 376;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,14,this._ctx);
switch(la_) {
case 1:
localctx = new AdditiveExpressionContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CParser.RULE_additiveExpression);
this.state = 370;
if (!( this.precpred(this._ctx, 2))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 2)");
}
this.state = 371;
this.match(CParser.Plus);
this.state = 372;
this.multiplicativeExpression(0);
break;
case 2:
localctx = new AdditiveExpressionContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CParser.RULE_additiveExpression);
this.state = 373;
if (!( this.precpred(this._ctx, 1))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
}
this.state = 374;
this.match(CParser.Minus);
this.state = 375;
this.multiplicativeExpression(0);
break;
}
}
this.state = 380;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,15,this._ctx);
}
} catch( error) {
if(error instanceof antlr4.error.RecognitionException) {
localctx.exception = error;
this._errHandler.reportError(this, error);
this._errHandler.recover(this, error);
} else {
throw error;
}
} finally {
this.unrollRecursionContexts(_parentctx)
}
return localctx;
};
function ShiftExpressionContext(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 = CParser.RULE_shiftExpression;
return this;
}
ShiftExpressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
ShiftExpressionContext.prototype.constructor = ShiftExpressionContext;
ShiftExpressionContext.prototype.additiveExpression = function() {
return this.getTypedRuleContext(AdditiveExpressionContext,0);
};
ShiftExpressionContext.prototype.shiftExpression = function() {
return this.getTypedRuleContext(ShiftExpressionContext,0);
};
ShiftExpressionContext.prototype.LeftShift = function() {
return this.getToken(CParser.LeftShift, 0);
};
ShiftExpressionContext.prototype.RightShift = function() {
return this.getToken(CParser.RightShift, 0);
};
ShiftExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterShiftExpression(this);
}
};
ShiftExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitShiftExpression(this);
}
};
CParser.prototype.shiftExpression = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new ShiftExpressionContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 22;
this.enterRecursionRule(localctx, 22, CParser.RULE_shiftExpression, _p);
try {
this.enterOuterAlt(localctx, 1);
this.state = 382;
this.additiveExpression(0);
this._ctx.stop = this._input.LT(-1);
this.state = 392;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,17,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
if(this._parseListeners!==null) {
this.triggerExitRuleEvent();
}
_prevctx = localctx;
this.state = 390;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,16,this._ctx);
switch(la_) {
case 1:
localctx = new ShiftExpressionContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CParser.RULE_shiftExpression);
this.state = 384;
if (!( this.precpred(this._ctx, 2))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 2)");
}
this.state = 385;
this.match(CParser.LeftShift);
this.state = 386;
this.additiveExpression(0);
break;
case 2:
localctx = new ShiftExpressionContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CParser.RULE_shiftExpression);
this.state = 387;
if (!( this.precpred(this._ctx, 1))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
}
this.state = 388;
this.match(CParser.RightShift);
this.state = 389;
this.additiveExpression(0);
break;
}
}
this.state = 394;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,17,this._ctx);
}
} catch( error) {
if(error instanceof antlr4.error.RecognitionException) {
localctx.exception = error;
this._errHandler.reportError(this, error);
this._errHandler.recover(this, error);
} else {
throw error;
}
} finally {
this.unrollRecursionContexts(_parentctx)
}
return localctx;
};
function RelationalExpressionContext(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 = CParser.RULE_relationalExpression;
return this;
}
RelationalExpressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
RelationalExpressionContext.prototype.constructor = RelationalExpressionContext;
RelationalExpressionContext.prototype.shiftExpression = function() {
return this.getTypedRuleContext(ShiftExpressionContext,0);
};
RelationalExpressionContext.prototype.relationalExpression = function() {
return this.getTypedRuleContext(RelationalExpressionContext,0);
};
RelationalExpressionContext.prototype.Less = function() {
return this.getToken(CParser.Less, 0);
};
RelationalExpressionContext.prototype.Greater = function() {
return this.getToken(CParser.Greater, 0);
};
RelationalExpressionContext.prototype.LessEqual = function() {
return this.getToken(CParser.LessEqual, 0);
};
RelationalExpressionContext.prototype.GreaterEqual = function() {
return this.getToken(CParser.GreaterEqual, 0);
};
RelationalExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterRelationalExpression(this);
}
};
RelationalExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitRelationalExpression(this);
}
};
CParser.prototype.relationalExpression = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new RelationalExpressionContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 24;
this.enterRecursionRule(localctx, 24, CParser.RULE_relationalExpression, _p);
try {
this.enterOuterAlt(localctx, 1);
this.state = 396;
this.shiftExpression(0);
this._ctx.stop = this._input.LT(-1);
this.state = 412;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,19,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
if(this._parseListeners!==null) {
this.triggerExitRuleEvent();
}
_prevctx = localctx;
this.state = 410;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,18,this._ctx);
switch(la_) {
case 1:
localctx = new RelationalExpressionContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CParser.RULE_relationalExpression);
this.state = 398;
if (!( this.precpred(this._ctx, 4))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 4)");
}
this.state = 399;
this.match(CParser.Less);
this.state = 400;
this.shiftExpression(0);
break;
case 2:
localctx = new RelationalExpressionContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CParser.RULE_relationalExpression);
this.state = 401;
if (!( this.precpred(this._ctx, 3))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 3)");
}
this.state = 402;
this.match(CParser.Greater);
this.state = 403;
this.shiftExpression(0);
break;
case 3:
localctx = new RelationalExpressionContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CParser.RULE_relationalExpression);
this.state = 404;
if (!( this.precpred(this._ctx, 2))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 2)");
}
this.state = 405;
this.match(CParser.LessEqual);
this.state = 406;
this.shiftExpression(0);
break;
case 4:
localctx = new RelationalExpressionContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CParser.RULE_relationalExpression);
this.state = 407;
if (!( this.precpred(this._ctx, 1))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
}
this.state = 408;
this.match(CParser.GreaterEqual);
this.state = 409;
this.shiftExpression(0);
break;
}
}
this.state = 414;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,19,this._ctx);
}
} catch( error) {
if(error instanceof antlr4.error.RecognitionException) {
localctx.exception = error;
this._errHandler.reportError(this, error);
this._errHandler.recover(this, error);
} else {
throw error;
}
} finally {
this.unrollRecursionContexts(_parentctx)
}
return localctx;
};
function EqualityExpressionContext(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 = CParser.RULE_equalityExpression;
return this;
}
EqualityExpressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
EqualityExpressionContext.prototype.constructor = EqualityExpressionContext;
EqualityExpressionContext.prototype.relationalExpression = function() {
return this.getTypedRuleContext(RelationalExpressionContext,0);
};
EqualityExpressionContext.prototype.equalityExpression = function() {
return this.getTypedRuleContext(EqualityExpressionContext,0);
};
EqualityExpressionContext.prototype.Equal = function() {
return this.getToken(CParser.Equal, 0);
};
EqualityExpressionContext.prototype.NotEqual = function() {
return this.getToken(CParser.NotEqual, 0);
};
EqualityExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterEqualityExpression(this);
}
};
EqualityExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitEqualityExpression(this);
}
};
CParser.prototype.equalityExpression = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new EqualityExpressionContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 26;
this.enterRecursionRule(localctx, 26, CParser.RULE_equalityExpression, _p);
try {
this.enterOuterAlt(localctx, 1);
this.state = 416;
this.relationalExpression(0);
this._ctx.stop = this._input.LT(-1);
this.state = 426;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,21,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
if(this._parseListeners!==null) {
this.triggerExitRuleEvent();
}
_prevctx = localctx;
this.state = 424;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,20,this._ctx);
switch(la_) {
case 1:
localctx = new EqualityExpressionContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CParser.RULE_equalityExpression);
this.state = 418;
if (!( this.precpred(this._ctx, 2))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 2)");
}
this.state = 419;
this.match(CParser.Equal);
this.state = 420;
this.relationalExpression(0);
break;
case 2:
localctx = new EqualityExpressionContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CParser.RULE_equalityExpression);
this.state = 421;
if (!( this.precpred(this._ctx, 1))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
}
this.state = 422;
this.match(CParser.NotEqual);
this.state = 423;
this.relationalExpression(0);
break;
}
}
this.state = 428;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,21,this._ctx);
}
} catch( error) {
if(error instanceof antlr4.error.RecognitionException) {
localctx.exception = error;
this._errHandler.reportError(this, error);
this._errHandler.recover(this, error);
} else {
throw error;
}
} finally {
this.unrollRecursionContexts(_parentctx)
}
return localctx;
};
function AndExpressionContext(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 = CParser.RULE_andExpression;
return this;
}
AndExpressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
AndExpressionContext.prototype.constructor = AndExpressionContext;
AndExpressionContext.prototype.equalityExpression = function() {
return this.getTypedRuleContext(EqualityExpressionContext,0);
};
AndExpressionContext.prototype.andExpression = function() {
return this.getTypedRuleContext(AndExpressionContext,0);
};
AndExpressionContext.prototype.And = function() {
return this.getToken(CParser.And, 0);
};
AndExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterAndExpression(this);
}
};
AndExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitAndExpression(this);
}
};
CParser.prototype.andExpression = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new AndExpressionContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 28;
this.enterRecursionRule(localctx, 28, CParser.RULE_andExpression, _p);
try {
this.enterOuterAlt(localctx, 1);
this.state = 430;
this.equalityExpression(0);
this._ctx.stop = this._input.LT(-1);
this.state = 437;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,22,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
if(this._parseListeners!==null) {
this.triggerExitRuleEvent();
}
_prevctx = localctx;
localctx = new AndExpressionContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CParser.RULE_andExpression);
this.state = 432;
if (!( this.precpred(this._ctx, 1))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
}
this.state = 433;
this.match(CParser.And);
this.state = 434;
this.equalityExpression(0);
}
this.state = 439;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,22,this._ctx);
}
} catch( error) {
if(error instanceof antlr4.error.RecognitionException) {
localctx.exception = error;
this._errHandler.reportError(this, error);
this._errHandler.recover(this, error);
} else {
throw error;
}
} finally {
this.unrollRecursionContexts(_parentctx)
}
return localctx;
};
function ExclusiveOrExpressionContext(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 = CParser.RULE_exclusiveOrExpression;
return this;
}
ExclusiveOrExpressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
ExclusiveOrExpressionContext.prototype.constructor = ExclusiveOrExpressionContext;
ExclusiveOrExpressionContext.prototype.andExpression = function() {
return this.getTypedRuleContext(AndExpressionContext,0);
};
ExclusiveOrExpressionContext.prototype.exclusiveOrExpression = function() {
return this.getTypedRuleContext(ExclusiveOrExpressionContext,0);
};
ExclusiveOrExpressionContext.prototype.Caret = function() {
return this.getToken(CParser.Caret, 0);
};
ExclusiveOrExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterExclusiveOrExpression(this);
}
};
ExclusiveOrExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitExclusiveOrExpression(this);
}
};
CParser.prototype.exclusiveOrExpression = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new ExclusiveOrExpressionContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 30;
this.enterRecursionRule(localctx, 30, CParser.RULE_exclusiveOrExpression, _p);
try {
this.enterOuterAlt(localctx, 1);
this.state = 441;
this.andExpression(0);
this._ctx.stop = this._input.LT(-1);
this.state = 448;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,23,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
if(this._parseListeners!==null) {
this.triggerExitRuleEvent();
}
_prevctx = localctx;
localctx = new ExclusiveOrExpressionContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CParser.RULE_exclusiveOrExpression);
this.state = 443;
if (!( this.precpred(this._ctx, 1))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
}
this.state = 444;
this.match(CParser.Caret);
this.state = 445;
this.andExpression(0);
}
this.state = 450;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,23,this._ctx);
}
} catch( error) {
if(error instanceof antlr4.error.RecognitionException) {
localctx.exception = error;
this._errHandler.reportError(this, error);
this._errHandler.recover(this, error);
} else {
throw error;
}
} finally {
this.unrollRecursionContexts(_parentctx)
}
return localctx;
};
function InclusiveOrExpressionContext(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 = CParser.RULE_inclusiveOrExpression;
return this;
}
InclusiveOrExpressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
InclusiveOrExpressionContext.prototype.constructor = InclusiveOrExpressionContext;
InclusiveOrExpressionContext.prototype.exclusiveOrExpression = function() {
return this.getTypedRuleContext(ExclusiveOrExpressionContext,0);
};
InclusiveOrExpressionContext.prototype.inclusiveOrExpression = function() {
return this.getTypedRuleContext(InclusiveOrExpressionContext,0);
};
InclusiveOrExpressionContext.prototype.Or = function() {
return this.getToken(CParser.Or, 0);
};
InclusiveOrExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterInclusiveOrExpression(this);
}
};
InclusiveOrExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitInclusiveOrExpression(this);
}
};
CParser.prototype.inclusiveOrExpression = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new InclusiveOrExpressionContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 32;
this.enterRecursionRule(localctx, 32, CParser.RULE_inclusiveOrExpression, _p);
try {
this.enterOuterAlt(localctx, 1);
this.state = 452;
this.exclusiveOrExpression(0);
this._ctx.stop = this._input.LT(-1);
this.state = 459;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,24,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
if(this._parseListeners!==null) {
this.triggerExitRuleEvent();
}
_prevctx = localctx;
localctx = new InclusiveOrExpressionContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CParser.RULE_inclusiveOrExpression);
this.state = 454;
if (!( this.precpred(this._ctx, 1))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
}
this.state = 455;
this.match(CParser.Or);
this.state = 456;
this.exclusiveOrExpression(0);
}
this.state = 461;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,24,this._ctx);
}
} catch( error) {
if(error instanceof antlr4.error.RecognitionException) {
localctx.exception = error;
this._errHandler.reportError(this, error);
this._errHandler.recover(this, error);
} else {
throw error;
}
} finally {
this.unrollRecursionContexts(_parentctx)
}
return localctx;
};
function LogicalAndExpressionContext(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 = CParser.RULE_logicalAndExpression;
return this;
}
LogicalAndExpressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
LogicalAndExpressionContext.prototype.constructor = LogicalAndExpressionContext;
LogicalAndExpressionContext.prototype.inclusiveOrExpression = function() {
return this.getTypedRuleContext(InclusiveOrExpressionContext,0);
};
LogicalAndExpressionContext.prototype.logicalAndExpression = function() {
return this.getTypedRuleContext(LogicalAndExpressionContext,0);
};
LogicalAndExpressionContext.prototype.AndAnd = function() {
return this.getToken(CParser.AndAnd, 0);
};
LogicalAndExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterLogicalAndExpression(this);
}
};
LogicalAndExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitLogicalAndExpression(this);
}
};
CParser.prototype.logicalAndExpression = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new LogicalAndExpressionContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 34;
this.enterRecursionRule(localctx, 34, CParser.RULE_logicalAndExpression, _p);
try {
this.enterOuterAlt(localctx, 1);
this.state = 463;
this.inclusiveOrExpression(0);
this._ctx.stop = this._input.LT(-1);
this.state = 470;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,25,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
if(this._parseListeners!==null) {
this.triggerExitRuleEvent();
}
_prevctx = localctx;
localctx = new LogicalAndExpressionContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CParser.RULE_logicalAndExpression);
this.state = 465;
if (!( this.precpred(this._ctx, 1))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
}
this.state = 466;
this.match(CParser.AndAnd);
this.state = 467;
this.inclusiveOrExpression(0);
}
this.state = 472;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,25,this._ctx);
}
} catch( error) {
if(error instanceof antlr4.error.RecognitionException) {
localctx.exception = error;
this._errHandler.reportError(this, error);
this._errHandler.recover(this, error);
} else {
throw error;
}
} finally {
this.unrollRecursionContexts(_parentctx)
}
return localctx;
};
function LogicalOrExpressionContext(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 = CParser.RULE_logicalOrExpression;
return this;
}
LogicalOrExpressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
LogicalOrExpressionContext.prototype.constructor = LogicalOrExpressionContext;
LogicalOrExpressionContext.prototype.logicalAndExpression = function() {
return this.getTypedRuleContext(LogicalAndExpressionContext,0);
};
LogicalOrExpressionContext.prototype.logicalOrExpression = function() {
return this.getTypedRuleContext(LogicalOrExpressionContext,0);
};
LogicalOrExpressionContext.prototype.OrOr = function() {
return this.getToken(CParser.OrOr, 0);
};
LogicalOrExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterLogicalOrExpression(this);
}
};
LogicalOrExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitLogicalOrExpression(this);
}
};
CParser.prototype.logicalOrExpression = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new LogicalOrExpressionContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 36;
this.enterRecursionRule(localctx, 36, CParser.RULE_logicalOrExpression, _p);
try {
this.enterOuterAlt(localctx, 1);
this.state = 474;
this.logicalAndExpression(0);
this._ctx.stop = this._input.LT(-1);
this.state = 481;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,26,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
if(this._parseListeners!==null) {
this.triggerExitRuleEvent();
}
_prevctx = localctx;
localctx = new LogicalOrExpressionContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CParser.RULE_logicalOrExpression);
this.state = 476;
if (!( this.precpred(this._ctx, 1))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
}
this.state = 477;
this.match(CParser.OrOr);
this.state = 478;
this.logicalAndExpression(0);
}
this.state = 483;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,26,this._ctx);
}
} catch( error) {
if(error instanceof antlr4.error.RecognitionException) {
localctx.exception = error;
this._errHandler.reportError(this, error);
this._errHandler.recover(this, error);
} else {
throw error;
}
} finally {
this.unrollRecursionContexts(_parentctx)
}
return localctx;
};
function ConditionalExpressionContext(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 = CParser.RULE_conditionalExpression;
return this;
}
ConditionalExpressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
ConditionalExpressionContext.prototype.constructor = ConditionalExpressionContext;
ConditionalExpressionContext.prototype.logicalOrExpression = function() {
return this.getTypedRuleContext(LogicalOrExpressionContext,0);
};
ConditionalExpressionContext.prototype.Question = function() {
return this.getToken(CParser.Question, 0);
};
ConditionalExpressionContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
ConditionalExpressionContext.prototype.Colon = function() {
return this.getToken(CParser.Colon, 0);
};
ConditionalExpressionContext.prototype.conditionalExpression = function() {
return this.getTypedRuleContext(ConditionalExpressionContext,0);
};
ConditionalExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterConditionalExpression(this);
}
};
ConditionalExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitConditionalExpression(this);
}
};
CParser.ConditionalExpressionContext = ConditionalExpressionContext;
CParser.prototype.conditionalExpression = function() {
var localctx = new ConditionalExpressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 38, CParser.RULE_conditionalExpression);
try {
this.enterOuterAlt(localctx, 1);
this.state = 484;
this.logicalOrExpression(0);
this.state = 490;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,27,this._ctx);
if(la_===1) {
this.state = 485;
this.match(CParser.Question);
this.state = 486;
this.expression(0);
this.state = 487;
this.match(CParser.Colon);
this.state = 488;
this.conditionalExpression();
}
} 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 AssignmentExpressionContext(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 = CParser.RULE_assignmentExpression;
return this;
}
AssignmentExpressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
AssignmentExpressionContext.prototype.constructor = AssignmentExpressionContext;
AssignmentExpressionContext.prototype.conditionalExpression = function() {
return this.getTypedRuleContext(ConditionalExpressionContext,0);
};
AssignmentExpressionContext.prototype.unaryExpression = function() {
return this.getTypedRuleContext(UnaryExpressionContext,0);
};
AssignmentExpressionContext.prototype.assignmentOperator = function() {
return this.getTypedRuleContext(AssignmentOperatorContext,0);
};
AssignmentExpressionContext.prototype.assignmentExpression = function() {
return this.getTypedRuleContext(AssignmentExpressionContext,0);
};
AssignmentExpressionContext.prototype.DigitSequence = function() {
return this.getToken(CParser.DigitSequence, 0);
};
AssignmentExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterAssignmentExpression(this);
}
};
AssignmentExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitAssignmentExpression(this);
}
};
CParser.AssignmentExpressionContext = AssignmentExpressionContext;
CParser.prototype.assignmentExpression = function() {
var localctx = new AssignmentExpressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 40, CParser.RULE_assignmentExpression);
try {
this.state = 498;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,28,this._ctx);
switch(la_) {
case 1:
this.enterOuterAlt(localctx, 1);
this.state = 492;
this.conditionalExpression();
break;
case 2:
this.enterOuterAlt(localctx, 2);
this.state = 493;
this.unaryExpression();
this.state = 494;
this.assignmentOperator();
this.state = 495;
this.assignmentExpression();
break;
case 3:
this.enterOuterAlt(localctx, 3);
this.state = 497;
this.match(CParser.DigitSequence);
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 AssignmentOperatorContext(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 = CParser.RULE_assignmentOperator;
return this;
}
AssignmentOperatorContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
AssignmentOperatorContext.prototype.constructor = AssignmentOperatorContext;
AssignmentOperatorContext.prototype.Assign = function() {
return this.getToken(CParser.Assign, 0);
};
AssignmentOperatorContext.prototype.StarAssign = function() {
return this.getToken(CParser.StarAssign, 0);
};
AssignmentOperatorContext.prototype.DivAssign = function() {
return this.getToken(CParser.DivAssign, 0);
};
AssignmentOperatorContext.prototype.ModAssign = function() {
return this.getToken(CParser.ModAssign, 0);
};
AssignmentOperatorContext.prototype.PlusAssign = function() {
return this.getToken(CParser.PlusAssign, 0);
};
AssignmentOperatorContext.prototype.MinusAssign = function() {
return this.getToken(CParser.MinusAssign, 0);
};
AssignmentOperatorContext.prototype.LeftShiftAssign = function() {
return this.getToken(CParser.LeftShiftAssign, 0);
};
AssignmentOperatorContext.prototype.RightShiftAssign = function() {
return this.getToken(CParser.RightShiftAssign, 0);
};
AssignmentOperatorContext.prototype.AndAssign = function() {
return this.getToken(CParser.AndAssign, 0);
};
AssignmentOperatorContext.prototype.XorAssign = function() {
return this.getToken(CParser.XorAssign, 0);
};
AssignmentOperatorContext.prototype.OrAssign = function() {
return this.getToken(CParser.OrAssign, 0);
};
AssignmentOperatorContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterAssignmentOperator(this);
}
};
AssignmentOperatorContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitAssignmentOperator(this);
}
};
CParser.AssignmentOperatorContext = AssignmentOperatorContext;
CParser.prototype.assignmentOperator = function() {
var localctx = new AssignmentOperatorContext(this, this._ctx, this.state);
this.enterRule(localctx, 42, CParser.RULE_assignmentOperator);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 500;
_la = this._input.LA(1);
if(!(((((_la - 89)) & ~0x1f) == 0 && ((1 << (_la - 89)) & ((1 << (CParser.Assign - 89)) | (1 << (CParser.StarAssign - 89)) | (1 << (CParser.DivAssign - 89)) | (1 << (CParser.ModAssign - 89)) | (1 << (CParser.PlusAssign - 89)) | (1 << (CParser.MinusAssign - 89)) | (1 << (CParser.LeftShiftAssign - 89)) | (1 << (CParser.RightShiftAssign - 89)) | (1 << (CParser.AndAssign - 89)) | (1 << (CParser.XorAssign - 89)) | (1 << (CParser.OrAssign - 89)))) !== 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 ExpressionContext(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 = CParser.RULE_expression;
return this;
}
ExpressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
ExpressionContext.prototype.constructor = ExpressionContext;
ExpressionContext.prototype.assignmentExpression = function() {
return this.getTypedRuleContext(AssignmentExpressionContext,0);
};
ExpressionContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
ExpressionContext.prototype.Comma = function() {
return this.getToken(CParser.Comma, 0);
};
ExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterExpression(this);
}
};
ExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitExpression(this);
}
};
CParser.prototype.expression = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new ExpressionContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 44;
this.enterRecursionRule(localctx, 44, CParser.RULE_expression, _p);
try {
this.enterOuterAlt(localctx, 1);
this.state = 503;
this.assignmentExpression();
this._ctx.stop = this._input.LT(-1);
this.state = 510;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,29,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
if(this._parseListeners!==null) {
this.triggerExitRuleEvent();
}
_prevctx = localctx;
localctx = new ExpressionContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CParser.RULE_expression);
this.state = 505;
if (!( this.precpred(this._ctx, 1))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
}
this.state = 506;
this.match(CParser.Comma);
this.state = 507;
this.assignmentExpression();
}
this.state = 512;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,29,this._ctx);
}
} catch( error) {
if(error instanceof antlr4.error.RecognitionException) {
localctx.exception = error;
this._errHandler.reportError(this, error);
this._errHandler.recover(this, error);
} else {
throw error;
}
} finally {
this.unrollRecursionContexts(_parentctx)
}
return localctx;
};
function ConstantExpressionContext(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 = CParser.RULE_constantExpression;
return this;
}
ConstantExpressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
ConstantExpressionContext.prototype.constructor = ConstantExpressionContext;
ConstantExpressionContext.prototype.conditionalExpression = function() {
return this.getTypedRuleContext(ConditionalExpressionContext,0);
};
ConstantExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterConstantExpression(this);
}
};
ConstantExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitConstantExpression(this);
}
};
CParser.ConstantExpressionContext = ConstantExpressionContext;
CParser.prototype.constantExpression = function() {
var localctx = new ConstantExpressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 46, CParser.RULE_constantExpression);
try {
this.enterOuterAlt(localctx, 1);
this.state = 513;
this.conditionalExpression();
} 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 DeclarationContext(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 = CParser.RULE_declaration;
return this;
}
DeclarationContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
DeclarationContext.prototype.constructor = DeclarationContext;
DeclarationContext.prototype.declarationSpecifiers = function() {
return this.getTypedRuleContext(DeclarationSpecifiersContext,0);
};
DeclarationContext.prototype.initDeclaratorList = function() {
return this.getTypedRuleContext(InitDeclaratorListContext,0);
};
DeclarationContext.prototype.Semi = function() {
return this.getToken(CParser.Semi, 0);
};
DeclarationContext.prototype.staticAssertDeclaration = function() {
return this.getTypedRuleContext(StaticAssertDeclarationContext,0);
};
DeclarationContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterDeclaration(this);
}
};
DeclarationContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitDeclaration(this);
}
};
CParser.DeclarationContext = DeclarationContext;
CParser.prototype.declaration = function() {
var localctx = new DeclarationContext(this, this._ctx, this.state);
this.enterRule(localctx, 48, CParser.RULE_declaration);
try {
this.state = 523;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,30,this._ctx);
switch(la_) {
case 1:
this.enterOuterAlt(localctx, 1);
this.state = 515;
this.declarationSpecifiers();
this.state = 516;
this.initDeclaratorList(0);
this.state = 517;
this.match(CParser.Semi);
break;
case 2:
this.enterOuterAlt(localctx, 2);
this.state = 519;
this.declarationSpecifiers();
this.state = 520;
this.match(CParser.Semi);
break;
case 3:
this.enterOuterAlt(localctx, 3);
this.state = 522;
this.staticAssertDeclaration();
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 DeclarationSpecifiersContext(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 = CParser.RULE_declarationSpecifiers;
return this;
}
DeclarationSpecifiersContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
DeclarationSpecifiersContext.prototype.constructor = DeclarationSpecifiersContext;
DeclarationSpecifiersContext.prototype.declarationSpecifier = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(DeclarationSpecifierContext);
} else {
return this.getTypedRuleContext(DeclarationSpecifierContext,i);
}
};
DeclarationSpecifiersContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterDeclarationSpecifiers(this);
}
};
DeclarationSpecifiersContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitDeclarationSpecifiers(this);
}
};
CParser.DeclarationSpecifiersContext = DeclarationSpecifiersContext;
CParser.prototype.declarationSpecifiers = function() {
var localctx = new DeclarationSpecifiersContext(this, this._ctx, this.state);
this.enterRule(localctx, 50, CParser.RULE_declarationSpecifiers);
try {
this.enterOuterAlt(localctx, 1);
this.state = 526;
this._errHandler.sync(this);
var _alt = 1;
do {
switch (_alt) {
case 1:
this.state = 525;
this.declarationSpecifier();
break;
default:
throw new antlr4.error.NoViableAltException(this);
}
this.state = 528;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,31, this._ctx);
} while ( _alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER );
} 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 DeclarationSpecifiers2Context(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 = CParser.RULE_declarationSpecifiers2;
return this;
}
DeclarationSpecifiers2Context.prototype = Object.create(antlr4.ParserRuleContext.prototype);
DeclarationSpecifiers2Context.prototype.constructor = DeclarationSpecifiers2Context;
DeclarationSpecifiers2Context.prototype.declarationSpecifier = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(DeclarationSpecifierContext);
} else {
return this.getTypedRuleContext(DeclarationSpecifierContext,i);
}
};
DeclarationSpecifiers2Context.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterDeclarationSpecifiers2(this);
}
};
DeclarationSpecifiers2Context.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitDeclarationSpecifiers2(this);
}
};
CParser.DeclarationSpecifiers2Context = DeclarationSpecifiers2Context;
CParser.prototype.declarationSpecifiers2 = function() {
var localctx = new DeclarationSpecifiers2Context(this, this._ctx, this.state);
this.enterRule(localctx, 52, CParser.RULE_declarationSpecifiers2);
try {
this.enterOuterAlt(localctx, 1);
this.state = 531;
this._errHandler.sync(this);
var _alt = 1;
do {
switch (_alt) {
case 1:
this.state = 530;
this.declarationSpecifier();
break;
default:
throw new antlr4.error.NoViableAltException(this);
}
this.state = 533;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,32, this._ctx);
} while ( _alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER );
} 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 DeclarationSpecifierContext(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 = CParser.RULE_declarationSpecifier;
return this;
}
DeclarationSpecifierContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
DeclarationSpecifierContext.prototype.constructor = DeclarationSpecifierContext;
DeclarationSpecifierContext.prototype.storageClassSpecifier = function() {
return this.getTypedRuleContext(StorageClassSpecifierContext,0);
};
DeclarationSpecifierContext.prototype.typeSpecifier = function() {
return this.getTypedRuleContext(TypeSpecifierContext,0);
};
DeclarationSpecifierContext.prototype.typeQualifier = function() {
return this.getTypedRuleContext(TypeQualifierContext,0);
};
DeclarationSpecifierContext.prototype.functionSpecifier = function() {
return this.getTypedRuleContext(FunctionSpecifierContext,0);
};
DeclarationSpecifierContext.prototype.alignmentSpecifier = function() {
return this.getTypedRuleContext(AlignmentSpecifierContext,0);
};
DeclarationSpecifierContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterDeclarationSpecifier(this);
}
};
DeclarationSpecifierContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitDeclarationSpecifier(this);
}
};
CParser.DeclarationSpecifierContext = DeclarationSpecifierContext;
CParser.prototype.declarationSpecifier = function() {
var localctx = new DeclarationSpecifierContext(this, this._ctx, this.state);
this.enterRule(localctx, 54, CParser.RULE_declarationSpecifier);
try {
this.state = 540;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,33,this._ctx);
switch(la_) {
case 1:
this.enterOuterAlt(localctx, 1);
this.state = 535;
this.storageClassSpecifier();
break;
case 2:
this.enterOuterAlt(localctx, 2);
this.state = 536;
this.typeSpecifier(0);
break;
case 3:
this.enterOuterAlt(localctx, 3);
this.state = 537;
this.typeQualifier();
break;
case 4:
this.enterOuterAlt(localctx, 4);
this.state = 538;
this.functionSpecifier();
break;
case 5:
this.enterOuterAlt(localctx, 5);
this.state = 539;
this.alignmentSpecifier();
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 InitDeclaratorListContext(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 = CParser.RULE_initDeclaratorList;
return this;
}
InitDeclaratorListContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
InitDeclaratorListContext.prototype.constructor = InitDeclaratorListContext;
InitDeclaratorListContext.prototype.initDeclarator = function() {
return this.getTypedRuleContext(InitDeclaratorContext,0);
};
InitDeclaratorListContext.prototype.initDeclaratorList = function() {
return this.getTypedRuleContext(InitDeclaratorListContext,0);
};
InitDeclaratorListContext.prototype.Comma = function() {
return this.getToken(CParser.Comma, 0);
};
InitDeclaratorListContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterInitDeclaratorList(this);
}
};
InitDeclaratorListContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitInitDeclaratorList(this);
}
};
CParser.prototype.initDeclaratorList = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new InitDeclaratorListContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 56;
this.enterRecursionRule(localctx, 56, CParser.RULE_initDeclaratorList, _p);
try {
this.enterOuterAlt(localctx, 1);
this.state = 543;
this.initDeclarator();
this._ctx.stop = this._input.LT(-1);
this.state = 550;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,34,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
if(this._parseListeners!==null) {
this.triggerExitRuleEvent();
}
_prevctx = localctx;
localctx = new InitDeclaratorListContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CParser.RULE_initDeclaratorList);
this.state = 545;
if (!( this.precpred(this._ctx, 1))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
}
this.state = 546;
this.match(CParser.Comma);
this.state = 547;
this.initDeclarator();
}
this.state = 552;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,34,this._ctx);
}
} catch( error) {
if(error instanceof antlr4.error.RecognitionException) {
localctx.exception = error;
this._errHandler.reportError(this, error);
this._errHandler.recover(this, error);
} else {
throw error;
}
} finally {
this.unrollRecursionContexts(_parentctx)
}
return localctx;
};
function InitDeclaratorContext(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 = CParser.RULE_initDeclarator;
return this;
}
InitDeclaratorContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
InitDeclaratorContext.prototype.constructor = InitDeclaratorContext;
InitDeclaratorContext.prototype.declarator = function() {
return this.getTypedRuleContext(DeclaratorContext,0);
};
InitDeclaratorContext.prototype.Assign = function() {
return this.getToken(CParser.Assign, 0);
};
InitDeclaratorContext.prototype.initializer = function() {
return this.getTypedRuleContext(InitializerContext,0);
};
InitDeclaratorContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterInitDeclarator(this);
}
};
InitDeclaratorContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitInitDeclarator(this);
}
};
CParser.InitDeclaratorContext = InitDeclaratorContext;
CParser.prototype.initDeclarator = function() {
var localctx = new InitDeclaratorContext(this, this._ctx, this.state);
this.enterRule(localctx, 58, CParser.RULE_initDeclarator);
try {
this.state = 558;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,35,this._ctx);
switch(la_) {
case 1:
this.enterOuterAlt(localctx, 1);
this.state = 553;
this.declarator();
break;
case 2:
this.enterOuterAlt(localctx, 2);
this.state = 554;
this.declarator();
this.state = 555;
this.match(CParser.Assign);
this.state = 556;
this.initializer();
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 StorageClassSpecifierContext(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 = CParser.RULE_storageClassSpecifier;
return this;
}
StorageClassSpecifierContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
StorageClassSpecifierContext.prototype.constructor = StorageClassSpecifierContext;
StorageClassSpecifierContext.prototype.Typedef = function() {
return this.getToken(CParser.Typedef, 0);
};
StorageClassSpecifierContext.prototype.Extern = function() {
return this.getToken(CParser.Extern, 0);
};
StorageClassSpecifierContext.prototype.Static = function() {
return this.getToken(CParser.Static, 0);
};
StorageClassSpecifierContext.prototype.ThreadLocal = function() {
return this.getToken(CParser.ThreadLocal, 0);
};
StorageClassSpecifierContext.prototype.Auto = function() {
return this.getToken(CParser.Auto, 0);
};
StorageClassSpecifierContext.prototype.Register = function() {
return this.getToken(CParser.Register, 0);
};
StorageClassSpecifierContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterStorageClassSpecifier(this);
}
};
StorageClassSpecifierContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitStorageClassSpecifier(this);
}
};
CParser.StorageClassSpecifierContext = StorageClassSpecifierContext;
CParser.prototype.storageClassSpecifier = function() {
var localctx = new StorageClassSpecifierContext(this, this._ctx, this.state);
this.enterRule(localctx, 60, CParser.RULE_storageClassSpecifier);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 560;
_la = this._input.LA(1);
if(!(_la===CParser.Auto || _la===CParser.Extern || ((((_la - 34)) & ~0x1f) == 0 && ((1 << (_la - 34)) & ((1 << (CParser.Register - 34)) | (1 << (CParser.Static - 34)) | (1 << (CParser.Typedef - 34)) | (1 << (CParser.ThreadLocal - 34)))) !== 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 TypeSpecifierContext(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 = CParser.RULE_typeSpecifier;
return this;
}
TypeSpecifierContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
TypeSpecifierContext.prototype.constructor = TypeSpecifierContext;
TypeSpecifierContext.prototype.Void = function() {
return this.getToken(CParser.Void, 0);
};
TypeSpecifierContext.prototype.Char = function() {
return this.getToken(CParser.Char, 0);
};
TypeSpecifierContext.prototype.Short = function() {
return this.getToken(CParser.Short, 0);
};
TypeSpecifierContext.prototype.Int = function() {
return this.getToken(CParser.Int, 0);
};
TypeSpecifierContext.prototype.Long = function() {
return this.getToken(CParser.Long, 0);
};
TypeSpecifierContext.prototype.Float = function() {
return this.getToken(CParser.Float, 0);
};
TypeSpecifierContext.prototype.Double = function() {
return this.getToken(CParser.Double, 0);
};
TypeSpecifierContext.prototype.Signed = function() {
return this.getToken(CParser.Signed, 0);
};
TypeSpecifierContext.prototype.Unsigned = function() {
return this.getToken(CParser.Unsigned, 0);
};
TypeSpecifierContext.prototype.Bool = function() {
return this.getToken(CParser.Bool, 0);
};
TypeSpecifierContext.prototype.Complex = function() {
return this.getToken(CParser.Complex, 0);
};
TypeSpecifierContext.prototype.LeftParen = function() {
return this.getToken(CParser.LeftParen, 0);
};
TypeSpecifierContext.prototype.RightParen = function() {
return this.getToken(CParser.RightParen, 0);
};
TypeSpecifierContext.prototype.atomicTypeSpecifier = function() {
return this.getTypedRuleContext(AtomicTypeSpecifierContext,0);
};
TypeSpecifierContext.prototype.structOrUnionSpecifier = function() {
return this.getTypedRuleContext(StructOrUnionSpecifierContext,0);
};
TypeSpecifierContext.prototype.enumSpecifier = function() {
return this.getTypedRuleContext(EnumSpecifierContext,0);
};
TypeSpecifierContext.prototype.typedefName = function() {
return this.getTypedRuleContext(TypedefNameContext,0);
};
TypeSpecifierContext.prototype.constantExpression = function() {
return this.getTypedRuleContext(ConstantExpressionContext,0);
};
TypeSpecifierContext.prototype.typeSpecifier = function() {
return this.getTypedRuleContext(TypeSpecifierContext,0);
};
TypeSpecifierContext.prototype.pointer = function() {
return this.getTypedRuleContext(PointerContext,0);
};
TypeSpecifierContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterTypeSpecifier(this);
}
};
TypeSpecifierContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitTypeSpecifier(this);
}
};
CParser.prototype.typeSpecifier = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new TypeSpecifierContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 62;
this.enterRecursionRule(localctx, 62, CParser.RULE_typeSpecifier, _p);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 577;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case CParser.T__3:
case CParser.T__4:
case CParser.T__5:
case CParser.Char:
case CParser.Double:
case CParser.Float:
case CParser.Int:
case CParser.Long:
case CParser.Short:
case CParser.Signed:
case CParser.Unsigned:
case CParser.Void:
case CParser.Bool:
case CParser.Complex:
this.state = 563;
_la = this._input.LA(1);
if(!((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << CParser.T__3) | (1 << CParser.T__4) | (1 << CParser.T__5) | (1 << CParser.Char) | (1 << CParser.Double) | (1 << CParser.Float))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (CParser.Int - 32)) | (1 << (CParser.Long - 32)) | (1 << (CParser.Short - 32)) | (1 << (CParser.Signed - 32)) | (1 << (CParser.Unsigned - 32)) | (1 << (CParser.Void - 32)) | (1 << (CParser.Bool - 32)) | (1 << (CParser.Complex - 32)))) !== 0))) {
this._errHandler.recoverInline(this);
}
else {
this._errHandler.reportMatch(this);
this.consume();
}
break;
case CParser.T__0:
this.state = 564;
this.match(CParser.T__0);
this.state = 565;
this.match(CParser.LeftParen);
this.state = 566;
_la = this._input.LA(1);
if(!((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << CParser.T__3) | (1 << CParser.T__4) | (1 << CParser.T__5))) !== 0))) {
this._errHandler.recoverInline(this);
}
else {
this._errHandler.reportMatch(this);
this.consume();
}
this.state = 567;
this.match(CParser.RightParen);
break;
case CParser.Atomic:
this.state = 568;
this.atomicTypeSpecifier();
break;
case CParser.Struct:
case CParser.Union:
this.state = 569;
this.structOrUnionSpecifier();
break;
case CParser.Enum:
this.state = 570;
this.enumSpecifier();
break;
case CParser.Identifier:
this.state = 571;
this.typedefName();
break;
case CParser.T__6:
this.state = 572;
this.match(CParser.T__6);
this.state = 573;
this.match(CParser.LeftParen);
this.state = 574;
this.constantExpression();
this.state = 575;
this.match(CParser.RightParen);
break;
default:
throw new antlr4.error.NoViableAltException(this);
}
this._ctx.stop = this._input.LT(-1);
this.state = 583;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,37,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
if(this._parseListeners!==null) {
this.triggerExitRuleEvent();
}
_prevctx = localctx;
localctx = new TypeSpecifierContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CParser.RULE_typeSpecifier);
this.state = 579;
if (!( this.precpred(this._ctx, 1))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
}
this.state = 580;
this.pointer();
}
this.state = 585;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,37,this._ctx);
}
} catch( error) {
if(error instanceof antlr4.error.RecognitionException) {
localctx.exception = error;
this._errHandler.reportError(this, error);
this._errHandler.recover(this, error);
} else {
throw error;
}
} finally {
this.unrollRecursionContexts(_parentctx)
}
return localctx;
};
function StructOrUnionSpecifierContext(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 = CParser.RULE_structOrUnionSpecifier;
return this;
}
StructOrUnionSpecifierContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
StructOrUnionSpecifierContext.prototype.constructor = StructOrUnionSpecifierContext;
StructOrUnionSpecifierContext.prototype.structOrUnion = function() {
return this.getTypedRuleContext(StructOrUnionContext,0);
};
StructOrUnionSpecifierContext.prototype.LeftBrace = function() {
return this.getToken(CParser.LeftBrace, 0);
};
StructOrUnionSpecifierContext.prototype.structDeclarationList = function() {
return this.getTypedRuleContext(StructDeclarationListContext,0);
};
StructOrUnionSpecifierContext.prototype.RightBrace = function() {
return this.getToken(CParser.RightBrace, 0);
};
StructOrUnionSpecifierContext.prototype.Identifier = function() {
return this.getToken(CParser.Identifier, 0);
};
StructOrUnionSpecifierContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterStructOrUnionSpecifier(this);
}
};
StructOrUnionSpecifierContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitStructOrUnionSpecifier(this);
}
};
CParser.StructOrUnionSpecifierContext = StructOrUnionSpecifierContext;
CParser.prototype.structOrUnionSpecifier = function() {
var localctx = new StructOrUnionSpecifierContext(this, this._ctx, this.state);
this.enterRule(localctx, 64, CParser.RULE_structOrUnionSpecifier);
var _la = 0; // Token type
try {
this.state = 597;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,39,this._ctx);
switch(la_) {
case 1:
this.enterOuterAlt(localctx, 1);
this.state = 586;
this.structOrUnion();
this.state = 588;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===CParser.Identifier) {
this.state = 587;
this.match(CParser.Identifier);
}
this.state = 590;
this.match(CParser.LeftBrace);
this.state = 591;
this.structDeclarationList(0);
this.state = 592;
this.match(CParser.RightBrace);
break;
case 2:
this.enterOuterAlt(localctx, 2);
this.state = 594;
this.structOrUnion();
this.state = 595;
this.match(CParser.Identifier);
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 StructOrUnionContext(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 = CParser.RULE_structOrUnion;
return this;
}
StructOrUnionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
StructOrUnionContext.prototype.constructor = StructOrUnionContext;
StructOrUnionContext.prototype.Struct = function() {
return this.getToken(CParser.Struct, 0);
};
StructOrUnionContext.prototype.Union = function() {
return this.getToken(CParser.Union, 0);
};
StructOrUnionContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterStructOrUnion(this);
}
};
StructOrUnionContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitStructOrUnion(this);
}
};
CParser.StructOrUnionContext = StructOrUnionContext;
CParser.prototype.structOrUnion = function() {
var localctx = new StructOrUnionContext(this, this._ctx, this.state);
this.enterRule(localctx, 66, CParser.RULE_structOrUnion);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 599;
_la = this._input.LA(1);
if(!(_la===CParser.Struct || _la===CParser.Union)) {
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 StructDeclarationListContext(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 = CParser.RULE_structDeclarationList;
return this;
}
StructDeclarationListContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
StructDeclarationListContext.prototype.constructor = StructDeclarationListContext;
StructDeclarationListContext.prototype.structDeclaration = function() {
return this.getTypedRuleContext(StructDeclarationContext,0);
};
StructDeclarationListContext.prototype.structDeclarationList = function() {
return this.getTypedRuleContext(StructDeclarationListContext,0);
};
StructDeclarationListContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterStructDeclarationList(this);
}
};
StructDeclarationListContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitStructDeclarationList(this);
}
};
CParser.prototype.structDeclarationList = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new StructDeclarationListContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 68;
this.enterRecursionRule(localctx, 68, CParser.RULE_structDeclarationList, _p);
try {
this.enterOuterAlt(localctx, 1);
this.state = 602;
this.structDeclaration();
this._ctx.stop = this._input.LT(-1);
this.state = 608;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,40,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
if(this._parseListeners!==null) {
this.triggerExitRuleEvent();
}
_prevctx = localctx;
localctx = new StructDeclarationListContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CParser.RULE_structDeclarationList);
this.state = 604;
if (!( this.precpred(this._ctx, 1))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
}
this.state = 605;
this.structDeclaration();
}
this.state = 610;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,40,this._ctx);
}
} catch( error) {
if(error instanceof antlr4.error.RecognitionException) {
localctx.exception = error;
this._errHandler.reportError(this, error);
this._errHandler.recover(this, error);
} else {
throw error;
}
} finally {
this.unrollRecursionContexts(_parentctx)
}
return localctx;
};
function StructDeclarationContext(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 = CParser.RULE_structDeclaration;
return this;
}
StructDeclarationContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
StructDeclarationContext.prototype.constructor = StructDeclarationContext;
StructDeclarationContext.prototype.specifierQualifierList = function() {
return this.getTypedRuleContext(SpecifierQualifierListContext,0);
};
StructDeclarationContext.prototype.Semi = function() {
return this.getToken(CParser.Semi, 0);
};
StructDeclarationContext.prototype.structDeclaratorList = function() {
return this.getTypedRuleContext(StructDeclaratorListContext,0);
};
StructDeclarationContext.prototype.staticAssertDeclaration = function() {
return this.getTypedRuleContext(StaticAssertDeclarationContext,0);
};
StructDeclarationContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterStructDeclaration(this);
}
};
StructDeclarationContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitStructDeclaration(this);
}
};
CParser.StructDeclarationContext = StructDeclarationContext;
CParser.prototype.structDeclaration = function() {
var localctx = new StructDeclarationContext(this, this._ctx, this.state);
this.enterRule(localctx, 70, CParser.RULE_structDeclaration);
var _la = 0; // Token type
try {
this.state = 618;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case CParser.T__0:
case CParser.T__3:
case CParser.T__4:
case CParser.T__5:
case CParser.T__6:
case CParser.Char:
case CParser.Const:
case CParser.Double:
case CParser.Enum:
case CParser.Float:
case CParser.Int:
case CParser.Long:
case CParser.Restrict:
case CParser.Short:
case CParser.Signed:
case CParser.Struct:
case CParser.Union:
case CParser.Unsigned:
case CParser.Void:
case CParser.Volatile:
case CParser.Atomic:
case CParser.Bool:
case CParser.Complex:
case CParser.Identifier:
this.enterOuterAlt(localctx, 1);
this.state = 611;
this.specifierQualifierList();
this.state = 613;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(((((_la - 59)) & ~0x1f) == 0 && ((1 << (_la - 59)) & ((1 << (CParser.LeftParen - 59)) | (1 << (CParser.Star - 59)) | (1 << (CParser.Caret - 59)) | (1 << (CParser.Colon - 59)))) !== 0) || _la===CParser.Identifier) {
this.state = 612;
this.structDeclaratorList(0);
}
this.state = 615;
this.match(CParser.Semi);
break;
case CParser.StaticAssert:
this.enterOuterAlt(localctx, 2);
this.state = 617;
this.staticAssertDeclaration();
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 SpecifierQualifierListContext(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 = CParser.RULE_specifierQualifierList;
return this;
}
SpecifierQualifierListContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
SpecifierQualifierListContext.prototype.constructor = SpecifierQualifierListContext;
SpecifierQualifierListContext.prototype.typeSpecifier = function() {
return this.getTypedRuleContext(TypeSpecifierContext,0);
};
SpecifierQualifierListContext.prototype.specifierQualifierList = function() {
return this.getTypedRuleContext(SpecifierQualifierListContext,0);
};
SpecifierQualifierListContext.prototype.typeQualifier = function() {
return this.getTypedRuleContext(TypeQualifierContext,0);
};
SpecifierQualifierListContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterSpecifierQualifierList(this);
}
};
SpecifierQualifierListContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitSpecifierQualifierList(this);
}
};
CParser.SpecifierQualifierListContext = SpecifierQualifierListContext;
CParser.prototype.specifierQualifierList = function() {
var localctx = new SpecifierQualifierListContext(this, this._ctx, this.state);
this.enterRule(localctx, 72, CParser.RULE_specifierQualifierList);
try {
this.state = 628;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,45,this._ctx);
switch(la_) {
case 1:
this.enterOuterAlt(localctx, 1);
this.state = 620;
this.typeSpecifier(0);
this.state = 622;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,43,this._ctx);
if(la_===1) {
this.state = 621;
this.specifierQualifierList();
}
break;
case 2:
this.enterOuterAlt(localctx, 2);
this.state = 624;
this.typeQualifier();
this.state = 626;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,44,this._ctx);
if(la_===1) {
this.state = 625;
this.specifierQualifierList();
}
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 StructDeclaratorListContext(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 = CParser.RULE_structDeclaratorList;
return this;
}
StructDeclaratorListContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
StructDeclaratorListContext.prototype.constructor = StructDeclaratorListContext;
StructDeclaratorListContext.prototype.structDeclarator = function() {
return this.getTypedRuleContext(StructDeclaratorContext,0);
};
StructDeclaratorListContext.prototype.structDeclaratorList = function() {
return this.getTypedRuleContext(StructDeclaratorListContext,0);
};
StructDeclaratorListContext.prototype.Comma = function() {
return this.getToken(CParser.Comma, 0);
};
StructDeclaratorListContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterStructDeclaratorList(this);
}
};
StructDeclaratorListContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitStructDeclaratorList(this);
}
};
CParser.prototype.structDeclaratorList = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new StructDeclaratorListContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 74;
this.enterRecursionRule(localctx, 74, CParser.RULE_structDeclaratorList, _p);
try {
this.enterOuterAlt(localctx, 1);
this.state = 631;
this.structDeclarator();
this._ctx.stop = this._input.LT(-1);
this.state = 638;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,46,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
if(this._parseListeners!==null) {
this.triggerExitRuleEvent();
}
_prevctx = localctx;
localctx = new StructDeclaratorListContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CParser.RULE_structDeclaratorList);
this.state = 633;
if (!( this.precpred(this._ctx, 1))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
}
this.state = 634;
this.match(CParser.Comma);
this.state = 635;
this.structDeclarator();
}
this.state = 640;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,46,this._ctx);
}
} catch( error) {
if(error instanceof antlr4.error.RecognitionException) {
localctx.exception = error;
this._errHandler.reportError(this, error);
this._errHandler.recover(this, error);
} else {
throw error;
}
} finally {
this.unrollRecursionContexts(_parentctx)
}
return localctx;
};
function StructDeclaratorContext(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 = CParser.RULE_structDeclarator;
return this;
}
StructDeclaratorContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
StructDeclaratorContext.prototype.constructor = StructDeclaratorContext;
StructDeclaratorContext.prototype.declarator = function() {
return this.getTypedRuleContext(DeclaratorContext,0);
};
StructDeclaratorContext.prototype.Colon = function() {
return this.getToken(CParser.Colon, 0);
};
StructDeclaratorContext.prototype.constantExpression = function() {
return this.getTypedRuleContext(ConstantExpressionContext,0);
};
StructDeclaratorContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterStructDeclarator(this);
}
};
StructDeclaratorContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitStructDeclarator(this);
}
};
CParser.StructDeclaratorContext = StructDeclaratorContext;
CParser.prototype.structDeclarator = function() {
var localctx = new StructDeclaratorContext(this, this._ctx, this.state);
this.enterRule(localctx, 76, CParser.RULE_structDeclarator);
var _la = 0; // Token type
try {
this.state = 647;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,48,this._ctx);
switch(la_) {
case 1:
this.enterOuterAlt(localctx, 1);
this.state = 641;
this.declarator();
break;
case 2:
this.enterOuterAlt(localctx, 2);
this.state = 643;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(((((_la - 59)) & ~0x1f) == 0 && ((1 << (_la - 59)) & ((1 << (CParser.LeftParen - 59)) | (1 << (CParser.Star - 59)) | (1 << (CParser.Caret - 59)))) !== 0) || _la===CParser.Identifier) {
this.state = 642;
this.declarator();
}
this.state = 645;
this.match(CParser.Colon);
this.state = 646;
this.constantExpression();
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 EnumSpecifierContext(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 = CParser.RULE_enumSpecifier;
return this;
}
EnumSpecifierContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
EnumSpecifierContext.prototype.constructor = EnumSpecifierContext;
EnumSpecifierContext.prototype.Enum = function() {
return this.getToken(CParser.Enum, 0);
};
EnumSpecifierContext.prototype.LeftBrace = function() {
return this.getToken(CParser.LeftBrace, 0);
};
EnumSpecifierContext.prototype.enumeratorList = function() {
return this.getTypedRuleContext(EnumeratorListContext,0);
};
EnumSpecifierContext.prototype.RightBrace = function() {
return this.getToken(CParser.RightBrace, 0);
};
EnumSpecifierContext.prototype.Identifier = function() {
return this.getToken(CParser.Identifier, 0);
};
EnumSpecifierContext.prototype.Comma = function() {
return this.getToken(CParser.Comma, 0);
};
EnumSpecifierContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterEnumSpecifier(this);
}
};
EnumSpecifierContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitEnumSpecifier(this);
}
};
CParser.EnumSpecifierContext = EnumSpecifierContext;
CParser.prototype.enumSpecifier = function() {
var localctx = new EnumSpecifierContext(this, this._ctx, this.state);
this.enterRule(localctx, 78, CParser.RULE_enumSpecifier);
var _la = 0; // Token type
try {
this.state = 668;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,51,this._ctx);
switch(la_) {
case 1:
this.enterOuterAlt(localctx, 1);
this.state = 649;
this.match(CParser.Enum);
this.state = 651;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===CParser.Identifier) {
this.state = 650;
this.match(CParser.Identifier);
}
this.state = 653;
this.match(CParser.LeftBrace);
this.state = 654;
this.enumeratorList(0);
this.state = 655;
this.match(CParser.RightBrace);
break;
case 2:
this.enterOuterAlt(localctx, 2);
this.state = 657;
this.match(CParser.Enum);
this.state = 659;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===CParser.Identifier) {
this.state = 658;
this.match(CParser.Identifier);
}
this.state = 661;
this.match(CParser.LeftBrace);
this.state = 662;
this.enumeratorList(0);
this.state = 663;
this.match(CParser.Comma);
this.state = 664;
this.match(CParser.RightBrace);
break;
case 3:
this.enterOuterAlt(localctx, 3);
this.state = 666;
this.match(CParser.Enum);
this.state = 667;
this.match(CParser.Identifier);
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 EnumeratorListContext(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 = CParser.RULE_enumeratorList;
return this;
}
EnumeratorListContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
EnumeratorListContext.prototype.constructor = EnumeratorListContext;
EnumeratorListContext.prototype.enumerator = function() {
return this.getTypedRuleContext(EnumeratorContext,0);
};
EnumeratorListContext.prototype.enumeratorList = function() {
return this.getTypedRuleContext(EnumeratorListContext,0);
};
EnumeratorListContext.prototype.Comma = function() {
return this.getToken(CParser.Comma, 0);
};
EnumeratorListContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterEnumeratorList(this);
}
};
EnumeratorListContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitEnumeratorList(this);
}
};
CParser.prototype.enumeratorList = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new EnumeratorListContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 80;
this.enterRecursionRule(localctx, 80, CParser.RULE_enumeratorList, _p);
try {
this.enterOuterAlt(localctx, 1);
this.state = 671;
this.enumerator();
this._ctx.stop = this._input.LT(-1);
this.state = 678;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,52,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
if(this._parseListeners!==null) {
this.triggerExitRuleEvent();
}
_prevctx = localctx;
localctx = new EnumeratorListContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CParser.RULE_enumeratorList);
this.state = 673;
if (!( this.precpred(this._ctx, 1))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
}
this.state = 674;
this.match(CParser.Comma);
this.state = 675;
this.enumerator();
}
this.state = 680;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,52,this._ctx);
}
} catch( error) {
if(error instanceof antlr4.error.RecognitionException) {
localctx.exception = error;
this._errHandler.reportError(this, error);
this._errHandler.recover(this, error);
} else {
throw error;
}
} finally {
this.unrollRecursionContexts(_parentctx)
}
return localctx;
};
function EnumeratorContext(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 = CParser.RULE_enumerator;
return this;
}
EnumeratorContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
EnumeratorContext.prototype.constructor = EnumeratorContext;
EnumeratorContext.prototype.enumerationConstant = function() {
return this.getTypedRuleContext(EnumerationConstantContext,0);
};
EnumeratorContext.prototype.Assign = function() {
return this.getToken(CParser.Assign, 0);
};
EnumeratorContext.prototype.constantExpression = function() {
return this.getTypedRuleContext(ConstantExpressionContext,0);
};
EnumeratorContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterEnumerator(this);
}
};
EnumeratorContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitEnumerator(this);
}
};
CParser.EnumeratorContext = EnumeratorContext;
CParser.prototype.enumerator = function() {
var localctx = new EnumeratorContext(this, this._ctx, this.state);
this.enterRule(localctx, 82, CParser.RULE_enumerator);
try {
this.state = 686;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,53,this._ctx);
switch(la_) {
case 1:
this.enterOuterAlt(localctx, 1);
this.state = 681;
this.enumerationConstant();
break;
case 2:
this.enterOuterAlt(localctx, 2);
this.state = 682;
this.enumerationConstant();
this.state = 683;
this.match(CParser.Assign);
this.state = 684;
this.constantExpression();
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 EnumerationConstantContext(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 = CParser.RULE_enumerationConstant;
return this;
}
EnumerationConstantContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
EnumerationConstantContext.prototype.constructor = EnumerationConstantContext;
EnumerationConstantContext.prototype.Identifier = function() {
return this.getToken(CParser.Identifier, 0);
};
EnumerationConstantContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterEnumerationConstant(this);
}
};
EnumerationConstantContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitEnumerationConstant(this);
}
};
CParser.EnumerationConstantContext = EnumerationConstantContext;
CParser.prototype.enumerationConstant = function() {
var localctx = new EnumerationConstantContext(this, this._ctx, this.state);
this.enterRule(localctx, 84, CParser.RULE_enumerationConstant);
try {
this.enterOuterAlt(localctx, 1);
this.state = 688;
this.match(CParser.Identifier);
} 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 AtomicTypeSpecifierContext(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 = CParser.RULE_atomicTypeSpecifier;
return this;
}
AtomicTypeSpecifierContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
AtomicTypeSpecifierContext.prototype.constructor = AtomicTypeSpecifierContext;
AtomicTypeSpecifierContext.prototype.Atomic = function() {
return this.getToken(CParser.Atomic, 0);
};
AtomicTypeSpecifierContext.prototype.LeftParen = function() {
return this.getToken(CParser.LeftParen, 0);
};
AtomicTypeSpecifierContext.prototype.typeName = function() {
return this.getTypedRuleContext(TypeNameContext,0);
};
AtomicTypeSpecifierContext.prototype.RightParen = function() {
return this.getToken(CParser.RightParen, 0);
};
AtomicTypeSpecifierContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterAtomicTypeSpecifier(this);
}
};
AtomicTypeSpecifierContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitAtomicTypeSpecifier(this);
}
};
CParser.AtomicTypeSpecifierContext = AtomicTypeSpecifierContext;
CParser.prototype.atomicTypeSpecifier = function() {
var localctx = new AtomicTypeSpecifierContext(this, this._ctx, this.state);
this.enterRule(localctx, 86, CParser.RULE_atomicTypeSpecifier);
try {
this.enterOuterAlt(localctx, 1);
this.state = 690;
this.match(CParser.Atomic);
this.state = 691;
this.match(CParser.LeftParen);
this.state = 692;
this.typeName();
this.state = 693;
this.match(CParser.RightParen);
} 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 TypeQualifierContext(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 = CParser.RULE_typeQualifier;
return this;
}
TypeQualifierContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
TypeQualifierContext.prototype.constructor = TypeQualifierContext;
TypeQualifierContext.prototype.Const = function() {
return this.getToken(CParser.Const, 0);
};
TypeQualifierContext.prototype.Restrict = function() {
return this.getToken(CParser.Restrict, 0);
};
TypeQualifierContext.prototype.Volatile = function() {
return this.getToken(CParser.Volatile, 0);
};
TypeQualifierContext.prototype.Atomic = function() {
return this.getToken(CParser.Atomic, 0);
};
TypeQualifierContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterTypeQualifier(this);
}
};
TypeQualifierContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitTypeQualifier(this);
}
};
CParser.TypeQualifierContext = TypeQualifierContext;
CParser.prototype.typeQualifier = function() {
var localctx = new TypeQualifierContext(this, this._ctx, this.state);
this.enterRule(localctx, 88, CParser.RULE_typeQualifier);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 695;
_la = this._input.LA(1);
if(!(_la===CParser.Const || ((((_la - 35)) & ~0x1f) == 0 && ((1 << (_la - 35)) & ((1 << (CParser.Restrict - 35)) | (1 << (CParser.Volatile - 35)) | (1 << (CParser.Atomic - 35)))) !== 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 FunctionSpecifierContext(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 = CParser.RULE_functionSpecifier;
return this;
}
FunctionSpecifierContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
FunctionSpecifierContext.prototype.constructor = FunctionSpecifierContext;
FunctionSpecifierContext.prototype.Inline = function() {
return this.getToken(CParser.Inline, 0);
};
FunctionSpecifierContext.prototype.Noreturn = function() {
return this.getToken(CParser.Noreturn, 0);
};
FunctionSpecifierContext.prototype.gccAttributeSpecifier = function() {
return this.getTypedRuleContext(GccAttributeSpecifierContext,0);
};
FunctionSpecifierContext.prototype.LeftParen = function() {
return this.getToken(CParser.LeftParen, 0);
};
FunctionSpecifierContext.prototype.Identifier = function() {
return this.getToken(CParser.Identifier, 0);
};
FunctionSpecifierContext.prototype.RightParen = function() {
return this.getToken(CParser.RightParen, 0);
};
FunctionSpecifierContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterFunctionSpecifier(this);
}
};
FunctionSpecifierContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitFunctionSpecifier(this);
}
};
CParser.FunctionSpecifierContext = FunctionSpecifierContext;
CParser.prototype.functionSpecifier = function() {
var localctx = new FunctionSpecifierContext(this, this._ctx, this.state);
this.enterRule(localctx, 90, CParser.RULE_functionSpecifier);
var _la = 0; // Token type
try {
this.state = 703;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case CParser.T__7:
case CParser.T__8:
case CParser.Inline:
case CParser.Noreturn:
this.enterOuterAlt(localctx, 1);
this.state = 697;
_la = this._input.LA(1);
if(!((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << CParser.T__7) | (1 << CParser.T__8) | (1 << CParser.Inline))) !== 0) || _la===CParser.Noreturn)) {
this._errHandler.recoverInline(this);
}
else {
this._errHandler.reportMatch(this);
this.consume();
}
break;
case CParser.T__11:
this.enterOuterAlt(localctx, 2);
this.state = 698;
this.gccAttributeSpecifier();
break;
case CParser.T__9:
this.enterOuterAlt(localctx, 3);
this.state = 699;
this.match(CParser.T__9);
this.state = 700;
this.match(CParser.LeftParen);
this.state = 701;
this.match(CParser.Identifier);
this.state = 702;
this.match(CParser.RightParen);
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 AlignmentSpecifierContext(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 = CParser.RULE_alignmentSpecifier;
return this;
}
AlignmentSpecifierContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
AlignmentSpecifierContext.prototype.constructor = AlignmentSpecifierContext;
AlignmentSpecifierContext.prototype.Alignas = function() {
return this.getToken(CParser.Alignas, 0);
};
AlignmentSpecifierContext.prototype.LeftParen = function() {
return this.getToken(CParser.LeftParen, 0);
};
AlignmentSpecifierContext.prototype.typeName = function() {
return this.getTypedRuleContext(TypeNameContext,0);
};
AlignmentSpecifierContext.prototype.RightParen = function() {
return this.getToken(CParser.RightParen, 0);
};
AlignmentSpecifierContext.prototype.constantExpression = function() {
return this.getTypedRuleContext(ConstantExpressionContext,0);
};
AlignmentSpecifierContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterAlignmentSpecifier(this);
}
};
AlignmentSpecifierContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitAlignmentSpecifier(this);
}
};
CParser.AlignmentSpecifierContext = AlignmentSpecifierContext;
CParser.prototype.alignmentSpecifier = function() {
var localctx = new AlignmentSpecifierContext(this, this._ctx, this.state);
this.enterRule(localctx, 92, CParser.RULE_alignmentSpecifier);
try {
this.state = 715;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,55,this._ctx);
switch(la_) {
case 1:
this.enterOuterAlt(localctx, 1);
this.state = 705;
this.match(CParser.Alignas);
this.state = 706;
this.match(CParser.LeftParen);
this.state = 707;
this.typeName();
this.state = 708;
this.match(CParser.RightParen);
break;
case 2:
this.enterOuterAlt(localctx, 2);
this.state = 710;
this.match(CParser.Alignas);
this.state = 711;
this.match(CParser.LeftParen);
this.state = 712;
this.constantExpression();
this.state = 713;
this.match(CParser.RightParen);
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 DeclaratorContext(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 = CParser.RULE_declarator;
return this;
}
DeclaratorContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
DeclaratorContext.prototype.constructor = DeclaratorContext;
DeclaratorContext.prototype.directDeclarator = function() {
return this.getTypedRuleContext(DirectDeclaratorContext,0);
};
DeclaratorContext.prototype.pointer = function() {
return this.getTypedRuleContext(PointerContext,0);
};
DeclaratorContext.prototype.gccDeclaratorExtension = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(GccDeclaratorExtensionContext);
} else {
return this.getTypedRuleContext(GccDeclaratorExtensionContext,i);
}
};
DeclaratorContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterDeclarator(this);
}
};
DeclaratorContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitDeclarator(this);
}
};
CParser.DeclaratorContext = DeclaratorContext;
CParser.prototype.declarator = function() {
var localctx = new DeclaratorContext(this, this._ctx, this.state);
this.enterRule(localctx, 94, CParser.RULE_declarator);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 718;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===CParser.Star || _la===CParser.Caret) {
this.state = 717;
this.pointer();
}
this.state = 720;
this.directDeclarator(0);
this.state = 724;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,57,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
this.state = 721;
this.gccDeclaratorExtension();
}
this.state = 726;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,57,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 DirectDeclaratorContext(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 = CParser.RULE_directDeclarator;
return this;
}
DirectDeclaratorContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
DirectDeclaratorContext.prototype.constructor = DirectDeclaratorContext;
DirectDeclaratorContext.prototype.Identifier = function() {
return this.getToken(CParser.Identifier, 0);
};
DirectDeclaratorContext.prototype.LeftParen = function() {
return this.getToken(CParser.LeftParen, 0);
};
DirectDeclaratorContext.prototype.declarator = function() {
return this.getTypedRuleContext(DeclaratorContext,0);
};
DirectDeclaratorContext.prototype.RightParen = function() {
return this.getToken(CParser.RightParen, 0);
};
DirectDeclaratorContext.prototype.Colon = function() {
return this.getToken(CParser.Colon, 0);
};
DirectDeclaratorContext.prototype.DigitSequence = function() {
return this.getToken(CParser.DigitSequence, 0);
};
DirectDeclaratorContext.prototype.pointer = function() {
return this.getTypedRuleContext(PointerContext,0);
};
DirectDeclaratorContext.prototype.directDeclarator = function() {
return this.getTypedRuleContext(DirectDeclaratorContext,0);
};
DirectDeclaratorContext.prototype.typeSpecifier = function() {
return this.getTypedRuleContext(TypeSpecifierContext,0);
};
DirectDeclaratorContext.prototype.LeftBracket = function() {
return this.getToken(CParser.LeftBracket, 0);
};
DirectDeclaratorContext.prototype.RightBracket = function() {
return this.getToken(CParser.RightBracket, 0);
};
DirectDeclaratorContext.prototype.typeQualifierList = function() {
return this.getTypedRuleContext(TypeQualifierListContext,0);
};
DirectDeclaratorContext.prototype.assignmentExpression = function() {
return this.getTypedRuleContext(AssignmentExpressionContext,0);
};
DirectDeclaratorContext.prototype.Static = function() {
return this.getToken(CParser.Static, 0);
};
DirectDeclaratorContext.prototype.Star = function() {
return this.getToken(CParser.Star, 0);
};
DirectDeclaratorContext.prototype.parameterTypeList = function() {
return this.getTypedRuleContext(ParameterTypeListContext,0);
};
DirectDeclaratorContext.prototype.identifierList = function() {
return this.getTypedRuleContext(IdentifierListContext,0);
};
DirectDeclaratorContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterDirectDeclarator(this);
}
};
DirectDeclaratorContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitDirectDeclarator(this);
}
};
CParser.prototype.directDeclarator = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new DirectDeclaratorContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 96;
this.enterRecursionRule(localctx, 96, CParser.RULE_directDeclarator, _p);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 744;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,59,this._ctx);
switch(la_) {
case 1:
this.state = 728;
this.match(CParser.Identifier);
break;
case 2:
this.state = 729;
this.match(CParser.LeftParen);
this.state = 730;
this.declarator();
this.state = 731;
this.match(CParser.RightParen);
break;
case 3:
this.state = 733;
this.match(CParser.Identifier);
this.state = 734;
this.match(CParser.Colon);
this.state = 735;
this.match(CParser.DigitSequence);
break;
case 4:
this.state = 736;
this.match(CParser.LeftParen);
this.state = 738;
this._errHandler.sync(this);
_la = this._input.LA(1);
if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << CParser.T__0) | (1 << CParser.T__3) | (1 << CParser.T__4) | (1 << CParser.T__5) | (1 << CParser.T__6) | (1 << CParser.Char) | (1 << CParser.Double) | (1 << CParser.Enum) | (1 << CParser.Float))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (CParser.Int - 32)) | (1 << (CParser.Long - 32)) | (1 << (CParser.Short - 32)) | (1 << (CParser.Signed - 32)) | (1 << (CParser.Struct - 32)) | (1 << (CParser.Union - 32)) | (1 << (CParser.Unsigned - 32)) | (1 << (CParser.Void - 32)) | (1 << (CParser.Atomic - 32)) | (1 << (CParser.Bool - 32)) | (1 << (CParser.Complex - 32)))) !== 0) || _la===CParser.Identifier) {
this.state = 737;
this.typeSpecifier(0);
}
this.state = 740;
this.pointer();
this.state = 741;
this.directDeclarator(0);
this.state = 742;
this.match(CParser.RightParen);
break;
}
this._ctx.stop = this._input.LT(-1);
this.state = 791;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,66,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
if(this._parseListeners!==null) {
this.triggerExitRuleEvent();
}
_prevctx = localctx;
this.state = 789;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,65,this._ctx);
switch(la_) {
case 1:
localctx = new DirectDeclaratorContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CParser.RULE_directDeclarator);
this.state = 746;
if (!( this.precpred(this._ctx, 8))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 8)");
}
this.state = 747;
this.match(CParser.LeftBracket);
this.state = 749;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===CParser.Const || ((((_la - 35)) & ~0x1f) == 0 && ((1 << (_la - 35)) & ((1 << (CParser.Restrict - 35)) | (1 << (CParser.Volatile - 35)) | (1 << (CParser.Atomic - 35)))) !== 0)) {
this.state = 748;
this.typeQualifierList(0);
}
this.state = 752;
this._errHandler.sync(this);
_la = this._input.LA(1);
if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << CParser.T__0) | (1 << CParser.T__1) | (1 << CParser.T__2))) !== 0) || ((((_la - 39)) & ~0x1f) == 0 && ((1 << (_la - 39)) & ((1 << (CParser.Sizeof - 39)) | (1 << (CParser.Alignof - 39)) | (1 << (CParser.Generic - 39)) | (1 << (CParser.LeftParen - 39)))) !== 0) || ((((_la - 71)) & ~0x1f) == 0 && ((1 << (_la - 71)) & ((1 << (CParser.Plus - 71)) | (1 << (CParser.PlusPlus - 71)) | (1 << (CParser.Minus - 71)) | (1 << (CParser.MinusMinus - 71)) | (1 << (CParser.Star - 71)) | (1 << (CParser.And - 71)) | (1 << (CParser.AndAnd - 71)) | (1 << (CParser.Not - 71)) | (1 << (CParser.Tilde - 71)))) !== 0) || ((((_la - 105)) & ~0x1f) == 0 && ((1 << (_la - 105)) & ((1 << (CParser.Identifier - 105)) | (1 << (CParser.Constant - 105)) | (1 << (CParser.DigitSequence - 105)) | (1 << (CParser.StringLiteral - 105)))) !== 0)) {
this.state = 751;
this.assignmentExpression();
}
this.state = 754;
this.match(CParser.RightBracket);
break;
case 2:
localctx = new DirectDeclaratorContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CParser.RULE_directDeclarator);
this.state = 755;
if (!( this.precpred(this._ctx, 7))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 7)");
}
this.state = 756;
this.match(CParser.LeftBracket);
this.state = 757;
this.match(CParser.Static);
this.state = 759;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===CParser.Const || ((((_la - 35)) & ~0x1f) == 0 && ((1 << (_la - 35)) & ((1 << (CParser.Restrict - 35)) | (1 << (CParser.Volatile - 35)) | (1 << (CParser.Atomic - 35)))) !== 0)) {
this.state = 758;
this.typeQualifierList(0);
}
this.state = 761;
this.assignmentExpression();
this.state = 762;
this.match(CParser.RightBracket);
break;
case 3:
localctx = new DirectDeclaratorContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CParser.RULE_directDeclarator);
this.state = 764;
if (!( this.precpred(this._ctx, 6))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 6)");
}
this.state = 765;
this.match(CParser.LeftBracket);
this.state = 766;
this.typeQualifierList(0);
this.state = 767;
this.match(CParser.Static);
this.state = 768;
this.assignmentExpression();
this.state = 769;
this.match(CParser.RightBracket);
break;
case 4:
localctx = new DirectDeclaratorContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CParser.RULE_directDeclarator);
this.state = 771;
if (!( this.precpred(this._ctx, 5))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 5)");
}
this.state = 772;
this.match(CParser.LeftBracket);
this.state = 774;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===CParser.Const || ((((_la - 35)) & ~0x1f) == 0 && ((1 << (_la - 35)) & ((1 << (CParser.Restrict - 35)) | (1 << (CParser.Volatile - 35)) | (1 << (CParser.Atomic - 35)))) !== 0)) {
this.state = 773;
this.typeQualifierList(0);
}
this.state = 776;
this.match(CParser.Star);
this.state = 777;
this.match(CParser.RightBracket);
break;
case 5:
localctx = new DirectDeclaratorContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CParser.RULE_directDeclarator);
this.state = 778;
if (!( this.precpred(this._ctx, 4))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 4)");
}
this.state = 779;
this.match(CParser.LeftParen);
this.state = 780;
this.parameterTypeList();
this.state = 781;
this.match(CParser.RightParen);
break;
case 6:
localctx = new DirectDeclaratorContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CParser.RULE_directDeclarator);
this.state = 783;
if (!( this.precpred(this._ctx, 3))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 3)");
}
this.state = 784;
this.match(CParser.LeftParen);
this.state = 786;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===CParser.Identifier) {
this.state = 785;
this.identifierList(0);
}
this.state = 788;
this.match(CParser.RightParen);
break;
}
}
this.state = 793;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,66,this._ctx);
}
} catch( error) {
if(error instanceof antlr4.error.RecognitionException) {
localctx.exception = error;
this._errHandler.reportError(this, error);
this._errHandler.recover(this, error);
} else {
throw error;
}
} finally {
this.unrollRecursionContexts(_parentctx)
}
return localctx;
};
function GccDeclaratorExtensionContext(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 = CParser.RULE_gccDeclaratorExtension;
return this;
}
GccDeclaratorExtensionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
GccDeclaratorExtensionContext.prototype.constructor = GccDeclaratorExtensionContext;
GccDeclaratorExtensionContext.prototype.LeftParen = function() {
return this.getToken(CParser.LeftParen, 0);
};
GccDeclaratorExtensionContext.prototype.RightParen = function() {
return this.getToken(CParser.RightParen, 0);
};
GccDeclaratorExtensionContext.prototype.StringLiteral = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(CParser.StringLiteral);
} else {
return this.getToken(CParser.StringLiteral, i);
}
};
GccDeclaratorExtensionContext.prototype.gccAttributeSpecifier = function() {
return this.getTypedRuleContext(GccAttributeSpecifierContext,0);
};
GccDeclaratorExtensionContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterGccDeclaratorExtension(this);
}
};
GccDeclaratorExtensionContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitGccDeclaratorExtension(this);
}
};
CParser.GccDeclaratorExtensionContext = GccDeclaratorExtensionContext;
CParser.prototype.gccDeclaratorExtension = function() {
var localctx = new GccDeclaratorExtensionContext(this, this._ctx, this.state);
this.enterRule(localctx, 98, CParser.RULE_gccDeclaratorExtension);
var _la = 0; // Token type
try {
this.state = 803;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case CParser.T__10:
this.enterOuterAlt(localctx, 1);
this.state = 794;
this.match(CParser.T__10);
this.state = 795;
this.match(CParser.LeftParen);
this.state = 797;
this._errHandler.sync(this);
_la = this._input.LA(1);
do {
this.state = 796;
this.match(CParser.StringLiteral);
this.state = 799;
this._errHandler.sync(this);
_la = this._input.LA(1);
} while(_la===CParser.StringLiteral);
this.state = 801;
this.match(CParser.RightParen);
break;
case CParser.T__11:
this.enterOuterAlt(localctx, 2);
this.state = 802;
this.gccAttributeSpecifier();
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 GccAttributeSpecifierContext(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 = CParser.RULE_gccAttributeSpecifier;
return this;
}
GccAttributeSpecifierContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
GccAttributeSpecifierContext.prototype.constructor = GccAttributeSpecifierContext;
GccAttributeSpecifierContext.prototype.LeftParen = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(CParser.LeftParen);
} else {
return this.getToken(CParser.LeftParen, i);
}
};
GccAttributeSpecifierContext.prototype.gccAttributeList = function() {
return this.getTypedRuleContext(GccAttributeListContext,0);
};
GccAttributeSpecifierContext.prototype.RightParen = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(CParser.RightParen);
} else {
return this.getToken(CParser.RightParen, i);
}
};
GccAttributeSpecifierContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterGccAttributeSpecifier(this);
}
};
GccAttributeSpecifierContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitGccAttributeSpecifier(this);
}
};
CParser.GccAttributeSpecifierContext = GccAttributeSpecifierContext;
CParser.prototype.gccAttributeSpecifier = function() {
var localctx = new GccAttributeSpecifierContext(this, this._ctx, this.state);
this.enterRule(localctx, 100, CParser.RULE_gccAttributeSpecifier);
try {
this.enterOuterAlt(localctx, 1);
this.state = 805;
this.match(CParser.T__11);
this.state = 806;
this.match(CParser.LeftParen);
this.state = 807;
this.match(CParser.LeftParen);
this.state = 808;
this.gccAttributeList();
this.state = 809;
this.match(CParser.RightParen);
this.state = 810;
this.match(CParser.RightParen);
} 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 GccAttributeListContext(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 = CParser.RULE_gccAttributeList;
return this;
}
GccAttributeListContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
GccAttributeListContext.prototype.constructor = GccAttributeListContext;
GccAttributeListContext.prototype.gccAttribute = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(GccAttributeContext);
} else {
return this.getTypedRuleContext(GccAttributeContext,i);
}
};
GccAttributeListContext.prototype.Comma = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(CParser.Comma);
} else {
return this.getToken(CParser.Comma, i);
}
};
GccAttributeListContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterGccAttributeList(this);
}
};
GccAttributeListContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitGccAttributeList(this);
}
};
CParser.GccAttributeListContext = GccAttributeListContext;
CParser.prototype.gccAttributeList = function() {
var localctx = new GccAttributeListContext(this, this._ctx, this.state);
this.enterRule(localctx, 102, CParser.RULE_gccAttributeList);
var _la = 0; // Token type
try {
this.state = 821;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,70,this._ctx);
switch(la_) {
case 1:
this.enterOuterAlt(localctx, 1);
this.state = 812;
this.gccAttribute();
this.state = 817;
this._errHandler.sync(this);
_la = this._input.LA(1);
while(_la===CParser.Comma) {
this.state = 813;
this.match(CParser.Comma);
this.state = 814;
this.gccAttribute();
this.state = 819;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
break;
case 2:
this.enterOuterAlt(localctx, 2);
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 GccAttributeContext(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 = CParser.RULE_gccAttribute;
return this;
}
GccAttributeContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
GccAttributeContext.prototype.constructor = GccAttributeContext;
GccAttributeContext.prototype.Comma = function() {
return this.getToken(CParser.Comma, 0);
};
GccAttributeContext.prototype.LeftParen = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(CParser.LeftParen);
} else {
return this.getToken(CParser.LeftParen, i);
}
};
GccAttributeContext.prototype.RightParen = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(CParser.RightParen);
} else {
return this.getToken(CParser.RightParen, i);
}
};
GccAttributeContext.prototype.argumentExpressionList = function() {
return this.getTypedRuleContext(ArgumentExpressionListContext,0);
};
GccAttributeContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterGccAttribute(this);
}
};
GccAttributeContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitGccAttribute(this);
}
};
CParser.GccAttributeContext = GccAttributeContext;
CParser.prototype.gccAttribute = function() {
var localctx = new GccAttributeContext(this, this._ctx, this.state);
this.enterRule(localctx, 104, CParser.RULE_gccAttribute);
var _la = 0; // Token type
try {
this.state = 832;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case CParser.T__0:
case CParser.T__1:
case CParser.T__2:
case CParser.T__3:
case CParser.T__4:
case CParser.T__5:
case CParser.T__6:
case CParser.T__7:
case CParser.T__8:
case CParser.T__9:
case CParser.T__10:
case CParser.T__11:
case CParser.T__12:
case CParser.T__13:
case CParser.Auto:
case CParser.Break:
case CParser.Case:
case CParser.Char:
case CParser.Const:
case CParser.Continue:
case CParser.Default:
case CParser.Do:
case CParser.Double:
case CParser.Else:
case CParser.Enum:
case CParser.Extern:
case CParser.Float:
case CParser.For:
case CParser.Goto:
case CParser.If:
case CParser.Inline:
case CParser.Int:
case CParser.Long:
case CParser.Register:
case CParser.Restrict:
case CParser.Return:
case CParser.Short:
case CParser.Signed:
case CParser.Sizeof:
case CParser.Static:
case CParser.Struct:
case CParser.Switch:
case CParser.Typedef:
case CParser.Union:
case CParser.Unsigned:
case CParser.Void:
case CParser.Volatile:
case CParser.While:
case CParser.Alignas:
case CParser.Alignof:
case CParser.Atomic:
case CParser.Bool:
case CParser.Complex:
case CParser.Generic:
case CParser.Imaginary:
case CParser.Noreturn:
case CParser.StaticAssert:
case CParser.ThreadLocal:
case CParser.LeftBracket:
case CParser.RightBracket:
case CParser.LeftBrace:
case CParser.RightBrace:
case CParser.Less:
case CParser.LessEqual:
case CParser.Greater:
case CParser.GreaterEqual:
case CParser.LeftShift:
case CParser.RightShift:
case CParser.Plus:
case CParser.PlusPlus:
case CParser.Minus:
case CParser.MinusMinus:
case CParser.Star:
case CParser.Div:
case CParser.Mod:
case CParser.And:
case CParser.Or:
case CParser.AndAnd:
case CParser.OrOr:
case CParser.Caret:
case CParser.Not:
case CParser.Tilde:
case CParser.Question:
case CParser.Colon:
case CParser.Semi:
case CParser.Assign:
case CParser.StarAssign:
case CParser.DivAssign:
case CParser.ModAssign:
case CParser.PlusAssign:
case CParser.MinusAssign:
case CParser.LeftShiftAssign:
case CParser.RightShiftAssign:
case CParser.AndAssign:
case CParser.XorAssign:
case CParser.OrAssign:
case CParser.Equal:
case CParser.NotEqual:
case CParser.Arrow:
case CParser.Dot:
case CParser.Ellipsis:
case CParser.Identifier:
case CParser.Constant:
case CParser.DigitSequence:
case CParser.StringLiteral:
case CParser.ComplexDefine:
case CParser.IncludeDirective:
case CParser.AsmBlock:
case CParser.LineAfterPreprocessing:
case CParser.LineDirective:
case CParser.PragmaDirective:
case CParser.Whitespace:
case CParser.Newline:
case CParser.BlockComment:
case CParser.LineComment:
this.enterOuterAlt(localctx, 1);
this.state = 823;
_la = this._input.LA(1);
if(_la<=0 || ((((_la - 59)) & ~0x1f) == 0 && ((1 << (_la - 59)) & ((1 << (CParser.LeftParen - 59)) | (1 << (CParser.RightParen - 59)) | (1 << (CParser.Comma - 59)))) !== 0)) {
this._errHandler.recoverInline(this);
}
else {
this._errHandler.reportMatch(this);
this.consume();
}
this.state = 829;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===CParser.LeftParen) {
this.state = 824;
this.match(CParser.LeftParen);
this.state = 826;
this._errHandler.sync(this);
_la = this._input.LA(1);
if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << CParser.T__0) | (1 << CParser.T__1) | (1 << CParser.T__2))) !== 0) || ((((_la - 39)) & ~0x1f) == 0 && ((1 << (_la - 39)) & ((1 << (CParser.Sizeof - 39)) | (1 << (CParser.Alignof - 39)) | (1 << (CParser.Generic - 39)) | (1 << (CParser.LeftParen - 39)))) !== 0) || ((((_la - 71)) & ~0x1f) == 0 && ((1 << (_la - 71)) & ((1 << (CParser.Plus - 71)) | (1 << (CParser.PlusPlus - 71)) | (1 << (CParser.Minus - 71)) | (1 << (CParser.MinusMinus - 71)) | (1 << (CParser.Star - 71)) | (1 << (CParser.And - 71)) | (1 << (CParser.AndAnd - 71)) | (1 << (CParser.Not - 71)) | (1 << (CParser.Tilde - 71)))) !== 0) || ((((_la - 105)) & ~0x1f) == 0 && ((1 << (_la - 105)) & ((1 << (CParser.Identifier - 105)) | (1 << (CParser.Constant - 105)) | (1 << (CParser.DigitSequence - 105)) | (1 << (CParser.StringLiteral - 105)))) !== 0)) {
this.state = 825;
this.argumentExpressionList(0);
}
this.state = 828;
this.match(CParser.RightParen);
}
break;
case CParser.RightParen:
case CParser.Comma:
this.enterOuterAlt(localctx, 2);
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 NestedParenthesesBlockContext(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 = CParser.RULE_nestedParenthesesBlock;
return this;
}
NestedParenthesesBlockContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
NestedParenthesesBlockContext.prototype.constructor = NestedParenthesesBlockContext;
NestedParenthesesBlockContext.prototype.LeftParen = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(CParser.LeftParen);
} else {
return this.getToken(CParser.LeftParen, i);
}
};
NestedParenthesesBlockContext.prototype.nestedParenthesesBlock = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(NestedParenthesesBlockContext);
} else {
return this.getTypedRuleContext(NestedParenthesesBlockContext,i);
}
};
NestedParenthesesBlockContext.prototype.RightParen = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(CParser.RightParen);
} else {
return this.getToken(CParser.RightParen, i);
}
};
NestedParenthesesBlockContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterNestedParenthesesBlock(this);
}
};
NestedParenthesesBlockContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitNestedParenthesesBlock(this);
}
};
CParser.NestedParenthesesBlockContext = NestedParenthesesBlockContext;
CParser.prototype.nestedParenthesesBlock = function() {
var localctx = new NestedParenthesesBlockContext(this, this._ctx, this.state);
this.enterRule(localctx, 106, CParser.RULE_nestedParenthesesBlock);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 841;
this._errHandler.sync(this);
_la = this._input.LA(1);
while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << CParser.T__0) | (1 << CParser.T__1) | (1 << CParser.T__2) | (1 << CParser.T__3) | (1 << CParser.T__4) | (1 << CParser.T__5) | (1 << CParser.T__6) | (1 << CParser.T__7) | (1 << CParser.T__8) | (1 << CParser.T__9) | (1 << CParser.T__10) | (1 << CParser.T__11) | (1 << CParser.T__12) | (1 << CParser.T__13) | (1 << CParser.Auto) | (1 << CParser.Break) | (1 << CParser.Case) | (1 << CParser.Char) | (1 << CParser.Const) | (1 << CParser.Continue) | (1 << CParser.Default) | (1 << CParser.Do) | (1 << CParser.Double) | (1 << CParser.Else) | (1 << CParser.Enum) | (1 << CParser.Extern) | (1 << CParser.Float) | (1 << CParser.For) | (1 << CParser.Goto) | (1 << CParser.If) | (1 << CParser.Inline))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (CParser.Int - 32)) | (1 << (CParser.Long - 32)) | (1 << (CParser.Register - 32)) | (1 << (CParser.Restrict - 32)) | (1 << (CParser.Return - 32)) | (1 << (CParser.Short - 32)) | (1 << (CParser.Signed - 32)) | (1 << (CParser.Sizeof - 32)) | (1 << (CParser.Static - 32)) | (1 << (CParser.Struct - 32)) | (1 << (CParser.Switch - 32)) | (1 << (CParser.Typedef - 32)) | (1 << (CParser.Union - 32)) | (1 << (CParser.Unsigned - 32)) | (1 << (CParser.Void - 32)) | (1 << (CParser.Volatile - 32)) | (1 << (CParser.While - 32)) | (1 << (CParser.Alignas - 32)) | (1 << (CParser.Alignof - 32)) | (1 << (CParser.Atomic - 32)) | (1 << (CParser.Bool - 32)) | (1 << (CParser.Complex - 32)) | (1 << (CParser.Generic - 32)) | (1 << (CParser.Imaginary - 32)) | (1 << (CParser.Noreturn - 32)) | (1 << (CParser.StaticAssert - 32)) | (1 << (CParser.ThreadLocal - 32)) | (1 << (CParser.LeftParen - 32)) | (1 << (CParser.LeftBracket - 32)) | (1 << (CParser.RightBracket - 32)) | (1 << (CParser.LeftBrace - 32)))) !== 0) || ((((_la - 64)) & ~0x1f) == 0 && ((1 << (_la - 64)) & ((1 << (CParser.RightBrace - 64)) | (1 << (CParser.Less - 64)) | (1 << (CParser.LessEqual - 64)) | (1 << (CParser.Greater - 64)) | (1 << (CParser.GreaterEqual - 64)) | (1 << (CParser.LeftShift - 64)) | (1 << (CParser.RightShift - 64)) | (1 << (CParser.Plus - 64)) | (1 << (CParser.PlusPlus - 64)) | (1 << (CParser.Minus - 64)) | (1 << (CParser.MinusMinus - 64)) | (1 << (CParser.Star - 64)) | (1 << (CParser.Div - 64)) | (1 << (CParser.Mod - 64)) | (1 << (CParser.And - 64)) | (1 << (CParser.Or - 64)) | (1 << (CParser.AndAnd - 64)) | (1 << (CParser.OrOr - 64)) | (1 << (CParser.Caret - 64)) | (1 << (CParser.Not - 64)) | (1 << (CParser.Tilde - 64)) | (1 << (CParser.Question - 64)) | (1 << (CParser.Colon - 64)) | (1 << (CParser.Semi - 64)) | (1 << (CParser.Comma - 64)) | (1 << (CParser.Assign - 64)) | (1 << (CParser.StarAssign - 64)) | (1 << (CParser.DivAssign - 64)) | (1 << (CParser.ModAssign - 64)) | (1 << (CParser.PlusAssign - 64)) | (1 << (CParser.MinusAssign - 64)) | (1 << (CParser.LeftShiftAssign - 64)))) !== 0) || ((((_la - 96)) & ~0x1f) == 0 && ((1 << (_la - 96)) & ((1 << (CParser.RightShiftAssign - 96)) | (1 << (CParser.AndAssign - 96)) | (1 << (CParser.XorAssign - 96)) | (1 << (CParser.OrAssign - 96)) | (1 << (CParser.Equal - 96)) | (1 << (CParser.NotEqual - 96)) | (1 << (CParser.Arrow - 96)) | (1 << (CParser.Dot - 96)) | (1 << (CParser.Ellipsis - 96)) | (1 << (CParser.Identifier - 96)) | (1 << (CParser.Constant - 96)) | (1 << (CParser.DigitSequence - 96)) | (1 << (CParser.StringLiteral - 96)) | (1 << (CParser.ComplexDefine - 96)) | (1 << (CParser.IncludeDirective - 96)) | (1 << (CParser.AsmBlock - 96)) | (1 << (CParser.LineAfterPreprocessing - 96)) | (1 << (CParser.LineDirective - 96)) | (1 << (CParser.PragmaDirective - 96)) | (1 << (CParser.Whitespace - 96)) | (1 << (CParser.Newline - 96)) | (1 << (CParser.BlockComment - 96)) | (1 << (CParser.LineComment - 96)))) !== 0)) {
this.state = 839;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case CParser.T__0:
case CParser.T__1:
case CParser.T__2:
case CParser.T__3:
case CParser.T__4:
case CParser.T__5:
case CParser.T__6:
case CParser.T__7:
case CParser.T__8:
case CParser.T__9:
case CParser.T__10:
case CParser.T__11:
case CParser.T__12:
case CParser.T__13:
case CParser.Auto:
case CParser.Break:
case CParser.Case:
case CParser.Char:
case CParser.Const:
case CParser.Continue:
case CParser.Default:
case CParser.Do:
case CParser.Double:
case CParser.Else:
case CParser.Enum:
case CParser.Extern:
case CParser.Float:
case CParser.For:
case CParser.Goto:
case CParser.If:
case CParser.Inline:
case CParser.Int:
case CParser.Long:
case CParser.Register:
case CParser.Restrict:
case CParser.Return:
case CParser.Short:
case CParser.Signed:
case CParser.Sizeof:
case CParser.Static:
case CParser.Struct:
case CParser.Switch:
case CParser.Typedef:
case CParser.Union:
case CParser.Unsigned:
case CParser.Void:
case CParser.Volatile:
case CParser.While:
case CParser.Alignas:
case CParser.Alignof:
case CParser.Atomic:
case CParser.Bool:
case CParser.Complex:
case CParser.Generic:
case CParser.Imaginary:
case CParser.Noreturn:
case CParser.StaticAssert:
case CParser.ThreadLocal:
case CParser.LeftBracket:
case CParser.RightBracket:
case CParser.LeftBrace:
case CParser.RightBrace:
case CParser.Less:
case CParser.LessEqual:
case CParser.Greater:
case CParser.GreaterEqual:
case CParser.LeftShift:
case CParser.RightShift:
case CParser.Plus:
case CParser.PlusPlus:
case CParser.Minus:
case CParser.MinusMinus:
case CParser.Star:
case CParser.Div:
case CParser.Mod:
case CParser.And:
case CParser.Or:
case CParser.AndAnd:
case CParser.OrOr:
case CParser.Caret:
case CParser.Not:
case CParser.Tilde:
case CParser.Question:
case CParser.Colon:
case CParser.Semi:
case CParser.Comma:
case CParser.Assign:
case CParser.StarAssign:
case CParser.DivAssign:
case CParser.ModAssign:
case CParser.PlusAssign:
case CParser.MinusAssign:
case CParser.LeftShiftAssign:
case CParser.RightShiftAssign:
case CParser.AndAssign:
case CParser.XorAssign:
case CParser.OrAssign:
case CParser.Equal:
case CParser.NotEqual:
case CParser.Arrow:
case CParser.Dot:
case CParser.Ellipsis:
case CParser.Identifier:
case CParser.Constant:
case CParser.DigitSequence:
case CParser.StringLiteral:
case CParser.ComplexDefine:
case CParser.IncludeDirective:
case CParser.AsmBlock:
case CParser.LineAfterPreprocessing:
case CParser.LineDirective:
case CParser.PragmaDirective:
case CParser.Whitespace:
case CParser.Newline:
case CParser.BlockComment:
case CParser.LineComment:
this.state = 834;
_la = this._input.LA(1);
if(_la<=0 || _la===CParser.LeftParen || _la===CParser.RightParen) {
this._errHandler.recoverInline(this);
}
else {
this._errHandler.reportMatch(this);
this.consume();
}
break;
case CParser.LeftParen:
this.state = 835;
this.match(CParser.LeftParen);
this.state = 836;
this.nestedParenthesesBlock();
this.state = 837;
this.match(CParser.RightParen);
break;
default:
throw new antlr4.error.NoViableAltException(this);
}
this.state = 843;
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 PointerContext(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 = CParser.RULE_pointer;
return this;
}
PointerContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
PointerContext.prototype.constructor = PointerContext;
PointerContext.prototype.Star = function() {
return this.getToken(CParser.Star, 0);
};
PointerContext.prototype.typeQualifierList = function() {
return this.getTypedRuleContext(TypeQualifierListContext,0);
};
PointerContext.prototype.pointer = function() {
return this.getTypedRuleContext(PointerContext,0);
};
PointerContext.prototype.Caret = function() {
return this.getToken(CParser.Caret, 0);
};
PointerContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterPointer(this);
}
};
PointerContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitPointer(this);
}
};
CParser.PointerContext = PointerContext;
CParser.prototype.pointer = function() {
var localctx = new PointerContext(this, this._ctx, this.state);
this.enterRule(localctx, 108, CParser.RULE_pointer);
var _la = 0; // Token type
try {
this.state = 862;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,80,this._ctx);
switch(la_) {
case 1:
this.enterOuterAlt(localctx, 1);
this.state = 844;
this.match(CParser.Star);
this.state = 846;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,76,this._ctx);
if(la_===1) {
this.state = 845;
this.typeQualifierList(0);
}
break;
case 2:
this.enterOuterAlt(localctx, 2);
this.state = 848;
this.match(CParser.Star);
this.state = 850;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===CParser.Const || ((((_la - 35)) & ~0x1f) == 0 && ((1 << (_la - 35)) & ((1 << (CParser.Restrict - 35)) | (1 << (CParser.Volatile - 35)) | (1 << (CParser.Atomic - 35)))) !== 0)) {
this.state = 849;
this.typeQualifierList(0);
}
this.state = 852;
this.pointer();
break;
case 3:
this.enterOuterAlt(localctx, 3);
this.state = 853;
this.match(CParser.Caret);
this.state = 855;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,78,this._ctx);
if(la_===1) {
this.state = 854;
this.typeQualifierList(0);
}
break;
case 4:
this.enterOuterAlt(localctx, 4);
this.state = 857;
this.match(CParser.Caret);
this.state = 859;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===CParser.Const || ((((_la - 35)) & ~0x1f) == 0 && ((1 << (_la - 35)) & ((1 << (CParser.Restrict - 35)) | (1 << (CParser.Volatile - 35)) | (1 << (CParser.Atomic - 35)))) !== 0)) {
this.state = 858;
this.typeQualifierList(0);
}
this.state = 861;
this.pointer();
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 TypeQualifierListContext(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 = CParser.RULE_typeQualifierList;
return this;
}
TypeQualifierListContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
TypeQualifierListContext.prototype.constructor = TypeQualifierListContext;
TypeQualifierListContext.prototype.typeQualifier = function() {
return this.getTypedRuleContext(TypeQualifierContext,0);
};
TypeQualifierListContext.prototype.typeQualifierList = function() {
return this.getTypedRuleContext(TypeQualifierListContext,0);
};
TypeQualifierListContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterTypeQualifierList(this);
}
};
TypeQualifierListContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitTypeQualifierList(this);
}
};
CParser.prototype.typeQualifierList = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new TypeQualifierListContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 110;
this.enterRecursionRule(localctx, 110, CParser.RULE_typeQualifierList, _p);
try {
this.enterOuterAlt(localctx, 1);
this.state = 865;
this.typeQualifier();
this._ctx.stop = this._input.LT(-1);
this.state = 871;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,81,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
if(this._parseListeners!==null) {
this.triggerExitRuleEvent();
}
_prevctx = localctx;
localctx = new TypeQualifierListContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CParser.RULE_typeQualifierList);
this.state = 867;
if (!( this.precpred(this._ctx, 1))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
}
this.state = 868;
this.typeQualifier();
}
this.state = 873;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,81,this._ctx);
}
} catch( error) {
if(error instanceof antlr4.error.RecognitionException) {
localctx.exception = error;
this._errHandler.reportError(this, error);
this._errHandler.recover(this, error);
} else {
throw error;
}
} finally {
this.unrollRecursionContexts(_parentctx)
}
return localctx;
};
function ParameterTypeListContext(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 = CParser.RULE_parameterTypeList;
return this;
}
ParameterTypeListContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
ParameterTypeListContext.prototype.constructor = ParameterTypeListContext;
ParameterTypeListContext.prototype.parameterList = function() {
return this.getTypedRuleContext(ParameterListContext,0);
};
ParameterTypeListContext.prototype.Comma = function() {
return this.getToken(CParser.Comma, 0);
};
ParameterTypeListContext.prototype.Ellipsis = function() {
return this.getToken(CParser.Ellipsis, 0);
};
ParameterTypeListContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterParameterTypeList(this);
}
};
ParameterTypeListContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitParameterTypeList(this);
}
};
CParser.ParameterTypeListContext = ParameterTypeListContext;
CParser.prototype.parameterTypeList = function() {
var localctx = new ParameterTypeListContext(this, this._ctx, this.state);
this.enterRule(localctx, 112, CParser.RULE_parameterTypeList);
try {
this.state = 879;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,82,this._ctx);
switch(la_) {
case 1:
this.enterOuterAlt(localctx, 1);
this.state = 874;
this.parameterList(0);
break;
case 2:
this.enterOuterAlt(localctx, 2);
this.state = 875;
this.parameterList(0);
this.state = 876;
this.match(CParser.Comma);
this.state = 877;
this.match(CParser.Ellipsis);
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 ParameterListContext(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 = CParser.RULE_parameterList;
return this;
}
ParameterListContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
ParameterListContext.prototype.constructor = ParameterListContext;
ParameterListContext.prototype.parameterDeclaration = function() {
return this.getTypedRuleContext(ParameterDeclarationContext,0);
};
ParameterListContext.prototype.parameterList = function() {
return this.getTypedRuleContext(ParameterListContext,0);
};
ParameterListContext.prototype.Comma = function() {
return this.getToken(CParser.Comma, 0);
};
ParameterListContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterParameterList(this);
}
};
ParameterListContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitParameterList(this);
}
};
CParser.prototype.parameterList = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new ParameterListContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 114;
this.enterRecursionRule(localctx, 114, CParser.RULE_parameterList, _p);
try {
this.enterOuterAlt(localctx, 1);
this.state = 882;
this.parameterDeclaration();
this._ctx.stop = this._input.LT(-1);
this.state = 889;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,83,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
if(this._parseListeners!==null) {
this.triggerExitRuleEvent();
}
_prevctx = localctx;
localctx = new ParameterListContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CParser.RULE_parameterList);
this.state = 884;
if (!( this.precpred(this._ctx, 1))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
}
this.state = 885;
this.match(CParser.Comma);
this.state = 886;
this.parameterDeclaration();
}
this.state = 891;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,83,this._ctx);
}
} catch( error) {
if(error instanceof antlr4.error.RecognitionException) {
localctx.exception = error;
this._errHandler.reportError(this, error);
this._errHandler.recover(this, error);
} else {
throw error;
}
} finally {
this.unrollRecursionContexts(_parentctx)
}
return localctx;
};
function ParameterDeclarationContext(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 = CParser.RULE_parameterDeclaration;
return this;
}
ParameterDeclarationContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
ParameterDeclarationContext.prototype.constructor = ParameterDeclarationContext;
ParameterDeclarationContext.prototype.declarationSpecifiers = function() {
return this.getTypedRuleContext(DeclarationSpecifiersContext,0);
};
ParameterDeclarationContext.prototype.declarator = function() {
return this.getTypedRuleContext(DeclaratorContext,0);
};
ParameterDeclarationContext.prototype.declarationSpecifiers2 = function() {
return this.getTypedRuleContext(DeclarationSpecifiers2Context,0);
};
ParameterDeclarationContext.prototype.abstractDeclarator = function() {
return this.getTypedRuleContext(AbstractDeclaratorContext,0);
};
ParameterDeclarationContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterParameterDeclaration(this);
}
};
ParameterDeclarationContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitParameterDeclaration(this);
}
};
CParser.ParameterDeclarationContext = ParameterDeclarationContext;
CParser.prototype.parameterDeclaration = function() {
var localctx = new ParameterDeclarationContext(this, this._ctx, this.state);
this.enterRule(localctx, 116, CParser.RULE_parameterDeclaration);
try {
this.state = 899;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,85,this._ctx);
switch(la_) {
case 1:
this.enterOuterAlt(localctx, 1);
this.state = 892;
this.declarationSpecifiers();
this.state = 893;
this.declarator();
break;
case 2:
this.enterOuterAlt(localctx, 2);
this.state = 895;
this.declarationSpecifiers2();
this.state = 897;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,84,this._ctx);
if(la_===1) {
this.state = 896;
this.abstractDeclarator();
}
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 IdentifierListContext(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 = CParser.RULE_identifierList;
return this;
}
IdentifierListContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
IdentifierListContext.prototype.constructor = IdentifierListContext;
IdentifierListContext.prototype.Identifier = function() {
return this.getToken(CParser.Identifier, 0);
};
IdentifierListContext.prototype.identifierList = function() {
return this.getTypedRuleContext(IdentifierListContext,0);
};
IdentifierListContext.prototype.Comma = function() {
return this.getToken(CParser.Comma, 0);
};
IdentifierListContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterIdentifierList(this);
}
};
IdentifierListContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitIdentifierList(this);
}
};
CParser.prototype.identifierList = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new IdentifierListContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 118;
this.enterRecursionRule(localctx, 118, CParser.RULE_identifierList, _p);
try {
this.enterOuterAlt(localctx, 1);
this.state = 902;
this.match(CParser.Identifier);
this._ctx.stop = this._input.LT(-1);
this.state = 909;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,86,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
if(this._parseListeners!==null) {
this.triggerExitRuleEvent();
}
_prevctx = localctx;
localctx = new IdentifierListContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CParser.RULE_identifierList);
this.state = 904;
if (!( this.precpred(this._ctx, 1))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
}
this.state = 905;
this.match(CParser.Comma);
this.state = 906;
this.match(CParser.Identifier);
}
this.state = 911;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,86,this._ctx);
}
} catch( error) {
if(error instanceof antlr4.error.RecognitionException) {
localctx.exception = error;
this._errHandler.reportError(this, error);
this._errHandler.recover(this, error);
} else {
throw error;
}
} finally {
this.unrollRecursionContexts(_parentctx)
}
return localctx;
};
function TypeNameContext(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 = CParser.RULE_typeName;
return this;
}
TypeNameContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
TypeNameContext.prototype.constructor = TypeNameContext;
TypeNameContext.prototype.specifierQualifierList = function() {
return this.getTypedRuleContext(SpecifierQualifierListContext,0);
};
TypeNameContext.prototype.abstractDeclarator = function() {
return this.getTypedRuleContext(AbstractDeclaratorContext,0);
};
TypeNameContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterTypeName(this);
}
};
TypeNameContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitTypeName(this);
}
};
CParser.TypeNameContext = TypeNameContext;
CParser.prototype.typeName = function() {
var localctx = new TypeNameContext(this, this._ctx, this.state);
this.enterRule(localctx, 120, CParser.RULE_typeName);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 912;
this.specifierQualifierList();
this.state = 914;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(((((_la - 59)) & ~0x1f) == 0 && ((1 << (_la - 59)) & ((1 << (CParser.LeftParen - 59)) | (1 << (CParser.LeftBracket - 59)) | (1 << (CParser.Star - 59)) | (1 << (CParser.Caret - 59)))) !== 0)) {
this.state = 913;
this.abstractDeclarator();
}
} 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 AbstractDeclaratorContext(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 = CParser.RULE_abstractDeclarator;
return this;
}
AbstractDeclaratorContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
AbstractDeclaratorContext.prototype.constructor = AbstractDeclaratorContext;
AbstractDeclaratorContext.prototype.pointer = function() {
return this.getTypedRuleContext(PointerContext,0);
};
AbstractDeclaratorContext.prototype.directAbstractDeclarator = function() {
return this.getTypedRuleContext(DirectAbstractDeclaratorContext,0);
};
AbstractDeclaratorContext.prototype.gccDeclaratorExtension = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(GccDeclaratorExtensionContext);
} else {
return this.getTypedRuleContext(GccDeclaratorExtensionContext,i);
}
};
AbstractDeclaratorContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterAbstractDeclarator(this);
}
};
AbstractDeclaratorContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitAbstractDeclarator(this);
}
};
CParser.AbstractDeclaratorContext = AbstractDeclaratorContext;
CParser.prototype.abstractDeclarator = function() {
var localctx = new AbstractDeclaratorContext(this, this._ctx, this.state);
this.enterRule(localctx, 122, CParser.RULE_abstractDeclarator);
var _la = 0; // Token type
try {
this.state = 927;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,90,this._ctx);
switch(la_) {
case 1:
this.enterOuterAlt(localctx, 1);
this.state = 916;
this.pointer();
break;
case 2:
this.enterOuterAlt(localctx, 2);
this.state = 918;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===CParser.Star || _la===CParser.Caret) {
this.state = 917;
this.pointer();
}
this.state = 920;
this.directAbstractDeclarator(0);
this.state = 924;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,89,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
this.state = 921;
this.gccDeclaratorExtension();
}
this.state = 926;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,89,this._ctx);
}
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 DirectAbstractDeclaratorContext(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 = CParser.RULE_directAbstractDeclarator;
return this;
}
DirectAbstractDeclaratorContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
DirectAbstractDeclaratorContext.prototype.constructor = DirectAbstractDeclaratorContext;
DirectAbstractDeclaratorContext.prototype.LeftParen = function() {
return this.getToken(CParser.LeftParen, 0);
};
DirectAbstractDeclaratorContext.prototype.abstractDeclarator = function() {
return this.getTypedRuleContext(AbstractDeclaratorContext,0);
};
DirectAbstractDeclaratorContext.prototype.RightParen = function() {
return this.getToken(CParser.RightParen, 0);
};
DirectAbstractDeclaratorContext.prototype.gccDeclaratorExtension = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(GccDeclaratorExtensionContext);
} else {
return this.getTypedRuleContext(GccDeclaratorExtensionContext,i);
}
};
DirectAbstractDeclaratorContext.prototype.LeftBracket = function() {
return this.getToken(CParser.LeftBracket, 0);
};
DirectAbstractDeclaratorContext.prototype.RightBracket = function() {
return this.getToken(CParser.RightBracket, 0);
};
DirectAbstractDeclaratorContext.prototype.typeQualifierList = function() {
return this.getTypedRuleContext(TypeQualifierListContext,0);
};
DirectAbstractDeclaratorContext.prototype.assignmentExpression = function() {
return this.getTypedRuleContext(AssignmentExpressionContext,0);
};
DirectAbstractDeclaratorContext.prototype.Static = function() {
return this.getToken(CParser.Static, 0);
};
DirectAbstractDeclaratorContext.prototype.Star = function() {
return this.getToken(CParser.Star, 0);
};
DirectAbstractDeclaratorContext.prototype.parameterTypeList = function() {
return this.getTypedRuleContext(ParameterTypeListContext,0);
};
DirectAbstractDeclaratorContext.prototype.directAbstractDeclarator = function() {
return this.getTypedRuleContext(DirectAbstractDeclaratorContext,0);
};
DirectAbstractDeclaratorContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterDirectAbstractDeclarator(this);
}
};
DirectAbstractDeclaratorContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitDirectAbstractDeclarator(this);
}
};
CParser.prototype.directAbstractDeclarator = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new DirectAbstractDeclaratorContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 124;
this.enterRecursionRule(localctx, 124, CParser.RULE_directAbstractDeclarator, _p);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 975;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,97,this._ctx);
switch(la_) {
case 1:
this.state = 930;
this.match(CParser.LeftParen);
this.state = 931;
this.abstractDeclarator();
this.state = 932;
this.match(CParser.RightParen);
this.state = 936;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,91,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
this.state = 933;
this.gccDeclaratorExtension();
}
this.state = 938;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,91,this._ctx);
}
break;
case 2:
this.state = 939;
this.match(CParser.LeftBracket);
this.state = 941;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===CParser.Const || ((((_la - 35)) & ~0x1f) == 0 && ((1 << (_la - 35)) & ((1 << (CParser.Restrict - 35)) | (1 << (CParser.Volatile - 35)) | (1 << (CParser.Atomic - 35)))) !== 0)) {
this.state = 940;
this.typeQualifierList(0);
}
this.state = 944;
this._errHandler.sync(this);
_la = this._input.LA(1);
if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << CParser.T__0) | (1 << CParser.T__1) | (1 << CParser.T__2))) !== 0) || ((((_la - 39)) & ~0x1f) == 0 && ((1 << (_la - 39)) & ((1 << (CParser.Sizeof - 39)) | (1 << (CParser.Alignof - 39)) | (1 << (CParser.Generic - 39)) | (1 << (CParser.LeftParen - 39)))) !== 0) || ((((_la - 71)) & ~0x1f) == 0 && ((1 << (_la - 71)) & ((1 << (CParser.Plus - 71)) | (1 << (CParser.PlusPlus - 71)) | (1 << (CParser.Minus - 71)) | (1 << (CParser.MinusMinus - 71)) | (1 << (CParser.Star - 71)) | (1 << (CParser.And - 71)) | (1 << (CParser.AndAnd - 71)) | (1 << (CParser.Not - 71)) | (1 << (CParser.Tilde - 71)))) !== 0) || ((((_la - 105)) & ~0x1f) == 0 && ((1 << (_la - 105)) & ((1 << (CParser.Identifier - 105)) | (1 << (CParser.Constant - 105)) | (1 << (CParser.DigitSequence - 105)) | (1 << (CParser.StringLiteral - 105)))) !== 0)) {
this.state = 943;
this.assignmentExpression();
}
this.state = 946;
this.match(CParser.RightBracket);
break;
case 3:
this.state = 947;
this.match(CParser.LeftBracket);
this.state = 948;
this.match(CParser.Static);
this.state = 950;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===CParser.Const || ((((_la - 35)) & ~0x1f) == 0 && ((1 << (_la - 35)) & ((1 << (CParser.Restrict - 35)) | (1 << (CParser.Volatile - 35)) | (1 << (CParser.Atomic - 35)))) !== 0)) {
this.state = 949;
this.typeQualifierList(0);
}
this.state = 952;
this.assignmentExpression();
this.state = 953;
this.match(CParser.RightBracket);
break;
case 4:
this.state = 955;
this.match(CParser.LeftBracket);
this.state = 956;
this.typeQualifierList(0);
this.state = 957;
this.match(CParser.Static);
this.state = 958;
this.assignmentExpression();
this.state = 959;
this.match(CParser.RightBracket);
break;
case 5:
this.state = 961;
this.match(CParser.LeftBracket);
this.state = 962;
this.match(CParser.Star);
this.state = 963;
this.match(CParser.RightBracket);
break;
case 6:
this.state = 964;
this.match(CParser.LeftParen);
this.state = 966;
this._errHandler.sync(this);
_la = this._input.LA(1);
if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << CParser.T__0) | (1 << CParser.T__3) | (1 << CParser.T__4) | (1 << CParser.T__5) | (1 << CParser.T__6) | (1 << CParser.T__7) | (1 << CParser.T__8) | (1 << CParser.T__9) | (1 << CParser.T__11) | (1 << CParser.Auto) | (1 << CParser.Char) | (1 << CParser.Const) | (1 << CParser.Double) | (1 << CParser.Enum) | (1 << CParser.Extern) | (1 << CParser.Float) | (1 << CParser.Inline))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (CParser.Int - 32)) | (1 << (CParser.Long - 32)) | (1 << (CParser.Register - 32)) | (1 << (CParser.Restrict - 32)) | (1 << (CParser.Short - 32)) | (1 << (CParser.Signed - 32)) | (1 << (CParser.Static - 32)) | (1 << (CParser.Struct - 32)) | (1 << (CParser.Typedef - 32)) | (1 << (CParser.Union - 32)) | (1 << (CParser.Unsigned - 32)) | (1 << (CParser.Void - 32)) | (1 << (CParser.Volatile - 32)) | (1 << (CParser.Alignas - 32)) | (1 << (CParser.Atomic - 32)) | (1 << (CParser.Bool - 32)) | (1 << (CParser.Complex - 32)) | (1 << (CParser.Noreturn - 32)) | (1 << (CParser.ThreadLocal - 32)))) !== 0) || _la===CParser.Identifier) {
this.state = 965;
this.parameterTypeList();
}
this.state = 968;
this.match(CParser.RightParen);
this.state = 972;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,96,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
this.state = 969;
this.gccDeclaratorExtension();
}
this.state = 974;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,96,this._ctx);
}
break;
}
this._ctx.stop = this._input.LT(-1);
this.state = 1020;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,104,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
if(this._parseListeners!==null) {
this.triggerExitRuleEvent();
}
_prevctx = localctx;
this.state = 1018;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,103,this._ctx);
switch(la_) {
case 1:
localctx = new DirectAbstractDeclaratorContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CParser.RULE_directAbstractDeclarator);
this.state = 977;
if (!( this.precpred(this._ctx, 5))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 5)");
}
this.state = 978;
this.match(CParser.LeftBracket);
this.state = 980;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===CParser.Const || ((((_la - 35)) & ~0x1f) == 0 && ((1 << (_la - 35)) & ((1 << (CParser.Restrict - 35)) | (1 << (CParser.Volatile - 35)) | (1 << (CParser.Atomic - 35)))) !== 0)) {
this.state = 979;
this.typeQualifierList(0);
}
this.state = 983;
this._errHandler.sync(this);
_la = this._input.LA(1);
if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << CParser.T__0) | (1 << CParser.T__1) | (1 << CParser.T__2))) !== 0) || ((((_la - 39)) & ~0x1f) == 0 && ((1 << (_la - 39)) & ((1 << (CParser.Sizeof - 39)) | (1 << (CParser.Alignof - 39)) | (1 << (CParser.Generic - 39)) | (1 << (CParser.LeftParen - 39)))) !== 0) || ((((_la - 71)) & ~0x1f) == 0 && ((1 << (_la - 71)) & ((1 << (CParser.Plus - 71)) | (1 << (CParser.PlusPlus - 71)) | (1 << (CParser.Minus - 71)) | (1 << (CParser.MinusMinus - 71)) | (1 << (CParser.Star - 71)) | (1 << (CParser.And - 71)) | (1 << (CParser.AndAnd - 71)) | (1 << (CParser.Not - 71)) | (1 << (CParser.Tilde - 71)))) !== 0) || ((((_la - 105)) & ~0x1f) == 0 && ((1 << (_la - 105)) & ((1 << (CParser.Identifier - 105)) | (1 << (CParser.Constant - 105)) | (1 << (CParser.DigitSequence - 105)) | (1 << (CParser.StringLiteral - 105)))) !== 0)) {
this.state = 982;
this.assignmentExpression();
}
this.state = 985;
this.match(CParser.RightBracket);
break;
case 2:
localctx = new DirectAbstractDeclaratorContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CParser.RULE_directAbstractDeclarator);
this.state = 986;
if (!( this.precpred(this._ctx, 4))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 4)");
}
this.state = 987;
this.match(CParser.LeftBracket);
this.state = 988;
this.match(CParser.Static);
this.state = 990;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===CParser.Const || ((((_la - 35)) & ~0x1f) == 0 && ((1 << (_la - 35)) & ((1 << (CParser.Restrict - 35)) | (1 << (CParser.Volatile - 35)) | (1 << (CParser.Atomic - 35)))) !== 0)) {
this.state = 989;
this.typeQualifierList(0);
}
this.state = 992;
this.assignmentExpression();
this.state = 993;
this.match(CParser.RightBracket);
break;
case 3:
localctx = new DirectAbstractDeclaratorContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CParser.RULE_directAbstractDeclarator);
this.state = 995;
if (!( this.precpred(this._ctx, 3))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 3)");
}
this.state = 996;
this.match(CParser.LeftBracket);
this.state = 997;
this.typeQualifierList(0);
this.state = 998;
this.match(CParser.Static);
this.state = 999;
this.assignmentExpression();
this.state = 1000;
this.match(CParser.RightBracket);
break;
case 4:
localctx = new DirectAbstractDeclaratorContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CParser.RULE_directAbstractDeclarator);
this.state = 1002;
if (!( this.precpred(this._ctx, 2))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 2)");
}
this.state = 1003;
this.match(CParser.LeftBracket);
this.state = 1004;
this.match(CParser.Star);
this.state = 1005;
this.match(CParser.RightBracket);
break;
case 5:
localctx = new DirectAbstractDeclaratorContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CParser.RULE_directAbstractDeclarator);
this.state = 1006;
if (!( this.precpred(this._ctx, 1))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
}
this.state = 1007;
this.match(CParser.LeftParen);
this.state = 1009;
this._errHandler.sync(this);
_la = this._input.LA(1);
if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << CParser.T__0) | (1 << CParser.T__3) | (1 << CParser.T__4) | (1 << CParser.T__5) | (1 << CParser.T__6) | (1 << CParser.T__7) | (1 << CParser.T__8) | (1 << CParser.T__9) | (1 << CParser.T__11) | (1 << CParser.Auto) | (1 << CParser.Char) | (1 << CParser.Const) | (1 << CParser.Double) | (1 << CParser.Enum) | (1 << CParser.Extern) | (1 << CParser.Float) | (1 << CParser.Inline))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (CParser.Int - 32)) | (1 << (CParser.Long - 32)) | (1 << (CParser.Register - 32)) | (1 << (CParser.Restrict - 32)) | (1 << (CParser.Short - 32)) | (1 << (CParser.Signed - 32)) | (1 << (CParser.Static - 32)) | (1 << (CParser.Struct - 32)) | (1 << (CParser.Typedef - 32)) | (1 << (CParser.Union - 32)) | (1 << (CParser.Unsigned - 32)) | (1 << (CParser.Void - 32)) | (1 << (CParser.Volatile - 32)) | (1 << (CParser.Alignas - 32)) | (1 << (CParser.Atomic - 32)) | (1 << (CParser.Bool - 32)) | (1 << (CParser.Complex - 32)) | (1 << (CParser.Noreturn - 32)) | (1 << (CParser.ThreadLocal - 32)))) !== 0) || _la===CParser.Identifier) {
this.state = 1008;
this.parameterTypeList();
}
this.state = 1011;
this.match(CParser.RightParen);
this.state = 1015;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,102,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
this.state = 1012;
this.gccDeclaratorExtension();
}
this.state = 1017;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,102,this._ctx);
}
break;
}
}
this.state = 1022;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,104,this._ctx);
}
} catch( error) {
if(error instanceof antlr4.error.RecognitionException) {
localctx.exception = error;
this._errHandler.reportError(this, error);
this._errHandler.recover(this, error);
} else {
throw error;
}
} finally {
this.unrollRecursionContexts(_parentctx)
}
return localctx;
};
function TypedefNameContext(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 = CParser.RULE_typedefName;
return this;
}
TypedefNameContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
TypedefNameContext.prototype.constructor = TypedefNameContext;
TypedefNameContext.prototype.Identifier = function() {
return this.getToken(CParser.Identifier, 0);
};
TypedefNameContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterTypedefName(this);
}
};
TypedefNameContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitTypedefName(this);
}
};
CParser.TypedefNameContext = TypedefNameContext;
CParser.prototype.typedefName = function() {
var localctx = new TypedefNameContext(this, this._ctx, this.state);
this.enterRule(localctx, 126, CParser.RULE_typedefName);
try {
this.enterOuterAlt(localctx, 1);
this.state = 1023;
this.match(CParser.Identifier);
} 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 InitializerContext(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 = CParser.RULE_initializer;
return this;
}
InitializerContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
InitializerContext.prototype.constructor = InitializerContext;
InitializerContext.prototype.assignmentExpression = function() {
return this.getTypedRuleContext(AssignmentExpressionContext,0);
};
InitializerContext.prototype.LeftBrace = function() {
return this.getToken(CParser.LeftBrace, 0);
};
InitializerContext.prototype.initializerList = function() {
return this.getTypedRuleContext(InitializerListContext,0);
};
InitializerContext.prototype.RightBrace = function() {
return this.getToken(CParser.RightBrace, 0);
};
InitializerContext.prototype.Comma = function() {
return this.getToken(CParser.Comma, 0);
};
InitializerContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterInitializer(this);
}
};
InitializerContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitInitializer(this);
}
};
CParser.InitializerContext = InitializerContext;
CParser.prototype.initializer = function() {
var localctx = new InitializerContext(this, this._ctx, this.state);
this.enterRule(localctx, 128, CParser.RULE_initializer);
try {
this.state = 1035;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,105,this._ctx);
switch(la_) {
case 1:
this.enterOuterAlt(localctx, 1);
this.state = 1025;
this.assignmentExpression();
break;
case 2:
this.enterOuterAlt(localctx, 2);
this.state = 1026;
this.match(CParser.LeftBrace);
this.state = 1027;
this.initializerList(0);
this.state = 1028;
this.match(CParser.RightBrace);
break;
case 3:
this.enterOuterAlt(localctx, 3);
this.state = 1030;
this.match(CParser.LeftBrace);
this.state = 1031;
this.initializerList(0);
this.state = 1032;
this.match(CParser.Comma);
this.state = 1033;
this.match(CParser.RightBrace);
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 InitializerListContext(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 = CParser.RULE_initializerList;
return this;
}
InitializerListContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
InitializerListContext.prototype.constructor = InitializerListContext;
InitializerListContext.prototype.initializer = function() {
return this.getTypedRuleContext(InitializerContext,0);
};
InitializerListContext.prototype.designation = function() {
return this.getTypedRuleContext(DesignationContext,0);
};
InitializerListContext.prototype.initializerList = function() {
return this.getTypedRuleContext(InitializerListContext,0);
};
InitializerListContext.prototype.Comma = function() {
return this.getToken(CParser.Comma, 0);
};
InitializerListContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterInitializerList(this);
}
};
InitializerListContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitInitializerList(this);
}
};
CParser.prototype.initializerList = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new InitializerListContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 130;
this.enterRecursionRule(localctx, 130, CParser.RULE_initializerList, _p);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 1039;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===CParser.LeftBracket || _la===CParser.Dot) {
this.state = 1038;
this.designation();
}
this.state = 1041;
this.initializer();
this._ctx.stop = this._input.LT(-1);
this.state = 1051;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,108,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
if(this._parseListeners!==null) {
this.triggerExitRuleEvent();
}
_prevctx = localctx;
localctx = new InitializerListContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CParser.RULE_initializerList);
this.state = 1043;
if (!( this.precpred(this._ctx, 1))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
}
this.state = 1044;
this.match(CParser.Comma);
this.state = 1046;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===CParser.LeftBracket || _la===CParser.Dot) {
this.state = 1045;
this.designation();
}
this.state = 1048;
this.initializer();
}
this.state = 1053;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,108,this._ctx);
}
} catch( error) {
if(error instanceof antlr4.error.RecognitionException) {
localctx.exception = error;
this._errHandler.reportError(this, error);
this._errHandler.recover(this, error);
} else {
throw error;
}
} finally {
this.unrollRecursionContexts(_parentctx)
}
return localctx;
};
function DesignationContext(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 = CParser.RULE_designation;
return this;
}
DesignationContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
DesignationContext.prototype.constructor = DesignationContext;
DesignationContext.prototype.designatorList = function() {
return this.getTypedRuleContext(DesignatorListContext,0);
};
DesignationContext.prototype.Assign = function() {
return this.getToken(CParser.Assign, 0);
};
DesignationContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterDesignation(this);
}
};
DesignationContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitDesignation(this);
}
};
CParser.DesignationContext = DesignationContext;
CParser.prototype.designation = function() {
var localctx = new DesignationContext(this, this._ctx, this.state);
this.enterRule(localctx, 132, CParser.RULE_designation);
try {
this.enterOuterAlt(localctx, 1);
this.state = 1054;
this.designatorList(0);
this.state = 1055;
this.match(CParser.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 DesignatorListContext(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 = CParser.RULE_designatorList;
return this;
}
DesignatorListContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
DesignatorListContext.prototype.constructor = DesignatorListContext;
DesignatorListContext.prototype.designator = function() {
return this.getTypedRuleContext(DesignatorContext,0);
};
DesignatorListContext.prototype.designatorList = function() {
return this.getTypedRuleContext(DesignatorListContext,0);
};
DesignatorListContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterDesignatorList(this);
}
};
DesignatorListContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitDesignatorList(this);
}
};
CParser.prototype.designatorList = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new DesignatorListContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 134;
this.enterRecursionRule(localctx, 134, CParser.RULE_designatorList, _p);
try {
this.enterOuterAlt(localctx, 1);
this.state = 1058;
this.designator();
this._ctx.stop = this._input.LT(-1);
this.state = 1064;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,109,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
if(this._parseListeners!==null) {
this.triggerExitRuleEvent();
}
_prevctx = localctx;
localctx = new DesignatorListContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CParser.RULE_designatorList);
this.state = 1060;
if (!( this.precpred(this._ctx, 1))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
}
this.state = 1061;
this.designator();
}
this.state = 1066;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,109,this._ctx);
}
} catch( error) {
if(error instanceof antlr4.error.RecognitionException) {
localctx.exception = error;
this._errHandler.reportError(this, error);
this._errHandler.recover(this, error);
} else {
throw error;
}
} finally {
this.unrollRecursionContexts(_parentctx)
}
return localctx;
};
function DesignatorContext(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 = CParser.RULE_designator;
return this;
}
DesignatorContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
DesignatorContext.prototype.constructor = DesignatorContext;
DesignatorContext.prototype.LeftBracket = function() {
return this.getToken(CParser.LeftBracket, 0);
};
DesignatorContext.prototype.constantExpression = function() {
return this.getTypedRuleContext(ConstantExpressionContext,0);
};
DesignatorContext.prototype.RightBracket = function() {
return this.getToken(CParser.RightBracket, 0);
};
DesignatorContext.prototype.Dot = function() {
return this.getToken(CParser.Dot, 0);
};
DesignatorContext.prototype.Identifier = function() {
return this.getToken(CParser.Identifier, 0);
};
DesignatorContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterDesignator(this);
}
};
DesignatorContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitDesignator(this);
}
};
CParser.DesignatorContext = DesignatorContext;
CParser.prototype.designator = function() {
var localctx = new DesignatorContext(this, this._ctx, this.state);
this.enterRule(localctx, 136, CParser.RULE_designator);
try {
this.state = 1073;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case CParser.LeftBracket:
this.enterOuterAlt(localctx, 1);
this.state = 1067;
this.match(CParser.LeftBracket);
this.state = 1068;
this.constantExpression();
this.state = 1069;
this.match(CParser.RightBracket);
break;
case CParser.Dot:
this.enterOuterAlt(localctx, 2);
this.state = 1071;
this.match(CParser.Dot);
this.state = 1072;
this.match(CParser.Identifier);
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 StaticAssertDeclarationContext(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 = CParser.RULE_staticAssertDeclaration;
return this;
}
StaticAssertDeclarationContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
StaticAssertDeclarationContext.prototype.constructor = StaticAssertDeclarationContext;
StaticAssertDeclarationContext.prototype.StaticAssert = function() {
return this.getToken(CParser.StaticAssert, 0);
};
StaticAssertDeclarationContext.prototype.LeftParen = function() {
return this.getToken(CParser.LeftParen, 0);
};
StaticAssertDeclarationContext.prototype.constantExpression = function() {
return this.getTypedRuleContext(ConstantExpressionContext,0);
};
StaticAssertDeclarationContext.prototype.Comma = function() {
return this.getToken(CParser.Comma, 0);
};
StaticAssertDeclarationContext.prototype.RightParen = function() {
return this.getToken(CParser.RightParen, 0);
};
StaticAssertDeclarationContext.prototype.Semi = function() {
return this.getToken(CParser.Semi, 0);
};
StaticAssertDeclarationContext.prototype.StringLiteral = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(CParser.StringLiteral);
} else {
return this.getToken(CParser.StringLiteral, i);
}
};
StaticAssertDeclarationContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterStaticAssertDeclaration(this);
}
};
StaticAssertDeclarationContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitStaticAssertDeclaration(this);
}
};
CParser.StaticAssertDeclarationContext = StaticAssertDeclarationContext;
CParser.prototype.staticAssertDeclaration = function() {
var localctx = new StaticAssertDeclarationContext(this, this._ctx, this.state);
this.enterRule(localctx, 138, CParser.RULE_staticAssertDeclaration);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 1075;
this.match(CParser.StaticAssert);
this.state = 1076;
this.match(CParser.LeftParen);
this.state = 1077;
this.constantExpression();
this.state = 1078;
this.match(CParser.Comma);
this.state = 1080;
this._errHandler.sync(this);
_la = this._input.LA(1);
do {
this.state = 1079;
this.match(CParser.StringLiteral);
this.state = 1082;
this._errHandler.sync(this);
_la = this._input.LA(1);
} while(_la===CParser.StringLiteral);
this.state = 1084;
this.match(CParser.RightParen);
this.state = 1085;
this.match(CParser.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 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 = CParser.RULE_statement;
return this;
}
StatementContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
StatementContext.prototype.constructor = StatementContext;
StatementContext.prototype.labeledStatement = function() {
return this.getTypedRuleContext(LabeledStatementContext,0);
};
StatementContext.prototype.compoundStatement = function() {
return this.getTypedRuleContext(CompoundStatementContext,0);
};
StatementContext.prototype.expressionStatement = function() {
return this.getTypedRuleContext(ExpressionStatementContext,0);
};
StatementContext.prototype.selectionStatement = function() {
return this.getTypedRuleContext(SelectionStatementContext,0);
};
StatementContext.prototype.iterationStatement = function() {
return this.getTypedRuleContext(IterationStatementContext,0);
};
StatementContext.prototype.jumpStatement = function() {
return this.getTypedRuleContext(JumpStatementContext,0);
};
StatementContext.prototype.LeftParen = function() {
return this.getToken(CParser.LeftParen, 0);
};
StatementContext.prototype.RightParen = function() {
return this.getToken(CParser.RightParen, 0);
};
StatementContext.prototype.Semi = function() {
return this.getToken(CParser.Semi, 0);
};
StatementContext.prototype.Volatile = function() {
return this.getToken(CParser.Volatile, 0);
};
StatementContext.prototype.logicalOrExpression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(LogicalOrExpressionContext);
} else {
return this.getTypedRuleContext(LogicalOrExpressionContext,i);
}
};
StatementContext.prototype.Colon = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(CParser.Colon);
} else {
return this.getToken(CParser.Colon, i);
}
};
StatementContext.prototype.Comma = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(CParser.Comma);
} else {
return this.getToken(CParser.Comma, i);
}
};
StatementContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterStatement(this);
}
};
StatementContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitStatement(this);
}
};
CParser.StatementContext = StatementContext;
CParser.prototype.statement = function() {
var localctx = new StatementContext(this, this._ctx, this.state);
this.enterRule(localctx, 140, CParser.RULE_statement);
var _la = 0; // Token type
try {
this.state = 1124;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,117,this._ctx);
switch(la_) {
case 1:
this.enterOuterAlt(localctx, 1);
this.state = 1087;
this.labeledStatement();
break;
case 2:
this.enterOuterAlt(localctx, 2);
this.state = 1088;
this.compoundStatement();
break;
case 3:
this.enterOuterAlt(localctx, 3);
this.state = 1089;
this.expressionStatement();
break;
case 4:
this.enterOuterAlt(localctx, 4);
this.state = 1090;
this.selectionStatement();
break;
case 5:
this.enterOuterAlt(localctx, 5);
this.state = 1091;
this.iterationStatement();
break;
case 6:
this.enterOuterAlt(localctx, 6);
this.state = 1092;
this.jumpStatement();
break;
case 7:
this.enterOuterAlt(localctx, 7);
this.state = 1093;
_la = this._input.LA(1);
if(!(_la===CParser.T__10 || _la===CParser.T__12)) {
this._errHandler.recoverInline(this);
}
else {
this._errHandler.reportMatch(this);
this.consume();
}
this.state = 1094;
_la = this._input.LA(1);
if(!(_la===CParser.T__13 || _la===CParser.Volatile)) {
this._errHandler.recoverInline(this);
}
else {
this._errHandler.reportMatch(this);
this.consume();
}
this.state = 1095;
this.match(CParser.LeftParen);
this.state = 1104;
this._errHandler.sync(this);
_la = this._input.LA(1);
if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << CParser.T__0) | (1 << CParser.T__1) | (1 << CParser.T__2))) !== 0) || ((((_la - 39)) & ~0x1f) == 0 && ((1 << (_la - 39)) & ((1 << (CParser.Sizeof - 39)) | (1 << (CParser.Alignof - 39)) | (1 << (CParser.Generic - 39)) | (1 << (CParser.LeftParen - 39)))) !== 0) || ((((_la - 71)) & ~0x1f) == 0 && ((1 << (_la - 71)) & ((1 << (CParser.Plus - 71)) | (1 << (CParser.PlusPlus - 71)) | (1 << (CParser.Minus - 71)) | (1 << (CParser.MinusMinus - 71)) | (1 << (CParser.Star - 71)) | (1 << (CParser.And - 71)) | (1 << (CParser.AndAnd - 71)) | (1 << (CParser.Not - 71)) | (1 << (CParser.Tilde - 71)))) !== 0) || ((((_la - 105)) & ~0x1f) == 0 && ((1 << (_la - 105)) & ((1 << (CParser.Identifier - 105)) | (1 << (CParser.Constant - 105)) | (1 << (CParser.DigitSequence - 105)) | (1 << (CParser.StringLiteral - 105)))) !== 0)) {
this.state = 1096;
this.logicalOrExpression(0);
this.state = 1101;
this._errHandler.sync(this);
_la = this._input.LA(1);
while(_la===CParser.Comma) {
this.state = 1097;
this.match(CParser.Comma);
this.state = 1098;
this.logicalOrExpression(0);
this.state = 1103;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
}
this.state = 1119;
this._errHandler.sync(this);
_la = this._input.LA(1);
while(_la===CParser.Colon) {
this.state = 1106;
this.match(CParser.Colon);
this.state = 1115;
this._errHandler.sync(this);
_la = this._input.LA(1);
if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << CParser.T__0) | (1 << CParser.T__1) | (1 << CParser.T__2))) !== 0) || ((((_la - 39)) & ~0x1f) == 0 && ((1 << (_la - 39)) & ((1 << (CParser.Sizeof - 39)) | (1 << (CParser.Alignof - 39)) | (1 << (CParser.Generic - 39)) | (1 << (CParser.LeftParen - 39)))) !== 0) || ((((_la - 71)) & ~0x1f) == 0 && ((1 << (_la - 71)) & ((1 << (CParser.Plus - 71)) | (1 << (CParser.PlusPlus - 71)) | (1 << (CParser.Minus - 71)) | (1 << (CParser.MinusMinus - 71)) | (1 << (CParser.Star - 71)) | (1 << (CParser.And - 71)) | (1 << (CParser.AndAnd - 71)) | (1 << (CParser.Not - 71)) | (1 << (CParser.Tilde - 71)))) !== 0) || ((((_la - 105)) & ~0x1f) == 0 && ((1 << (_la - 105)) & ((1 << (CParser.Identifier - 105)) | (1 << (CParser.Constant - 105)) | (1 << (CParser.DigitSequence - 105)) | (1 << (CParser.StringLiteral - 105)))) !== 0)) {
this.state = 1107;
this.logicalOrExpression(0);
this.state = 1112;
this._errHandler.sync(this);
_la = this._input.LA(1);
while(_la===CParser.Comma) {
this.state = 1108;
this.match(CParser.Comma);
this.state = 1109;
this.logicalOrExpression(0);
this.state = 1114;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
}
this.state = 1121;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
this.state = 1122;
this.match(CParser.RightParen);
this.state = 1123;
this.match(CParser.Semi);
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 LabeledStatementContext(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 = CParser.RULE_labeledStatement;
return this;
}
LabeledStatementContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
LabeledStatementContext.prototype.constructor = LabeledStatementContext;
LabeledStatementContext.prototype.Identifier = function() {
return this.getToken(CParser.Identifier, 0);
};
LabeledStatementContext.prototype.Colon = function() {
return this.getToken(CParser.Colon, 0);
};
LabeledStatementContext.prototype.statement = function() {
return this.getTypedRuleContext(StatementContext,0);
};
LabeledStatementContext.prototype.Case = function() {
return this.getToken(CParser.Case, 0);
};
LabeledStatementContext.prototype.constantExpression = function() {
return this.getTypedRuleContext(ConstantExpressionContext,0);
};
LabeledStatementContext.prototype.Default = function() {
return this.getToken(CParser.Default, 0);
};
LabeledStatementContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterLabeledStatement(this);
}
};
LabeledStatementContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitLabeledStatement(this);
}
};
CParser.LabeledStatementContext = LabeledStatementContext;
CParser.prototype.labeledStatement = function() {
var localctx = new LabeledStatementContext(this, this._ctx, this.state);
this.enterRule(localctx, 142, CParser.RULE_labeledStatement);
try {
this.state = 1137;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case CParser.Identifier:
this.enterOuterAlt(localctx, 1);
this.state = 1126;
this.match(CParser.Identifier);
this.state = 1127;
this.match(CParser.Colon);
this.state = 1128;
this.statement();
break;
case CParser.Case:
this.enterOuterAlt(localctx, 2);
this.state = 1129;
this.match(CParser.Case);
this.state = 1130;
this.constantExpression();
this.state = 1131;
this.match(CParser.Colon);
this.state = 1132;
this.statement();
break;
case CParser.Default:
this.enterOuterAlt(localctx, 3);
this.state = 1134;
this.match(CParser.Default);
this.state = 1135;
this.match(CParser.Colon);
this.state = 1136;
this.statement();
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 CompoundStatementContext(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 = CParser.RULE_compoundStatement;
return this;
}
CompoundStatementContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
CompoundStatementContext.prototype.constructor = CompoundStatementContext;
CompoundStatementContext.prototype.LeftBrace = function() {
return this.getToken(CParser.LeftBrace, 0);
};
CompoundStatementContext.prototype.RightBrace = function() {
return this.getToken(CParser.RightBrace, 0);
};
CompoundStatementContext.prototype.blockItemList = function() {
return this.getTypedRuleContext(BlockItemListContext,0);
};
CompoundStatementContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterCompoundStatement(this);
}
};
CompoundStatementContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitCompoundStatement(this);
}
};
CParser.CompoundStatementContext = CompoundStatementContext;
CParser.prototype.compoundStatement = function() {
var localctx = new CompoundStatementContext(this, this._ctx, this.state);
this.enterRule(localctx, 144, CParser.RULE_compoundStatement);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 1139;
this.match(CParser.LeftBrace);
this.state = 1141;
this._errHandler.sync(this);
_la = this._input.LA(1);
if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << CParser.T__0) | (1 << CParser.T__1) | (1 << CParser.T__2) | (1 << CParser.T__3) | (1 << CParser.T__4) | (1 << CParser.T__5) | (1 << CParser.T__6) | (1 << CParser.T__7) | (1 << CParser.T__8) | (1 << CParser.T__9) | (1 << CParser.T__10) | (1 << CParser.T__11) | (1 << CParser.T__12) | (1 << CParser.Auto) | (1 << CParser.Break) | (1 << CParser.Case) | (1 << CParser.Char) | (1 << CParser.Const) | (1 << CParser.Continue) | (1 << CParser.Default) | (1 << CParser.Do) | (1 << CParser.Double) | (1 << CParser.Enum) | (1 << CParser.Extern) | (1 << CParser.Float) | (1 << CParser.For) | (1 << CParser.Goto) | (1 << CParser.If) | (1 << CParser.Inline))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (CParser.Int - 32)) | (1 << (CParser.Long - 32)) | (1 << (CParser.Register - 32)) | (1 << (CParser.Restrict - 32)) | (1 << (CParser.Return - 32)) | (1 << (CParser.Short - 32)) | (1 << (CParser.Signed - 32)) | (1 << (CParser.Sizeof - 32)) | (1 << (CParser.Static - 32)) | (1 << (CParser.Struct - 32)) | (1 << (CParser.Switch - 32)) | (1 << (CParser.Typedef - 32)) | (1 << (CParser.Union - 32)) | (1 << (CParser.Unsigned - 32)) | (1 << (CParser.Void - 32)) | (1 << (CParser.Volatile - 32)) | (1 << (CParser.While - 32)) | (1 << (CParser.Alignas - 32)) | (1 << (CParser.Alignof - 32)) | (1 << (CParser.Atomic - 32)) | (1 << (CParser.Bool - 32)) | (1 << (CParser.Complex - 32)) | (1 << (CParser.Generic - 32)) | (1 << (CParser.Noreturn - 32)) | (1 << (CParser.StaticAssert - 32)) | (1 << (CParser.ThreadLocal - 32)) | (1 << (CParser.LeftParen - 32)) | (1 << (CParser.LeftBrace - 32)))) !== 0) || ((((_la - 71)) & ~0x1f) == 0 && ((1 << (_la - 71)) & ((1 << (CParser.Plus - 71)) | (1 << (CParser.PlusPlus - 71)) | (1 << (CParser.Minus - 71)) | (1 << (CParser.MinusMinus - 71)) | (1 << (CParser.Star - 71)) | (1 << (CParser.And - 71)) | (1 << (CParser.AndAnd - 71)) | (1 << (CParser.Not - 71)) | (1 << (CParser.Tilde - 71)) | (1 << (CParser.Semi - 71)))) !== 0) || ((((_la - 105)) & ~0x1f) == 0 && ((1 << (_la - 105)) & ((1 << (CParser.Identifier - 105)) | (1 << (CParser.Constant - 105)) | (1 << (CParser.DigitSequence - 105)) | (1 << (CParser.StringLiteral - 105)))) !== 0)) {
this.state = 1140;
this.blockItemList(0);
}
this.state = 1143;
this.match(CParser.RightBrace);
} 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 BlockItemListContext(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 = CParser.RULE_blockItemList;
return this;
}
BlockItemListContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
BlockItemListContext.prototype.constructor = BlockItemListContext;
BlockItemListContext.prototype.blockItem = function() {
return this.getTypedRuleContext(BlockItemContext,0);
};
BlockItemListContext.prototype.blockItemList = function() {
return this.getTypedRuleContext(BlockItemListContext,0);
};
BlockItemListContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterBlockItemList(this);
}
};
BlockItemListContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitBlockItemList(this);
}
};
CParser.prototype.blockItemList = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new BlockItemListContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 146;
this.enterRecursionRule(localctx, 146, CParser.RULE_blockItemList, _p);
try {
this.enterOuterAlt(localctx, 1);
this.state = 1146;
this.blockItem();
this._ctx.stop = this._input.LT(-1);
this.state = 1152;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,120,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
if(this._parseListeners!==null) {
this.triggerExitRuleEvent();
}
_prevctx = localctx;
localctx = new BlockItemListContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CParser.RULE_blockItemList);
this.state = 1148;
if (!( this.precpred(this._ctx, 1))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
}
this.state = 1149;
this.blockItem();
}
this.state = 1154;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,120,this._ctx);
}
} catch( error) {
if(error instanceof antlr4.error.RecognitionException) {
localctx.exception = error;
this._errHandler.reportError(this, error);
this._errHandler.recover(this, error);
} else {
throw error;
}
} finally {
this.unrollRecursionContexts(_parentctx)
}
return localctx;
};
function BlockItemContext(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 = CParser.RULE_blockItem;
return this;
}
BlockItemContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
BlockItemContext.prototype.constructor = BlockItemContext;
BlockItemContext.prototype.statement = function() {
return this.getTypedRuleContext(StatementContext,0);
};
BlockItemContext.prototype.declaration = function() {
return this.getTypedRuleContext(DeclarationContext,0);
};
BlockItemContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterBlockItem(this);
}
};
BlockItemContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitBlockItem(this);
}
};
CParser.BlockItemContext = BlockItemContext;
CParser.prototype.blockItem = function() {
var localctx = new BlockItemContext(this, this._ctx, this.state);
this.enterRule(localctx, 148, CParser.RULE_blockItem);
try {
this.state = 1157;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,121,this._ctx);
switch(la_) {
case 1:
this.enterOuterAlt(localctx, 1);
this.state = 1155;
this.statement();
break;
case 2:
this.enterOuterAlt(localctx, 2);
this.state = 1156;
this.declaration();
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 ExpressionStatementContext(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 = CParser.RULE_expressionStatement;
return this;
}
ExpressionStatementContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
ExpressionStatementContext.prototype.constructor = ExpressionStatementContext;
ExpressionStatementContext.prototype.Semi = function() {
return this.getToken(CParser.Semi, 0);
};
ExpressionStatementContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
ExpressionStatementContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterExpressionStatement(this);
}
};
ExpressionStatementContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitExpressionStatement(this);
}
};
CParser.ExpressionStatementContext = ExpressionStatementContext;
CParser.prototype.expressionStatement = function() {
var localctx = new ExpressionStatementContext(this, this._ctx, this.state);
this.enterRule(localctx, 150, CParser.RULE_expressionStatement);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 1160;
this._errHandler.sync(this);
_la = this._input.LA(1);
if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << CParser.T__0) | (1 << CParser.T__1) | (1 << CParser.T__2))) !== 0) || ((((_la - 39)) & ~0x1f) == 0 && ((1 << (_la - 39)) & ((1 << (CParser.Sizeof - 39)) | (1 << (CParser.Alignof - 39)) | (1 << (CParser.Generic - 39)) | (1 << (CParser.LeftParen - 39)))) !== 0) || ((((_la - 71)) & ~0x1f) == 0 && ((1 << (_la - 71)) & ((1 << (CParser.Plus - 71)) | (1 << (CParser.PlusPlus - 71)) | (1 << (CParser.Minus - 71)) | (1 << (CParser.MinusMinus - 71)) | (1 << (CParser.Star - 71)) | (1 << (CParser.And - 71)) | (1 << (CParser.AndAnd - 71)) | (1 << (CParser.Not - 71)) | (1 << (CParser.Tilde - 71)))) !== 0) || ((((_la - 105)) & ~0x1f) == 0 && ((1 << (_la - 105)) & ((1 << (CParser.Identifier - 105)) | (1 << (CParser.Constant - 105)) | (1 << (CParser.DigitSequence - 105)) | (1 << (CParser.StringLiteral - 105)))) !== 0)) {
this.state = 1159;
this.expression(0);
}
this.state = 1162;
this.match(CParser.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 SelectionStatementContext(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 = CParser.RULE_selectionStatement;
return this;
}
SelectionStatementContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
SelectionStatementContext.prototype.constructor = SelectionStatementContext;
SelectionStatementContext.prototype.If = function() {
return this.getToken(CParser.If, 0);
};
SelectionStatementContext.prototype.LeftParen = function() {
return this.getToken(CParser.LeftParen, 0);
};
SelectionStatementContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
SelectionStatementContext.prototype.RightParen = function() {
return this.getToken(CParser.RightParen, 0);
};
SelectionStatementContext.prototype.statement = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(StatementContext);
} else {
return this.getTypedRuleContext(StatementContext,i);
}
};
SelectionStatementContext.prototype.Else = function() {
return this.getToken(CParser.Else, 0);
};
SelectionStatementContext.prototype.Switch = function() {
return this.getToken(CParser.Switch, 0);
};
SelectionStatementContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterSelectionStatement(this);
}
};
SelectionStatementContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitSelectionStatement(this);
}
};
CParser.SelectionStatementContext = SelectionStatementContext;
CParser.prototype.selectionStatement = function() {
var localctx = new SelectionStatementContext(this, this._ctx, this.state);
this.enterRule(localctx, 152, CParser.RULE_selectionStatement);
try {
this.state = 1179;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case CParser.If:
this.enterOuterAlt(localctx, 1);
this.state = 1164;
this.match(CParser.If);
this.state = 1165;
this.match(CParser.LeftParen);
this.state = 1166;
this.expression(0);
this.state = 1167;
this.match(CParser.RightParen);
this.state = 1168;
this.statement();
this.state = 1171;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,123,this._ctx);
if(la_===1) {
this.state = 1169;
this.match(CParser.Else);
this.state = 1170;
this.statement();
}
break;
case CParser.Switch:
this.enterOuterAlt(localctx, 2);
this.state = 1173;
this.match(CParser.Switch);
this.state = 1174;
this.match(CParser.LeftParen);
this.state = 1175;
this.expression(0);
this.state = 1176;
this.match(CParser.RightParen);
this.state = 1177;
this.statement();
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 IterationStatementContext(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 = CParser.RULE_iterationStatement;
return this;
}
IterationStatementContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
IterationStatementContext.prototype.constructor = IterationStatementContext;
IterationStatementContext.prototype.While = function() {
return this.getToken(CParser.While, 0);
};
IterationStatementContext.prototype.LeftParen = function() {
return this.getToken(CParser.LeftParen, 0);
};
IterationStatementContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
IterationStatementContext.prototype.RightParen = function() {
return this.getToken(CParser.RightParen, 0);
};
IterationStatementContext.prototype.statement = function() {
return this.getTypedRuleContext(StatementContext,0);
};
IterationStatementContext.prototype.Do = function() {
return this.getToken(CParser.Do, 0);
};
IterationStatementContext.prototype.Semi = function() {
return this.getToken(CParser.Semi, 0);
};
IterationStatementContext.prototype.For = function() {
return this.getToken(CParser.For, 0);
};
IterationStatementContext.prototype.forCondition = function() {
return this.getTypedRuleContext(ForConditionContext,0);
};
IterationStatementContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterIterationStatement(this);
}
};
IterationStatementContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitIterationStatement(this);
}
};
CParser.IterationStatementContext = IterationStatementContext;
CParser.prototype.iterationStatement = function() {
var localctx = new IterationStatementContext(this, this._ctx, this.state);
this.enterRule(localctx, 154, CParser.RULE_iterationStatement);
try {
this.state = 1201;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case CParser.While:
this.enterOuterAlt(localctx, 1);
this.state = 1181;
this.match(CParser.While);
this.state = 1182;
this.match(CParser.LeftParen);
this.state = 1183;
this.expression(0);
this.state = 1184;
this.match(CParser.RightParen);
this.state = 1185;
this.statement();
break;
case CParser.Do:
this.enterOuterAlt(localctx, 2);
this.state = 1187;
this.match(CParser.Do);
this.state = 1188;
this.statement();
this.state = 1189;
this.match(CParser.While);
this.state = 1190;
this.match(CParser.LeftParen);
this.state = 1191;
this.expression(0);
this.state = 1192;
this.match(CParser.RightParen);
this.state = 1193;
this.match(CParser.Semi);
break;
case CParser.For:
this.enterOuterAlt(localctx, 3);
this.state = 1195;
this.match(CParser.For);
this.state = 1196;
this.match(CParser.LeftParen);
this.state = 1197;
this.forCondition();
this.state = 1198;
this.match(CParser.RightParen);
this.state = 1199;
this.statement();
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 ForConditionContext(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 = CParser.RULE_forCondition;
return this;
}
ForConditionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
ForConditionContext.prototype.constructor = ForConditionContext;
ForConditionContext.prototype.forDeclaration = function() {
return this.getTypedRuleContext(ForDeclarationContext,0);
};
ForConditionContext.prototype.Semi = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(CParser.Semi);
} else {
return this.getToken(CParser.Semi, i);
}
};
ForConditionContext.prototype.forExpression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ForExpressionContext);
} else {
return this.getTypedRuleContext(ForExpressionContext,i);
}
};
ForConditionContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
ForConditionContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterForCondition(this);
}
};
ForConditionContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitForCondition(this);
}
};
CParser.ForConditionContext = ForConditionContext;
CParser.prototype.forCondition = function() {
var localctx = new ForConditionContext(this, this._ctx, this.state);
this.enterRule(localctx, 156, CParser.RULE_forCondition);
var _la = 0; // Token type
try {
this.state = 1223;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,131,this._ctx);
switch(la_) {
case 1:
this.enterOuterAlt(localctx, 1);
this.state = 1203;
this.forDeclaration();
this.state = 1204;
this.match(CParser.Semi);
this.state = 1206;
this._errHandler.sync(this);
_la = this._input.LA(1);
if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << CParser.T__0) | (1 << CParser.T__1) | (1 << CParser.T__2))) !== 0) || ((((_la - 39)) & ~0x1f) == 0 && ((1 << (_la - 39)) & ((1 << (CParser.Sizeof - 39)) | (1 << (CParser.Alignof - 39)) | (1 << (CParser.Generic - 39)) | (1 << (CParser.LeftParen - 39)))) !== 0) || ((((_la - 71)) & ~0x1f) == 0 && ((1 << (_la - 71)) & ((1 << (CParser.Plus - 71)) | (1 << (CParser.PlusPlus - 71)) | (1 << (CParser.Minus - 71)) | (1 << (CParser.MinusMinus - 71)) | (1 << (CParser.Star - 71)) | (1 << (CParser.And - 71)) | (1 << (CParser.AndAnd - 71)) | (1 << (CParser.Not - 71)) | (1 << (CParser.Tilde - 71)))) !== 0) || ((((_la - 105)) & ~0x1f) == 0 && ((1 << (_la - 105)) & ((1 << (CParser.Identifier - 105)) | (1 << (CParser.Constant - 105)) | (1 << (CParser.DigitSequence - 105)) | (1 << (CParser.StringLiteral - 105)))) !== 0)) {
this.state = 1205;
this.forExpression(0);
}
this.state = 1208;
this.match(CParser.Semi);
this.state = 1210;
this._errHandler.sync(this);
_la = this._input.LA(1);
if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << CParser.T__0) | (1 << CParser.T__1) | (1 << CParser.T__2))) !== 0) || ((((_la - 39)) & ~0x1f) == 0 && ((1 << (_la - 39)) & ((1 << (CParser.Sizeof - 39)) | (1 << (CParser.Alignof - 39)) | (1 << (CParser.Generic - 39)) | (1 << (CParser.LeftParen - 39)))) !== 0) || ((((_la - 71)) & ~0x1f) == 0 && ((1 << (_la - 71)) & ((1 << (CParser.Plus - 71)) | (1 << (CParser.PlusPlus - 71)) | (1 << (CParser.Minus - 71)) | (1 << (CParser.MinusMinus - 71)) | (1 << (CParser.Star - 71)) | (1 << (CParser.And - 71)) | (1 << (CParser.AndAnd - 71)) | (1 << (CParser.Not - 71)) | (1 << (CParser.Tilde - 71)))) !== 0) || ((((_la - 105)) & ~0x1f) == 0 && ((1 << (_la - 105)) & ((1 << (CParser.Identifier - 105)) | (1 << (CParser.Constant - 105)) | (1 << (CParser.DigitSequence - 105)) | (1 << (CParser.StringLiteral - 105)))) !== 0)) {
this.state = 1209;
this.forExpression(0);
}
break;
case 2:
this.enterOuterAlt(localctx, 2);
this.state = 1213;
this._errHandler.sync(this);
_la = this._input.LA(1);
if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << CParser.T__0) | (1 << CParser.T__1) | (1 << CParser.T__2))) !== 0) || ((((_la - 39)) & ~0x1f) == 0 && ((1 << (_la - 39)) & ((1 << (CParser.Sizeof - 39)) | (1 << (CParser.Alignof - 39)) | (1 << (CParser.Generic - 39)) | (1 << (CParser.LeftParen - 39)))) !== 0) || ((((_la - 71)) & ~0x1f) == 0 && ((1 << (_la - 71)) & ((1 << (CParser.Plus - 71)) | (1 << (CParser.PlusPlus - 71)) | (1 << (CParser.Minus - 71)) | (1 << (CParser.MinusMinus - 71)) | (1 << (CParser.Star - 71)) | (1 << (CParser.And - 71)) | (1 << (CParser.AndAnd - 71)) | (1 << (CParser.Not - 71)) | (1 << (CParser.Tilde - 71)))) !== 0) || ((((_la - 105)) & ~0x1f) == 0 && ((1 << (_la - 105)) & ((1 << (CParser.Identifier - 105)) | (1 << (CParser.Constant - 105)) | (1 << (CParser.DigitSequence - 105)) | (1 << (CParser.StringLiteral - 105)))) !== 0)) {
this.state = 1212;
this.expression(0);
}
this.state = 1215;
this.match(CParser.Semi);
this.state = 1217;
this._errHandler.sync(this);
_la = this._input.LA(1);
if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << CParser.T__0) | (1 << CParser.T__1) | (1 << CParser.T__2))) !== 0) || ((((_la - 39)) & ~0x1f) == 0 && ((1 << (_la - 39)) & ((1 << (CParser.Sizeof - 39)) | (1 << (CParser.Alignof - 39)) | (1 << (CParser.Generic - 39)) | (1 << (CParser.LeftParen - 39)))) !== 0) || ((((_la - 71)) & ~0x1f) == 0 && ((1 << (_la - 71)) & ((1 << (CParser.Plus - 71)) | (1 << (CParser.PlusPlus - 71)) | (1 << (CParser.Minus - 71)) | (1 << (CParser.MinusMinus - 71)) | (1 << (CParser.Star - 71)) | (1 << (CParser.And - 71)) | (1 << (CParser.AndAnd - 71)) | (1 << (CParser.Not - 71)) | (1 << (CParser.Tilde - 71)))) !== 0) || ((((_la - 105)) & ~0x1f) == 0 && ((1 << (_la - 105)) & ((1 << (CParser.Identifier - 105)) | (1 << (CParser.Constant - 105)) | (1 << (CParser.DigitSequence - 105)) | (1 << (CParser.StringLiteral - 105)))) !== 0)) {
this.state = 1216;
this.forExpression(0);
}
this.state = 1219;
this.match(CParser.Semi);
this.state = 1221;
this._errHandler.sync(this);
_la = this._input.LA(1);
if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << CParser.T__0) | (1 << CParser.T__1) | (1 << CParser.T__2))) !== 0) || ((((_la - 39)) & ~0x1f) == 0 && ((1 << (_la - 39)) & ((1 << (CParser.Sizeof - 39)) | (1 << (CParser.Alignof - 39)) | (1 << (CParser.Generic - 39)) | (1 << (CParser.LeftParen - 39)))) !== 0) || ((((_la - 71)) & ~0x1f) == 0 && ((1 << (_la - 71)) & ((1 << (CParser.Plus - 71)) | (1 << (CParser.PlusPlus - 71)) | (1 << (CParser.Minus - 71)) | (1 << (CParser.MinusMinus - 71)) | (1 << (CParser.Star - 71)) | (1 << (CParser.And - 71)) | (1 << (CParser.AndAnd - 71)) | (1 << (CParser.Not - 71)) | (1 << (CParser.Tilde - 71)))) !== 0) || ((((_la - 105)) & ~0x1f) == 0 && ((1 << (_la - 105)) & ((1 << (CParser.Identifier - 105)) | (1 << (CParser.Constant - 105)) | (1 << (CParser.DigitSequence - 105)) | (1 << (CParser.StringLiteral - 105)))) !== 0)) {
this.state = 1220;
this.forExpression(0);
}
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 ForDeclarationContext(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 = CParser.RULE_forDeclaration;
return this;
}
ForDeclarationContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
ForDeclarationContext.prototype.constructor = ForDeclarationContext;
ForDeclarationContext.prototype.declarationSpecifiers = function() {
return this.getTypedRuleContext(DeclarationSpecifiersContext,0);
};
ForDeclarationContext.prototype.initDeclaratorList = function() {
return this.getTypedRuleContext(InitDeclaratorListContext,0);
};
ForDeclarationContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterForDeclaration(this);
}
};
ForDeclarationContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitForDeclaration(this);
}
};
CParser.ForDeclarationContext = ForDeclarationContext;
CParser.prototype.forDeclaration = function() {
var localctx = new ForDeclarationContext(this, this._ctx, this.state);
this.enterRule(localctx, 158, CParser.RULE_forDeclaration);
try {
this.state = 1229;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,132,this._ctx);
switch(la_) {
case 1:
this.enterOuterAlt(localctx, 1);
this.state = 1225;
this.declarationSpecifiers();
this.state = 1226;
this.initDeclaratorList(0);
break;
case 2:
this.enterOuterAlt(localctx, 2);
this.state = 1228;
this.declarationSpecifiers();
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 ForExpressionContext(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 = CParser.RULE_forExpression;
return this;
}
ForExpressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
ForExpressionContext.prototype.constructor = ForExpressionContext;
ForExpressionContext.prototype.assignmentExpression = function() {
return this.getTypedRuleContext(AssignmentExpressionContext,0);
};
ForExpressionContext.prototype.forExpression = function() {
return this.getTypedRuleContext(ForExpressionContext,0);
};
ForExpressionContext.prototype.Comma = function() {
return this.getToken(CParser.Comma, 0);
};
ForExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterForExpression(this);
}
};
ForExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitForExpression(this);
}
};
CParser.prototype.forExpression = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new ForExpressionContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 160;
this.enterRecursionRule(localctx, 160, CParser.RULE_forExpression, _p);
try {
this.enterOuterAlt(localctx, 1);
this.state = 1232;
this.assignmentExpression();
this._ctx.stop = this._input.LT(-1);
this.state = 1239;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,133,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
if(this._parseListeners!==null) {
this.triggerExitRuleEvent();
}
_prevctx = localctx;
localctx = new ForExpressionContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CParser.RULE_forExpression);
this.state = 1234;
if (!( this.precpred(this._ctx, 1))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
}
this.state = 1235;
this.match(CParser.Comma);
this.state = 1236;
this.assignmentExpression();
}
this.state = 1241;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,133,this._ctx);
}
} catch( error) {
if(error instanceof antlr4.error.RecognitionException) {
localctx.exception = error;
this._errHandler.reportError(this, error);
this._errHandler.recover(this, error);
} else {
throw error;
}
} finally {
this.unrollRecursionContexts(_parentctx)
}
return localctx;
};
function JumpStatementContext(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 = CParser.RULE_jumpStatement;
return this;
}
JumpStatementContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
JumpStatementContext.prototype.constructor = JumpStatementContext;
JumpStatementContext.prototype.Goto = function() {
return this.getToken(CParser.Goto, 0);
};
JumpStatementContext.prototype.Identifier = function() {
return this.getToken(CParser.Identifier, 0);
};
JumpStatementContext.prototype.Semi = function() {
return this.getToken(CParser.Semi, 0);
};
JumpStatementContext.prototype.Continue = function() {
return this.getToken(CParser.Continue, 0);
};
JumpStatementContext.prototype.Break = function() {
return this.getToken(CParser.Break, 0);
};
JumpStatementContext.prototype.Return = function() {
return this.getToken(CParser.Return, 0);
};
JumpStatementContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
JumpStatementContext.prototype.unaryExpression = function() {
return this.getTypedRuleContext(UnaryExpressionContext,0);
};
JumpStatementContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterJumpStatement(this);
}
};
JumpStatementContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitJumpStatement(this);
}
};
CParser.JumpStatementContext = JumpStatementContext;
CParser.prototype.jumpStatement = function() {
var localctx = new JumpStatementContext(this, this._ctx, this.state);
this.enterRule(localctx, 162, CParser.RULE_jumpStatement);
var _la = 0; // Token type
try {
this.state = 1258;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,135,this._ctx);
switch(la_) {
case 1:
this.enterOuterAlt(localctx, 1);
this.state = 1242;
this.match(CParser.Goto);
this.state = 1243;
this.match(CParser.Identifier);
this.state = 1244;
this.match(CParser.Semi);
break;
case 2:
this.enterOuterAlt(localctx, 2);
this.state = 1245;
this.match(CParser.Continue);
this.state = 1246;
this.match(CParser.Semi);
break;
case 3:
this.enterOuterAlt(localctx, 3);
this.state = 1247;
this.match(CParser.Break);
this.state = 1248;
this.match(CParser.Semi);
break;
case 4:
this.enterOuterAlt(localctx, 4);
this.state = 1249;
this.match(CParser.Return);
this.state = 1251;
this._errHandler.sync(this);
_la = this._input.LA(1);
if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << CParser.T__0) | (1 << CParser.T__1) | (1 << CParser.T__2))) !== 0) || ((((_la - 39)) & ~0x1f) == 0 && ((1 << (_la - 39)) & ((1 << (CParser.Sizeof - 39)) | (1 << (CParser.Alignof - 39)) | (1 << (CParser.Generic - 39)) | (1 << (CParser.LeftParen - 39)))) !== 0) || ((((_la - 71)) & ~0x1f) == 0 && ((1 << (_la - 71)) & ((1 << (CParser.Plus - 71)) | (1 << (CParser.PlusPlus - 71)) | (1 << (CParser.Minus - 71)) | (1 << (CParser.MinusMinus - 71)) | (1 << (CParser.Star - 71)) | (1 << (CParser.And - 71)) | (1 << (CParser.AndAnd - 71)) | (1 << (CParser.Not - 71)) | (1 << (CParser.Tilde - 71)))) !== 0) || ((((_la - 105)) & ~0x1f) == 0 && ((1 << (_la - 105)) & ((1 << (CParser.Identifier - 105)) | (1 << (CParser.Constant - 105)) | (1 << (CParser.DigitSequence - 105)) | (1 << (CParser.StringLiteral - 105)))) !== 0)) {
this.state = 1250;
this.expression(0);
}
this.state = 1253;
this.match(CParser.Semi);
break;
case 5:
this.enterOuterAlt(localctx, 5);
this.state = 1254;
this.match(CParser.Goto);
this.state = 1255;
this.unaryExpression();
this.state = 1256;
this.match(CParser.Semi);
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 CompilationUnitContext(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 = CParser.RULE_compilationUnit;
return this;
}
CompilationUnitContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
CompilationUnitContext.prototype.constructor = CompilationUnitContext;
CompilationUnitContext.prototype.EOF = function() {
return this.getToken(CParser.EOF, 0);
};
CompilationUnitContext.prototype.translationUnit = function() {
return this.getTypedRuleContext(TranslationUnitContext,0);
};
CompilationUnitContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterCompilationUnit(this);
}
};
CompilationUnitContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitCompilationUnit(this);
}
};
CParser.CompilationUnitContext = CompilationUnitContext;
CParser.prototype.compilationUnit = function() {
var localctx = new CompilationUnitContext(this, this._ctx, this.state);
this.enterRule(localctx, 164, CParser.RULE_compilationUnit);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 1261;
this._errHandler.sync(this);
_la = this._input.LA(1);
if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << CParser.T__0) | (1 << CParser.T__3) | (1 << CParser.T__4) | (1 << CParser.T__5) | (1 << CParser.T__6) | (1 << CParser.T__7) | (1 << CParser.T__8) | (1 << CParser.T__9) | (1 << CParser.T__11) | (1 << CParser.Auto) | (1 << CParser.Char) | (1 << CParser.Const) | (1 << CParser.Double) | (1 << CParser.Enum) | (1 << CParser.Extern) | (1 << CParser.Float) | (1 << CParser.Inline))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (CParser.Int - 32)) | (1 << (CParser.Long - 32)) | (1 << (CParser.Register - 32)) | (1 << (CParser.Restrict - 32)) | (1 << (CParser.Short - 32)) | (1 << (CParser.Signed - 32)) | (1 << (CParser.Static - 32)) | (1 << (CParser.Struct - 32)) | (1 << (CParser.Typedef - 32)) | (1 << (CParser.Union - 32)) | (1 << (CParser.Unsigned - 32)) | (1 << (CParser.Void - 32)) | (1 << (CParser.Volatile - 32)) | (1 << (CParser.Alignas - 32)) | (1 << (CParser.Atomic - 32)) | (1 << (CParser.Bool - 32)) | (1 << (CParser.Complex - 32)) | (1 << (CParser.Noreturn - 32)) | (1 << (CParser.StaticAssert - 32)) | (1 << (CParser.ThreadLocal - 32)) | (1 << (CParser.LeftParen - 32)))) !== 0) || ((((_la - 75)) & ~0x1f) == 0 && ((1 << (_la - 75)) & ((1 << (CParser.Star - 75)) | (1 << (CParser.Caret - 75)) | (1 << (CParser.Semi - 75)) | (1 << (CParser.Identifier - 75)))) !== 0)) {
this.state = 1260;
this.translationUnit(0);
}
this.state = 1263;
this.match(CParser.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 TranslationUnitContext(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 = CParser.RULE_translationUnit;
return this;
}
TranslationUnitContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
TranslationUnitContext.prototype.constructor = TranslationUnitContext;
TranslationUnitContext.prototype.externalDeclaration = function() {
return this.getTypedRuleContext(ExternalDeclarationContext,0);
};
TranslationUnitContext.prototype.translationUnit = function() {
return this.getTypedRuleContext(TranslationUnitContext,0);
};
TranslationUnitContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterTranslationUnit(this);
}
};
TranslationUnitContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitTranslationUnit(this);
}
};
CParser.prototype.translationUnit = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new TranslationUnitContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 166;
this.enterRecursionRule(localctx, 166, CParser.RULE_translationUnit, _p);
try {
this.enterOuterAlt(localctx, 1);
this.state = 1266;
this.externalDeclaration();
this._ctx.stop = this._input.LT(-1);
this.state = 1272;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,137,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
if(this._parseListeners!==null) {
this.triggerExitRuleEvent();
}
_prevctx = localctx;
localctx = new TranslationUnitContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CParser.RULE_translationUnit);
this.state = 1268;
if (!( this.precpred(this._ctx, 1))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
}
this.state = 1269;
this.externalDeclaration();
}
this.state = 1274;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,137,this._ctx);
}
} catch( error) {
if(error instanceof antlr4.error.RecognitionException) {
localctx.exception = error;
this._errHandler.reportError(this, error);
this._errHandler.recover(this, error);
} else {
throw error;
}
} finally {
this.unrollRecursionContexts(_parentctx)
}
return localctx;
};
function ExternalDeclarationContext(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 = CParser.RULE_externalDeclaration;
return this;
}
ExternalDeclarationContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
ExternalDeclarationContext.prototype.constructor = ExternalDeclarationContext;
ExternalDeclarationContext.prototype.functionDefinition = function() {
return this.getTypedRuleContext(FunctionDefinitionContext,0);
};
ExternalDeclarationContext.prototype.declaration = function() {
return this.getTypedRuleContext(DeclarationContext,0);
};
ExternalDeclarationContext.prototype.Semi = function() {
return this.getToken(CParser.Semi, 0);
};
ExternalDeclarationContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterExternalDeclaration(this);
}
};
ExternalDeclarationContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitExternalDeclaration(this);
}
};
CParser.ExternalDeclarationContext = ExternalDeclarationContext;
CParser.prototype.externalDeclaration = function() {
var localctx = new ExternalDeclarationContext(this, this._ctx, this.state);
this.enterRule(localctx, 168, CParser.RULE_externalDeclaration);
try {
this.state = 1278;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,138,this._ctx);
switch(la_) {
case 1:
this.enterOuterAlt(localctx, 1);
this.state = 1275;
this.functionDefinition();
break;
case 2:
this.enterOuterAlt(localctx, 2);
this.state = 1276;
this.declaration();
break;
case 3:
this.enterOuterAlt(localctx, 3);
this.state = 1277;
this.match(CParser.Semi);
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 FunctionDefinitionContext(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 = CParser.RULE_functionDefinition;
return this;
}
FunctionDefinitionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
FunctionDefinitionContext.prototype.constructor = FunctionDefinitionContext;
FunctionDefinitionContext.prototype.declarator = function() {
return this.getTypedRuleContext(DeclaratorContext,0);
};
FunctionDefinitionContext.prototype.compoundStatement = function() {
return this.getTypedRuleContext(CompoundStatementContext,0);
};
FunctionDefinitionContext.prototype.declarationSpecifiers = function() {
return this.getTypedRuleContext(DeclarationSpecifiersContext,0);
};
FunctionDefinitionContext.prototype.declarationList = function() {
return this.getTypedRuleContext(DeclarationListContext,0);
};
FunctionDefinitionContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterFunctionDefinition(this);
}
};
FunctionDefinitionContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitFunctionDefinition(this);
}
};
CParser.FunctionDefinitionContext = FunctionDefinitionContext;
CParser.prototype.functionDefinition = function() {
var localctx = new FunctionDefinitionContext(this, this._ctx, this.state);
this.enterRule(localctx, 170, CParser.RULE_functionDefinition);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 1281;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,139,this._ctx);
if(la_===1) {
this.state = 1280;
this.declarationSpecifiers();
}
this.state = 1283;
this.declarator();
this.state = 1285;
this._errHandler.sync(this);
_la = this._input.LA(1);
if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << CParser.T__0) | (1 << CParser.T__3) | (1 << CParser.T__4) | (1 << CParser.T__5) | (1 << CParser.T__6) | (1 << CParser.T__7) | (1 << CParser.T__8) | (1 << CParser.T__9) | (1 << CParser.T__11) | (1 << CParser.Auto) | (1 << CParser.Char) | (1 << CParser.Const) | (1 << CParser.Double) | (1 << CParser.Enum) | (1 << CParser.Extern) | (1 << CParser.Float) | (1 << CParser.Inline))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (CParser.Int - 32)) | (1 << (CParser.Long - 32)) | (1 << (CParser.Register - 32)) | (1 << (CParser.Restrict - 32)) | (1 << (CParser.Short - 32)) | (1 << (CParser.Signed - 32)) | (1 << (CParser.Static - 32)) | (1 << (CParser.Struct - 32)) | (1 << (CParser.Typedef - 32)) | (1 << (CParser.Union - 32)) | (1 << (CParser.Unsigned - 32)) | (1 << (CParser.Void - 32)) | (1 << (CParser.Volatile - 32)) | (1 << (CParser.Alignas - 32)) | (1 << (CParser.Atomic - 32)) | (1 << (CParser.Bool - 32)) | (1 << (CParser.Complex - 32)) | (1 << (CParser.Noreturn - 32)) | (1 << (CParser.StaticAssert - 32)) | (1 << (CParser.ThreadLocal - 32)))) !== 0) || _la===CParser.Identifier) {
this.state = 1284;
this.declarationList(0);
}
this.state = 1287;
this.compoundStatement();
} 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 DeclarationListContext(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 = CParser.RULE_declarationList;
return this;
}
DeclarationListContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
DeclarationListContext.prototype.constructor = DeclarationListContext;
DeclarationListContext.prototype.declaration = function() {
return this.getTypedRuleContext(DeclarationContext,0);
};
DeclarationListContext.prototype.declarationList = function() {
return this.getTypedRuleContext(DeclarationListContext,0);
};
DeclarationListContext.prototype.enterRule = function(listener) {
if(listener instanceof CListener ) {
listener.enterDeclarationList(this);
}
};
DeclarationListContext.prototype.exitRule = function(listener) {
if(listener instanceof CListener ) {
listener.exitDeclarationList(this);
}
};
CParser.prototype.declarationList = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new DeclarationListContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 172;
this.enterRecursionRule(localctx, 172, CParser.RULE_declarationList, _p);
try {
this.enterOuterAlt(localctx, 1);
this.state = 1290;
this.declaration();
this._ctx.stop = this._input.LT(-1);
this.state = 1296;
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) {
if(this._parseListeners!==null) {
this.triggerExitRuleEvent();
}
_prevctx = localctx;
localctx = new DeclarationListContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CParser.RULE_declarationList);
this.state = 1292;
if (!( this.precpred(this._ctx, 1))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
}
this.state = 1293;
this.declaration();
}
this.state = 1298;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,141,this._ctx);
}
} catch( error) {
if(error instanceof antlr4.error.RecognitionException) {
localctx.exception = error;
this._errHandler.reportError(this, error);
this._errHandler.recover(this, error);
} else {
throw error;
}
} finally {
this.unrollRecursionContexts(_parentctx)
}
return localctx;
};
CParser.prototype.sempred = function(localctx, ruleIndex, predIndex) {
switch(ruleIndex) {
case 2:
return this.genericAssocList_sempred(localctx, predIndex);
case 4:
return this.postfixExpression_sempred(localctx, predIndex);
case 5:
return this.argumentExpressionList_sempred(localctx, predIndex);
case 9:
return this.multiplicativeExpression_sempred(localctx, predIndex);
case 10:
return this.additiveExpression_sempred(localctx, predIndex);
case 11:
return this.shiftExpression_sempred(localctx, predIndex);
case 12:
return this.relationalExpression_sempred(localctx, predIndex);
case 13:
return this.equalityExpression_sempred(localctx, predIndex);
case 14:
return this.andExpression_sempred(localctx, predIndex);
case 15:
return this.exclusiveOrExpression_sempred(localctx, predIndex);
case 16:
return this.inclusiveOrExpression_sempred(localctx, predIndex);
case 17:
return this.logicalAndExpression_sempred(localctx, predIndex);
case 18:
return this.logicalOrExpression_sempred(localctx, predIndex);
case 22:
return this.expression_sempred(localctx, predIndex);
case 28:
return this.initDeclaratorList_sempred(localctx, predIndex);
case 31:
return this.typeSpecifier_sempred(localctx, predIndex);
case 34:
return this.structDeclarationList_sempred(localctx, predIndex);
case 37:
return this.structDeclaratorList_sempred(localctx, predIndex);
case 40:
return this.enumeratorList_sempred(localctx, predIndex);
case 48:
return this.directDeclarator_sempred(localctx, predIndex);
case 55:
return this.typeQualifierList_sempred(localctx, predIndex);
case 57:
return this.parameterList_sempred(localctx, predIndex);
case 59:
return this.identifierList_sempred(localctx, predIndex);
case 62:
return this.directAbstractDeclarator_sempred(localctx, predIndex);
case 65:
return this.initializerList_sempred(localctx, predIndex);
case 67:
return this.designatorList_sempred(localctx, predIndex);
case 73:
return this.blockItemList_sempred(localctx, predIndex);
case 80:
return this.forExpression_sempred(localctx, predIndex);
case 83:
return this.translationUnit_sempred(localctx, predIndex);
case 86:
return this.declarationList_sempred(localctx, predIndex);
default:
throw "No predicate with index:" + ruleIndex;
}
};
CParser.prototype.genericAssocList_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 0:
return this.precpred(this._ctx, 1);
default:
throw "No predicate with index:" + predIndex;
}
};
CParser.prototype.postfixExpression_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 1:
return this.precpred(this._ctx, 10);
case 2:
return this.precpred(this._ctx, 9);
case 3:
return this.precpred(this._ctx, 8);
case 4:
return this.precpred(this._ctx, 7);
case 5:
return this.precpred(this._ctx, 6);
case 6:
return this.precpred(this._ctx, 5);
default:
throw "No predicate with index:" + predIndex;
}
};
CParser.prototype.argumentExpressionList_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 7:
return this.precpred(this._ctx, 1);
default:
throw "No predicate with index:" + predIndex;
}
};
CParser.prototype.multiplicativeExpression_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 8:
return this.precpred(this._ctx, 3);
case 9:
return this.precpred(this._ctx, 2);
case 10:
return this.precpred(this._ctx, 1);
default:
throw "No predicate with index:" + predIndex;
}
};
CParser.prototype.additiveExpression_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 11:
return this.precpred(this._ctx, 2);
case 12:
return this.precpred(this._ctx, 1);
default:
throw "No predicate with index:" + predIndex;
}
};
CParser.prototype.shiftExpression_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 13:
return this.precpred(this._ctx, 2);
case 14:
return this.precpred(this._ctx, 1);
default:
throw "No predicate with index:" + predIndex;
}
};
CParser.prototype.relationalExpression_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 15:
return this.precpred(this._ctx, 4);
case 16:
return this.precpred(this._ctx, 3);
case 17:
return this.precpred(this._ctx, 2);
case 18:
return this.precpred(this._ctx, 1);
default:
throw "No predicate with index:" + predIndex;
}
};
CParser.prototype.equalityExpression_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 19:
return this.precpred(this._ctx, 2);
case 20:
return this.precpred(this._ctx, 1);
default:
throw "No predicate with index:" + predIndex;
}
};
CParser.prototype.andExpression_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 21:
return this.precpred(this._ctx, 1);
default:
throw "No predicate with index:" + predIndex;
}
};
CParser.prototype.exclusiveOrExpression_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 22:
return this.precpred(this._ctx, 1);
default:
throw "No predicate with index:" + predIndex;
}
};
CParser.prototype.inclusiveOrExpression_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 23:
return this.precpred(this._ctx, 1);
default:
throw "No predicate with index:" + predIndex;
}
};
CParser.prototype.logicalAndExpression_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 24:
return this.precpred(this._ctx, 1);
default:
throw "No predicate with index:" + predIndex;
}
};
CParser.prototype.logicalOrExpression_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 25:
return this.precpred(this._ctx, 1);
default:
throw "No predicate with index:" + predIndex;
}
};
CParser.prototype.expression_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 26:
return this.precpred(this._ctx, 1);
default:
throw "No predicate with index:" + predIndex;
}
};
CParser.prototype.initDeclaratorList_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 27:
return this.precpred(this._ctx, 1);
default:
throw "No predicate with index:" + predIndex;
}
};
CParser.prototype.typeSpecifier_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 28:
return this.precpred(this._ctx, 1);
default:
throw "No predicate with index:" + predIndex;
}
};
CParser.prototype.structDeclarationList_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 29:
return this.precpred(this._ctx, 1);
default:
throw "No predicate with index:" + predIndex;
}
};
CParser.prototype.structDeclaratorList_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 30:
return this.precpred(this._ctx, 1);
default:
throw "No predicate with index:" + predIndex;
}
};
CParser.prototype.enumeratorList_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 31:
return this.precpred(this._ctx, 1);
default:
throw "No predicate with index:" + predIndex;
}
};
CParser.prototype.directDeclarator_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 32:
return this.precpred(this._ctx, 8);
case 33:
return this.precpred(this._ctx, 7);
case 34:
return this.precpred(this._ctx, 6);
case 35:
return this.precpred(this._ctx, 5);
case 36:
return this.precpred(this._ctx, 4);
case 37:
return this.precpred(this._ctx, 3);
default:
throw "No predicate with index:" + predIndex;
}
};
CParser.prototype.typeQualifierList_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 38:
return this.precpred(this._ctx, 1);
default:
throw "No predicate with index:" + predIndex;
}
};
CParser.prototype.parameterList_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 39:
return this.precpred(this._ctx, 1);
default:
throw "No predicate with index:" + predIndex;
}
};
CParser.prototype.identifierList_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 40:
return this.precpred(this._ctx, 1);
default:
throw "No predicate with index:" + predIndex;
}
};
CParser.prototype.directAbstractDeclarator_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 41:
return this.precpred(this._ctx, 5);
case 42:
return this.precpred(this._ctx, 4);
case 43:
return this.precpred(this._ctx, 3);
case 44:
return this.precpred(this._ctx, 2);
case 45:
return this.precpred(this._ctx, 1);
default:
throw "No predicate with index:" + predIndex;
}
};
CParser.prototype.initializerList_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 46:
return this.precpred(this._ctx, 1);
default:
throw "No predicate with index:" + predIndex;
}
};
CParser.prototype.designatorList_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 47:
return this.precpred(this._ctx, 1);
default:
throw "No predicate with index:" + predIndex;
}
};
CParser.prototype.blockItemList_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 48:
return this.precpred(this._ctx, 1);
default:
throw "No predicate with index:" + predIndex;
}
};
CParser.prototype.forExpression_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 49:
return this.precpred(this._ctx, 1);
default:
throw "No predicate with index:" + predIndex;
}
};
CParser.prototype.translationUnit_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 50:
return this.precpred(this._ctx, 1);
default:
throw "No predicate with index:" + predIndex;
}
};
CParser.prototype.declarationList_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 51:
return this.precpred(this._ctx, 1);
default:
throw "No predicate with index:" + predIndex;
}
};
exports.CParser = CParser;