// Generated from /Users/ziv/Workspace/dt-sql-parser/src/grammar/hive/HiveSql.g4 by ANTLR 4.8
// jshint ignore: start
var antlr4 = require('antlr4/index');
var HiveSqlListener = require('./HiveSqlListener').HiveSqlListener;
var HiveSqlVisitor = require('./HiveSqlVisitor').HiveSqlVisitor;

var grammarFileName = "HiveSql.g4";


var serializedATN = ["\u0003\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964",
    "\u0003\u0178\u0d11\u0004\u0002\t\u0002\u0004\u0003\t\u0003\u0004\u0004",
    "\t\u0004\u0004\u0005\t\u0005\u0004\u0006\t\u0006\u0004\u0007\t\u0007",
    "\u0004\b\t\b\u0004\t\t\t\u0004\n\t\n\u0004\u000b\t\u000b\u0004\f\t\f",
    "\u0004\r\t\r\u0004\u000e\t\u000e\u0004\u000f\t\u000f\u0004\u0010\t\u0010",
    "\u0004\u0011\t\u0011\u0004\u0012\t\u0012\u0004\u0013\t\u0013\u0004\u0014",
    "\t\u0014\u0004\u0015\t\u0015\u0004\u0016\t\u0016\u0004\u0017\t\u0017",
    "\u0004\u0018\t\u0018\u0004\u0019\t\u0019\u0004\u001a\t\u001a\u0004\u001b",
    "\t\u001b\u0004\u001c\t\u001c\u0004\u001d\t\u001d\u0004\u001e\t\u001e",
    "\u0004\u001f\t\u001f\u0004 \t \u0004!\t!\u0004\"\t\"\u0004#\t#\u0004",
    "$\t$\u0004%\t%\u0004&\t&\u0004\'\t\'\u0004(\t(\u0004)\t)\u0004*\t*\u0004",
    "+\t+\u0004,\t,\u0004-\t-\u0004.\t.\u0004/\t/\u00040\t0\u00041\t1\u0004",
    "2\t2\u00043\t3\u00044\t4\u00045\t5\u00046\t6\u00047\t7\u00048\t8\u0004",
    "9\t9\u0004:\t:\u0004;\t;\u0004<\t<\u0004=\t=\u0004>\t>\u0004?\t?\u0004",
    "@\t@\u0004A\tA\u0004B\tB\u0004C\tC\u0004D\tD\u0004E\tE\u0004F\tF\u0004",
    "G\tG\u0004H\tH\u0004I\tI\u0004J\tJ\u0004K\tK\u0004L\tL\u0004M\tM\u0004",
    "N\tN\u0004O\tO\u0004P\tP\u0004Q\tQ\u0004R\tR\u0004S\tS\u0004T\tT\u0004",
    "U\tU\u0004V\tV\u0004W\tW\u0004X\tX\u0004Y\tY\u0004Z\tZ\u0004[\t[\u0004",
    "\\\t\\\u0004]\t]\u0004^\t^\u0004_\t_\u0004`\t`\u0004a\ta\u0004b\tb\u0004",
    "c\tc\u0004d\td\u0004e\te\u0004f\tf\u0004g\tg\u0004h\th\u0004i\ti\u0004",
    "j\tj\u0004k\tk\u0004l\tl\u0004m\tm\u0004n\tn\u0004o\to\u0004p\tp\u0004",
    "q\tq\u0004r\tr\u0004s\ts\u0004t\tt\u0004u\tu\u0004v\tv\u0004w\tw\u0004",
    "x\tx\u0004y\ty\u0004z\tz\u0004{\t{\u0004|\t|\u0004}\t}\u0004~\t~\u0004",
    "\u007f\t\u007f\u0004\u0080\t\u0080\u0004\u0081\t\u0081\u0004\u0082\t",
    "\u0082\u0004\u0083\t\u0083\u0004\u0084\t\u0084\u0004\u0085\t\u0085\u0004",
    "\u0086\t\u0086\u0004\u0087\t\u0087\u0004\u0088\t\u0088\u0004\u0089\t",
    "\u0089\u0004\u008a\t\u008a\u0004\u008b\t\u008b\u0004\u008c\t\u008c\u0004",
    "\u008d\t\u008d\u0004\u008e\t\u008e\u0004\u008f\t\u008f\u0004\u0090\t",
    "\u0090\u0004\u0091\t\u0091\u0004\u0092\t\u0092\u0004\u0093\t\u0093\u0004",
    "\u0094\t\u0094\u0004\u0095\t\u0095\u0004\u0096\t\u0096\u0004\u0097\t",
    "\u0097\u0004\u0098\t\u0098\u0004\u0099\t\u0099\u0004\u009a\t\u009a\u0004",
    "\u009b\t\u009b\u0004\u009c\t\u009c\u0004\u009d\t\u009d\u0004\u009e\t",
    "\u009e\u0004\u009f\t\u009f\u0004\u00a0\t\u00a0\u0004\u00a1\t\u00a1\u0004",
    "\u00a2\t\u00a2\u0004\u00a3\t\u00a3\u0004\u00a4\t\u00a4\u0004\u00a5\t",
    "\u00a5\u0004\u00a6\t\u00a6\u0004\u00a7\t\u00a7\u0004\u00a8\t\u00a8\u0004",
    "\u00a9\t\u00a9\u0004\u00aa\t\u00aa\u0004\u00ab\t\u00ab\u0004\u00ac\t",
    "\u00ac\u0004\u00ad\t\u00ad\u0004\u00ae\t\u00ae\u0004\u00af\t\u00af\u0004",
    "\u00b0\t\u00b0\u0004\u00b1\t\u00b1\u0004\u00b2\t\u00b2\u0004\u00b3\t",
    "\u00b3\u0004\u00b4\t\u00b4\u0004\u00b5\t\u00b5\u0004\u00b6\t\u00b6\u0004",
    "\u00b7\t\u00b7\u0004\u00b8\t\u00b8\u0004\u00b9\t\u00b9\u0004\u00ba\t",
    "\u00ba\u0004\u00bb\t\u00bb\u0004\u00bc\t\u00bc\u0004\u00bd\t\u00bd\u0004",
    "\u00be\t\u00be\u0004\u00bf\t\u00bf\u0004\u00c0\t\u00c0\u0004\u00c1\t",
    "\u00c1\u0004\u00c2\t\u00c2\u0004\u00c3\t\u00c3\u0004\u00c4\t\u00c4\u0004",
    "\u00c5\t\u00c5\u0004\u00c6\t\u00c6\u0004\u00c7\t\u00c7\u0004\u00c8\t",
    "\u00c8\u0004\u00c9\t\u00c9\u0004\u00ca\t\u00ca\u0004\u00cb\t\u00cb\u0004",
    "\u00cc\t\u00cc\u0004\u00cd\t\u00cd\u0004\u00ce\t\u00ce\u0004\u00cf\t",
    "\u00cf\u0004\u00d0\t\u00d0\u0004\u00d1\t\u00d1\u0004\u00d2\t\u00d2\u0004",
    "\u00d3\t\u00d3\u0004\u00d4\t\u00d4\u0004\u00d5\t\u00d5\u0004\u00d6\t",
    "\u00d6\u0004\u00d7\t\u00d7\u0004\u00d8\t\u00d8\u0004\u00d9\t\u00d9\u0004",
    "\u00da\t\u00da\u0004\u00db\t\u00db\u0004\u00dc\t\u00dc\u0004\u00dd\t",
    "\u00dd\u0004\u00de\t\u00de\u0004\u00df\t\u00df\u0004\u00e0\t\u00e0\u0004",
    "\u00e1\t\u00e1\u0004\u00e2\t\u00e2\u0004\u00e3\t\u00e3\u0003\u0002\u0003",
    "\u0002\u0003\u0002\u0003\u0003\u0003\u0003\u0005\u0003\u01cc\n\u0003",
    "\u0003\u0003\u0005\u0003\u01cf\n\u0003\u0006\u0003\u01d1\n\u0003\r\u0003",
    "\u000e\u0003\u01d2\u0003\u0004\u0005\u0004\u01d6\n\u0004\u0003\u0004",
    "\u0003\u0004\u0003\u0004\u0005\u0004\u01db\n\u0004\u0003\u0004\u0003",
    "\u0004\u0003\u0005\u0003\u0005\u0003\u0005\u0005\u0005\u01e2\n\u0005",
    "\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0005\u0005\u01e8\n",
    "\u0005\u0005\u0005\u01ea\n\u0005\u0003\u0006\u0003\u0006\u0003\u0006",
    "\u0003\u0007\u0003\u0007\u0006\u0007\u01f1\n\u0007\r\u0007\u000e\u0007",
    "\u01f2\u0003\u0007\u0005\u0007\u01f6\n\u0007\u0005\u0007\u01f8\n\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\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\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\u0237",
    "\n\b\u0003\t\u0003\t\u0003\n\u0003\n\u0006\n\u023d\n\n\r\n\u000e\n\u023e",
    "\u0003\u000b\u0003\u000b\u0003\u000b\u0003\u000b\u0003\u000b\u0003\u000b",
    "\u0003\f\u0003\f\u0003\r\u0003\r\u0003\r\u0003\u000e\u0003\u000e\u0003",
    "\u000e\u0005\u000e\u024f\n\u000e\u0003\u000e\u0003\u000e\u0003\u000e",
    "\u0007\u000e\u0254\n\u000e\f\u000e\u000e\u000e\u0257\u000b\u000e\u0005",
    "\u000e\u0259\n\u000e\u0003\u000f\u0003\u000f\u0003\u000f\u0005\u000f",
    "\u025e\n\u000f\u0003\u0010\u0003\u0010\u0005\u0010\u0262\n\u0010\u0003",
    "\u0010\u0003\u0010\u0003\u0010\u0003\u0010\u0003\u0010\u0003\u0010\u0003",
    "\u0010\u0005\u0010\u026b\n\u0010\u0003\u0010\u0003\u0010\u0003\u0010",
    "\u0005\u0010\u0270\n\u0010\u0003\u0011\u0003\u0011\u0003\u0011\u0003",
    "\u0011\u0007\u0011\u0276\n\u0011\f\u0011\u000e\u0011\u0279\u000b\u0011",
    "\u0003\u0011\u0003\u0011\u0005\u0011\u027d\n\u0011\u0003\u0011\u0003",
    "\u0011\u0003\u0011\u0003\u0011\u0003\u0011\u0007\u0011\u0284\n\u0011",
    "\f\u0011\u000e\u0011\u0287\u000b\u0011\u0003\u0011\u0003\u0011\u0003",
    "\u0012\u0003\u0012\u0003\u0012\u0003\u0012\u0003\u0012\u0007\u0012\u0290",
    "\n\u0012\f\u0012\u000e\u0012\u0293\u000b\u0012\u0003\u0012\u0003\u0012",
    "\u0005\u0012\u0297\n\u0012\u0003\u0012\u0005\u0012\u029a\n\u0012\u0003",
    "\u0012\u0003\u0012\u0003\u0012\u0003\u0012\u0003\u0012\u0003\u0013\u0003",
    "\u0013\u0003\u0013\u0003\u0013\u0003\u0013\u0003\u0013\u0003\u0013\u0005",
    "\u0013\u02a8\n\u0013\u0003\u0013\u0003\u0013\u0003\u0014\u0003\u0014",
    "\u0003\u0014\u0005\u0014\u02af\n\u0014\u0003\u0014\u0003\u0014\u0003",
    "\u0014\u0003\u0014\u0003\u0014\u0007\u0014\u02b6\n\u0014\f\u0014\u000e",
    "\u0014\u02b9\u000b\u0014\u0003\u0014\u0003\u0014\u0003\u0014\u0003\u0014",
    "\u0003\u0014\u0003\u0015\u0003\u0015\u0003\u0015\u0003\u0016\u0003\u0016",
    "\u0003\u0017\u0003\u0017\u0003\u0017\u0003\u0017\u0005\u0017\u02c9\n",
    "\u0017\u0003\u0017\u0003\u0017\u0005\u0017\u02cd\n\u0017\u0003\u0018",
    "\u0003\u0018\u0003\u0018\u0003\u0018\u0007\u0018\u02d3\n\u0018\f\u0018",
    "\u000e\u0018\u02d6\u000b\u0018\u0003\u0019\u0003\u0019\u0003\u0019\u0003",
    "\u0019\u0003\u0019\u0003\u0019\u0007\u0019\u02de\n\u0019\f\u0019\u000e",
    "\u0019\u02e1\u000b\u0019\u0003\u001a\u0003\u001a\u0003\u001a\u0003\u001a",
    "\u0003\u001a\u0007\u001a\u02e8\n\u001a\f\u001a\u000e\u001a\u02eb\u000b",
    "\u001a\u0003\u001b\u0003\u001b\u0003\u001b\u0003\u001b\u0003\u001b\u0005",
    "\u001b\u02f2\n\u001b\u0003\u001c\u0003\u001c\u0003\u001c\u0007\u001c",
    "\u02f7\n\u001c\f\u001c\u000e\u001c\u02fa\u000b\u001c\u0003\u001c\u0005",
    "\u001c\u02fd\n\u001c\u0003\u001c\u0003\u001c\u0005\u001c\u0301\n\u001c",
    "\u0003\u001c\u0007\u001c\u0304\n\u001c\f\u001c\u000e\u001c\u0307\u000b",
    "\u001c\u0003\u001c\u0005\u001c\u030a\n\u001c\u0003\u001c\u0003\u001c",
    "\u0003\u001c\u0005\u001c\u030f\n\u001c\u0003\u001c\u0003\u001c\u0005",
    "\u001c\u0313\n\u001c\u0003\u001c\u0003\u001c\u0005\u001c\u0317\n\u001c",
    "\u0003\u001d\u0003\u001d\u0003\u001d\u0003\u001e\u0003\u001e\u0003\u001e",
    "\u0003\u001e\u0003\u001e\u0005\u001e\u0321\n\u001e\u0003\u001e\u0003",
    "\u001e\u0005\u001e\u0325\n\u001e\u0003\u001e\u0003\u001e\u0003\u001e",
    "\u0005\u001e\u032a\n\u001e\u0003\u001f\u0003\u001f\u0003\u001f\u0005",
    "\u001f\u032f\n\u001f\u0003\u001f\u0003\u001f\u0005\u001f\u0333\n\u001f",
    "\u0003 \u0003 \u0003 \u0003!\u0003!\u0003!\u0003!\u0003!\u0003!\u0003",
    "!\u0003!\u0005!\u0340\n!\u0003!\u0003!\u0003\"\u0005\"\u0345\n\"\u0003",
    "\"\u0003\"\u0003\"\u0003\"\u0005\"\u034b\n\"\u0003\"\u0003\"\u0003#",
    "\u0003#\u0003#\u0003#\u0003#\u0005#\u0354\n#\u0003#\u0003#\u0005#\u0358",
    "\n#\u0003#\u0003#\u0003$\u0003$\u0003$\u0003$\u0005$\u0360\n$\u0003",
    "$\u0005$\u0363\n$\u0003$\u0003$\u0003$\u0005$\u0368\n$\u0003$\u0003",
    "$\u0003%\u0005%\u036d\n%\u0003%\u0003%\u0003%\u0003%\u0003%\u0005%\u0374",
    "\n%\u0003%\u0003%\u0003%\u0003%\u0003%\u0003%\u0003%\u0005%\u037d\n",
    "%\u0003%\u0005%\u0380\n%\u0003&\u0003&\u0003&\u0007&\u0385\n&\f&\u000e",
    "&\u0388\u000b&\u0003\'\u0003\'\u0003\'\u0005\'\u038d\n\'\u0003\'\u0007",
    "\'\u0390\n\'\f\'\u000e\'\u0393\u000b\'\u0003\'\u0007\'\u0396\n\'\f\'",
    "\u000e\'\u0399\u000b\'\u0003\'\u0003\'\u0005\'\u039d\n\'\u0003\'\u0005",
    "\'\u03a0\n\'\u0003(\u0003(\u0003)\u0003)\u0005)\u03a6\n)\u0003)\u0003",
    ")\u0003)\u0003)\u0003)\u0003)\u0003)\u0003)\u0003)\u0003)\u0007)\u03b2",
    "\n)\f)\u000e)\u03b5\u000b)\u0003)\u0003)\u0003)\u0003)\u0003)\u0007",
    ")\u03bc\n)\f)\u000e)\u03bf\u000b)\u0003)\u0003)\u0003)\u0005)\u03c4",
    "\n)\u0003*\u0003*\u0003*\u0005*\u03c9\n*\u0003*\u0003*\u0003*\u0005",
    "*\u03ce\n*\u0003*\u0003*\u0003*\u0005*\u03d3\n*\u0007*\u03d5\n*\f*\u000e",
    "*\u03d8\u000b*\u0003*\u0003*\u0005*\u03dc\n*\u0003*\u0005*\u03df\n*",
    "\u0003*\u0003*\u0003*\u0003*\u0003*\u0003*\u0007*\u03e7\n*\f*\u000e",
    "*\u03ea\u000b*\u0003*\u0003*\u0003*\u0003*\u0003*\u0003*\u0003*\u0007",
    "*\u03f3\n*\f*\u000e*\u03f6\u000b*\u0003*\u0003*\u0007*\u03fa\n*\f*\u000e",
    "*\u03fd\u000b*\u0005*\u03ff\n*\u0003+\u0003+\u0003+\u0003+\u0003+\u0003",
    "+\u0003+\u0003+\u0003+\u0003+\u0005+\u040b\n+\u0003,\u0006,\u040e\n",
    ",\r,\u000e,\u040f\u0003-\u0003-\u0003-\u0005-\u0415\n-\u0003.\u0005",
    ".\u0418\n.\u0003.\u0003.\u0003/\u0006/\u041d\n/\r/\u000e/\u041e\u0003",
    "0\u00030\u00030\u00030\u00030\u00030\u00030\u00030\u00030\u00030\u0005",
    "0\u042b\n0\u00031\u00031\u00031\u00031\u00031\u00031\u00031\u00031\u0003",
    "1\u00031\u00031\u00061\u0438\n1\r1\u000e1\u0439\u00031\u00031\u0003",
    "1\u00051\u043f\n1\u00032\u00052\u0442\n2\u00032\u00032\u00032\u0003",
    "2\u00032\u00032\u00032\u00032\u00032\u00032\u00032\u00072\u044f\n2\f",
    "2\u000e2\u0452\u000b2\u00032\u00032\u00032\u00052\u0457\n2\u00032\u0003",
    "2\u00032\u00032\u00032\u00032\u00032\u00032\u00032\u00052\u0462\n2\u0003",
    "3\u00053\u0465\n3\u00033\u00033\u00033\u00033\u00033\u00033\u00073\u046d",
    "\n3\f3\u000e3\u0470\u000b3\u00033\u00033\u00033\u00033\u00053\u0476",
    "\n3\u00034\u00034\u00034\u00034\u00054\u047c\n4\u00035\u00035\u0003",
    "5\u00035\u00075\u0482\n5\f5\u000e5\u0485\u000b5\u00036\u00036\u0003",
    "6\u00036\u00036\u00036\u00036\u00056\u048e\n6\u00036\u00036\u00036\u0003",
    "6\u00036\u00036\u00036\u00036\u00036\u00036\u00036\u00036\u00036\u0003",
    "6\u00036\u00036\u00036\u00036\u00056\u04a2\n6\u00037\u00037\u00037\u0003",
    "7\u00057\u04a8\n7\u00038\u00038\u00058\u04ac\n8\u00038\u00038\u0003",
    "8\u00058\u04b1\n8\u00038\u00038\u00058\u04b5\n8\u00038\u00038\u0003",
    "8\u00058\u04ba\n8\u00038\u00058\u04bd\n8\u00038\u00038\u00038\u0005",
    "8\u04c2\n8\u00038\u00058\u04c5\n8\u00039\u00039\u00039\u00039\u0003",
    "9\u0003:\u0003:\u0003;\u0003;\u0003;\u0005;\u04d1\n;\u0003;\u0003;\u0003",
    "<\u0003<\u0003<\u0005<\u04d8\n<\u0003<\u0003<\u0003<\u0005<\u04dd\n",
    "<\u0003<\u0003<\u0003<\u0005<\u04e2\n<\u0007<\u04e4\n<\f<\u000e<\u04e7",
    "\u000b<\u0003<\u0003<\u0005<\u04eb\n<\u0003<\u0005<\u04ee\n<\u0003<",
    "\u0003<\u0003<\u0003<\u0003<\u0003<\u0007<\u04f6\n<\f<\u000e<\u04f9",
    "\u000b<\u0003<\u0003<\u0003<\u0003<\u0003<\u0003<\u0003<\u0007<\u0502",
    "\n<\f<\u000e<\u0505\u000b<\u0003<\u0003<\u0007<\u0509\n<\f<\u000e<\u050c",
    "\u000b<\u0003<\u0003<\u0003<\u0003<\u0003<\u0005<\u0513\n<\u0003=\u0003",
    "=\u0003=\u0003=\u0003=\u0003=\u0003=\u0003=\u0003=\u0003=\u0003=\u0003",
    "=\u0003=\u0005=\u0522\n=\u0003=\u0003=\u0003=\u0003=\u0003=\u0003=\u0003",
    "=\u0003=\u0003=\u0003=\u0003=\u0003=\u0003=\u0003=\u0003=\u0003=\u0003",
    "=\u0003=\u0003=\u0003=\u0003=\u0003=\u0003=\u0003=\u0003=\u0003=\u0003",
    "=\u0003=\u0003=\u0005=\u0541\n=\u0005=\u0543\n=\u0003>\u0003>\u0003",
    ">\u0005>\u0548\n>\u0003>\u0003>\u0005>\u054c\n>\u0003>\u0003>\u0003",
    "?\u0005?\u0551\n?\u0003?\u0003?\u0003?\u0003?\u0003?\u0005?\u0558\n",
    "?\u0003?\u0005?\u055b\n?\u0003@\u0005@\u055e\n@\u0003@\u0003@\u0003",
    "@\u0005@\u0563\n@\u0003@\u0003@\u0005@\u0567\n@\u0005@\u0569\n@\u0003",
    "A\u0003A\u0003A\u0003A\u0003A\u0005A\u0570\nA\u0003A\u0003A\u0007A\u0574",
    "\nA\fA\u000eA\u0577\u000bA\u0003B\u0003B\u0003B\u0003B\u0005B\u057d",
    "\nB\u0003C\u0003C\u0003C\u0003C\u0005C\u0583\nC\u0003C\u0005C\u0586",
    "\nC\u0003C\u0003C\u0003C\u0005C\u058b\nC\u0003C\u0003C\u0005C\u058f",
    "\nC\u0003C\u0005C\u0592\nC\u0003C\u0003C\u0003D\u0003D\u0003D\u0005",
    "D\u0599\nD\u0003E\u0003E\u0003E\u0003E\u0005E\u059f\nE\u0003E\u0005",
    "E\u05a2\nE\u0003E\u0003E\u0003E\u0003E\u0003E\u0003E\u0003E\u0003E\u0005",
    "E\u05ac\nE\u0003F\u0003F\u0003F\u0003F\u0003F\u0007F\u05b3\nF\fF\u000e",
    "F\u05b6\u000bF\u0003G\u0003G\u0003G\u0003G\u0005G\u05bc\nG\u0003G\u0003",
    "G\u0003G\u0003G\u0003G\u0005G\u05c3\nG\u0005G\u05c5\nG\u0003H\u0003",
    "H\u0003H\u0003H\u0005H\u05cb\nH\u0003H\u0005H\u05ce\nH\u0003H\u0003",
    "H\u0003H\u0003H\u0003H\u0003H\u0003H\u0003H\u0003H\u0005H\u05d9\nH\u0003",
    "I\u0003I\u0003I\u0003I\u0003I\u0007I\u05e0\nI\fI\u000eI\u05e3\u000b",
    "I\u0003J\u0003J\u0003J\u0005J\u05e8\nJ\u0003K\u0003K\u0003K\u0003K\u0005",
    "K\u05ee\nK\u0003K\u0005K\u05f1\nK\u0003K\u0003K\u0003K\u0005K\u05f6",
    "\nK\u0003K\u0005K\u05f9\nK\u0003K\u0005K\u05fc\nK\u0003K\u0005K\u05ff",
    "\nK\u0003K\u0005K\u0602\nK\u0003K\u0003K\u0003K\u0003K\u0005K\u0608",
    "\nK\u0003L\u0003L\u0003L\u0003L\u0003L\u0003L\u0007L\u0610\nL\fL\u000e",
    "L\u0613\u000bL\u0003L\u0003L\u0003L\u0003L\u0003L\u0003L\u0007L\u061b",
    "\nL\fL\u000eL\u061e\u000bL\u0005L\u0620\nL\u0003M\u0003M\u0003M\u0003",
    "M\u0003M\u0005M\u0627\nM\u0003M\u0003M\u0003M\u0005M\u062c\nM\u0003",
    "M\u0007M\u062f\nM\fM\u000eM\u0632\u000bM\u0003M\u0005M\u0635\nM\u0003",
    "M\u0003M\u0003M\u0003M\u0003M\u0003M\u0005M\u063d\nM\u0003M\u0003M\u0005",
    "M\u0641\nM\u0003M\u0007M\u0644\nM\fM\u000eM\u0647\u000bM\u0003M\u0005",
    "M\u064a\nM\u0005M\u064c\nM\u0003N\u0006N\u064f\nN\rN\u000eN\u0650\u0003",
    "O\u0003O\u0003O\u0003O\u0003O\u0003O\u0005O\u0659\nO\u0003O\u0003O\u0003",
    "O\u0005O\u065e\nO\u0003P\u0003P\u0003P\u0003P\u0005P\u0664\nP\u0003",
    "P\u0003P\u0003P\u0003P\u0003P\u0005P\u066b\nP\u0003P\u0005P\u066e\n",
    "P\u0003Q\u0003Q\u0003Q\u0003R\u0003R\u0005R\u0675\nR\u0003R\u0003R\u0003",
    "R\u0003R\u0003R\u0003R\u0005R\u067d\nR\u0003R\u0003R\u0003R\u0003R\u0007",
    "R\u0683\nR\fR\u000eR\u0686\u000bR\u0005R\u0688\nR\u0003R\u0005R\u068b",
    "\nR\u0003S\u0003S\u0003S\u0005S\u0690\nS\u0003T\u0003T\u0003T\u0003",
    "T\u0003T\u0007T\u0697\nT\fT\u000eT\u069a\u000bT\u0003T\u0005T\u069d",
    "\nT\u0003T\u0003T\u0003T\u0003U\u0003U\u0003U\u0003U\u0003U\u0005U\u06a7",
    "\nU\u0003V\u0003V\u0003V\u0003V\u0003V\u0003V\u0003W\u0003W\u0003W\u0003",
    "W\u0003W\u0003X\u0003X\u0003X\u0003Y\u0003Y\u0003Y\u0005Y\u06ba\nY\u0003",
    "Z\u0003Z\u0003Z\u0003Z\u0003Z\u0005Z\u06c1\nZ\u0005Z\u06c3\nZ\u0003",
    "Z\u0003Z\u0005Z\u06c7\nZ\u0003Z\u0003Z\u0005Z\u06cb\nZ\u0003[\u0003",
    "[\u0003[\u0003[\u0007[\u06d1\n[\f[\u000e[\u06d4\u000b[\u0003[\u0003",
    "[\u0003\\\u0003\\\u0003\\\u0003\\\u0007\\\u06dc\n\\\f\\\u000e\\\u06df",
    "\u000b\\\u0003]\u0003]\u0003]\u0003]\u0007]\u06e5\n]\f]\u000e]\u06e8",
    "\u000b]\u0003]\u0003]\u0003^\u0003^\u0003^\u0005^\u06ef\n^\u0003^\u0003",
    "^\u0003^\u0003^\u0003_\u0003_\u0005_\u06f7\n_\u0003_\u0003_\u0005_\u06fb",
    "\n_\u0003`\u0003`\u0003`\u0003`\u0003a\u0003a\u0005a\u0703\na\u0003",
    "b\u0003b\u0003b\u0003b\u0003b\u0003b\u0003c\u0003c\u0003c\u0003c\u0003",
    "d\u0003d\u0003d\u0003d\u0007d\u0713\nd\fd\u000ed\u0716\u000bd\u0003",
    "d\u0003d\u0003d\u0003d\u0003e\u0003e\u0003e\u0003e\u0003e\u0003f\u0003",
    "f\u0005f\u0723\nf\u0003g\u0003g\u0003g\u0003g\u0003g\u0005g\u072a\n",
    "g\u0003g\u0003g\u0005g\u072e\ng\u0003h\u0003h\u0003h\u0003h\u0003h\u0005",
    "h\u0735\nh\u0005h\u0737\nh\u0003i\u0003i\u0005i\u073b\ni\u0003i\u0003",
    "i\u0003i\u0003i\u0003i\u0007i\u0742\ni\fi\u000ei\u0745\u000bi\u0003",
    "j\u0003j\u0003j\u0003j\u0003j\u0005j\u074c\nj\u0003k\u0003k\u0003k\u0003",
    "k\u0003k\u0007k\u0753\nk\fk\u000ek\u0756\u000bk\u0003k\u0003k\u0003",
    "l\u0003l\u0003l\u0003m\u0003m\u0003m\u0003m\u0003m\u0003m\u0003n\u0003",
    "n\u0005n\u0765\nn\u0003n\u0003n\u0003n\u0003n\u0005n\u076b\nn\u0003",
    "n\u0003n\u0005n\u076f\nn\u0003o\u0003o\u0003o\u0003o\u0003o\u0003o\u0007",
    "o\u0777\no\fo\u000eo\u077a\u000bo\u0003o\u0003o\u0003o\u0007o\u077f",
    "\no\fo\u000eo\u0782\u000bo\u0003p\u0003p\u0003p\u0003p\u0003p\u0003",
    "p\u0005p\u078a\np\u0003p\u0003p\u0005p\u078e\np\u0003p\u0003p\u0007",
    "p\u0792\np\fp\u000ep\u0795\u000bp\u0003q\u0003q\u0005q\u0799\nq\u0003",
    "r\u0003r\u0005r\u079d\nr\u0003s\u0003s\u0003s\u0003s\u0003s\u0003s\u0003",
    "s\u0003s\u0005s\u07a7\ns\u0003t\u0003t\u0003u\u0003u\u0005u\u07ad\n",
    "u\u0003v\u0003v\u0005v\u07b1\nv\u0003v\u0003v\u0003v\u0003v\u0003v\u0003",
    "v\u0003v\u0003v\u0007v\u07bb\nv\fv\u000ev\u07be\u000bv\u0003v\u0003",
    "v\u0003w\u0003w\u0005w\u07c4\nw\u0003x\u0003x\u0003y\u0003y\u0003y\u0003",
    "y\u0003y\u0003y\u0003y\u0003y\u0003y\u0003y\u0007y\u07d2\ny\fy\u000e",
    "y\u07d5\u000by\u0003y\u0003y\u0007y\u07d9\ny\fy\u000ey\u07dc\u000by",
    "\u0003z\u0003z\u0003z\u0003z\u0003z\u0003z\u0003z\u0005z\u07e5\nz\u0003",
    "{\u0005{\u07e8\n{\u0003{\u0003{\u0005{\u07ec\n{\u0003|\u0003|\u0003",
    "}\u0003}\u0003}\u0005}\u07f3\n}\u0003}\u0003}\u0003}\u0003}\u0003}\u0005",
    "}\u07fa\n}\u0005}\u07fc\n}\u0003~\u0003~\u0005~\u0800\n~\u0003\u007f",
    "\u0003\u007f\u0005\u007f\u0804\n\u007f\u0003\u0080\u0003\u0080\u0003",
    "\u0080\u0005\u0080\u0809\n\u0080\u0003\u0081\u0005\u0081\u080c\n\u0081",
    "\u0003\u0081\u0003\u0081\u0005\u0081\u0810\n\u0081\u0003\u0081\u0005",
    "\u0081\u0813\n\u0081\u0003\u0081\u0003\u0081\u0003\u0082\u0003\u0082",
    "\u0003\u0082\u0003\u0083\u0003\u0083\u0003\u0083\u0003\u0083\u0005\u0083",
    "\u081e\n\u0083\u0003\u0083\u0005\u0083\u0821\n\u0083\u0003\u0083\u0003",
    "\u0083\u0003\u0083\u0003\u0084\u0003\u0084\u0003\u0084\u0003\u0085\u0003",
    "\u0085\u0003\u0085\u0005\u0085\u082c\n\u0085\u0003\u0085\u0003\u0085",
    "\u0003\u0085\u0003\u0085\u0005\u0085\u0832\n\u0085\u0003\u0085\u0003",
    "\u0085\u0005\u0085\u0836\n\u0085\u0005\u0085\u0838\n\u0085\u0003\u0086",
    "\u0003\u0086\u0005\u0086\u083c\n\u0086\u0003\u0086\u0003\u0086\u0003",
    "\u0087\u0003\u0087\u0003\u0087\u0003\u0088\u0003\u0088\u0005\u0088\u0845",
    "\n\u0088\u0003\u0088\u0003\u0088\u0003\u0088\u0007\u0088\u084a\n\u0088",
    "\f\u0088\u000e\u0088\u084d\u000b\u0088\u0003\u0088\u0005\u0088\u0850",
    "\n\u0088\u0003\u0088\u0003\u0088\u0005\u0088\u0854\n\u0088\u0003\u0088",
    "\u0003\u0088\u0003\u0088\u0007\u0088\u0859\n\u0088\f\u0088\u000e\u0088",
    "\u085c\u000b\u0088\u0003\u0088\u0005\u0088\u085f\n\u0088\u0003\u0089",
    "\u0003\u0089\u0003\u0089\u0003\u0089\u0003\u0089\u0003\u0089\u0005\u0089",
    "\u0867\n\u0089\u0003\u008a\u0003\u008a\u0003\u008a\u0003\u008a\u0005",
    "\u008a\u086d\n\u008a\u0003\u008a\u0003\u008a\u0005\u008a\u0871\n\u008a",
    "\u0003\u008a\u0003\u008a\u0003\u008a\u0003\u008a\u0003\u008a\u0003\u008b",
    "\u0003\u008b\u0003\u008b\u0003\u008b\u0005\u008b\u087c\n\u008b\u0003",
    "\u008b\u0003\u008b\u0003\u008b\u0003\u008b\u0003\u008b\u0005\u008b\u0883",
    "\n\u008b\u0003\u008b\u0003\u008b\u0003\u008b\u0003\u008b\u0003\u008b",
    "\u0003\u008c\u0003\u008c\u0003\u008c\u0003\u008c\u0003\u008c\u0003\u008c",
    "\u0005\u008c\u0890\n\u008c\u0003\u008d\u0003\u008d\u0003\u008d\u0003",
    "\u008d\u0007\u008d\u0896\n\u008d\f\u008d\u000e\u008d\u0899\u000b\u008d",
    "\u0003\u008e\u0005\u008e\u089c\n\u008e\u0003\u008e\u0003\u008e\u0003",
    "\u008f\u0003\u008f\u0003\u008f\u0003\u008f\u0007\u008f\u08a4\n\u008f",
    "\f\u008f\u000e\u008f\u08a7\u000b\u008f\u0003\u0090\u0003\u0090\u0005",
    "\u0090\u08ab\n\u0090\u0003\u0090\u0003\u0090\u0003\u0090\u0003\u0090",
    "\u0003\u0090\u0003\u0091\u0003\u0091\u0003\u0091\u0003\u0091\u0007\u0091",
    "\u08b6\n\u0091\f\u0091\u000e\u0091\u08b9\u000b\u0091\u0003\u0091\u0003",
    "\u0091\u0003\u0092\u0003\u0092\u0003\u0092\u0003\u0092\u0007\u0092\u08c1",
    "\n\u0092\f\u0092\u000e\u0092\u08c4\u000b\u0092\u0003\u0093\u0003\u0093",
    "\u0003\u0093\u0003\u0093\u0003\u0093\u0005\u0093\u08cb\n\u0093\u0003",
    "\u0094\u0003\u0094\u0005\u0094\u08cf\n\u0094\u0003\u0094\u0003\u0094",
    "\u0005\u0094\u08d3\n\u0094\u0003\u0094\u0003\u0094\u0005\u0094\u08d7",
    "\n\u0094\u0005\u0094\u08d9\n\u0094\u0003\u0095\u0003\u0095\u0003\u0095",
    "\u0005\u0095\u08de\n\u0095\u0003\u0095\u0005\u0095\u08e1\n\u0095\u0003",
    "\u0095\u0005\u0095\u08e4\n\u0095\u0003\u0095\u0005\u0095\u08e7\n\u0095",
    "\u0003\u0095\u0003\u0095\u0005\u0095\u08eb\n\u0095\u0003\u0095\u0005",
    "\u0095\u08ee\n\u0095\u0003\u0095\u0005\u0095\u08f1\n\u0095\u0003\u0096",
    "\u0005\u0096\u08f4\n\u0096\u0003\u0096\u0005\u0096\u08f7\n\u0096\u0003",
    "\u0096\u0003\u0096\u0003\u0096\u0007\u0096\u08fc\n\u0096\f\u0096\u000e",
    "\u0096\u08ff\u000b\u0096\u0003\u0097\u0003\u0097\u0003\u0098\u0003\u0098",
    "\u0003\u0098\u0003\u0099\u0003\u0099\u0003\u0099\u0005\u0099\u0909\n",
    "\u0099\u0003\u0099\u0003\u0099\u0005\u0099\u090d\n\u0099\u0003\u0099",
    "\u0005\u0099\u0910\n\u0099\u0003\u009a\u0003\u009a\u0005\u009a\u0914",
    "\n\u009a\u0003\u009a\u0003\u009a\u0003\u009a\u0003\u009a\u0003\u009a",
    "\u0005\u009a\u091b\n\u009a\u0003\u009b\u0003\u009b\u0005\u009b\u091f",
    "\n\u009b\u0003\u009b\u0003\u009b\u0003\u009c\u0003\u009c\u0003\u009c",
    "\u0003\u009c\u0007\u009c\u0927\n\u009c\f\u009c\u000e\u009c\u092a\u000b",
    "\u009c\u0003\u009d\u0003\u009d\u0003\u009d\u0007\u009d\u092f\n\u009d",
    "\f\u009d\u000e\u009d\u0932\u000b\u009d\u0003\u009e\u0003\u009e\u0003",
    "\u009e\u0005\u009e\u0937\n\u009e\u0003\u009f\u0003\u009f\u0005\u009f",
    "\u093b\n\u009f\u0003\u00a0\u0003\u00a0\u0003\u00a0\u0003\u00a0\u0005",
    "\u00a0\u0941\n\u00a0\u0003\u00a1\u0003\u00a1\u0003\u00a1\u0003\u00a1",
    "\u0003\u00a1\u0003\u00a1\u0003\u00a1\u0005\u00a1\u094a\n\u00a1\u0003",
    "\u00a2\u0005\u00a2\u094d\n\u00a2\u0003\u00a2\u0003\u00a2\u0003\u00a2",
    "\u0005\u00a2\u0952\n\u00a2\u0003\u00a2\u0005\u00a2\u0955\n\u00a2\u0003",
    "\u00a3\u0003\u00a3\u0003\u00a3\u0003\u00a3\u0003\u00a3\u0003\u00a3\u0007",
    "\u00a3\u095d\n\u00a3\f\u00a3\u000e\u00a3\u0960\u000b\u00a3\u0003\u00a3",
    "\u0003\u00a3\u0005\u00a3\u0964\n\u00a3\u0003\u00a4\u0003\u00a4\u0003",
    "\u00a4\u0003\u00a4\u0003\u00a4\u0007\u00a4\u096b\n\u00a4\f\u00a4\u000e",
    "\u00a4\u096e\u000b\u00a4\u0003\u00a4\u0003\u00a4\u0005\u00a4\u0972\n",
    "\u00a4\u0003\u00a5\u0003\u00a5\u0005\u00a5\u0976\n\u00a5\u0003\u00a5",
    "\u0003\u00a5\u0003\u00a5\u0003\u00a5\u0003\u00a5\u0007\u00a5\u097d\n",
    "\u00a5\f\u00a5\u000e\u00a5\u0980\u000b\u00a5\u0003\u00a5\u0005\u00a5",
    "\u0983\n\u00a5\u0003\u00a6\u0003\u00a6\u0003\u00a7\u0003\u00a7\u0003",
    "\u00a7\u0003\u00a8\u0003\u00a8\u0003\u00a8\u0003\u00a8\u0003\u00a8\u0007",
    "\u00a8\u098f\n\u00a8\f\u00a8\u000e\u00a8\u0992\u000b\u00a8\u0003\u00a9",
    "\u0003\u00a9\u0003\u00a9\u0003\u00aa\u0003\u00aa\u0003\u00aa\u0003\u00ab",
    "\u0003\u00ab\u0003\u00ab\u0003\u00ab\u0005\u00ab\u099e\n\u00ab\u0003",
    "\u00ab\u0003\u00ab\u0003\u00ab\u0005\u00ab\u09a3\n\u00ab\u0007\u00ab",
    "\u09a5\n\u00ab\f\u00ab\u000e\u00ab\u09a8\u000b\u00ab\u0003\u00ac\u0006",
    "\u00ac\u09ab\n\u00ac\r\u00ac\u000e\u00ac\u09ac\u0003\u00ad\u0003\u00ad",
    "\u0003\u00ad\u0003\u00ad\u0003\u00ad\u0003\u00ad\u0003\u00ad\u0003\u00ad",
    "\u0003\u00ad\u0005\u00ad\u09b8\n\u00ad\u0005\u00ad\u09ba\n\u00ad\u0003",
    "\u00ae\u0003\u00ae\u0003\u00ae\u0003\u00ae\u0003\u00ae\u0005\u00ae\u09c1",
    "\n\u00ae\u0003\u00ae\u0005\u00ae\u09c4\n\u00ae\u0003\u00af\u0003\u00af",
    "\u0003\u00af\u0007\u00af\u09c9\n\u00af\f\u00af\u000e\u00af\u09cc\u000b",
    "\u00af\u0003\u00b0\u0003\u00b0\u0005\u00b0\u09d0\n\u00b0\u0003\u00b0",
    "\u0003\u00b0\u0003\u00b0\u0003\u00b0\u0005\u00b0\u09d6\n\u00b0\u0003",
    "\u00b0\u0005\u00b0\u09d9\n\u00b0\u0003\u00b0\u0005\u00b0\u09dc\n\u00b0",
    "\u0003\u00b1\u0003\u00b1\u0003\u00b1\u0003\u00b2\u0003\u00b2\u0003\u00b2",
    "\u0003\u00b2\u0003\u00b2\u0003\u00b2\u0003\u00b2\u0003\u00b2\u0006\u00b2",
    "\u09e9\n\u00b2\r\u00b2\u000e\u00b2\u09ea\u0003\u00b3\u0003\u00b3\u0003",
    "\u00b3\u0003\u00b3\u0003\u00b3\u0005\u00b3\u09f2\n\u00b3\u0003\u00b3",
    "\u0005\u00b3\u09f5\n\u00b3\u0003\u00b3\u0005\u00b3\u09f8\n\u00b3\u0003",
    "\u00b4\u0003\u00b4\u0005\u00b4\u09fc\n\u00b4\u0003\u00b4\u0003\u00b4",
    "\u0003\u00b4\u0005\u00b4\u0a01\n\u00b4\u0003\u00b4\u0003\u00b4\u0003",
    "\u00b4\u0003\u00b4\u0005\u00b4\u0a07\n\u00b4\u0003\u00b5\u0003\u00b5",
    "\u0005\u00b5\u0a0b\n\u00b5\u0003\u00b5\u0003\u00b5\u0003\u00b5\u0003",
    "\u00b5\u0003\u00b5\u0003\u00b5\u0003\u00b5\u0007\u00b5\u0a14\n\u00b5",
    "\f\u00b5\u000e\u00b5\u0a17\u000b\u00b5\u0003\u00b5\u0005\u00b5\u0a1a",
    "\n\u00b5\u0003\u00b5\u0005\u00b5\u0a1d\n\u00b5\u0003\u00b6\u0003\u00b6",
    "\u0005\u00b6\u0a21\n\u00b6\u0003\u00b6\u0003\u00b6\u0005\u00b6\u0a25",
    "\n\u00b6\u0003\u00b6\u0003\u00b6\u0005\u00b6\u0a29\n\u00b6\u0003\u00b7",
    "\u0003\u00b7\u0005\u00b7\u0a2d\n\u00b7\u0003\u00b7\u0003\u00b7\u0003",
    "\u00b8\u0003\u00b8\u0005\u00b8\u0a33\n\u00b8\u0003\u00b8\u0003\u00b8",
    "\u0003\u00b9\u0003\u00b9\u0005\u00b9\u0a39\n\u00b9\u0003\u00b9\u0003",
    "\u00b9\u0003\u00b9\u0003\u00b9\u0003\u00b9\u0005\u00b9\u0a40\n\u00b9",
    "\u0003\u00b9\u0003\u00b9\u0003\u00b9\u0003\u00b9\u0007\u00b9\u0a46\n",
    "\u00b9\f\u00b9\u000e\u00b9\u0a49\u000b\u00b9\u0003\u00ba\u0003\u00ba",
    "\u0003\u00ba\u0005\u00ba\u0a4e\n\u00ba\u0003\u00bb\u0003\u00bb\u0003",
    "\u00bb\u0005\u00bb\u0a53\n\u00bb\u0003\u00bb\u0003\u00bb\u0003\u00bb",
    "\u0003\u00bb\u0003\u00bb\u0003\u00bb\u0003\u00bb\u0003\u00bb\u0003\u00bb",
    "\u0005\u00bb\u0a5e\n\u00bb\u0003\u00bb\u0003\u00bb\u0003\u00bb\u0003",
    "\u00bb\u0003\u00bb\u0003\u00bb\u0003\u00bb\u0005\u00bb\u0a67\n\u00bb",
    "\u0003\u00bc\u0003\u00bc\u0005\u00bc\u0a6b\n\u00bc\u0003\u00bc\u0003",
    "\u00bc\u0003\u00bc\u0003\u00bc\u0003\u00bc\u0007\u00bc\u0a72\n\u00bc",
    "\f\u00bc\u000e\u00bc\u0a75\u000b\u00bc\u0003\u00bc\u0005\u00bc\u0a78",
    "\n\u00bc\u0003\u00bc\u0003\u00bc\u0003\u00bd\u0003\u00bd\u0003\u00bd",
    "\u0003\u00bd\u0007\u00bd\u0a80\n\u00bd\f\u00bd\u000e\u00bd\u0a83\u000b",
    "\u00bd\u0003\u00bd\u0003\u00bd\u0005\u00bd\u0a87\n\u00bd\u0003\u00bd",
    "\u0003\u00bd\u0003\u00bd\u0003\u00bd\u0003\u00bd\u0003\u00be\u0003\u00be",
    "\u0003\u00be\u0003\u00be\u0003\u00bf\u0003\u00bf\u0003\u00c0\u0003\u00c0",
    "\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0",
    "\u0003\u00c0\u0005\u00c0\u0a9d\n\u00c0\u0003\u00c0\u0005\u00c0\u0aa0",
    "\n\u00c0\u0003\u00c1\u0003\u00c1\u0003\u00c1\u0003\u00c1\u0003\u00c1",
    "\u0003\u00c1\u0003\u00c1\u0003\u00c1\u0003\u00c1\u0003\u00c1\u0003\u00c1",
    "\u0003\u00c1\u0003\u00c1\u0003\u00c1\u0003\u00c1\u0003\u00c1\u0003\u00c1",
    "\u0005\u00c1\u0ab3\n\u00c1\u0003\u00c1\u0003\u00c1\u0003\u00c1\u0003",
    "\u00c1\u0003\u00c1\u0003\u00c1\u0003\u00c1\u0003\u00c1\u0003\u00c1\u0003",
    "\u00c1\u0003\u00c1\u0003\u00c1\u0003\u00c1\u0003\u00c1\u0007\u00c1\u0ac3",
    "\n\u00c1\f\u00c1\u000e\u00c1\u0ac6\u000b\u00c1\u0003\u00c2\u0003\u00c2",
    "\u0003\u00c2\u0003\u00c2\u0003\u00c2\u0003\u00c2\u0003\u00c2\u0003\u00c2",
    "\u0005\u00c2\u0ad0\n\u00c2\u0003\u00c3\u0003\u00c3\u0003\u00c3\u0003",
    "\u00c3\u0003\u00c4\u0003\u00c4\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003",
    "\u00c5\u0003\u00c5\u0007\u00c5\u0add\n\u00c5\f\u00c5\u000e\u00c5\u0ae0",
    "\u000b\u00c5\u0003\u00c6\u0003\u00c6\u0003\u00c6\u0003\u00c6\u0003\u00c6",
    "\u0003\u00c6\u0003\u00c6\u0003\u00c6\u0003\u00c6\u0005\u00c6\u0aeb\n",
    "\u00c6\u0003\u00c7\u0003\u00c7\u0005\u00c7\u0aef\n\u00c7\u0003\u00c8",
    "\u0003\u00c8\u0003\u00c8\u0003\u00c8\u0003\u00c8\u0003\u00c8\u0003\u00c8",
    "\u0006\u00c8\u0af8\n\u00c8\r\u00c8\u000e\u00c8\u0af9\u0003\u00c8\u0003",
    "\u00c8\u0005\u00c8\u0afe\n\u00c8\u0003\u00c8\u0003\u00c8\u0003\u00c9",
    "\u0003\u00c9\u0003\u00c9\u0003\u00c9\u0003\u00c9\u0003\u00c9\u0006\u00c9",
    "\u0b08\n\u00c9\r\u00c9\u000e\u00c9\u0b09\u0003\u00c9\u0003\u00c9\u0005",
    "\u00c9\u0b0e\n\u00c9\u0003\u00c9\u0003\u00c9\u0003\u00ca\u0003\u00ca",
    "\u0003\u00ca\u0003\u00ca\u0003\u00cb\u0003\u00cb\u0003\u00cb\u0005\u00cb",
    "\u0b19\n\u00cb\u0003\u00cb\u0003\u00cb\u0003\u00cb\u0005\u00cb\u0b1e",
    "\n\u00cb\u0003\u00cb\u0003\u00cb\u0003\u00cb\u0005\u00cb\u0b23\n\u00cb",
    "\u0003\u00cb\u0003\u00cb\u0005\u00cb\u0b27\n\u00cb\u0003\u00cb\u0003",
    "\u00cb\u0005\u00cb\u0b2b\n\u00cb\u0003\u00cb\u0003\u00cb\u0003\u00cb",
    "\u0005\u00cb\u0b30\n\u00cb\u0003\u00cb\u0003\u00cb\u0005\u00cb\u0b34",
    "\n\u00cb\u0003\u00cb\u0003\u00cb\u0005\u00cb\u0b38\n\u00cb\u0003\u00cb",
    "\u0003\u00cb\u0003\u00cb\u0003\u00cb\u0003\u00cb\u0003\u00cb\u0003\u00cb",
    "\u0003\u00cb\u0003\u00cb\u0003\u00cb\u0003\u00cb\u0003\u00cb\u0003\u00cb",
    "\u0003\u00cb\u0003\u00cb\u0003\u00cb\u0003\u00cb\u0003\u00cb\u0003\u00cb",
    "\u0003\u00cb\u0003\u00cb\u0005\u00cb\u0b4f\n\u00cb\u0005\u00cb\u0b51",
    "\n\u00cb\u0003\u00cb\u0003\u00cb\u0003\u00cb\u0003\u00cb\u0003\u00cb",
    "\u0003\u00cb\u0003\u00cb\u0003\u00cb\u0003\u00cb\u0003\u00cb\u0003\u00cb",
    "\u0003\u00cb\u0003\u00cb\u0003\u00cb\u0003\u00cb\u0003\u00cb\u0005\u00cb",
    "\u0b63\n\u00cb\u0005\u00cb\u0b65\n\u00cb\u0003\u00cb\u0003\u00cb\u0003",
    "\u00cb\u0003\u00cb\u0003\u00cb\u0003\u00cb\u0005\u00cb\u0b6d\n\u00cb",
    "\u0003\u00cb\u0003\u00cb\u0003\u00cb\u0005\u00cb\u0b72\n\u00cb\u0003",
    "\u00cb\u0003\u00cb\u0003\u00cb\u0005\u00cb\u0b77\n\u00cb\u0003\u00cb",
    "\u0003\u00cb\u0003\u00cb\u0005\u00cb\u0b7c\n\u00cb\u0003\u00cb\u0003",
    "\u00cb\u0003\u00cb\u0003\u00cb\u0003\u00cb\u0003\u00cb\u0003\u00cb\u0003",
    "\u00cb\u0003\u00cb\u0003\u00cb\u0003\u00cb\u0005\u00cb\u0b89\n\u00cb",
    "\u0003\u00cb\u0003\u00cb\u0003\u00cb\u0005\u00cb\u0b8e\n\u00cb\u0003",
    "\u00cb\u0003\u00cb\u0003\u00cb\u0005\u00cb\u0b93\n\u00cb\u0003\u00cb",
    "\u0003\u00cb\u0003\u00cb\u0005\u00cb\u0b98\n\u00cb\u0003\u00cb\u0003",
    "\u00cb\u0003\u00cb\u0005\u00cb\u0b9d\n\u00cb\u0003\u00cb\u0003\u00cb",
    "\u0003\u00cb\u0005\u00cb\u0ba2\n\u00cb\u0003\u00cb\u0003\u00cb\u0003",
    "\u00cb\u0005\u00cb\u0ba7\n\u00cb\u0003\u00cb\u0003\u00cb\u0003\u00cb",
    "\u0005\u00cb\u0bac\n\u00cb\u0005\u00cb\u0bae\n\u00cb\u0003\u00cc\u0003",
    "\u00cc\u0003\u00cd\u0003\u00cd\u0003\u00cd\u0005\u00cd\u0bb5\n\u00cd",
    "\u0003\u00cd\u0005\u00cd\u0bb8\n\u00cd\u0003\u00cd\u0003\u00cd\u0003",
    "\u00ce\u0003\u00ce\u0003\u00ce\u0003\u00ce\u0003\u00ce\u0007\u00ce\u0bc1",
    "\n\u00ce\f\u00ce\u000e\u00ce\u0bc4\u000b\u00ce\u0003\u00cf\u0003\u00cf",
    "\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0005\u00cf",
    "\u0bcd\n\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003",
    "\u00cf\u0003\u00cf\u0005\u00cf\u0bd5\n\u00cf\u0003\u00cf\u0003\u00cf",
    "\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0005\u00cf",
    "\u0bde\n\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0005",
    "\u00cf\u0be4\n\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf",
    "\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf",
    "\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0007\u00cf\u0bf3\n\u00cf\f\u00cf",
    "\u000e\u00cf\u0bf6\u000b\u00cf\u0005\u00cf\u0bf8\n\u00cf\u0003\u00cf",
    "\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf",
    "\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0007\u00cf",
    "\u0c06\n\u00cf\f\u00cf\u000e\u00cf\u0c09\u000b\u00cf\u0005\u00cf\u0c0b",
    "\n\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf",
    "\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf",
    "\u0003\u00cf\u0007\u00cf\u0c19\n\u00cf\f\u00cf\u000e\u00cf\u0c1c\u000b",
    "\u00cf\u0005\u00cf\u0c1e\n\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf",
    "\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf",
    "\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0007\u00cf\u0c2c\n\u00cf\f\u00cf",
    "\u000e\u00cf\u0c2f\u000b\u00cf\u0005\u00cf\u0c31\n\u00cf\u0003\u00cf",
    "\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf",
    "\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0007\u00cf",
    "\u0c3f\n\u00cf\f\u00cf\u000e\u00cf\u0c42\u000b\u00cf\u0005\u00cf\u0c44",
    "\n\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf",
    "\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf",
    "\u0003\u00cf\u0007\u00cf\u0c52\n\u00cf\f\u00cf\u000e\u00cf\u0c55\u000b",
    "\u00cf\u0005\u00cf\u0c57\n\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf",
    "\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf",
    "\u0003\u00cf\u0007\u00cf\u0c63\n\u00cf\f\u00cf\u000e\u00cf\u0c66\u000b",
    "\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003",
    "\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0006\u00cf\u0c72",
    "\n\u00cf\r\u00cf\u000e\u00cf\u0c73\u0003\u00cf\u0003\u00cf\u0005\u00cf",
    "\u0c78\n\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003",
    "\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003",
    "\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0005\u00cf\u0c88\n\u00cf",
    "\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0005\u00cf\u0c8e\n",
    "\u00cf\u0003\u00d0\u0003\u00d0\u0003\u00d0\u0005\u00d0\u0c93\n\u00d0",
    "\u0003\u00d0\u0003\u00d0\u0003\u00d1\u0003\u00d1\u0003\u00d1\u0007\u00d1",
    "\u0c9a\n\u00d1\f\u00d1\u000e\u00d1\u0c9d\u000b\u00d1\u0003\u00d2\u0003",
    "\u00d2\u0003\u00d2\u0003\u00d2\u0005\u00d2\u0ca3\n\u00d2\u0005\u00d2",
    "\u0ca5\n\u00d2\u0003\u00d2\u0003\u00d2\u0003\u00d3\u0003\u00d3\u0005",
    "\u00d3\u0cab\n\u00d3\u0003\u00d4\u0003\u00d4\u0005\u00d4\u0caf\n\u00d4",
    "\u0003\u00d5\u0003\u00d5\u0007\u00d5\u0cb3\n\u00d5\f\u00d5\u000e\u00d5",
    "\u0cb6\u000b\u00d5\u0003\u00d6\u0003\u00d6\u0003\u00d6\u0003\u00d6\u0003",
    "\u00d6\u0003\u00d6\u0003\u00d6\u0003\u00d6\u0003\u00d6\u0003\u00d6\u0003",
    "\u00d6\u0003\u00d6\u0005\u00d6\u0cc4\n\u00d6\u0003\u00d7\u0003\u00d7",
    "\u0003\u00d7\u0003\u00d7\u0003\u00d7\u0005\u00d7\u0ccb\n\u00d7\u0003",
    "\u00d8\u0007\u00d8\u0cce\n\u00d8\f\u00d8\u000e\u00d8\u0cd1\u000b\u00d8",
    "\u0003\u00d9\u0003\u00d9\u0003\u00d9\u0003\u00da\u0003\u00da\u0003\u00da",
    "\u0003\u00da\u0005\u00da\u0cda\n\u00da\u0003\u00da\u0003\u00da\u0003",
    "\u00da\u0007\u00da\u0cdf\n\u00da\f\u00da\u000e\u00da\u0ce2\u000b\u00da",
    "\u0005\u00da\u0ce4\n\u00da\u0003\u00db\u0003\u00db\u0003\u00db\u0003",
    "\u00dc\u0003\u00dc\u0003\u00dc\u0003\u00dd\u0005\u00dd\u0ced\n\u00dd",
    "\u0003\u00dd\u0003\u00dd\u0005\u00dd\u0cf1\n\u00dd\u0003\u00dd\u0003",
    "\u00dd\u0003\u00dd\u0005\u00dd\u0cf6\n\u00dd\u0007\u00dd\u0cf8\n\u00dd",
    "\f\u00dd\u000e\u00dd\u0cfb\u000b\u00dd\u0003\u00de\u0003\u00de\u0005",
    "\u00de\u0cff\n\u00de\u0003\u00df\u0005\u00df\u0d02\n\u00df\u0003\u00df",
    "\u0003\u00df\u0003\u00e0\u0005\u00e0\u0d07\n\u00e0\u0003\u00e0\u0003",
    "\u00e0\u0003\u00e1\u0003\u00e1\u0003\u00e2\u0003\u00e2\u0003\u00e3\u0003",
    "\u00e3\u0003\u00e3\u0003\u0ccf\u0004\u0170\u0180\u00e4\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\u00b0\u00b2\u00b4\u00b6",
    "\u00b8\u00ba\u00bc\u00be\u00c0\u00c2\u00c4\u00c6\u00c8\u00ca\u00cc\u00ce",
    "\u00d0\u00d2\u00d4\u00d6\u00d8\u00da\u00dc\u00de\u00e0\u00e2\u00e4\u00e6",
    "\u00e8\u00ea\u00ec\u00ee\u00f0\u00f2\u00f4\u00f6\u00f8\u00fa\u00fc\u00fe",
    "\u0100\u0102\u0104\u0106\u0108\u010a\u010c\u010e\u0110\u0112\u0114\u0116",
    "\u0118\u011a\u011c\u011e\u0120\u0122\u0124\u0126\u0128\u012a\u012c\u012e",
    "\u0130\u0132\u0134\u0136\u0138\u013a\u013c\u013e\u0140\u0142\u0144\u0146",
    "\u0148\u014a\u014c\u014e\u0150\u0152\u0154\u0156\u0158\u015a\u015c\u015e",
    "\u0160\u0162\u0164\u0166\u0168\u016a\u016c\u016e\u0170\u0172\u0174\u0176",
    "\u0178\u017a\u017c\u017e\u0180\u0182\u0184\u0186\u0188\u018a\u018c\u018e",
    "\u0190\u0192\u0194\u0196\u0198\u019a\u019c\u019e\u01a0\u01a2\u01a4\u01a6",
    "\u01a8\u01aa\u01ac\u01ae\u01b0\u01b2\u01b4\u01b6\u01b8\u01ba\u01bc\u01be",
    "\u01c0\u01c2\u01c4\u00023\u0004\u0002\u0003\u0005\u000f\u000f\u0004",
    "\u0002\u0010\u0010\u0012\u0012\u0003\u0002\"#\u0005\u0002\u001e\u001e",
    ")),,\u0003\u000201\u0003\u000234\u0004\u0002\u0016\u0016AA\u0003\u0002",
    "NO\u0003\u0002RS\u0003\u0002YZ\u0004\u0002SS\\\\\u0003\u0002`a\u0003",
    "\u0002be\u0003\u0002gh\u0004\u0002TTss\u0003\u0002\u00b1\u00b2\u0004",
    "\u0002JJ\u00b3\u00b3\u0004\u0002\u008b\u008b\u00b4\u00b4\u0003\u0002",
    "\u00b5\u00b6\u0003\u0002\u00b7\u00b8\u0004\u0002)),,\u0004\u0002--\u00bc",
    "\u00bc\u0004\u0002  \u00be\u00be\u0003\u0002\u00c5\u00c8\u0003\u0002",
    "\u00cb\u00cc\u0003\u0002\u00cf\u00d0\u0003\u0002\u00e3\u00e4\u0004\u0002",
    "\u00d9\u00d9\u00e8\u00e8\u0005\u0002SS\u00d3\u00d3\u00ee\u00ee\u0003",
    "\u0002\u00f9\u00fd\u0004\u0002QQ\u00fe\u00fe\u0004\u0002%%\u0101\u0101",
    "\u0005\u0002\u000e\u000e\u0014\u0014\u0109\u010a\u0004\u0002\u0108\u0108",
    "\u010a\u010a\u0004\u0002oo\u010d\u010d\u0003\u0002\u0116\u0117\u0004",
    "\u0002\u0113\u0113\u0118\u0118\u0003\u0002\u011d\u011f\u0004\u0002\u00b6",
    "\u00b6\u0126\u0128\u0004\u0002RR\u012b\u012c\u0004\u0002OO\u0130\u0130",
    "\u0004\u0002\u00ba\u00ba\u0129\u0129\u0004\u0002CC\u0137\u0138\u0003",
    "\u0002\u013e\u0143\u0003\u0002\u0144\u0145\u0004\u000299\u0147\u0148",
    "\u0003\u0002\u000b\f\u0003\u0002\u0170\u0171\u0018\u0002\r\u000e\u0011",
    "\u0011\u0014\u0014\u0016\u0016\u001cIK\u008e\u0090\u00a0\u00a2\u00a6",
    "\u00a8\u00ac\u00ae\u00b0\u00b3\u00cd\u00d1\u010b\u010d\u010d\u0111\u0111",
    "\u0113\u0119\u011b\u0120\u0122\u0131\u0137\u0138\u013d\u0143\u0145\u015f",
    "\u0166\u016c\u0170\u0178\u0002\u0ebc\u0002\u01c6\u0003\u0002\u0002\u0002",
    "\u0004\u01d0\u0003\u0002\u0002\u0002\u0006\u01d5\u0003\u0002\u0002\u0002",
    "\b\u01e9\u0003\u0002\u0002\u0002\n\u01eb\u0003\u0002\u0002\u0002\f\u01f7",
    "\u0003\u0002\u0002\u0002\u000e\u0236\u0003\u0002\u0002\u0002\u0010\u0238",
    "\u0003\u0002\u0002\u0002\u0012\u023a\u0003\u0002\u0002\u0002\u0014\u0240",
    "\u0003\u0002\u0002\u0002\u0016\u0246\u0003\u0002\u0002\u0002\u0018\u0248",
    "\u0003\u0002\u0002\u0002\u001a\u0258\u0003\u0002\u0002\u0002\u001c\u025d",
    "\u0003\u0002\u0002\u0002\u001e\u026f\u0003\u0002\u0002\u0002 \u0271",
    "\u0003\u0002\u0002\u0002\"\u0296\u0003\u0002\u0002\u0002$\u02a0\u0003",
    "\u0002\u0002\u0002&\u02ab\u0003\u0002\u0002\u0002(\u02bf\u0003\u0002",
    "\u0002\u0002*\u02c2\u0003\u0002\u0002\u0002,\u02c4\u0003\u0002\u0002",
    "\u0002.\u02ce\u0003\u0002\u0002\u00020\u02d7\u0003\u0002\u0002\u0002",
    "2\u02e2\u0003\u0002\u0002\u00024\u02f1\u0003\u0002\u0002\u00026\u0316",
    "\u0003\u0002\u0002\u00028\u0318\u0003\u0002\u0002\u0002:\u0320\u0003",
    "\u0002\u0002\u0002<\u032b\u0003\u0002\u0002\u0002>\u0334\u0003\u0002",
    "\u0002\u0002@\u0337\u0003\u0002\u0002\u0002B\u0344\u0003\u0002\u0002",
    "\u0002D\u034e\u0003\u0002\u0002\u0002F\u035b\u0003\u0002\u0002\u0002",
    "H\u037c\u0003\u0002\u0002\u0002J\u0381\u0003\u0002\u0002\u0002L\u039f",
    "\u0003\u0002\u0002\u0002N\u03a1\u0003\u0002\u0002\u0002P\u03c3\u0003",
    "\u0002\u0002\u0002R\u03fe\u0003\u0002\u0002\u0002T\u0400\u0003\u0002",
    "\u0002\u0002V\u040d\u0003\u0002\u0002\u0002X\u0414\u0003\u0002\u0002",
    "\u0002Z\u0417\u0003\u0002\u0002\u0002\\\u041c\u0003\u0002\u0002\u0002",
    "^\u042a\u0003\u0002\u0002\u0002`\u043e\u0003\u0002\u0002\u0002b\u0461",
    "\u0003\u0002\u0002\u0002d\u0475\u0003\u0002\u0002\u0002f\u047b\u0003",
    "\u0002\u0002\u0002h\u047d\u0003\u0002\u0002\u0002j\u04a1\u0003\u0002",
    "\u0002\u0002l\u04a7\u0003\u0002\u0002\u0002n\u04c4\u0003\u0002\u0002",
    "\u0002p\u04c6\u0003\u0002\u0002\u0002r\u04cb\u0003\u0002\u0002\u0002",
    "t\u04cd\u0003\u0002\u0002\u0002v\u0512\u0003\u0002\u0002\u0002x\u0542",
    "\u0003\u0002\u0002\u0002z\u0544\u0003\u0002\u0002\u0002|\u055a\u0003",
    "\u0002\u0002\u0002~\u0568\u0003\u0002\u0002\u0002\u0080\u056a\u0003",
    "\u0002\u0002\u0002\u0082\u057c\u0003\u0002\u0002\u0002\u0084\u0585\u0003",
    "\u0002\u0002\u0002\u0086\u0595\u0003\u0002\u0002\u0002\u0088\u05a1\u0003",
    "\u0002\u0002\u0002\u008a\u05ad\u0003\u0002\u0002\u0002\u008c\u05c4\u0003",
    "\u0002\u0002\u0002\u008e\u05cd\u0003\u0002\u0002\u0002\u0090\u05da\u0003",
    "\u0002\u0002\u0002\u0092\u05e7\u0003\u0002\u0002\u0002\u0094\u05f0\u0003",
    "\u0002\u0002\u0002\u0096\u061f\u0003\u0002\u0002\u0002\u0098\u064b\u0003",
    "\u0002\u0002\u0002\u009a\u064e\u0003\u0002\u0002\u0002\u009c\u065d\u0003",
    "\u0002\u0002\u0002\u009e\u066d\u0003\u0002\u0002\u0002\u00a0\u066f\u0003",
    "\u0002\u0002\u0002\u00a2\u0672\u0003\u0002\u0002\u0002\u00a4\u068f\u0003",
    "\u0002\u0002\u0002\u00a6\u0691\u0003\u0002\u0002\u0002\u00a8\u06a1\u0003",
    "\u0002\u0002\u0002\u00aa\u06a8\u0003\u0002\u0002\u0002\u00ac\u06ae\u0003",
    "\u0002\u0002\u0002\u00ae\u06b3\u0003\u0002\u0002\u0002\u00b0\u06b6\u0003",
    "\u0002\u0002\u0002\u00b2\u06bb\u0003\u0002\u0002\u0002\u00b4\u06cc\u0003",
    "\u0002\u0002\u0002\u00b6\u06d7\u0003\u0002\u0002\u0002\u00b8\u06e0\u0003",
    "\u0002\u0002\u0002\u00ba\u06eb\u0003\u0002\u0002\u0002\u00bc\u06f4\u0003",
    "\u0002\u0002\u0002\u00be\u06fc\u0003\u0002\u0002\u0002\u00c0\u0702\u0003",
    "\u0002\u0002\u0002\u00c2\u0704\u0003\u0002\u0002\u0002\u00c4\u070a\u0003",
    "\u0002\u0002\u0002\u00c6\u070e\u0003\u0002\u0002\u0002\u00c8\u071b\u0003",
    "\u0002\u0002\u0002\u00ca\u0720\u0003\u0002\u0002\u0002\u00cc\u0724\u0003",
    "\u0002\u0002\u0002\u00ce\u072f\u0003\u0002\u0002\u0002\u00d0\u0738\u0003",
    "\u0002\u0002\u0002\u00d2\u0746\u0003\u0002\u0002\u0002\u00d4\u074d\u0003",
    "\u0002\u0002\u0002\u00d6\u0759\u0003\u0002\u0002\u0002\u00d8\u075c\u0003",
    "\u0002\u0002\u0002\u00da\u076a\u0003\u0002\u0002\u0002\u00dc\u0770\u0003",
    "\u0002\u0002\u0002\u00de\u0783\u0003\u0002\u0002\u0002\u00e0\u0798\u0003",
    "\u0002\u0002\u0002\u00e2\u079c\u0003\u0002\u0002\u0002\u00e4\u07a6\u0003",
    "\u0002\u0002\u0002\u00e6\u07a8\u0003\u0002\u0002\u0002\u00e8\u07aa\u0003",
    "\u0002\u0002\u0002\u00ea\u07ae\u0003\u0002\u0002\u0002\u00ec\u07c1\u0003",
    "\u0002\u0002\u0002\u00ee\u07c5\u0003\u0002\u0002\u0002\u00f0\u07c7\u0003",
    "\u0002\u0002\u0002\u00f2\u07e4\u0003\u0002\u0002\u0002\u00f4\u07e7\u0003",
    "\u0002\u0002\u0002\u00f6\u07ed\u0003\u0002\u0002\u0002\u00f8\u07ef\u0003",
    "\u0002\u0002\u0002\u00fa\u07fd\u0003\u0002\u0002\u0002\u00fc\u0801\u0003",
    "\u0002\u0002\u0002\u00fe\u0808\u0003\u0002\u0002\u0002\u0100\u080f\u0003",
    "\u0002\u0002\u0002\u0102\u0816\u0003\u0002\u0002\u0002\u0104\u0819\u0003",
    "\u0002\u0002\u0002\u0106\u0825\u0003\u0002\u0002\u0002\u0108\u0828\u0003",
    "\u0002\u0002\u0002\u010a\u0839\u0003\u0002\u0002\u0002\u010c\u083f\u0003",
    "\u0002\u0002\u0002\u010e\u0842\u0003\u0002\u0002\u0002\u0110\u0860\u0003",
    "\u0002\u0002\u0002\u0112\u0868\u0003\u0002\u0002\u0002\u0114\u0877\u0003",
    "\u0002\u0002\u0002\u0116\u088f\u0003\u0002\u0002\u0002\u0118\u0891\u0003",
    "\u0002\u0002\u0002\u011a\u089b\u0003\u0002\u0002\u0002\u011c\u089f\u0003",
    "\u0002\u0002\u0002\u011e\u08a8\u0003\u0002\u0002\u0002\u0120\u08b1\u0003",
    "\u0002\u0002\u0002\u0122\u08bc\u0003\u0002\u0002\u0002\u0124\u08ca\u0003",
    "\u0002\u0002\u0002\u0126\u08d8\u0003\u0002\u0002\u0002\u0128\u08da\u0003",
    "\u0002\u0002\u0002\u012a\u08f3\u0003\u0002\u0002\u0002\u012c\u0900\u0003",
    "\u0002\u0002\u0002\u012e\u0902\u0003\u0002\u0002\u0002\u0130\u090f\u0003",
    "\u0002\u0002\u0002\u0132\u091a\u0003\u0002\u0002\u0002\u0134\u091e\u0003",
    "\u0002\u0002\u0002\u0136\u0922\u0003\u0002\u0002\u0002\u0138\u092b\u0003",
    "\u0002\u0002\u0002\u013a\u0936\u0003\u0002\u0002\u0002\u013c\u0938\u0003",
    "\u0002\u0002\u0002\u013e\u093c\u0003\u0002\u0002\u0002\u0140\u0949\u0003",
    "\u0002\u0002\u0002\u0142\u0954\u0003\u0002\u0002\u0002\u0144\u0956\u0003",
    "\u0002\u0002\u0002\u0146\u0971\u0003\u0002\u0002\u0002\u0148\u0973\u0003",
    "\u0002\u0002\u0002\u014a\u0984\u0003\u0002\u0002\u0002\u014c\u0986\u0003",
    "\u0002\u0002\u0002\u014e\u0989\u0003\u0002\u0002\u0002\u0150\u0993\u0003",
    "\u0002\u0002\u0002\u0152\u0996\u0003\u0002\u0002\u0002\u0154\u0999\u0003",
    "\u0002\u0002\u0002\u0156\u09aa\u0003\u0002\u0002\u0002\u0158\u09b9\u0003",
    "\u0002\u0002\u0002\u015a\u09bb\u0003\u0002\u0002\u0002\u015c\u09c5\u0003",
    "\u0002\u0002\u0002\u015e\u09d5\u0003\u0002\u0002\u0002\u0160\u09dd\u0003",
    "\u0002\u0002\u0002\u0162\u09e0\u0003\u0002\u0002\u0002\u0164\u09f1\u0003",
    "\u0002\u0002\u0002\u0166\u0a06\u0003\u0002\u0002\u0002\u0168\u0a1c\u0003",
    "\u0002\u0002\u0002\u016a\u0a1e\u0003\u0002\u0002\u0002\u016c\u0a2a\u0003",
    "\u0002\u0002\u0002\u016e\u0a30\u0003\u0002\u0002\u0002\u0170\u0a3f\u0003",
    "\u0002\u0002\u0002\u0172\u0a4d\u0003\u0002\u0002\u0002\u0174\u0a66\u0003",
    "\u0002\u0002\u0002\u0176\u0a68\u0003\u0002\u0002\u0002\u0178\u0a7b\u0003",
    "\u0002\u0002\u0002\u017a\u0a8d\u0003\u0002\u0002\u0002\u017c\u0a91\u0003",
    "\u0002\u0002\u0002\u017e\u0a9f\u0003\u0002\u0002\u0002\u0180\u0ab2\u0003",
    "\u0002\u0002\u0002\u0182\u0acf\u0003\u0002\u0002\u0002\u0184\u0ad1\u0003",
    "\u0002\u0002\u0002\u0186\u0ad5\u0003\u0002\u0002\u0002\u0188\u0ad7\u0003",
    "\u0002\u0002\u0002\u018a\u0aea\u0003\u0002\u0002\u0002\u018c\u0aee\u0003",
    "\u0002\u0002\u0002\u018e\u0af0\u0003\u0002\u0002\u0002\u0190\u0b01\u0003",
    "\u0002\u0002\u0002\u0192\u0b11\u0003\u0002\u0002\u0002\u0194\u0bad\u0003",
    "\u0002\u0002\u0002\u0196\u0baf\u0003\u0002\u0002\u0002\u0198\u0bb1\u0003",
    "\u0002\u0002\u0002\u019a\u0bbb\u0003\u0002\u0002\u0002\u019c\u0c8d\u0003",
    "\u0002\u0002\u0002\u019e\u0c8f\u0003\u0002\u0002\u0002\u01a0\u0c96\u0003",
    "\u0002\u0002\u0002\u01a2\u0c9e\u0003\u0002\u0002\u0002\u01a4\u0caa\u0003",
    "\u0002\u0002\u0002\u01a6\u0cae\u0003\u0002\u0002\u0002\u01a8\u0cb0\u0003",
    "\u0002\u0002\u0002\u01aa\u0cc3\u0003\u0002\u0002\u0002\u01ac\u0cca\u0003",
    "\u0002\u0002\u0002\u01ae\u0ccf\u0003\u0002\u0002\u0002\u01b0\u0cd2\u0003",
    "\u0002\u0002\u0002\u01b2\u0ce3\u0003\u0002\u0002\u0002\u01b4\u0ce5\u0003",
    "\u0002\u0002\u0002\u01b6\u0ce8\u0003\u0002\u0002\u0002\u01b8\u0cec\u0003",
    "\u0002\u0002\u0002\u01ba\u0cfe\u0003\u0002\u0002\u0002\u01bc\u0d01\u0003",
    "\u0002\u0002\u0002\u01be\u0d06\u0003\u0002\u0002\u0002\u01c0\u0d0a\u0003",
    "\u0002\u0002\u0002\u01c2\u0d0c\u0003\u0002\u0002\u0002\u01c4\u0d0e\u0003",
    "\u0002\u0002\u0002\u01c6\u01c7\u0005\u0004\u0003\u0002\u01c7\u01c8\u0007",
    "\u0002\u0002\u0003\u01c8\u0003\u0003\u0002\u0002\u0002\u01c9\u01cc\u0005",
    "\u0006\u0004\u0002\u01ca\u01cc\u0005\u000e\b\u0002\u01cb\u01c9\u0003",
    "\u0002\u0002\u0002\u01cb\u01ca\u0003\u0002\u0002\u0002\u01cc\u01ce\u0003",
    "\u0002\u0002\u0002\u01cd\u01cf\u0007\r\u0002\u0002\u01ce\u01cd\u0003",
    "\u0002\u0002\u0002\u01ce\u01cf\u0003\u0002\u0002\u0002\u01cf\u01d1\u0003",
    "\u0002\u0002\u0002\u01d0\u01cb\u0003\u0002\u0002\u0002\u01d1\u01d2\u0003",
    "\u0002\u0002\u0002\u01d2\u01d0\u0003\u0002\u0002\u0002\u01d2\u01d3\u0003",
    "\u0002\u0002\u0002\u01d3\u0005\u0003\u0002\u0002\u0002\u01d4\u01d6\u0005",
    "0\u0019\u0002\u01d5\u01d4\u0003\u0002\u0002\u0002\u01d5\u01d6\u0003",
    "\u0002\u0002\u0002\u01d6\u01d7\u0003\u0002\u0002\u0002\u01d7\u01d8\u0007",
    "\u000e\u0002\u0002\u01d8\u01da\u0005\u0004\u0003\u0002\u01d9\u01db\u0005",
    "\u0012\n\u0002\u01da\u01d9\u0003\u0002\u0002\u0002\u01da\u01db\u0003",
    "\u0002\u0002\u0002\u01db\u01dc\u0003\u0002\u0002\u0002\u01dc\u01dd\u0005",
    "\n\u0006\u0002\u01dd\u0007\u0003\u0002\u0002\u0002\u01de\u01df\u0007",
    "\u000e\u0002\u0002\u01df\u01e1\u0005\u0004\u0003\u0002\u01e0\u01e2\u0005",
    "\u0012\n\u0002\u01e1\u01e0\u0003\u0002\u0002\u0002\u01e1\u01e2\u0003",
    "\u0002\u0002\u0002\u01e2\u01e3\u0003\u0002\u0002\u0002\u01e3\u01e4\u0005",
    "\n\u0006\u0002\u01e4\u01ea\u0003\u0002\u0002\u0002\u01e5\u01e7\u0005",
    "\u000e\b\u0002\u01e6\u01e8\u0007\u000f\u0002\u0002\u01e7\u01e6\u0003",
    "\u0002\u0002\u0002\u01e7\u01e8\u0003\u0002\u0002\u0002\u01e8\u01ea\u0003",
    "\u0002\u0002\u0002\u01e9\u01de\u0003\u0002\u0002\u0002\u01e9\u01e5\u0003",
    "\u0002\u0002\u0002\u01ea\t\u0003\u0002\u0002\u0002\u01eb\u01ec\u0006",
    "\u0006\u0002\u0002\u01ec\u01ed\u0007\u0010\u0002\u0002\u01ed\u000b\u0003",
    "\u0002\u0002\u0002\u01ee\u01f8\u0005\u0006\u0004\u0002\u01ef\u01f1\u0005",
    "\u000e\b\u0002\u01f0\u01ef\u0003\u0002\u0002\u0002\u01f1\u01f2\u0003",
    "\u0002\u0002\u0002\u01f2\u01f0\u0003\u0002\u0002\u0002\u01f2\u01f3\u0003",
    "\u0002\u0002\u0002\u01f3\u01f5\u0003\u0002\u0002\u0002\u01f4\u01f6\u0007",
    "\r\u0002\u0002\u01f5\u01f4\u0003\u0002\u0002\u0002\u01f5\u01f6\u0003",
    "\u0002\u0002\u0002\u01f6\u01f8\u0003\u0002\u0002\u0002\u01f7\u01ee\u0003",
    "\u0002\u0002\u0002\u01f7\u01f0\u0003\u0002\u0002\u0002\u01f8\r\u0003",
    "\u0002\u0002\u0002\u01f9\u0237\u0005\u001a\u000e\u0002\u01fa\u0237\u0005",
    "$\u0013\u0002\u01fb\u0237\u0005p9\u0002\u01fc\u0237\u0005&\u0014\u0002",
    "\u01fd\u0237\u0005(\u0015\u0002\u01fe\u0237\u0005*\u0016\u0002\u01ff",
    "\u0237\u0005,\u0017\u0002\u0200\u0237\u0005\u00d2j\u0002\u0201\u0237",
    "\u0005\u00d6l\u0002\u0202\u0237\u0005\u00d8m\u0002\u0203\u0237\u0005",
    "\u00dco\u0002\u0204\u0237\u0005\u00dep\u0002\u0205\u0237\u0005\u00e8",
    "u\u0002\u0206\u0237\u0005\u0080A\u0002\u0207\u0237\u0005\u0084C\u0002",
    "\u0208\u0237\u0005\u00eav\u0002\u0209\u0237\u0005F$\u0002\u020a\u0237",
    "\u0005\u0088E\u0002\u020b\u0237\u0005\u008eH\u0002\u020c\u0237\u0005",
    "\u0094K\u0002\u020d\u0237\u0005D#\u0002\u020e\u0237\u0005.\u0018\u0002",
    "\u020f\u0237\u0005\u016a\u00b6\u0002\u0210\u0237\u0005\u016e\u00b8\u0002",
    "\u0211\u0237\u0005\u009eP\u0002\u0212\u0237\u0005\u00a0Q\u0002\u0213",
    "\u0237\u0005\u00a2R\u0002\u0214\u0237\u0005\u00bc_\u0002\u0215\u0237",
    "\u0005\u00d0i\u0002\u0216\u0237\u0005\u0112\u008a\u0002\u0217\u0237",
    "\u0005\u0114\u008b\u0002\u0218\u0237\u0005\u00a4S\u0002\u0219\u0237",
    "\u0005\u00b0Y\u0002\u021a\u0237\u0005\u00b2Z\u0002\u021b\u0237\u0005",
    "\u00ba^\u0002\u021c\u0237\u0005\u00be`\u0002\u021d\u0237\u0005\u00c6",
    "d\u0002\u021e\u0237\u0005\u00caf\u0002\u021f\u0237\u0005\u00ccg\u0002",
    "\u0220\u0237\u0005\u0162\u00b2\u0002\u0221\u0237\u0005\u00ceh\u0002",
    "\u0222\u0237\u0005\u00f2z\u0002\u0223\u0237\u0005\u00f4{\u0002\u0224",
    "\u0237\u0005\u00f6|\u0002\u0225\u0237\u0005\u00f8}\u0002\u0226\u0237",
    "\u0005\u00fa~\u0002\u0227\u0237\u0005\u00fc\u007f\u0002\u0228\u0237",
    "\u0005\u011a\u008e\u0002\u0229\u0237\u0005\u0106\u0084\u0002\u022a\u0237",
    "\u0005\u0108\u0085\u0002\u022b\u0237\u0005\u015a\u00ae\u0002\u022c\u0237",
    "\u0005\u010c\u0087\u0002\u022d\u0237\u0005\u010a\u0086\u0002\u022e\u0237",
    "\u0005\u010e\u0088\u0002\u022f\u0237\u0005\u0110\u0089\u0002\u0230\u0237",
    "\u0005\u0116\u008c\u0002\u0231\u0237\u0005\u01a8\u00d5\u0002\u0232\u0237",
    "\u0005\u01ac\u00d7\u0002\u0233\u0237\u0005\u0016\f\u0002\u0234\u0237",
    "\u0005\u0018\r\u0002\u0235\u0237\u0005\u0010\t\u0002\u0236\u01f9\u0003",
    "\u0002\u0002\u0002\u0236\u01fa\u0003\u0002\u0002\u0002\u0236\u01fb\u0003",
    "\u0002\u0002\u0002\u0236\u01fc\u0003\u0002\u0002\u0002\u0236\u01fd\u0003",
    "\u0002\u0002\u0002\u0236\u01fe\u0003\u0002\u0002\u0002\u0236\u01ff\u0003",
    "\u0002\u0002\u0002\u0236\u0200\u0003\u0002\u0002\u0002\u0236\u0201\u0003",
    "\u0002\u0002\u0002\u0236\u0202\u0003\u0002\u0002\u0002\u0236\u0203\u0003",
    "\u0002\u0002\u0002\u0236\u0204\u0003\u0002\u0002\u0002\u0236\u0205\u0003",
    "\u0002\u0002\u0002\u0236\u0206\u0003\u0002\u0002\u0002\u0236\u0207\u0003",
    "\u0002\u0002\u0002\u0236\u0208\u0003\u0002\u0002\u0002\u0236\u0209\u0003",
    "\u0002\u0002\u0002\u0236\u020a\u0003\u0002\u0002\u0002\u0236\u020b\u0003",
    "\u0002\u0002\u0002\u0236\u020c\u0003\u0002\u0002\u0002\u0236\u020d\u0003",
    "\u0002\u0002\u0002\u0236\u020e\u0003\u0002\u0002\u0002\u0236\u020f\u0003",
    "\u0002\u0002\u0002\u0236\u0210\u0003\u0002\u0002\u0002\u0236\u0211\u0003",
    "\u0002\u0002\u0002\u0236\u0212\u0003\u0002\u0002\u0002\u0236\u0213\u0003",
    "\u0002\u0002\u0002\u0236\u0214\u0003\u0002\u0002\u0002\u0236\u0215\u0003",
    "\u0002\u0002\u0002\u0236\u0216\u0003\u0002\u0002\u0002\u0236\u0217\u0003",
    "\u0002\u0002\u0002\u0236\u0218\u0003\u0002\u0002\u0002\u0236\u0219\u0003",
    "\u0002\u0002\u0002\u0236\u021a\u0003\u0002\u0002\u0002\u0236\u021b\u0003",
    "\u0002\u0002\u0002\u0236\u021c\u0003\u0002\u0002\u0002\u0236\u021d\u0003",
    "\u0002\u0002\u0002\u0236\u021e\u0003\u0002\u0002\u0002\u0236\u021f\u0003",
    "\u0002\u0002\u0002\u0236\u0220\u0003\u0002\u0002\u0002\u0236\u0221\u0003",
    "\u0002\u0002\u0002\u0236\u0222\u0003\u0002\u0002\u0002\u0236\u0223\u0003",
    "\u0002\u0002\u0002\u0236\u0224\u0003\u0002\u0002\u0002\u0236\u0225\u0003",
    "\u0002\u0002\u0002\u0236\u0226\u0003\u0002\u0002\u0002\u0236\u0227\u0003",
    "\u0002\u0002\u0002\u0236\u0228\u0003\u0002\u0002\u0002\u0236\u0229\u0003",
    "\u0002\u0002\u0002\u0236\u022a\u0003\u0002\u0002\u0002\u0236\u022b\u0003",
    "\u0002\u0002\u0002\u0236\u022c\u0003\u0002\u0002\u0002\u0236\u022d\u0003",
    "\u0002\u0002\u0002\u0236\u022e\u0003\u0002\u0002\u0002\u0236\u022f\u0003",
    "\u0002\u0002\u0002\u0236\u0230\u0003\u0002\u0002\u0002\u0236\u0231\u0003",
    "\u0002\u0002\u0002\u0236\u0232\u0003\u0002\u0002\u0002\u0236\u0233\u0003",
    "\u0002\u0002\u0002\u0236\u0234\u0003\u0002\u0002\u0002\u0236\u0235\u0003",
    "\u0002\u0002\u0002\u0237\u000f\u0003\u0002\u0002\u0002\u0238\u0239\t",
    "\u0002\u0002\u0002\u0239\u0011\u0003\u0002\u0002\u0002\u023a\u023c\u0007",
    "\u0011\u0002\u0002\u023b\u023d\u0005\u0014\u000b\u0002\u023c\u023b\u0003",
    "\u0002\u0002\u0002\u023d\u023e\u0003\u0002\u0002\u0002\u023e\u023c\u0003",
    "\u0002\u0002\u0002\u023e\u023f\u0003\u0002\u0002\u0002\u023f\u0013\u0003",
    "\u0002\u0002\u0002\u0240\u0241\u0007\u0012\u0002\u0002\u0241\u0242\u0007",
    "\u0013\u0002\u0002\u0242\u0243\u0007\u0014\u0002\u0002\u0243\u0244\u0005",
    "\u0004\u0003\u0002\u0244\u0245\n\u0003\u0002\u0002\u0245\u0015\u0003",
    "\u0002\u0002\u0002\u0246\u0247\u0007\u0015\u0002\u0002\u0247\u0017\u0003",
    "\u0002\u0002\u0002\u0248\u0249\u0006\r\u0003\u0002\u0249\u024a\u0005",
    "\u0180\u00c1\u0002\u024a\u0019\u0003\u0002\u0002\u0002\u024b\u024c\u0007",
    "\u0016\u0002\u0002\u024c\u0259\u0005\u00fe\u0080\u0002\u024d\u024f\u0007",
    "\u0016\u0002\u0002\u024e\u024d\u0003\u0002\u0002\u0002\u024e\u024f\u0003",
    "\u0002\u0002\u0002\u024f\u0250\u0003\u0002\u0002\u0002\u0250\u0255\u0005",
    "\u001c\u000f\u0002\u0251\u0252\u0007\u0017\u0002\u0002\u0252\u0254\u0005",
    "\u001c\u000f\u0002\u0253\u0251\u0003\u0002\u0002\u0002\u0254\u0257\u0003",
    "\u0002\u0002\u0002\u0255\u0253\u0003\u0002\u0002\u0002\u0255\u0256\u0003",
    "\u0002\u0002\u0002\u0256\u0259\u0003\u0002\u0002\u0002\u0257\u0255\u0003",
    "\u0002\u0002\u0002\u0258\u024b\u0003\u0002\u0002\u0002\u0258\u024e\u0003",
    "\u0002\u0002\u0002\u0259\u001b\u0003\u0002\u0002\u0002\u025a\u025e\u0005",
    "\u001e\u0010\u0002\u025b\u025e\u0005 \u0011\u0002\u025c\u025e\u0005",
    "\"\u0012\u0002\u025d\u025a\u0003\u0002\u0002\u0002\u025d\u025b\u0003",
    "\u0002\u0002\u0002\u025d\u025c\u0003\u0002\u0002\u0002\u025e\u001d\u0003",
    "\u0002\u0002\u0002\u025f\u0261\u0005\u01b8\u00dd\u0002\u0260\u0262\u0007",
    "\u0018\u0002\u0002\u0261\u0260\u0003\u0002\u0002\u0002\u0261\u0262\u0003",
    "\u0002\u0002\u0002\u0262\u0263\u0003\u0002\u0002\u0002\u0263\u0264\u0007",
    "\u0019\u0002\u0002\u0264\u0265\u0005\u0180\u00c1\u0002\u0265\u0270\u0003",
    "\u0002\u0002\u0002\u0266\u0267\u0007\u001a\u0002\u0002\u0267\u0268\u0005",
    "\u01b8\u00dd\u0002\u0268\u026a\u0007\u001b\u0002\u0002\u0269\u026b\u0007",
    "\u0018\u0002\u0002\u026a\u0269\u0003\u0002\u0002\u0002\u026a\u026b\u0003",
    "\u0002\u0002\u0002\u026b\u026c\u0003\u0002\u0002\u0002\u026c\u026d\u0007",
    "\u0019\u0002\u0002\u026d\u026e\u0005\u0180\u00c1\u0002\u026e\u0270\u0003",
    "\u0002\u0002\u0002\u026f\u025f\u0003\u0002\u0002\u0002\u026f\u0266\u0003",
    "\u0002\u0002\u0002\u0270\u001f\u0003\u0002\u0002\u0002\u0271\u0272\u0007",
    "\u001a\u0002\u0002\u0272\u0277\u0005\u01b8\u00dd\u0002\u0273\u0274\u0007",
    "\u0017\u0002\u0002\u0274\u0276\u0005\u01b8\u00dd\u0002\u0275\u0273\u0003",
    "\u0002\u0002\u0002\u0276\u0279\u0003\u0002\u0002\u0002\u0277\u0275\u0003",
    "\u0002\u0002\u0002\u0277\u0278\u0003\u0002\u0002\u0002\u0278\u027a\u0003",
    "\u0002\u0002\u0002\u0279\u0277\u0003\u0002\u0002\u0002\u027a\u027c\u0007",
    "\u001b\u0002\u0002\u027b\u027d\u0007\u0018\u0002\u0002\u027c\u027b\u0003",
    "\u0002\u0002\u0002\u027c\u027d\u0003\u0002\u0002\u0002\u027d\u027e\u0003",
    "\u0002\u0002\u0002\u027e\u027f\u0007\u0019\u0002\u0002\u027f\u0280\u0007",
    "\u001a\u0002\u0002\u0280\u0285\u0005\u0180\u00c1\u0002\u0281\u0282\u0007",
    "\u0017\u0002\u0002\u0282\u0284\u0005\u0180\u00c1\u0002\u0283\u0281\u0003",
    "\u0002\u0002\u0002\u0284\u0287\u0003\u0002\u0002\u0002\u0285\u0283\u0003",
    "\u0002\u0002\u0002\u0285\u0286\u0003\u0002\u0002\u0002\u0286\u0288\u0003",
    "\u0002\u0002\u0002\u0287\u0285\u0003\u0002\u0002\u0002\u0288\u0289\u0007",
    "\u001b\u0002\u0002\u0289!\u0003\u0002\u0002\u0002\u028a\u0297\u0005",
    "\u01b8\u00dd\u0002\u028b\u028c\u0007\u001a\u0002\u0002\u028c\u0291\u0005",
    "\u01b8\u00dd\u0002\u028d\u028e\u0007\u0017\u0002\u0002\u028e\u0290\u0005",
    "\u01b8\u00dd\u0002\u028f\u028d\u0003\u0002\u0002\u0002\u0290\u0293\u0003",
    "\u0002\u0002\u0002\u0291\u028f\u0003\u0002\u0002\u0002\u0291\u0292\u0003",
    "\u0002\u0002\u0002\u0292\u0294\u0003\u0002\u0002\u0002\u0293\u0291\u0003",
    "\u0002\u0002\u0002\u0294\u0295\u0007\u001b\u0002\u0002\u0295\u0297\u0003",
    "\u0002\u0002\u0002\u0296\u028a\u0003\u0002\u0002\u0002\u0296\u028b\u0003",
    "\u0002\u0002\u0002\u0297\u0299\u0003\u0002\u0002\u0002\u0298\u029a\u0007",
    "\u0018\u0002\u0002\u0299\u0298\u0003\u0002\u0002\u0002\u0299\u029a\u0003",
    "\u0002\u0002\u0002\u029a\u029b\u0003\u0002\u0002\u0002\u029b\u029c\u0007",
    "\u0019\u0002\u0002\u029c\u029d\u0007\u001a\u0002\u0002\u029d\u029e\u0005",
    "\u011a\u008e\u0002\u029e\u029f\u0007\u001b\u0002\u0002\u029f#\u0003",
    "\u0002\u0002\u0002\u02a0\u02a1\u0007\u001c\u0002\u0002\u02a1\u02a2\u0005",
    "\u01b8\u00dd\u0002\u02a2\u02a3\u0007\u001d\u0002\u0002\u02a3\u02a7\u0007",
    "\u001e\u0002\u0002\u02a4\u02a5\u0007\u001f\u0002\u0002\u02a5\u02a8\u0007",
    "\u0016\u0002\u0002\u02a6\u02a8\u0007 \u0002\u0002\u02a7\u02a4\u0003",
    "\u0002\u0002\u0002\u02a7\u02a6\u0003\u0002\u0002\u0002\u02a8\u02a9\u0003",
    "\u0002\u0002\u0002\u02a9\u02aa\u0005\u01b8\u00dd\u0002\u02aa%\u0003",
    "\u0002\u0002\u0002\u02ab\u02ae\u0007!\u0002\u0002\u02ac\u02ad\u0007",
    "\u001f\u0002\u0002\u02ad\u02af\u0007\u0016\u0002\u0002\u02ae\u02ac\u0003",
    "\u0002\u0002\u0002\u02ae\u02af\u0003\u0002\u0002\u0002\u02af\u02b0\u0003",
    "\u0002\u0002\u0002\u02b0\u02b1\t\u0004\u0002\u0002\u02b1\u02b2\u0007",
    "\u001a\u0002\u0002\u02b2\u02b7\u0005\u01b8\u00dd\u0002\u02b3\u02b4\u0007",
    "\u0017\u0002\u0002\u02b4\u02b6\u0005\u01b8\u00dd\u0002\u02b5\u02b3\u0003",
    "\u0002\u0002\u0002\u02b6\u02b9\u0003\u0002\u0002\u0002\u02b7\u02b5\u0003",
    "\u0002\u0002\u0002\u02b7\u02b8\u0003\u0002\u0002\u0002\u02b8\u02ba\u0003",
    "\u0002\u0002\u0002\u02b9\u02b7\u0003\u0002\u0002\u0002\u02ba\u02bb\u0007",
    "\u001b\u0002\u0002\u02bb\u02bc\u0007$\u0002\u0002\u02bc\u02bd\u0007",
    " \u0002\u0002\u02bd\u02be\u0005\u01b8\u00dd\u0002\u02be\'\u0003\u0002",
    "\u0002\u0002\u02bf\u02c0\u0007\u000e\u0002\u0002\u02c0\u02c1\u0007%",
    "\u0002\u0002\u02c1)\u0003\u0002\u0002\u0002\u02c2\u02c3\u0007&\u0002",
    "\u0002\u02c3+\u0003\u0002\u0002\u0002\u02c4\u02c5\u0007\'\u0002\u0002",
    "\u02c5\u02cc\u0005\u01b8\u00dd\u0002\u02c6\u02c8\u0007\u001a\u0002\u0002",
    "\u02c7\u02c9\u0005\u01a0\u00d1\u0002\u02c8\u02c7\u0003\u0002\u0002\u0002",
    "\u02c8\u02c9\u0003\u0002\u0002\u0002\u02c9\u02ca\u0003\u0002\u0002\u0002",
    "\u02ca\u02cd\u0007\u001b\u0002\u0002\u02cb\u02cd\u0005\u01a0\u00d1\u0002",
    "\u02cc\u02c6\u0003\u0002\u0002\u0002\u02cc\u02cb\u0003\u0002\u0002\u0002",
    "\u02cc\u02cd\u0003\u0002\u0002\u0002\u02cd-\u0003\u0002\u0002\u0002",
    "\u02ce\u02cf\u0007(\u0002\u0002\u02cf\u02d4\u00054\u001b\u0002\u02d0",
    "\u02d1\u0007\u0017\u0002\u0002\u02d1\u02d3\u00054\u001b\u0002\u02d2",
    "\u02d0\u0003\u0002\u0002\u0002\u02d3\u02d6\u0003\u0002\u0002\u0002\u02d4",
    "\u02d2\u0003\u0002\u0002\u0002\u02d4\u02d5\u0003\u0002\u0002\u0002\u02d5",
    "/\u0003\u0002\u0002\u0002\u02d6\u02d4\u0003\u0002\u0002\u0002\u02d7",
    "\u02d8\u0007(\u0002\u0002\u02d8\u02d9\u00054\u001b\u0002\u02d9\u02df",
    "\u0007\u000f\u0002\u0002\u02da\u02db\u00054\u001b\u0002\u02db\u02dc",
    "\u0007\u000f\u0002\u0002\u02dc\u02de\u0003\u0002\u0002\u0002\u02dd\u02da",
    "\u0003\u0002\u0002\u0002\u02de\u02e1\u0003\u0002\u0002\u0002\u02df\u02dd",
    "\u0003\u0002\u0002\u0002\u02df\u02e0\u0003\u0002\u0002\u0002\u02e01",
    "\u0003\u0002\u0002\u0002\u02e1\u02df\u0003\u0002\u0002\u0002\u02e2\u02e3",
    "\u00054\u001b\u0002\u02e3\u02e9\u0007\u000f\u0002\u0002\u02e4\u02e5",
    "\u00054\u001b\u0002\u02e5\u02e6\u0007\u000f\u0002\u0002\u02e6\u02e8",
    "\u0003\u0002\u0002\u0002\u02e7\u02e4\u0003\u0002\u0002\u0002\u02e8\u02eb",
    "\u0003\u0002\u0002\u0002\u02e9\u02e7\u0003\u0002\u0002\u0002\u02e9\u02ea",
    "\u0003\u0002\u0002\u0002\u02ea3\u0003\u0002\u0002\u0002\u02eb\u02e9",
    "\u0003\u0002\u0002\u0002\u02ec\u02f2\u0005:\u001e\u0002\u02ed\u02f2",
    "\u00058\u001d\u0002\u02ee\u02f2\u0005@!\u0002\u02ef\u02f2\u00056\u001c",
    "\u0002\u02f0\u02f2\u0005B\"\u0002\u02f1\u02ec\u0003\u0002\u0002\u0002",
    "\u02f1\u02ed\u0003\u0002\u0002\u0002\u02f1\u02ee\u0003\u0002\u0002\u0002",
    "\u02f1\u02ef\u0003\u0002\u0002\u0002\u02f1\u02f0\u0003\u0002\u0002\u0002",
    "\u02f25\u0003\u0002\u0002\u0002\u02f3\u02f8\u0005\u01b8\u00dd\u0002",
    "\u02f4\u02f5\u0007\u0017\u0002\u0002\u02f5\u02f7\u0005\u01b8\u00dd\u0002",
    "\u02f6\u02f4\u0003\u0002\u0002\u0002\u02f7\u02fa\u0003\u0002\u0002\u0002",
    "\u02f8\u02f6\u0003\u0002\u0002\u0002\u02f8\u02f9\u0003\u0002\u0002\u0002",
    "\u02f9\u02fc\u0003\u0002\u0002\u0002\u02fa\u02f8\u0003\u0002\u0002\u0002",
    "\u02fb\u02fd\u0007)\u0002\u0002\u02fc\u02fb\u0003\u0002\u0002\u0002",
    "\u02fc\u02fd\u0003\u0002\u0002\u0002\u02fd\u02fe\u0003\u0002\u0002\u0002",
    "\u02fe\u0300\u0005x=\u0002\u02ff\u0301\u0005z>\u0002\u0300\u02ff\u0003",
    "\u0002\u0002\u0002\u0300\u0301\u0003\u0002\u0002\u0002\u0301\u0305\u0003",
    "\u0002\u0002\u0002\u0302\u0304\u0005|?\u0002\u0303\u0302\u0003\u0002",
    "\u0002\u0002\u0304\u0307\u0003\u0002\u0002\u0002\u0305\u0303\u0003\u0002",
    "\u0002\u0002\u0305\u0306\u0003\u0002\u0002\u0002\u0306\u0309\u0003\u0002",
    "\u0002\u0002\u0307\u0305\u0003\u0002\u0002\u0002\u0308\u030a\u0005~",
    "@\u0002\u0309\u0308\u0003\u0002\u0002\u0002\u0309\u030a\u0003\u0002",
    "\u0002\u0002\u030a\u0317\u0003\u0002\u0002\u0002\u030b\u030c\u0005\u01b8",
    "\u00dd\u0002\u030c\u030e\u0007*\u0002\u0002\u030d\u030f\u0007)\u0002",
    "\u0002\u030e\u030d\u0003\u0002\u0002\u0002\u030e\u030f\u0003\u0002\u0002",
    "\u0002\u030f\u0310\u0003\u0002\u0002\u0002\u0310\u0312\u0005x=\u0002",
    "\u0311\u0313\u0005z>\u0002\u0312\u0311\u0003\u0002\u0002\u0002\u0312",
    "\u0313\u0003\u0002\u0002\u0002\u0313\u0314\u0003\u0002\u0002\u0002\u0314",
    "\u0315\u0005~@\u0002\u0315\u0317\u0003\u0002\u0002\u0002\u0316\u02f3",
    "\u0003\u0002\u0002\u0002\u0316\u030b\u0003\u0002\u0002\u0002\u03177",
    "\u0003\u0002\u0002\u0002\u0318\u0319\u0005\u01b8\u00dd\u0002\u0319\u031a",
    "\u0007+\u0002\u0002\u031a9\u0003\u0002\u0002\u0002\u031b\u031c\u0007",
    "\u001d\u0002\u0002\u031c\u0321\u0005\u01b8\u00dd\u0002\u031d\u031e\u0005",
    "\u01b8\u00dd\u0002\u031e\u031f\u0007\u001d\u0002\u0002\u031f\u0321\u0003",
    "\u0002\u0002\u0002\u0320\u031b\u0003\u0002\u0002\u0002\u0320\u031d\u0003",
    "\u0002\u0002\u0002\u0321\u0324\u0003\u0002\u0002\u0002\u0322\u0325\u0005",
    "<\u001f\u0002\u0323\u0325\u0005> \u0002\u0324\u0322\u0003\u0002\u0002",
    "\u0002\u0324\u0323\u0003\u0002\u0002\u0002\u0324\u0325\u0003\u0002\u0002",
    "\u0002\u0325\u0326\u0003\u0002\u0002\u0002\u0326\u0329\t\u0005\u0002",
    "\u0002\u0327\u032a\u0005\u011a\u008e\u0002\u0328\u032a\u0005\u0180\u00c1",
    "\u0002\u0329\u0327\u0003\u0002\u0002\u0002\u0329\u0328\u0003\u0002\u0002",
    "\u0002\u032a;\u0003\u0002\u0002\u0002\u032b\u032c\u0007$\u0002\u0002",
    "\u032c\u032e\u0007-\u0002\u0002\u032d\u032f\u0007.\u0002\u0002\u032e",
    "\u032d\u0003\u0002\u0002\u0002\u032e\u032f\u0003\u0002\u0002\u0002\u032f",
    "\u0332\u0003\u0002\u0002\u0002\u0330\u0331\u0007/\u0002\u0002\u0331",
    "\u0333\t\u0006\u0002\u0002\u0332\u0330\u0003\u0002\u0002\u0002\u0332",
    "\u0333\u0003\u0002\u0002\u0002\u0333=\u0003\u0002\u0002\u0002\u0334",
    "\u0335\u00072\u0002\u0002\u0335\u0336\u0007-\u0002\u0002\u0336?\u0003",
    "\u0002\u0002\u0002\u0337\u0338\t\u0007\u0002\u0002\u0338\u0339\u0007",
    "5\u0002\u0002\u0339\u033f\u0007\u001e\u0002\u0002\u033a\u0340\u0007",
    "6\u0002\u0002\u033b\u0340\u00077\u0002\u0002\u033c\u033d\u00078\u0002",
    "\u0002\u033d\u0340\u00079\u0002\u0002\u033e\u0340\u0005\u01b8\u00dd",
    "\u0002\u033f\u033a\u0003\u0002\u0002\u0002\u033f\u033b\u0003\u0002\u0002",
    "\u0002\u033f\u033c\u0003\u0002\u0002\u0002\u033f\u033e\u0003\u0002\u0002",
    "\u0002\u0340\u0341\u0003\u0002\u0002\u0002\u0341\u0342\u0005\b\u0005",
    "\u0002\u0342A\u0003\u0002\u0002\u0002\u0343\u0345\u0007:\u0002\u0002",
    "\u0344\u0343\u0003\u0002\u0002\u0002\u0344\u0345\u0003\u0002\u0002\u0002",
    "\u0345\u0346\u0003\u0002\u0002\u0002\u0346\u0347\u0007;\u0002\u0002",
    "\u0347\u0348\u0007<\u0002\u0002\u0348\u034a\u0005\u01b8\u00dd\u0002",
    "\u0349\u034b\u0005V,\u0002\u034a\u0349\u0003\u0002\u0002\u0002\u034a",
    "\u034b\u0003\u0002\u0002\u0002\u034b\u034c\u0003\u0002\u0002\u0002\u034c",
    "\u034d\u0005H%\u0002\u034dC\u0003\u0002\u0002\u0002\u034e\u034f\u0007",
    "=\u0002\u0002\u034f\u0353\u0007<\u0002\u0002\u0350\u0351\u0007>\u0002",
    "\u0002\u0351\u0352\u00078\u0002\u0002\u0352\u0354\u0007?\u0002\u0002",
    "\u0353\u0350\u0003\u0002\u0002\u0002\u0353\u0354\u0003\u0002\u0002\u0002",
    "\u0354\u0355\u0003\u0002\u0002\u0002\u0355\u0357\u0005\u014a\u00a6\u0002",
    "\u0356\u0358\u0005V,\u0002\u0357\u0356\u0003\u0002\u0002\u0002\u0357",
    "\u0358\u0003\u0002\u0002\u0002\u0358\u0359\u0003\u0002\u0002\u0002\u0359",
    "\u035a\u0005H%\u0002\u035aE\u0003\u0002\u0002\u0002\u035b\u0362\u0007",
    "=\u0002\u0002\u035c\u035d\u0007@\u0002\u0002\u035d\u0363\u0007;\u0002",
    "\u0002\u035e\u0360\t\b\u0002\u0002\u035f\u035e\u0003\u0002\u0002\u0002",
    "\u035f\u0360\u0003\u0002\u0002\u0002\u0360\u0361\u0003\u0002\u0002\u0002",
    "\u0361\u0363\u0007B\u0002\u0002\u0362\u035c\u0003\u0002\u0002\u0002",
    "\u0362\u035f\u0003\u0002\u0002\u0002\u0363\u0364\u0003\u0002\u0002\u0002",
    "\u0364\u0365\u0007<\u0002\u0002\u0365\u0367\u0005\u01b8\u00dd\u0002",
    "\u0366\u0368\u0005V,\u0002\u0367\u0366\u0003\u0002\u0002\u0002\u0367",
    "\u0368\u0003\u0002\u0002\u0002\u0368\u0369\u0003\u0002\u0002\u0002\u0369",
    "\u036a\u0005H%\u0002\u036aG\u0003\u0002\u0002\u0002\u036b\u036d\u0007",
    ")\u0002\u0002\u036c\u036b\u0003\u0002\u0002\u0002\u036c\u036d\u0003",
    "\u0002\u0002\u0002\u036d\u036e\u0003\u0002\u0002\u0002\u036e\u036f\u0007",
    "\u001a\u0002\u0002\u036f\u0370\u0005\u011a\u008e\u0002\u0370\u0371\u0007",
    "\u001b\u0002\u0002\u0371\u037d\u0003\u0002\u0002\u0002\u0372\u0374\u0007",
    ")\u0002\u0002\u0373\u0372\u0003\u0002\u0002\u0002\u0373\u0374\u0003",
    "\u0002\u0002\u0002\u0374\u0375\u0003\u0002\u0002\u0002\u0375\u037d\u0005",
    "\u011a\u008e\u0002\u0376\u0377\u0007\u001a\u0002\u0002\u0377\u0378\u0005",
    "J&\u0002\u0378\u0379\u0007\u001b\u0002\u0002\u0379\u037d\u0003\u0002",
    "\u0002\u0002\u037a\u037b\u0007C\u0002\u0002\u037b\u037d\u0005\u014a",
    "\u00a6\u0002\u037c\u036c\u0003\u0002\u0002\u0002\u037c\u0373\u0003\u0002",
    "\u0002\u0002\u037c\u0376\u0003\u0002\u0002\u0002\u037c\u037a\u0003\u0002",
    "\u0002\u0002\u037d\u037f\u0003\u0002\u0002\u0002\u037e\u0380\u0005\\",
    "/\u0002\u037f\u037e\u0003\u0002\u0002\u0002\u037f\u0380\u0003\u0002",
    "\u0002\u0002\u0380I\u0003\u0002\u0002\u0002\u0381\u0386\u0005L\'\u0002",
    "\u0382\u0383\u0007\u0017\u0002\u0002\u0383\u0385\u0005L\'\u0002\u0384",
    "\u0382\u0003\u0002\u0002\u0002\u0385\u0388\u0003\u0002\u0002\u0002\u0386",
    "\u0384\u0003\u0002\u0002\u0002\u0386\u0387\u0003\u0002\u0002\u0002\u0387",
    "K\u0003\u0002\u0002\u0002\u0388\u0386\u0003\u0002\u0002\u0002\u0389",
    "\u038a\u0005N(\u0002\u038a\u038c\u0005x=\u0002\u038b\u038d\u0005z>\u0002",
    "\u038c\u038b\u0003\u0002\u0002\u0002\u038c\u038d\u0003\u0002\u0002\u0002",
    "\u038d\u0391\u0003\u0002\u0002\u0002\u038e\u0390\u0005|?\u0002\u038f",
    "\u038e\u0003\u0002\u0002\u0002\u0390\u0393\u0003\u0002\u0002\u0002\u0391",
    "\u038f\u0003\u0002\u0002\u0002\u0391\u0392\u0003\u0002\u0002\u0002\u0392",
    "\u0397\u0003\u0002\u0002\u0002\u0393\u0391\u0003\u0002\u0002\u0002\u0394",
    "\u0396\u0005P)\u0002\u0395\u0394\u0003\u0002\u0002\u0002\u0396\u0399",
    "\u0003\u0002\u0002\u0002\u0397\u0395\u0003\u0002\u0002\u0002\u0397\u0398",
    "\u0003\u0002\u0002\u0002\u0398\u03a0\u0003\u0002\u0002\u0002\u0399\u0397",
    "\u0003\u0002\u0002\u0002\u039a\u039b\u0007D\u0002\u0002\u039b\u039d",
    "\u0005\u01b8\u00dd\u0002\u039c\u039a\u0003\u0002\u0002\u0002\u039c\u039d",
    "\u0003\u0002\u0002\u0002\u039d\u039e\u0003\u0002\u0002\u0002\u039e\u03a0",
    "\u0005R*\u0002\u039f\u0389\u0003\u0002\u0002\u0002\u039f\u039c\u0003",
    "\u0002\u0002\u0002\u03a0M\u0003\u0002\u0002\u0002\u03a1\u03a2\u0005",
    "\u01b8\u00dd\u0002\u03a2O\u0003\u0002\u0002\u0002\u03a3\u03c4\u0005",
    "~@\u0002\u03a4\u03a6\u00078\u0002\u0002\u03a5\u03a4\u0003\u0002\u0002",
    "\u0002\u03a5\u03a6\u0003\u0002\u0002\u0002\u03a6\u03a7\u0003\u0002\u0002",
    "\u0002\u03a7\u03c4\u0007\u0015\u0002\u0002\u03a8\u03a9\u0007E\u0002",
    "\u0002\u03a9\u03c4\u0007F\u0002\u0002\u03aa\u03c4\u0007G\u0002\u0002",
    "\u03ab\u03ac\u0007H\u0002\u0002\u03ac\u03ad\u0005\u014a\u00a6\u0002",
    "\u03ad\u03ae\u0007\u001a\u0002\u0002\u03ae\u03af\u0005\u01b8\u00dd\u0002",
    "\u03af\u03b3\u0007\u001b\u0002\u0002\u03b0\u03b2\u0005T+\u0002\u03b1",
    "\u03b0\u0003\u0002\u0002\u0002\u03b2\u03b5\u0003\u0002\u0002\u0002\u03b3",
    "\u03b1\u0003\u0002\u0002\u0002\u03b3\u03b4\u0003\u0002\u0002\u0002\u03b4",
    "\u03c4\u0003\u0002\u0002\u0002\u03b5\u03b3\u0003\u0002\u0002\u0002\u03b6",
    "\u03b7\u0007I\u0002\u0002\u03b7\u03b8\u0007\u001a\u0002\u0002\u03b8",
    "\u03bd\u0007J\u0002\u0002\u03b9\u03ba\u0007\u0017\u0002\u0002\u03ba",
    "\u03bc\u0007J\u0002\u0002\u03bb\u03b9\u0003\u0002\u0002\u0002\u03bc",
    "\u03bf\u0003\u0002\u0002\u0002\u03bd\u03bb\u0003\u0002\u0002\u0002\u03bd",
    "\u03be\u0003\u0002\u0002\u0002\u03be\u03c0\u0003\u0002\u0002\u0002\u03bf",
    "\u03bd\u0003\u0002\u0002\u0002\u03c0\u03c4\u0007\u001b\u0002\u0002\u03c1",
    "\u03c4\u0007K\u0002\u0002\u03c2\u03c4\u0007L\u0002\u0002\u03c3\u03a3",
    "\u0003\u0002\u0002\u0002\u03c3\u03a5\u0003\u0002\u0002\u0002\u03c3\u03a8",
    "\u0003\u0002\u0002\u0002\u03c3\u03aa\u0003\u0002\u0002\u0002\u03c3\u03ab",
    "\u0003\u0002\u0002\u0002\u03c3\u03b6\u0003\u0002\u0002\u0002\u03c3\u03c1",
    "\u0003\u0002\u0002\u0002\u03c3\u03c2\u0003\u0002\u0002\u0002\u03c4Q",
    "\u0003\u0002\u0002\u0002\u03c5\u03c6\u0007E\u0002\u0002\u03c6\u03c8",
    "\u0007F\u0002\u0002\u03c7\u03c9\u0007M\u0002\u0002\u03c8\u03c7\u0003",
    "\u0002\u0002\u0002\u03c8\u03c9\u0003\u0002\u0002\u0002\u03c9\u03ca\u0003",
    "\u0002\u0002\u0002\u03ca\u03cb\u0007\u001a\u0002\u0002\u03cb\u03cd\u0005",
    "\u01b8\u00dd\u0002\u03cc\u03ce\t\t\u0002\u0002\u03cd\u03cc\u0003\u0002",
    "\u0002\u0002\u03cd\u03ce\u0003\u0002\u0002\u0002\u03ce\u03d6\u0003\u0002",
    "\u0002\u0002\u03cf\u03d0\u0007\u0017\u0002\u0002\u03d0\u03d2\u0005\u01b8",
    "\u00dd\u0002\u03d1\u03d3\t\t\u0002\u0002\u03d2\u03d1\u0003\u0002\u0002",
    "\u0002\u03d2\u03d3\u0003\u0002\u0002\u0002\u03d3\u03d5\u0003\u0002\u0002",
    "\u0002\u03d4\u03cf\u0003\u0002\u0002\u0002\u03d5\u03d8\u0003\u0002\u0002",
    "\u0002\u03d6\u03d4\u0003\u0002\u0002\u0002\u03d6\u03d7\u0003\u0002\u0002",
    "\u0002\u03d7\u03d9\u0003\u0002\u0002\u0002\u03d8\u03d6\u0003\u0002\u0002",
    "\u0002\u03d9\u03db\u0007\u001b\u0002\u0002\u03da\u03dc\u0007L\u0002",
    "\u0002\u03db\u03da\u0003\u0002\u0002\u0002\u03db\u03dc\u0003\u0002\u0002",
    "\u0002\u03dc\u03de\u0003\u0002\u0002\u0002\u03dd\u03df\u0005\u00eex",
    "\u0002\u03de\u03dd\u0003\u0002\u0002\u0002\u03de\u03df\u0003\u0002\u0002",
    "\u0002\u03df\u03ff\u0003\u0002\u0002\u0002\u03e0\u03e1\u0007P\u0002",
    "\u0002\u03e1\u03e2\u0007F\u0002\u0002\u03e2\u03e3\u0007\u001a\u0002",
    "\u0002\u03e3\u03e8\u0005\u01b8\u00dd\u0002\u03e4\u03e5\u0007\u0017\u0002",
    "\u0002\u03e5\u03e7\u0005\u01b8\u00dd\u0002\u03e6\u03e4\u0003\u0002\u0002",
    "\u0002\u03e7\u03ea\u0003\u0002\u0002\u0002\u03e8\u03e6\u0003\u0002\u0002",
    "\u0002\u03e8\u03e9\u0003\u0002\u0002\u0002\u03e9\u03eb\u0003\u0002\u0002",
    "\u0002\u03ea\u03e8\u0003\u0002\u0002\u0002\u03eb\u03ec\u0007\u001b\u0002",
    "\u0002\u03ec\u03ed\u0007H\u0002\u0002\u03ed\u03ee\u0005\u014a\u00a6",
    "\u0002\u03ee\u03ef\u0007\u001a\u0002\u0002\u03ef\u03f4\u0005\u01b8\u00dd",
    "\u0002\u03f0\u03f1\u0007\u0017\u0002\u0002\u03f1\u03f3\u0005\u01b8\u00dd",
    "\u0002\u03f2\u03f0\u0003\u0002\u0002\u0002\u03f3\u03f6\u0003\u0002\u0002",
    "\u0002\u03f4\u03f2\u0003\u0002\u0002\u0002\u03f4\u03f5\u0003\u0002\u0002",
    "\u0002\u03f5\u03f7\u0003\u0002\u0002\u0002\u03f6\u03f4\u0003\u0002\u0002",
    "\u0002\u03f7\u03fb\u0007\u001b\u0002\u0002\u03f8\u03fa\u0005T+\u0002",
    "\u03f9\u03f8\u0003\u0002\u0002\u0002\u03fa\u03fd\u0003\u0002\u0002\u0002",
    "\u03fb\u03f9\u0003\u0002\u0002\u0002\u03fb\u03fc\u0003\u0002\u0002\u0002",
    "\u03fc\u03ff\u0003\u0002\u0002\u0002\u03fd\u03fb\u0003\u0002\u0002\u0002",
    "\u03fe\u03c5\u0003\u0002\u0002\u0002\u03fe\u03e0\u0003\u0002\u0002\u0002",
    "\u03ffS\u0003\u0002\u0002\u0002\u0400\u0401\u0007Q\u0002\u0002\u0401",
    "\u040a\t\n\u0002\u0002\u0402\u0403\u0007T\u0002\u0002\u0403\u040b\u0007",
    "U\u0002\u0002\u0404\u040b\u0007V\u0002\u0002\u0405\u0406\u0007\u0016",
    "\u0002\u0002\u0406\u040b\u0007\u0015\u0002\u0002\u0407\u0408\u0007\u0016",
    "\u0002\u0002\u0408\u040b\u0007W\u0002\u0002\u0409\u040b\u0007X\u0002",
    "\u0002\u040a\u0402\u0003\u0002\u0002\u0002\u040a\u0404\u0003\u0002\u0002",
    "\u0002\u040a\u0405\u0003\u0002\u0002\u0002\u040a\u0407\u0003\u0002\u0002",
    "\u0002\u040a\u0409\u0003\u0002\u0002\u0002\u040bU\u0003\u0002\u0002",
    "\u0002\u040c\u040e\u0005X-\u0002\u040d\u040c\u0003\u0002\u0002\u0002",
    "\u040e\u040f\u0003\u0002\u0002\u0002\u040f\u040d\u0003\u0002\u0002\u0002",
    "\u040f\u0410\u0003\u0002\u0002\u0002\u0410W\u0003\u0002\u0002\u0002",
    "\u0411\u0412\u0007\u0017\u0002\u0002\u0412\u0415\u0005Z.\u0002\u0413",
    "\u0415\u0005f4\u0002\u0414\u0411\u0003\u0002\u0002\u0002\u0414\u0413",
    "\u0003\u0002\u0002\u0002\u0415Y\u0003\u0002\u0002\u0002\u0416\u0418",
    "\u0007T\u0002\u0002\u0417\u0416\u0003\u0002\u0002\u0002\u0417\u0418",
    "\u0003\u0002\u0002\u0002\u0418\u0419\u0003\u0002\u0002\u0002\u0419\u041a",
    "\t\u000b\u0002\u0002\u041a[\u0003\u0002\u0002\u0002\u041b\u041d\u0005",
    "^0\u0002\u041c\u041b\u0003\u0002\u0002\u0002\u041d\u041e\u0003\u0002",
    "\u0002\u0002\u041e\u041c\u0003\u0002\u0002\u0002\u041e\u041f\u0003\u0002",
    "\u0002\u0002\u041f]\u0003\u0002\u0002\u0002\u0420\u0421\u0007Q\u0002",
    "\u0002\u0421\u0422\u0007[\u0002\u0002\u0422\u0423\t\f\u0002\u0002\u0423",
    "\u042b\u0007]\u0002\u0002\u0424\u042b\u0005`1\u0002\u0425\u042b\u0005",
    "b2\u0002\u0426\u042b\u0005d3\u0002\u0427\u042b\u0005f4\u0002\u0428\u042b",
    "\u0005l7\u0002\u0429\u042b\u0005n8\u0002\u042a\u0420\u0003\u0002\u0002",
    "\u0002\u042a\u0424\u0003\u0002\u0002\u0002\u042a\u0425\u0003\u0002\u0002",
    "\u0002\u042a\u0426\u0003\u0002\u0002\u0002\u042a\u0427\u0003\u0002\u0002",
    "\u0002\u042a\u0428\u0003\u0002\u0002\u0002\u042a\u0429\u0003\u0002\u0002",
    "\u0002\u042b_\u0003\u0002\u0002\u0002\u042c\u042d\u0007^\u0002\u0002",
    "\u042d\u042e\u0007_\u0002\u0002\u042e\u043f\t\r\u0002\u0002\u042f\u0430",
    "\t\u000e\u0002\u0002\u0430\u043f\u0007J\u0002\u0002\u0431\u043f\u0007",
    "f\u0002\u0002\u0432\u043f\t\u000f\u0002\u0002\u0433\u0434\u0007i\u0002",
    "\u0002\u0434\u0437\u0007\u001a\u0002\u0002\u0435\u0438\u0005\u01b8\u00dd",
    "\u0002\u0436\u0438\u0007J\u0002\u0002\u0437\u0435\u0003\u0002\u0002",
    "\u0002\u0437\u0436\u0003\u0002\u0002\u0002\u0438\u0439\u0003\u0002\u0002",
    "\u0002\u0439\u0437\u0003\u0002\u0002\u0002\u0439\u043a\u0003\u0002\u0002",
    "\u0002\u043a\u043b\u0003\u0002\u0002\u0002\u043b\u043f\u0007\u001b\u0002",
    "\u0002\u043c\u043d\u0007j\u0002\u0002\u043d\u043f\u0005\u01b8\u00dd",
    "\u0002\u043e\u042c\u0003\u0002\u0002\u0002\u043e\u042f\u0003\u0002\u0002",
    "\u0002\u043e\u0431\u0003\u0002\u0002\u0002\u043e\u0432\u0003\u0002\u0002",
    "\u0002\u043e\u0433\u0003\u0002\u0002\u0002\u043e\u043c\u0003\u0002\u0002",
    "\u0002\u043fa\u0003\u0002\u0002\u0002\u0440\u0442\u0007k\u0002\u0002",
    "\u0441\u0440\u0003\u0002\u0002\u0002\u0441\u0442\u0003\u0002\u0002\u0002",
    "\u0442\u0443\u0003\u0002\u0002\u0002\u0443\u0444\u0007l\u0002\u0002",
    "\u0444\u0462\u0005\u01b8\u00dd\u0002\u0445\u0446\u0007$\u0002\u0002",
    "\u0446\u0462\u0007m\u0002\u0002\u0447\u0448\u0007n\u0002\u0002\u0448",
    "\u0449\u0007o\u0002\u0002\u0449\u044a\u0007p\u0002\u0002\u044a\u044b",
    "\u0007\u001a\u0002\u0002\u044b\u0450\u0005\u01b8\u00dd\u0002\u044c\u044d",
    "\u0007\u0017\u0002\u0002\u044d\u044f\u0005\u01b8\u00dd\u0002\u044e\u044c",
    "\u0003\u0002\u0002\u0002\u044f\u0452\u0003\u0002\u0002\u0002\u0450\u044e",
    "\u0003\u0002\u0002\u0002\u0450\u0451\u0003\u0002\u0002\u0002\u0451\u0453",
    "\u0003\u0002\u0002\u0002\u0452\u0450\u0003\u0002\u0002\u0002\u0453\u0454",
    "\u0007\u001b\u0002\u0002\u0454\u0462\u0003\u0002\u0002\u0002\u0455\u0457",
    "\u00078\u0002\u0002\u0456\u0455\u0003\u0002\u0002\u0002\u0456\u0457",
    "\u0003\u0002\u0002\u0002\u0457\u0458\u0003\u0002\u0002\u0002\u0458\u0462",
    "\u0007q\u0002\u0002\u0459\u045a\u0007r\u0002\u0002\u045a\u0462\t\u0010",
    "\u0002\u0002\u045b\u045c\u0007t\u0002\u0002\u045c\u0462\u0007.\u0002",
    "\u0002\u045d\u045e\u0007$\u0002\u0002\u045e\u045f\u0007V\u0002\u0002",
    "\u045f\u0460\u0007Q\u0002\u0002\u0460\u0462\u0007u\u0002\u0002\u0461",
    "\u0441\u0003\u0002\u0002\u0002\u0461\u0445\u0003\u0002\u0002\u0002\u0461",
    "\u0447\u0003\u0002\u0002\u0002\u0461\u0456\u0003\u0002\u0002\u0002\u0461",
    "\u0459\u0003\u0002\u0002\u0002\u0461\u045b\u0003\u0002\u0002\u0002\u0461",
    "\u045d\u0003\u0002\u0002\u0002\u0462c\u0003\u0002\u0002\u0002\u0463",
    "\u0465\u0007G\u0002\u0002\u0464\u0463\u0003\u0002\u0002\u0002\u0464",
    "\u0465\u0003\u0002\u0002\u0002\u0465\u0466\u0003\u0002\u0002\u0002\u0466",
    "\u0467\u0007E\u0002\u0002\u0467\u0468\u0007k\u0002\u0002\u0468\u0469",
    "\u0007\u001a\u0002\u0002\u0469\u046e\u0005\u01b8\u00dd\u0002\u046a\u046b",
    "\u0007\u0017\u0002\u0002\u046b\u046d\u0005\u01b8\u00dd\u0002\u046c\u046a",
    "\u0003\u0002\u0002\u0002\u046d\u0470\u0003\u0002\u0002\u0002\u046e\u046c",
    "\u0003\u0002\u0002\u0002\u046e\u046f\u0003\u0002\u0002\u0002\u046f\u0471",
    "\u0003\u0002\u0002\u0002\u0470\u046e\u0003\u0002\u0002\u0002\u0471\u0472",
    "\u0007\u001b\u0002\u0002\u0472\u0476\u0003\u0002\u0002\u0002\u0473\u0474",
    "\u0007$\u0002\u0002\u0474\u0476\u0007v\u0002\u0002\u0475\u0464\u0003",
    "\u0002\u0002\u0002\u0475\u0473\u0003\u0002\u0002\u0002\u0476e\u0003",
    "\u0002\u0002\u0002\u0477\u047c\u0005h5\u0002\u0478\u0479\u0007w\u0002",
    "\u0002\u0479\u047a\u0007)\u0002\u0002\u047a\u047c\u0005\u01b8\u00dd",
    "\u0002\u047b\u0477\u0003\u0002\u0002\u0002\u047b\u0478\u0003\u0002\u0002",
    "\u0002\u047cg\u0003\u0002\u0002\u0002\u047d\u047e\u0007x\u0002\u0002",
    "\u047e\u047f\u0007y\u0002\u0002\u047f\u0483\u0007z\u0002\u0002\u0480",
    "\u0482\u0005j6\u0002\u0481\u0480\u0003\u0002\u0002\u0002\u0482\u0485",
    "\u0003\u0002\u0002\u0002\u0483\u0481\u0003\u0002\u0002\u0002\u0483\u0484",
    "\u0003\u0002\u0002\u0002\u0484i\u0003\u0002\u0002\u0002\u0485\u0483",
    "\u0003\u0002\u0002\u0002\u0486\u0487\u0007{\u0002\u0002\u0487\u0488",
    "\u0007|\u0002\u0002\u0488\u0489\u0007o\u0002\u0002\u0489\u048d\u0005",
    "\u0180\u00c1\u0002\u048a\u048b\u0007}\u0002\u0002\u048b\u048c\u0007",
    "o\u0002\u0002\u048c\u048e\u0005\u0180\u00c1\u0002\u048d\u048a\u0003",
    "\u0002\u0002\u0002\u048d\u048e\u0003\u0002\u0002\u0002\u048e\u04a2\u0003",
    "\u0002\u0002\u0002\u048f\u0490\u0007~\u0002\u0002\u0490\u0491\u0007",
    "\u007f\u0002\u0002\u0491\u0492\u0007|\u0002\u0002\u0492\u0493\u0007",
    "o\u0002\u0002\u0493\u04a2\u0005\u0180\u00c1\u0002\u0494\u0495\u0007",
    "\u0080\u0002\u0002\u0495\u0496\u0007\u0081\u0002\u0002\u0496\u0497\u0007",
    "|\u0002\u0002\u0497\u0498\u0007o\u0002\u0002\u0498\u04a2\u0005\u0180",
    "\u00c1\u0002\u0499\u049a\u0007\u0082\u0002\u0002\u049a\u049b\u0007|",
    "\u0002\u0002\u049b\u049c\u0007o\u0002\u0002\u049c\u04a2\u0005\u0180",
    "\u00c1\u0002\u049d\u049e\u0007\u0015\u0002\u0002\u049e\u049f\u0007\u0083",
    "\u0002\u0002\u049f\u04a0\u0007)\u0002\u0002\u04a0\u04a2\u0005\u0180",
    "\u00c1\u0002\u04a1\u0486\u0003\u0002\u0002\u0002\u04a1\u048f\u0003\u0002",
    "\u0002\u0002\u04a1\u0494\u0003\u0002\u0002\u0002\u04a1\u0499\u0003\u0002",
    "\u0002\u0002\u04a1\u049d\u0003\u0002\u0002\u0002\u04a2k\u0003\u0002",
    "\u0002\u0002\u04a3\u04a4\u0007Q\u0002\u0002\u04a4\u04a8\u0005\u01b8",
    "\u00dd\u0002\u04a5\u04a6\u0007\u0084\u0002\u0002\u04a6\u04a8\u0005\u01b8",
    "\u00dd\u0002\u04a7\u04a3\u0003\u0002\u0002\u0002\u04a7\u04a5\u0003\u0002",
    "\u0002\u0002\u04a8m\u0003\u0002\u0002\u0002\u04a9\u04ab\u0007K\u0002",
    "\u0002\u04aa\u04ac\u0007\u0019\u0002\u0002\u04ab\u04aa\u0003\u0002\u0002",
    "\u0002\u04ab\u04ac\u0003\u0002\u0002\u0002\u04ac\u04ad\u0003\u0002\u0002",
    "\u0002\u04ad\u04c5\u0005\u0180\u00c1\u0002\u04ae\u04b0\u0007\u0085\u0002",
    "\u0002\u04af\u04b1\u0007\u0019\u0002\u0002\u04b0\u04af\u0003\u0002\u0002",
    "\u0002\u04b0\u04b1\u0003\u0002\u0002\u0002\u04b1\u04b2\u0003\u0002\u0002",
    "\u0002\u04b2\u04c5\u0005\u0180\u00c1\u0002\u04b3\u04b5\u0007W\u0002",
    "\u0002\u04b4\u04b3\u0003\u0002\u0002\u0002\u04b4\u04b5\u0003\u0002\u0002",
    "\u0002\u04b5\u04b9\u0003\u0002\u0002\u0002\u04b6\u04b7\u0007\u0086\u0002",
    "\u0002\u04b7\u04ba\u0007\u0016\u0002\u0002\u04b8\u04ba\u0007\u0087\u0002",
    "\u0002\u04b9\u04b6\u0003\u0002\u0002\u0002\u04b9\u04b8\u0003\u0002\u0002",
    "\u0002\u04ba\u04bc\u0003\u0002\u0002\u0002\u04bb\u04bd\u0007\u0019\u0002",
    "\u0002\u04bc\u04bb\u0003\u0002\u0002\u0002\u04bc\u04bd\u0003\u0002\u0002",
    "\u0002\u04bd\u04be\u0003\u0002\u0002\u0002\u04be\u04c5\u0005\u0180\u00c1",
    "\u0002\u04bf\u04c1\u0007\u0088\u0002\u0002\u04c0\u04c2\u0007\u0019\u0002",
    "\u0002\u04c1\u04c0\u0003\u0002\u0002\u0002\u04c1\u04c2\u0003\u0002\u0002",
    "\u0002\u04c2\u04c3\u0003\u0002\u0002\u0002\u04c3\u04c5\u0005\u0180\u00c1",
    "\u0002\u04c4\u04a9\u0003\u0002\u0002\u0002\u04c4\u04ae\u0003\u0002\u0002",
    "\u0002\u04c4\u04b4\u0003\u0002\u0002\u0002\u04c4\u04bf\u0003\u0002\u0002",
    "\u0002\u04c5o\u0003\u0002\u0002\u0002\u04c6\u04c7\u0007\u0089\u0002",
    "\u0002\u04c7\u04c8\u0007<\u0002\u0002\u04c8\u04c9\u0005\u014a\u00a6",
    "\u0002\u04c9\u04ca\u0005r:\u0002\u04caq\u0003\u0002\u0002\u0002\u04cb",
    "\u04cc\u0005t;\u0002\u04ccs\u0003\u0002\u0002\u0002\u04cd\u04d0\u0007",
    "\u008a\u0002\u0002\u04ce\u04cf\u0007D\u0002\u0002\u04cf\u04d1\u0005",
    "\u01b8\u00dd\u0002\u04d0\u04ce\u0003\u0002\u0002\u0002\u04d0\u04d1\u0003",
    "\u0002\u0002\u0002\u04d1\u04d2\u0003\u0002\u0002\u0002\u04d2\u04d3\u0005",
    "v<\u0002\u04d3u\u0003\u0002\u0002\u0002\u04d4\u04d5\u0007E\u0002\u0002",
    "\u04d5\u04d7\u0007F\u0002\u0002\u04d6\u04d8\u0007M\u0002\u0002\u04d7",
    "\u04d6\u0003\u0002\u0002\u0002\u04d7\u04d8\u0003\u0002\u0002\u0002\u04d8",
    "\u04d9\u0003\u0002\u0002\u0002\u04d9\u04da\u0007\u001a\u0002\u0002\u04da",
    "\u04dc\u0005\u01b8\u00dd\u0002\u04db\u04dd\t\t\u0002\u0002\u04dc\u04db",
    "\u0003\u0002\u0002\u0002\u04dc\u04dd\u0003\u0002\u0002\u0002\u04dd\u04e5",
    "\u0003\u0002\u0002\u0002\u04de\u04df\u0007\u0017\u0002\u0002\u04df\u04e1",
    "\u0005\u01b8\u00dd\u0002\u04e0\u04e2\t\t\u0002\u0002\u04e1\u04e0\u0003",
    "\u0002\u0002\u0002\u04e1\u04e2\u0003\u0002\u0002\u0002\u04e2\u04e4\u0003",
    "\u0002\u0002\u0002\u04e3\u04de\u0003\u0002\u0002\u0002\u04e4\u04e7\u0003",
    "\u0002\u0002\u0002\u04e5\u04e3\u0003\u0002\u0002\u0002\u04e5\u04e6\u0003",
    "\u0002\u0002\u0002\u04e6\u04e8\u0003\u0002\u0002\u0002\u04e7\u04e5\u0003",
    "\u0002\u0002\u0002\u04e8\u04ea\u0007\u001b\u0002\u0002\u04e9\u04eb\u0007",
    "L\u0002\u0002\u04ea\u04e9\u0003\u0002\u0002\u0002\u04ea\u04eb\u0003",
    "\u0002\u0002\u0002\u04eb\u04ed\u0003\u0002\u0002\u0002\u04ec\u04ee\u0005",
    "\u00eex\u0002\u04ed\u04ec\u0003\u0002\u0002\u0002\u04ed\u04ee\u0003",
    "\u0002\u0002\u0002\u04ee\u0513\u0003\u0002\u0002\u0002\u04ef\u04f0\u0007",
    "P\u0002\u0002\u04f0\u04f1\u0007F\u0002\u0002\u04f1\u04f2\u0007\u001a",
    "\u0002\u0002\u04f2\u04f7\u0005\u01b8\u00dd\u0002\u04f3\u04f4\u0007\u0017",
    "\u0002\u0002\u04f4\u04f6\u0005\u01b8\u00dd\u0002\u04f5\u04f3\u0003\u0002",
    "\u0002\u0002\u04f6\u04f9\u0003\u0002\u0002\u0002\u04f7\u04f5\u0003\u0002",
    "\u0002\u0002\u04f7\u04f8\u0003\u0002\u0002\u0002\u04f8\u04fa\u0003\u0002",
    "\u0002\u0002\u04f9\u04f7\u0003\u0002\u0002\u0002\u04fa\u04fb\u0007\u001b",
    "\u0002\u0002\u04fb\u04fc\u0007H\u0002\u0002\u04fc\u04fd\u0005\u014a",
    "\u00a6\u0002\u04fd\u04fe\u0007\u001a\u0002\u0002\u04fe\u0503\u0005\u01b8",
    "\u00dd\u0002\u04ff\u0500\u0007\u0017\u0002\u0002\u0500\u0502\u0005\u01b8",
    "\u00dd\u0002\u0501\u04ff\u0003\u0002\u0002\u0002\u0502\u0505\u0003\u0002",
    "\u0002\u0002\u0503\u0501\u0003\u0002\u0002\u0002\u0503\u0504\u0003\u0002",
    "\u0002\u0002\u0504\u0506\u0003\u0002\u0002\u0002\u0505\u0503\u0003\u0002",
    "\u0002\u0002\u0506\u050a\u0007\u001b\u0002\u0002\u0507\u0509\u0005T",
    "+\u0002\u0508\u0507\u0003\u0002\u0002\u0002\u0509\u050c\u0003\u0002",
    "\u0002\u0002\u050a\u0508\u0003\u0002\u0002\u0002\u050a\u050b\u0003\u0002",
    "\u0002\u0002\u050b\u0513\u0003\u0002\u0002\u0002\u050c\u050a\u0003\u0002",
    "\u0002\u0002\u050d\u050e\u0007W\u0002\u0002\u050e\u050f\u0005\u0180",
    "\u00c1\u0002\u050f\u0510\u0007\u001e\u0002\u0002\u0510\u0511\u0005\u01b8",
    "\u00dd\u0002\u0511\u0513\u0003\u0002\u0002\u0002\u0512\u04d4\u0003\u0002",
    "\u0002\u0002\u0512\u04ef\u0003\u0002\u0002\u0002\u0512\u050d\u0003\u0002",
    "\u0002\u0002\u0513w\u0003\u0002\u0002\u0002\u0514\u0543\u0007\u008b",
    "\u0002\u0002\u0515\u0543\u0007\u0086\u0002\u0002\u0516\u0543\u0007\u008c",
    "\u0002\u0002\u0517\u0543\u0007\u008d\u0002\u0002\u0518\u0543\u0007\u008e",
    "\u0002\u0002\u0519\u0543\u0007\u008f\u0002\u0002\u051a\u0543\u0007\u0090",
    "\u0002\u0002\u051b\u0543\u0007\u0091\u0002\u0002\u051c\u0543\u0007\u0092",
    "\u0002\u0002\u051d\u0543\u0007\u0093\u0002\u0002\u051e\u0543\u0007\u0094",
    "\u0002\u0002\u051f\u0521\u0007\u0095\u0002\u0002\u0520\u0522\u0007\u0096",
    "\u0002\u0002\u0521\u0520\u0003\u0002\u0002\u0002\u0521\u0522\u0003\u0002",
    "\u0002\u0002\u0522\u0543\u0003\u0002\u0002\u0002\u0523\u0543\u0007\u0097",
    "\u0002\u0002\u0524\u0543\u0007\u0098\u0002\u0002\u0525\u0543\u0007\u0099",
    "\u0002\u0002\u0526\u0543\u0007\u009a\u0002\u0002\u0527\u0543\u0007\u009b",
    "\u0002\u0002\u0528\u0543\u0007\u009c\u0002\u0002\u0529\u0543\u0007\u009d",
    "\u0002\u0002\u052a\u0543\u0007\u009e\u0002\u0002\u052b\u0543\u0007\u009f",
    "\u0002\u0002\u052c\u0543\u0007\u00a0\u0002\u0002\u052d\u0543\u0007\u00a1",
    "\u0002\u0002\u052e\u0543\u0007\u00a2\u0002\u0002\u052f\u0530\u0007\u00a3",
    "\u0002\u0002\u0530\u0543\u0007\u00a4\u0002\u0002\u0531\u0543\u0007\u00a5",
    "\u0002\u0002\u0532\u0543\u0007\u00a6\u0002\u0002\u0533\u0543\u0007\u00a7",
    "\u0002\u0002\u0534\u0543\u0007\u00a8\u0002\u0002\u0535\u0543\u0007\u00a9",
    "\u0002\u0002\u0536\u0543\u0007\u00aa\u0002\u0002\u0537\u0543\u0007\u00ab",
    "\u0002\u0002\u0538\u0543\u0007\u00ac\u0002\u0002\u0539\u0543\u0007\u00ad",
    "\u0002\u0002\u053a\u0543\u0007\u00ae\u0002\u0002\u053b\u0543\u0007\u00af",
    "\u0002\u0002\u053c\u0543\u0007\u00b0\u0002\u0002\u053d\u0540\u0005\u01b8",
    "\u00dd\u0002\u053e\u053f\u0007\u0006\u0002\u0002\u053f\u0541\t\u0011",
    "\u0002\u0002\u0540\u053e\u0003\u0002\u0002\u0002\u0540\u0541\u0003\u0002",
    "\u0002\u0002\u0541\u0543\u0003\u0002\u0002\u0002\u0542\u0514\u0003\u0002",
    "\u0002\u0002\u0542\u0515\u0003\u0002\u0002\u0002\u0542\u0516\u0003\u0002",
    "\u0002\u0002\u0542\u0517\u0003\u0002\u0002\u0002\u0542\u0518\u0003\u0002",
    "\u0002\u0002\u0542\u0519\u0003\u0002\u0002\u0002\u0542\u051a\u0003\u0002",
    "\u0002\u0002\u0542\u051b\u0003\u0002\u0002\u0002\u0542\u051c\u0003\u0002",
    "\u0002\u0002\u0542\u051d\u0003\u0002\u0002\u0002\u0542\u051e\u0003\u0002",
    "\u0002\u0002\u0542\u051f\u0003\u0002\u0002\u0002\u0542\u0523\u0003\u0002",
    "\u0002\u0002\u0542\u0524\u0003\u0002\u0002\u0002\u0542\u0525\u0003\u0002",
    "\u0002\u0002\u0542\u0526\u0003\u0002\u0002\u0002\u0542\u0527\u0003\u0002",
    "\u0002\u0002\u0542\u0528\u0003\u0002\u0002\u0002\u0542\u0529\u0003\u0002",
    "\u0002\u0002\u0542\u052a\u0003\u0002\u0002\u0002\u0542\u052b\u0003\u0002",
    "\u0002\u0002\u0542\u052c\u0003\u0002\u0002\u0002\u0542\u052d\u0003\u0002",
    "\u0002\u0002\u0542\u052e\u0003\u0002\u0002\u0002\u0542\u052f\u0003\u0002",
    "\u0002\u0002\u0542\u0531\u0003\u0002\u0002\u0002\u0542\u0532\u0003\u0002",
    "\u0002\u0002\u0542\u0533\u0003\u0002\u0002\u0002\u0542\u0534\u0003\u0002",
    "\u0002\u0002\u0542\u0535\u0003\u0002\u0002\u0002\u0542\u0536\u0003\u0002",
    "\u0002\u0002\u0542\u0537\u0003\u0002\u0002\u0002\u0542\u0538\u0003\u0002",
    "\u0002\u0002\u0542\u0539\u0003\u0002\u0002\u0002\u0542\u053a\u0003\u0002",
    "\u0002\u0002\u0542\u053b\u0003\u0002\u0002\u0002\u0542\u053c\u0003\u0002",
    "\u0002\u0002\u0542\u053d\u0003\u0002\u0002\u0002\u0543y\u0003\u0002",
    "\u0002\u0002\u0544\u0545\u0007\u001a\u0002\u0002\u0545\u0547\t\u0012",
    "\u0002\u0002\u0546\u0548\t\u0013\u0002\u0002\u0547\u0546\u0003\u0002",
    "\u0002\u0002\u0547\u0548\u0003\u0002\u0002\u0002\u0548\u054b\u0003\u0002",
    "\u0002\u0002\u0549\u054a\u0007\u0017\u0002\u0002\u054a\u054c\u0007J",
    "\u0002\u0002\u054b\u0549\u0003\u0002\u0002\u0002\u054b\u054c\u0003\u0002",
    "\u0002\u0002\u054c\u054d\u0003\u0002\u0002\u0002\u054d\u054e\u0007\u001b",
    "\u0002\u0002\u054e{\u0003\u0002\u0002\u0002\u054f\u0551\u00078\u0002",
    "\u0002\u0550\u054f\u0003\u0002\u0002\u0002\u0550\u0551\u0003\u0002\u0002",
    "\u0002\u0551\u0552\u0003\u0002\u0002\u0002\u0552\u055b\u0007\u0015\u0002",
    "\u0002\u0553\u0554\u0007\u0086\u0002\u0002\u0554\u0555\u0007\u0016\u0002",
    "\u0002\u0555\u055b\u0005\u01b8\u00dd\u0002\u0556\u0558\u00078\u0002",
    "\u0002\u0557\u0556\u0003\u0002\u0002\u0002\u0557\u0558\u0003\u0002\u0002",
    "\u0002\u0558\u0559\u0003\u0002\u0002\u0002\u0559\u055b\t\u0014\u0002",
    "\u0002\u055a\u0550\u0003\u0002\u0002\u0002\u055a\u0553\u0003\u0002\u0002",
    "\u0002\u055a\u0557\u0003\u0002\u0002\u0002\u055b}\u0003\u0002\u0002",
    "\u0002\u055c\u055e\u0007\u0018\u0002\u0002\u055d\u055c\u0003\u0002\u0002",
    "\u0002\u055d\u055e\u0003\u0002\u0002\u0002\u055e\u055f\u0003\u0002\u0002",
    "\u0002\u055f\u0560\u0007\u0019\u0002\u0002\u0560\u0569\u0005\u0180\u00c1",
    "\u0002\u0561\u0563\u0007$\u0002\u0002\u0562\u0561\u0003\u0002\u0002",
    "\u0002\u0562\u0563\u0003\u0002\u0002\u0002\u0563\u0564\u0003\u0002\u0002",
    "\u0002\u0564\u0566\u0007W\u0002\u0002\u0565\u0567\u0005\u0180\u00c1",
    "\u0002\u0566\u0565\u0003\u0002\u0002\u0002\u0566\u0567\u0003\u0002\u0002",
    "\u0002\u0567\u0569\u0003\u0002\u0002\u0002\u0568\u055d\u0003\u0002\u0002",
    "\u0002\u0568\u0562\u0003\u0002\u0002\u0002\u0569\u007f\u0003\u0002\u0002",
    "\u0002\u056a\u056b\u0007=\u0002\u0002\u056b\u056f\t\u0015\u0002\u0002",
    "\u056c\u056d\u0007>\u0002\u0002\u056d\u056e\u00078\u0002\u0002\u056e",
    "\u0570\u0007?\u0002\u0002\u056f\u056c\u0003\u0002\u0002\u0002\u056f",
    "\u0570\u0003\u0002\u0002\u0002\u0570\u0571\u0003\u0002\u0002\u0002\u0571",
    "\u0575\u0005\u0180\u00c1\u0002\u0572\u0574\u0005\u0082B\u0002\u0573",
    "\u0572\u0003\u0002\u0002\u0002\u0574\u0577\u0003\u0002\u0002\u0002\u0575",
    "\u0573\u0003\u0002\u0002\u0002\u0575\u0576\u0003\u0002\u0002\u0002\u0576",
    "\u0081\u0003\u0002\u0002\u0002\u0577\u0575\u0003\u0002\u0002\u0002\u0578",
    "\u0579\u0007\u0085\u0002\u0002\u0579\u057d\u0005\u0180\u00c1\u0002\u057a",
    "\u057b\u0007\u00b9\u0002\u0002\u057b\u057d\u0005\u0180\u00c1\u0002\u057c",
    "\u0578\u0003\u0002\u0002\u0002\u057c\u057a\u0003\u0002\u0002\u0002\u057d",
    "\u0083\u0003\u0002\u0002\u0002\u057e\u0586\u0007\u0089\u0002\u0002\u057f",
    "\u0582\u0007=\u0002\u0002\u0580\u0581\u0007\u00ba\u0002\u0002\u0581",
    "\u0583\u0007m\u0002\u0002\u0582\u0580\u0003\u0002\u0002\u0002\u0582",
    "\u0583\u0003\u0002\u0002\u0002\u0583\u0586\u0003\u0002\u0002\u0002\u0584",
    "\u0586\u0007m\u0002\u0002\u0585\u057e\u0003\u0002\u0002\u0002\u0585",
    "\u057f\u0003\u0002\u0002\u0002\u0585\u0584\u0003\u0002\u0002\u0002\u0585",
    "\u0586\u0003\u0002\u0002\u0002\u0586\u0587\u0003\u0002\u0002\u0002\u0587",
    "\u0588\u0007\u00bb\u0002\u0002\u0588\u058a\u0005\u01b8\u00dd\u0002\u0589",
    "\u058b\u0005\u0096L\u0002\u058a\u0589\u0003\u0002\u0002\u0002\u058a",
    "\u058b\u0003\u0002\u0002\u0002\u058b\u058c\u0003\u0002\u0002\u0002\u058c",
    "\u058e\u0005\u0086D\u0002\u058d\u058f\t\u0016\u0002\u0002\u058e\u058d",
    "\u0003\u0002\u0002\u0002\u058e\u058f\u0003\u0002\u0002\u0002\u058f\u0591",
    "\u0003\u0002\u0002\u0002\u0590\u0592\u00052\u001a\u0002\u0591\u0590",
    "\u0003\u0002\u0002\u0002\u0591\u0592\u0003\u0002\u0002\u0002\u0592\u0593",
    "\u0003\u0002\u0002\u0002\u0593\u0594\u0005\b\u0005\u0002\u0594\u0085",
    "\u0003\u0002\u0002\u0002\u0595\u0596\t\u0017\u0002\u0002\u0596\u0598",
    "\u0005x=\u0002\u0597\u0599\u0005z>\u0002\u0598\u0597\u0003\u0002\u0002",
    "\u0002\u0598\u0599\u0003\u0002\u0002\u0002\u0599\u0087\u0003\u0002\u0002",
    "\u0002\u059a\u05a2\u0007\u0089\u0002\u0002\u059b\u059e\u0007=\u0002",
    "\u0002\u059c\u059d\u0007\u00ba\u0002\u0002\u059d\u059f\u0007m\u0002",
    "\u0002\u059e\u059c\u0003\u0002\u0002\u0002\u059e\u059f\u0003\u0002\u0002",
    "\u0002\u059f\u05a2\u0003\u0002\u0002\u0002\u05a0\u05a2\u0007m\u0002",
    "\u0002\u05a1\u059a\u0003\u0002\u0002\u0002\u05a1\u059b\u0003\u0002\u0002",
    "\u0002\u05a1\u05a0\u0003\u0002\u0002\u0002\u05a1\u05a2\u0003\u0002\u0002",
    "\u0002\u05a2\u05a3\u0003\u0002\u0002\u0002\u05a3\u05a4\u0007\u00bd\u0002",
    "\u0002\u05a4\u05a5\u0005\u01b8\u00dd\u0002\u05a5\u05a6\t\u0016\u0002",
    "\u0002\u05a6\u05a7\u0005\u008aF\u0002\u05a7\u05ab\u0007\u0010\u0002",
    "\u0002\u05a8\u05a9\u0005\u01b8\u00dd\u0002\u05a9\u05aa\u0007\u000f\u0002",
    "\u0002\u05aa\u05ac\u0003\u0002\u0002\u0002\u05ab\u05a8\u0003\u0002\u0002",
    "\u0002\u05ab\u05ac\u0003\u0002\u0002\u0002\u05ac\u0089\u0003\u0002\u0002",
    "\u0002\u05ad\u05ae\u0005\u008cG\u0002\u05ae\u05b4\u0007\u000f\u0002",
    "\u0002\u05af\u05b0\u0005\u008cG\u0002\u05b0\u05b1\u0007\u000f\u0002",
    "\u0002\u05b1\u05b3\u0003\u0002\u0002\u0002\u05b2\u05af\u0003\u0002\u0002",
    "\u0002\u05b3\u05b6\u0003\u0002\u0002\u0002\u05b4\u05b2\u0003\u0002\u0002",
    "\u0002\u05b4\u05b5\u0003\u0002\u0002\u0002\u05b5\u008b\u0003\u0002\u0002",
    "\u0002\u05b6\u05b4\u0003\u0002\u0002\u0002\u05b7\u05c5\u00054\u001b",
    "\u0002\u05b8\u05b9\u0007\u00bb\u0002\u0002\u05b9\u05bb\u0005\u01b8\u00dd",
    "\u0002\u05ba\u05bc\u0005\u0096L\u0002\u05bb\u05ba\u0003\u0002\u0002",
    "\u0002\u05bb\u05bc\u0003\u0002\u0002\u0002\u05bc\u05bd\u0003\u0002\u0002",
    "\u0002\u05bd\u05be\u0005\u0086D\u0002\u05be\u05c5\u0003\u0002\u0002",
    "\u0002\u05bf\u05c0\t\u0018\u0002\u0002\u05c0\u05c2\u0005\u01b8\u00dd",
    "\u0002\u05c1\u05c3\u0005\u0096L\u0002\u05c2\u05c1\u0003\u0002\u0002",
    "\u0002\u05c2\u05c3\u0003\u0002\u0002\u0002\u05c3\u05c5\u0003\u0002\u0002",
    "\u0002\u05c4\u05b7\u0003\u0002\u0002\u0002\u05c4\u05b8\u0003\u0002\u0002",
    "\u0002\u05c4\u05bf\u0003\u0002\u0002\u0002\u05c5\u008d\u0003\u0002\u0002",
    "\u0002\u05c6\u05ce\u0007\u0089\u0002\u0002\u05c7\u05ca\u0007=\u0002",
    "\u0002\u05c8\u05c9\u0007\u00ba\u0002\u0002\u05c9\u05cb\u0007m\u0002",
    "\u0002\u05ca\u05c8\u0003\u0002\u0002\u0002\u05ca\u05cb\u0003\u0002\u0002",
    "\u0002\u05cb\u05ce\u0003\u0002\u0002\u0002\u05cc\u05ce\u0007m\u0002",
    "\u0002\u05cd\u05c6\u0003\u0002\u0002\u0002\u05cd\u05c7\u0003\u0002\u0002",
    "\u0002\u05cd\u05cc\u0003\u0002\u0002\u0002\u05cd\u05ce\u0003\u0002\u0002",
    "\u0002\u05ce\u05cf\u0003\u0002\u0002\u0002\u05cf\u05d0\u0007\u00bd\u0002",
    "\u0002\u05d0\u05d1\u0007\u00bf\u0002\u0002\u05d1\u05d2\u0005\u01b8\u00dd",
    "\u0002\u05d2\u05d3\t\u0016\u0002\u0002\u05d3\u05d4\u0005\u0090I\u0002",
    "\u05d4\u05d8\u0007\u0010\u0002\u0002\u05d5\u05d6\u0005\u01b8\u00dd\u0002",
    "\u05d6\u05d7\u0007\u000f\u0002\u0002\u05d7\u05d9\u0003\u0002\u0002\u0002",
    "\u05d8\u05d5\u0003\u0002\u0002\u0002\u05d8\u05d9\u0003\u0002\u0002\u0002",
    "\u05d9\u008f\u0003\u0002\u0002\u0002\u05da\u05db\u0005\u0092J\u0002",
    "\u05db\u05e1\u0007\u000f\u0002\u0002\u05dc\u05dd\u0005\u0092J\u0002",
    "\u05dd\u05de\u0007\u000f\u0002\u0002\u05de\u05e0\u0003\u0002\u0002\u0002",
    "\u05df\u05dc\u0003\u0002\u0002\u0002\u05e0\u05e3\u0003\u0002\u0002\u0002",
    "\u05e1\u05df\u0003\u0002\u0002\u0002\u05e1\u05e2\u0003\u0002\u0002\u0002",
    "\u05e2\u0091\u0003\u0002\u0002\u0002\u05e3\u05e1\u0003\u0002\u0002\u0002",
    "\u05e4\u05e8\u00054\u001b\u0002\u05e5\u05e8\u0005\u0084C\u0002\u05e6",
    "\u05e8\u0005\u0094K\u0002\u05e7\u05e4\u0003\u0002\u0002\u0002\u05e7",
    "\u05e5\u0003\u0002\u0002\u0002\u05e7\u05e6\u0003\u0002\u0002\u0002\u05e8",
    "\u0093\u0003\u0002\u0002\u0002\u05e9\u05f1\u0007\u0089\u0002\u0002\u05ea",
    "\u05ed\u0007=\u0002\u0002\u05eb\u05ec\u0007\u00ba\u0002\u0002\u05ec",
    "\u05ee\u0007m\u0002\u0002\u05ed\u05eb\u0003\u0002\u0002\u0002\u05ed",
    "\u05ee\u0003\u0002\u0002\u0002\u05ee\u05f1\u0003\u0002\u0002\u0002\u05ef",
    "\u05f1\u0007m\u0002\u0002\u05f0\u05e9\u0003\u0002\u0002\u0002\u05f0",
    "\u05ea\u0003\u0002\u0002\u0002\u05f0\u05ef\u0003\u0002\u0002\u0002\u05f0",
    "\u05f1\u0003\u0002\u0002\u0002\u05f1\u05f2\u0003\u0002\u0002\u0002\u05f2",
    "\u05f3\t\u0018\u0002\u0002\u05f3\u05f5\u0005\u01b8\u00dd\u0002\u05f4",
    "\u05f6\u0005\u0096L\u0002\u05f5\u05f4\u0003\u0002\u0002\u0002\u05f5",
    "\u05f6\u0003\u0002\u0002\u0002\u05f6\u05f8\u0003\u0002\u0002\u0002\u05f7",
    "\u05f9\u0005\u009aN\u0002\u05f8\u05f7\u0003\u0002\u0002\u0002\u05f8",
    "\u05f9\u0003\u0002\u0002\u0002\u05f9\u05fb\u0003\u0002\u0002\u0002\u05fa",
    "\u05fc\t\u0016\u0002\u0002\u05fb\u05fa\u0003\u0002\u0002\u0002\u05fb",
    "\u05fc\u0003\u0002\u0002\u0002\u05fc\u05fe\u0003\u0002\u0002\u0002\u05fd",
    "\u05ff\u00052\u001a\u0002\u05fe\u05fd\u0003\u0002\u0002\u0002\u05fe",
    "\u05ff\u0003\u0002\u0002\u0002\u05ff\u0601\u0003\u0002\u0002\u0002\u0600",
    "\u0602\u0005\u0116\u008c\u0002\u0601\u0600\u0003\u0002\u0002\u0002\u0601",
    "\u0602\u0003\u0002\u0002\u0002\u0602\u0603\u0003\u0002\u0002\u0002\u0603",
    "\u0607\u0005\f\u0007\u0002\u0604\u0605\u0005\u01b8\u00dd\u0002\u0605",
    "\u0606\u0007\u000f\u0002\u0002\u0606\u0608\u0003\u0002\u0002\u0002\u0607",
    "\u0604\u0003\u0002\u0002\u0002\u0607\u0608\u0003\u0002\u0002\u0002\u0608",
    "\u0095\u0003\u0002\u0002\u0002\u0609\u060a\u0007\u001a\u0002\u0002\u060a",
    "\u0620\u0007\u001b\u0002\u0002\u060b\u060c\u0007\u001a\u0002\u0002\u060c",
    "\u0611\u0005\u0098M\u0002\u060d\u060e\u0007\u0017\u0002\u0002\u060e",
    "\u0610\u0005\u0098M\u0002\u060f\u060d\u0003\u0002\u0002\u0002\u0610",
    "\u0613\u0003\u0002\u0002\u0002\u0611\u060f\u0003\u0002\u0002\u0002\u0611",
    "\u0612\u0003\u0002\u0002\u0002\u0612\u0614\u0003\u0002\u0002\u0002\u0613",
    "\u0611\u0003\u0002\u0002\u0002\u0614\u0615\u0007\u001b\u0002\u0002\u0615",
    "\u0620\u0003\u0002\u0002\u0002\u0616\u0617\u0006L\u0004\u0002\u0617",
    "\u061c\u0005\u0098M\u0002\u0618\u0619\u0007\u0017\u0002\u0002\u0619",
    "\u061b\u0005\u0098M\u0002\u061a\u0618\u0003\u0002\u0002\u0002\u061b",
    "\u061e\u0003\u0002\u0002\u0002\u061c\u061a\u0003\u0002\u0002\u0002\u061c",
    "\u061d\u0003\u0002\u0002\u0002\u061d\u0620\u0003\u0002\u0002\u0002\u061e",
    "\u061c\u0003\u0002\u0002\u0002\u061f\u0609\u0003\u0002\u0002\u0002\u061f",
    "\u060b\u0003\u0002\u0002\u0002\u061f\u0616\u0003\u0002\u0002\u0002\u0620",
    "\u0097\u0003\u0002\u0002\u0002\u0621\u0627\u0007l\u0002\u0002\u0622",
    "\u0627\u0007\u00c0\u0002\u0002\u0623\u0627\u0007\u00c1\u0002\u0002\u0624",
    "\u0625\u0007l\u0002\u0002\u0625\u0627\u0007\u00c0\u0002\u0002\u0626",
    "\u0621\u0003\u0002\u0002\u0002\u0626\u0622\u0003\u0002\u0002\u0002\u0626",
    "\u0623\u0003\u0002\u0002\u0002\u0626\u0624\u0003\u0002\u0002\u0002\u0626",
    "\u0627\u0003\u0002\u0002\u0002\u0627\u0628\u0003\u0002\u0002\u0002\u0628",
    "\u0629\u0005\u01b8\u00dd\u0002\u0629\u062b\u0005x=\u0002\u062a\u062c",
    "\u0005z>\u0002\u062b\u062a\u0003\u0002\u0002\u0002\u062b\u062c\u0003",
    "\u0002\u0002\u0002\u062c\u0630\u0003\u0002\u0002\u0002\u062d\u062f\u0005",
    "|?\u0002\u062e\u062d\u0003\u0002\u0002\u0002\u062f\u0632\u0003\u0002",
    "\u0002\u0002\u0630\u062e\u0003\u0002\u0002\u0002\u0630\u0631\u0003\u0002",
    "\u0002\u0002\u0631\u0634\u0003\u0002\u0002\u0002\u0632\u0630\u0003\u0002",
    "\u0002\u0002\u0633\u0635\u0005~@\u0002\u0634\u0633\u0003\u0002\u0002",
    "\u0002\u0634\u0635\u0003\u0002\u0002\u0002\u0635\u064c\u0003\u0002\u0002",
    "\u0002\u0636\u063c\u0005\u01b8\u00dd\u0002\u0637\u063d\u0007l\u0002",
    "\u0002\u0638\u063d\u0007\u00c0\u0002\u0002\u0639\u063d\u0007\u00c1\u0002",
    "\u0002\u063a\u063b\u0007l\u0002\u0002\u063b\u063d\u0007\u00c0\u0002",
    "\u0002\u063c\u0637\u0003\u0002\u0002\u0002\u063c\u0638\u0003\u0002\u0002",
    "\u0002\u063c\u0639\u0003\u0002\u0002\u0002\u063c\u063a\u0003\u0002\u0002",
    "\u0002\u063c\u063d\u0003\u0002\u0002\u0002\u063d\u063e\u0003\u0002\u0002",
    "\u0002\u063e\u0640\u0005x=\u0002\u063f\u0641\u0005z>\u0002\u0640\u063f",
    "\u0003\u0002\u0002\u0002\u0640\u0641\u0003\u0002\u0002\u0002\u0641\u0645",
    "\u0003\u0002\u0002\u0002\u0642\u0644\u0005|?\u0002\u0643\u0642\u0003",
    "\u0002\u0002\u0002\u0644\u0647\u0003\u0002\u0002\u0002\u0645\u0643\u0003",
    "\u0002\u0002\u0002\u0645\u0646\u0003\u0002\u0002\u0002\u0646\u0649\u0003",
    "\u0002\u0002\u0002\u0647\u0645\u0003\u0002\u0002\u0002\u0648\u064a\u0005",
    "~@\u0002\u0649\u0648\u0003\u0002\u0002\u0002\u0649\u064a\u0003\u0002",
    "\u0002\u0002\u064a\u064c\u0003\u0002\u0002\u0002\u064b\u0626\u0003\u0002",
    "\u0002\u0002\u064b\u0636\u0003\u0002\u0002\u0002\u064c\u0099\u0003\u0002",
    "\u0002\u0002\u064d\u064f\u0005\u009cO\u0002\u064e\u064d\u0003\u0002",
    "\u0002\u0002\u064f\u0650\u0003\u0002\u0002\u0002\u0650\u064e\u0003\u0002",
    "\u0002\u0002\u0650\u0651\u0003\u0002\u0002\u0002\u0651\u009b\u0003\u0002",
    "\u0002\u0002\u0652\u0653\u0007\u00c2\u0002\u0002\u0653\u065e\u0007\u00c3",
    "\u0002\u0002\u0654\u0655\u0007\u00c3\u0002\u0002\u0655\u0656\u0007\u00c4",
    "\u0002\u0002\u0656\u065e\t\u0019\u0002\u0002\u0657\u0659\u0007\u00c9",
    "\u0002\u0002\u0658\u0657\u0003\u0002\u0002\u0002\u0658\u0659\u0003\u0002",
    "\u0002\u0002\u0659\u065a\u0003\u0002\u0002\u0002\u065a\u065b\u0007\u001f",
    "\u0002\u0002\u065b\u065c\u0007\u00ca\u0002\u0002\u065c\u065e\u0007J",
    "\u0002\u0002\u065d\u0652\u0003\u0002\u0002\u0002\u065d\u0654\u0003\u0002",
    "\u0002\u0002\u065d\u0658\u0003\u0002\u0002\u0002\u065e\u009d\u0003\u0002",
    "\u0002\u0002\u065f\u0660\u0007u\u0002\u0002\u0660\u0663\u0007<\u0002",
    "\u0002\u0661\u0662\u0007>\u0002\u0002\u0662\u0664\u0007?\u0002\u0002",
    "\u0663\u0661\u0003\u0002\u0002\u0002\u0663\u0664\u0003\u0002\u0002\u0002",
    "\u0664\u0665\u0003\u0002\u0002\u0002\u0665\u066e\u0005\u014a\u00a6\u0002",
    "\u0666\u0667\u0007u\u0002\u0002\u0667\u066a\t\u0015\u0002\u0002\u0668",
    "\u0669\u0007>\u0002\u0002\u0669\u066b\u0007?\u0002\u0002\u066a\u0668",
    "\u0003\u0002\u0002\u0002\u066a\u066b\u0003\u0002\u0002\u0002\u066b\u066c",
    "\u0003\u0002\u0002\u0002\u066c\u066e\u0005\u0180\u00c1\u0002\u066d\u065f",
    "\u0003\u0002\u0002\u0002\u066d\u0666\u0003\u0002\u0002\u0002\u066e\u009f",
    "\u0003\u0002\u0002\u0002\u066f\u0670\u0007\u0010\u0002\u0002\u0670\u0671",
    "\u0007%\u0002\u0002\u0671\u00a1\u0003\u0002\u0002\u0002\u0672\u0674",
    "\t\u001a\u0002\u0002\u0673\u0675\u0007`\u0002\u0002\u0674\u0673\u0003",
    "\u0002\u0002\u0002\u0674\u0675\u0003\u0002\u0002\u0002\u0675\u0676\u0003",
    "\u0002\u0002\u0002\u0676\u067c\u0005\u0180\u00c1\u0002\u0677\u0678\u0007",
    "\u001a\u0002\u0002\u0678\u0679\u0005\u01a0\u00d1\u0002\u0679\u067a\u0007",
    "\u001b\u0002\u0002\u067a\u067d\u0003\u0002\u0002\u0002\u067b\u067d\u0005",
    "\u01a0\u00d1\u0002\u067c\u0677\u0003\u0002\u0002\u0002\u067c\u067b\u0003",
    "\u0002\u0002\u0002\u067c\u067d\u0003\u0002\u0002\u0002\u067d\u0687\u0003",
    "\u0002\u0002\u0002\u067e\u067f\u0007\u00cd\u0002\u0002\u067f\u0684\u0007",
    "\u0013\u0002\u0002\u0680\u0681\u0007\u0017\u0002\u0002\u0681\u0683\u0007",
    "\u0013\u0002\u0002\u0682\u0680\u0003\u0002\u0002\u0002\u0683\u0686\u0003",
    "\u0002\u0002\u0002\u0684\u0682\u0003\u0002\u0002\u0002\u0684\u0685\u0003",
    "\u0002\u0002\u0002\u0685\u0688\u0003\u0002\u0002\u0002\u0686\u0684\u0003",
    "\u0002\u0002\u0002\u0687\u067e\u0003\u0002\u0002\u0002\u0687\u0688\u0003",
    "\u0002\u0002\u0002\u0688\u068a\u0003\u0002\u0002\u0002\u0689\u068b\u0005",
    "\u0118\u008d\u0002\u068a\u0689\u0003\u0002\u0002\u0002\u068a\u068b\u0003",
    "\u0002\u0002\u0002\u068b\u00a3\u0003\u0002\u0002\u0002\u068c\u0690\u0005",
    "\u00a6T\u0002\u068d\u0690\u0005\u00a8U\u0002\u068e\u0690\u0005\u00aa",
    "V\u0002\u068f\u068c\u0003\u0002\u0002\u0002\u068f\u068d\u0003\u0002",
    "\u0002\u0002\u068f\u068e\u0003\u0002\u0002\u0002\u0690\u00a5\u0003\u0002",
    "\u0002\u0002\u0691\u0692\u0007>\u0002\u0002\u0692\u0693\u0005\u0170",
    "\u00b9\u0002\u0693\u0694\u0007\u0014\u0002\u0002\u0694\u0698\u0005\u0004",
    "\u0003\u0002\u0695\u0697\u0005\u00acW\u0002\u0696\u0695\u0003\u0002",
    "\u0002\u0002\u0697\u069a\u0003\u0002\u0002\u0002\u0698\u0696\u0003\u0002",
    "\u0002\u0002\u0698\u0699\u0003\u0002\u0002\u0002\u0699\u069c\u0003\u0002",
    "\u0002\u0002\u069a\u0698\u0003\u0002\u0002\u0002\u069b\u069d\u0005\u00ae",
    "X\u0002\u069c\u069b\u0003\u0002\u0002\u0002\u069c\u069d\u0003\u0002",
    "\u0002\u0002\u069d\u069e\u0003\u0002\u0002\u0002\u069e\u069f\u0007\u0010",
    "\u0002\u0002\u069f\u06a0\u0007>\u0002\u0002\u06a0\u00a7\u0003\u0002",
    "\u0002\u0002\u06a1\u06a2\u0007>\u0002\u0002\u06a2\u06a3\u0005\u0170",
    "\u00b9\u0002\u06a3\u06a6\u0005\b\u0005\u0002\u06a4\u06a5\u0007\u00ce",
    "\u0002\u0002\u06a5\u06a7\u0005\b\u0005\u0002\u06a6\u06a4\u0003\u0002",
    "\u0002\u0002\u06a6\u06a7\u0003\u0002\u0002\u0002\u06a7\u00a9\u0003\u0002",
    "\u0002\u0002\u06a8\u06a9\u0007\u0007\u0002\u0002\u06a9\u06aa\u0007>",
    "\u0002\u0002\u06aa\u06ab\u0005\u0170\u00b9\u0002\u06ab\u06ac\u0007\u0014",
    "\u0002\u0002\u06ac\u06ad\u0005\b\u0005\u0002\u06ad\u00ab\u0003\u0002",
    "\u0002\u0002\u06ae\u06af\t\u001b\u0002\u0002\u06af\u06b0\u0005\u0170",
    "\u00b9\u0002\u06b0\u06b1\u0007\u0014\u0002\u0002\u06b1\u06b2\u0005\u0004",
    "\u0003\u0002\u06b2\u00ad\u0003\u0002\u0002\u0002\u06b3\u06b4\u0007\u00ce",
    "\u0002\u0002\u06b4\u06b5\u0005\u0004\u0003\u0002\u06b5\u00af\u0003\u0002",
    "\u0002\u0002\u06b6\u06b9\u0007\u00d1\u0002\u0002\u06b7\u06ba\u0005\u01b2",
    "\u00da\u0002\u06b8\u06ba\u0005\u0180\u00c1\u0002\u06b9\u06b7\u0003\u0002",
    "\u0002\u0002\u06b9\u06b8\u0003\u0002\u0002\u0002\u06ba\u00b1\u0003\u0002",
    "\u0002\u0002\u06bb\u06c2\u0007\u00d2\u0002\u0002\u06bc\u06bd\u0007\u00d3",
    "\u0002\u0002\u06bd\u06c3\u0007<\u0002\u0002\u06be\u06c0\u0007\u00cd",
    "\u0002\u0002\u06bf\u06c1\u0007<\u0002\u0002\u06c0\u06bf\u0003\u0002",
    "\u0002\u0002\u06c0\u06c1\u0003\u0002\u0002\u0002\u06c1\u06c3\u0003\u0002",
    "\u0002\u0002\u06c2\u06bc\u0003\u0002\u0002\u0002\u06c2\u06be\u0003\u0002",
    "\u0002\u0002\u06c3\u06c4\u0003\u0002\u0002\u0002\u06c4\u06c6\u0005\u014a",
    "\u00a6\u0002\u06c5\u06c7\u0005\u00b4[\u0002\u06c6\u06c5\u0003\u0002",
    "\u0002\u0002\u06c6\u06c7\u0003\u0002\u0002\u0002\u06c7\u06ca\u0003\u0002",
    "\u0002\u0002\u06c8\u06cb\u0005\u011a\u008e\u0002\u06c9\u06cb\u0005\u00b6",
    "\\\u0002\u06ca\u06c8\u0003\u0002\u0002\u0002\u06ca\u06c9\u0003\u0002",
    "\u0002\u0002\u06cb\u00b3\u0003\u0002\u0002\u0002\u06cc\u06cd\u0007\u001a",
    "\u0002\u0002\u06cd\u06d2\u0005\u01b8\u00dd\u0002\u06ce\u06cf\u0007\u0017",
    "\u0002\u0002\u06cf\u06d1\u0005\u01b8\u00dd\u0002\u06d0\u06ce\u0003\u0002",
    "\u0002\u0002\u06d1\u06d4\u0003\u0002\u0002\u0002\u06d2\u06d0\u0003\u0002",
    "\u0002\u0002\u06d2\u06d3\u0003\u0002\u0002\u0002\u06d3\u06d5\u0003\u0002",
    "\u0002\u0002\u06d4\u06d2\u0003\u0002\u0002\u0002\u06d5\u06d6\u0007\u001b",
    "\u0002\u0002\u06d6\u00b5\u0003\u0002\u0002\u0002\u06d7\u06d8\u0007\u00d4",
    "\u0002\u0002\u06d8\u06dd\u0005\u00b8]\u0002\u06d9\u06da\u0007\u0017",
    "\u0002\u0002\u06da\u06dc\u0005\u00b8]\u0002\u06db\u06d9\u0003\u0002",
    "\u0002\u0002\u06dc\u06df\u0003\u0002\u0002\u0002\u06dd\u06db\u0003\u0002",
    "\u0002\u0002\u06dd\u06de\u0003\u0002\u0002\u0002\u06de\u00b7\u0003\u0002",
    "\u0002\u0002\u06df\u06dd\u0003\u0002\u0002\u0002\u06e0\u06e1\u0007\u001a",
    "\u0002\u0002\u06e1\u06e6\u0005\u0180\u00c1\u0002\u06e2\u06e3\u0007\u0017",
    "\u0002\u0002\u06e3\u06e5\u0005\u0180\u00c1\u0002\u06e4\u06e2\u0003\u0002",
    "\u0002\u0002\u06e5\u06e8\u0003\u0002\u0002\u0002\u06e6\u06e4\u0003\u0002",
    "\u0002\u0002\u06e6\u06e7\u0003\u0002\u0002\u0002\u06e7\u06e9\u0003\u0002",
    "\u0002\u0002\u06e8\u06e6\u0003\u0002\u0002\u0002\u06e9\u06ea\u0007\u001b",
    "\u0002\u0002\u06ea\u00b9\u0003\u0002\u0002\u0002\u06eb\u06ec\u0007\u00d2",
    "\u0002\u0002\u06ec\u06ee\u0007\u00d3\u0002\u0002\u06ed\u06ef\u0007@",
    "\u0002\u0002\u06ee\u06ed\u0003\u0002\u0002\u0002\u06ee\u06ef\u0003\u0002",
    "\u0002\u0002\u06ef\u06f0\u0003\u0002\u0002\u0002\u06f0\u06f1\u0007\u00d5",
    "\u0002\u0002\u06f1\u06f2\u0005\u01a6\u00d4\u0002\u06f2\u06f3\u0005\u01a4",
    "\u00d3\u0002\u06f3\u00bb\u0003\u0002\u0002\u0002\u06f4\u06f6\u00074",
    "\u0002\u0002\u06f5\u06f7\u0007\u0013\u0002\u0002\u06f6\u06f5\u0003\u0002",
    "\u0002\u0002\u06f6\u06f7\u0003\u0002\u0002\u0002\u06f7\u06fa\u0003\u0002",
    "\u0002\u0002\u06f8\u06f9\u0007\u0012\u0002\u0002\u06f9\u06fb\u0005\u0170",
    "\u00b9\u0002\u06fa\u06f8\u0003\u0002\u0002\u0002\u06fa\u06fb\u0003\u0002",
    "\u0002\u0002\u06fb\u00bd\u0003\u0002\u0002\u0002\u06fc\u06fd\u0007\u00d6",
    "\u0002\u0002\u06fd\u06fe\u0007\u00d7\u0002\u0002\u06fe\u06ff\u0005\u00c0",
    "a\u0002\u06ff\u00bf\u0003\u0002\u0002\u0002\u0700\u0703\u0005\u00c2",
    "b\u0002\u0701\u0703\u0005\u00c4c\u0002\u0702\u0700\u0003\u0002\u0002",
    "\u0002\u0702\u0701\u0003\u0002\u0002\u0002\u0703\u00c1\u0003\u0002\u0002",
    "\u0002\u0704\u0705\u0007\u0011\u0002\u0002\u0705\u0706\u0007J\u0002",
    "\u0002\u0706\u0707\u0005\u01b8\u00dd\u0002\u0707\u0708\u0007\u0019\u0002",
    "\u0002\u0708\u0709\u0007\u00d8\u0002\u0002\u0709\u00c3\u0003\u0002\u0002",
    "\u0002\u070a\u070b\u0005\u01b8\u00dd\u0002\u070b\u070c\u0007\u0019\u0002",
    "\u0002\u070c\u070d\u0007\u00d9\u0002\u0002\u070d\u00c5\u0003\u0002\u0002",
    "\u0002\u070e\u070f\u0007\u00da\u0002\u0002\u070f\u0714\u0005\u00c8e",
    "\u0002\u0710\u0711\u0007\u0017\u0002\u0002\u0711\u0713\u0005\u00c8e",
    "\u0002\u0712\u0710\u0003\u0002\u0002\u0002\u0713\u0716\u0003\u0002\u0002",
    "\u0002\u0714\u0712\u0003\u0002\u0002\u0002\u0714\u0715\u0003\u0002\u0002",
    "\u0002\u0715\u0717\u0003\u0002\u0002\u0002\u0716\u0714\u0003\u0002\u0002",
    "\u0002\u0717\u0718\u0007/\u0002\u0002\u0718\u0719\u0007\u00db\u0002",
    "\u0002\u0719\u071a\u0005\u01b8\u00dd\u0002\u071a\u00c7\u0003\u0002\u0002",
    "\u0002\u071b\u071c\u0007\u00cc\u0002\u0002\u071c\u071d\u0007Q\u0002",
    "\u0002\u071d\u071e\u0007 \u0002\u0002\u071e\u071f\u0005\u01b8\u00dd",
    "\u0002\u071f\u00c9\u0003\u0002\u0002\u0002\u0720\u0722\u0007\u00dc\u0002",
    "\u0002\u0721\u0723\u0007\u0013\u0002\u0002\u0722\u0721\u0003\u0002\u0002",
    "\u0002\u0722\u0723\u0003\u0002\u0002\u0002\u0723\u00cb\u0003\u0002\u0002",
    "\u0002\u0724\u0725\u0007\u0080\u0002\u0002\u0725\u0726\u0007\u00dd\u0002",
    "\u0002\u0726\u0729\u0005\u0180\u00c1\u0002\u0727\u0728\u0007/\u0002",
    "\u0002\u0728\u072a\u0005\u0180\u00c1\u0002\u0729\u0727\u0003\u0002\u0002",
    "\u0002\u0729\u072a\u0003\u0002\u0002\u0002\u072a\u072d\u0003\u0002\u0002",
    "\u0002\u072b\u072c\u0007\u00de\u0002\u0002\u072c\u072e\u0005\u0180\u00c1",
    "\u0002\u072d\u072b\u0003\u0002\u0002\u0002\u072d\u072e\u0003\u0002\u0002",
    "\u0002\u072e\u00cd\u0003\u0002\u0002\u0002\u072f\u0730\u0007\u00df\u0002",
    "\u0002\u0730\u0736\u0007\u0013\u0002\u0002\u0731\u0734\u0007\u001e\u0002",
    "\u0002\u0732\u0735\u0005\u011a\u008e\u0002\u0733\u0735\u0005\u0180\u00c1",
    "\u0002\u0734\u0732\u0003\u0002\u0002\u0002\u0734\u0733\u0003\u0002\u0002",
    "\u0002\u0735\u0737\u0003\u0002\u0002\u0002\u0736\u0731\u0003\u0002\u0002",
    "\u0002\u0736\u0737\u0003\u0002\u0002\u0002\u0737\u00cf\u0003\u0002\u0002",
    "\u0002\u0738\u073a\u0007\u00e0\u0002\u0002\u0739\u073b\u0007\u00e1\u0002",
    "\u0002\u073a\u0739\u0003\u0002\u0002\u0002\u073a\u073b\u0003\u0002\u0002",
    "\u0002\u073b\u073c\u0003\u0002\u0002\u0002\u073c\u073d\u0007\u0013\u0002",
    "\u0002\u073d\u073e\u0007\u00cd\u0002\u0002\u073e\u0743\u0007\u0013\u0002",
    "\u0002\u073f\u0740\u0007\u0017\u0002\u0002\u0740\u0742\u0007\u0013\u0002",
    "\u0002\u0741\u073f\u0003\u0002\u0002\u0002\u0742\u0745\u0003\u0002\u0002",
    "\u0002\u0743\u0741\u0003\u0002\u0002\u0002\u0743\u0744\u0003\u0002\u0002",
    "\u0002\u0744\u00d1\u0003\u0002\u0002\u0002\u0745\u0743\u0003\u0002\u0002",
    "\u0002\u0746\u0747\u0007\u00e2\u0002\u0002\u0747\u0748\t\u001c\u0002",
    "\u0002\u0748\u0749\u0007Q\u0002\u0002\u0749\u074b\u0005\u014a\u00a6",
    "\u0002\u074a\u074c\u0005\u00d4k\u0002\u074b\u074a\u0003\u0002\u0002",
    "\u0002\u074b\u074c\u0003\u0002\u0002\u0002\u074c\u00d3\u0003\u0002\u0002",
    "\u0002\u074d\u074e\u0007\u00e5\u0002\u0002\u074e\u074f\u0007\u001a\u0002",
    "\u0002\u074f\u0754\u0005\u01b8\u00dd\u0002\u0750\u0751\u0007\u0017\u0002",
    "\u0002\u0751\u0753\u0005\u01b8\u00dd\u0002\u0752\u0750\u0003\u0002\u0002",
    "\u0002\u0753\u0756\u0003\u0002\u0002\u0002\u0754\u0752\u0003\u0002\u0002",
    "\u0002\u0754\u0755\u0003\u0002\u0002\u0002\u0755\u0757\u0003\u0002\u0002",
    "\u0002\u0756\u0754\u0003\u0002\u0002\u0002\u0757\u0758\u0007\u001b\u0002",
    "\u0002\u0758\u00d5\u0003\u0002\u0002\u0002\u0759\u075a\u0007\u00e6\u0002",
    "\u0002\u075a\u075b\u0007\u0013\u0002\u0002\u075b\u00d7\u0003\u0002\u0002",
    "\u0002\u075c\u075d\u0007\u00e7\u0002\u0002\u075d\u075e\t\u001d\u0002",
    "\u0002\u075e\u075f\u0005\u00dan\u0002\u075f\u0760\u0007\u0017\u0002",
    "\u0002\u0760\u0761\u0005\u00dan\u0002\u0761\u00d9\u0003\u0002\u0002",
    "\u0002\u0762\u0764\u0005\u014a\u00a6\u0002\u0763\u0765\u0005\u014c\u00a7",
    "\u0002\u0764\u0763\u0003\u0002\u0002\u0002\u0764\u0765\u0003\u0002\u0002",
    "\u0002\u0765\u076b\u0003\u0002\u0002\u0002\u0766\u0767\u0007\u001a\u0002",
    "\u0002\u0767\u0768\u0005\u011a\u008e\u0002\u0768\u0769\u0007\u001b\u0002",
    "\u0002\u0769\u076b\u0003\u0002\u0002\u0002\u076a\u0762\u0003\u0002\u0002",
    "\u0002\u076a\u0766\u0003\u0002\u0002\u0002\u076b\u076e\u0003\u0002\u0002",
    "\u0002\u076c\u076d\u0007\u00de\u0002\u0002\u076d\u076f\u0005\u01b8\u00dd",
    "\u0002\u076e\u076c\u0003\u0002\u0002\u0002\u076e\u076f\u0003\u0002\u0002",
    "\u0002\u076f\u00db\u0003\u0002\u0002\u0002\u0770\u0771\u0007\u00e9\u0002",
    "\u0002\u0771\u0772\u0007\u00e1\u0002\u0002\u0772\u0773\u0007@\u0002",
    "\u0002\u0773\u0778\u0005\u00e0q\u0002\u0774\u0775\u0007\u0017\u0002",
    "\u0002\u0775\u0777\u0005\u00e0q\u0002\u0776\u0774\u0003\u0002\u0002",
    "\u0002\u0777\u077a\u0003\u0002\u0002\u0002\u0778\u0776\u0003\u0002\u0002",
    "\u0002\u0778\u0779\u0003\u0002\u0002\u0002\u0779\u077b\u0003\u0002\u0002",
    "\u0002\u077a\u0778\u0003\u0002\u0002\u0002\u077b\u077c\u0007/\u0002",
    "\u0002\u077c\u0780\u0005\u00e2r\u0002\u077d\u077f\u0005\u00e6t\u0002",
    "\u077e\u077d\u0003\u0002\u0002\u0002\u077f\u0782\u0003\u0002\u0002\u0002",
    "\u0780\u077e\u0003\u0002\u0002\u0002\u0780\u0781\u0003\u0002\u0002\u0002",
    "\u0781\u00dd\u0003\u0002\u0002\u0002\u0782\u0780\u0003\u0002\u0002\u0002",
    "\u0783\u0789\u0007\u00e9\u0002\u0002\u0784\u078a\u0005\u014a\u00a6\u0002",
    "\u0785\u0786\u0007\u001a\u0002\u0002\u0786\u0787\u0005\u011a\u008e\u0002",
    "\u0787\u0788\u0007\u001b\u0002\u0002\u0788\u078a\u0003\u0002\u0002\u0002",
    "\u0789\u0784\u0003\u0002\u0002\u0002\u0789\u0785\u0003\u0002\u0002\u0002",
    "\u078a\u078b\u0003\u0002\u0002\u0002\u078b\u078d\u0007/\u0002\u0002",
    "\u078c\u078e\u0007\u00ea\u0002\u0002\u078d\u078c\u0003\u0002\u0002\u0002",
    "\u078d\u078e\u0003\u0002\u0002\u0002\u078e\u078f\u0003\u0002\u0002\u0002",
    "\u078f\u0793\u0005\u00e2r\u0002\u0790\u0792\u0005\u00e4s\u0002\u0791",
    "\u0790\u0003\u0002\u0002\u0002\u0792\u0795\u0003\u0002\u0002\u0002\u0793",
    "\u0791\u0003\u0002\u0002\u0002\u0793\u0794\u0003\u0002\u0002\u0002\u0794",
    "\u00df\u0003\u0002\u0002\u0002\u0795\u0793\u0003\u0002\u0002\u0002\u0796",
    "\u0799\u0005\u01b2\u00da\u0002\u0797\u0799\u0005\u0180\u00c1\u0002\u0798",
    "\u0796\u0003\u0002\u0002\u0002\u0798\u0797\u0003\u0002\u0002\u0002\u0799",
    "\u00e1\u0003\u0002\u0002\u0002\u079a\u079d\u0005\u01b2\u00da\u0002\u079b",
    "\u079d\u0005\u0180\u00c1\u0002\u079c\u079a\u0003\u0002\u0002\u0002\u079c",
    "\u079b\u0003\u0002\u0002\u0002\u079d\u00e3\u0003\u0002\u0002\u0002\u079e",
    "\u079f\u0007\u00de\u0002\u0002\u079f\u07a7\u0005\u01b8\u00dd\u0002\u07a0",
    "\u07a1\u0007\u00eb\u0002\u0002\u07a1\u07a7\u0005\u0180\u00c1\u0002\u07a2",
    "\u07a3\u0007\u00ec\u0002\u0002\u07a3\u07a7\u0005\u0180\u00c1\u0002\u07a4",
    "\u07a5\u0007\u00ed\u0002\u0002\u07a5\u07a7\u0005\u01b8\u00dd\u0002\u07a6",
    "\u079e\u0003\u0002\u0002\u0002\u07a6\u07a0\u0003\u0002\u0002\u0002\u07a6",
    "\u07a2\u0003\u0002\u0002\u0002\u07a6\u07a4\u0003\u0002\u0002\u0002\u07a7",
    "\u00e5\u0003\u0002\u0002\u0002\u07a8\u07a9\t\u001e\u0002\u0002\u07a9",
    "\u00e7\u0003\u0002\u0002\u0002\u07aa\u07ac\u0007[\u0002\u0002\u07ab",
    "\u07ad\u0007\u00ef\u0002\u0002\u07ac\u07ab\u0003\u0002\u0002\u0002\u07ac",
    "\u07ad\u0003\u0002\u0002\u0002\u07ad\u00e9\u0003\u0002\u0002\u0002\u07ae",
    "\u07b0\u0007=\u0002\u0002\u07af\u07b1\u0007G\u0002\u0002\u07b0\u07af",
    "\u0003\u0002\u0002\u0002\u07b0\u07b1\u0003\u0002\u0002\u0002\u07b1\u07b2",
    "\u0003\u0002\u0002\u0002\u07b2\u07b3\u0007k\u0002\u0002\u07b3\u07b4",
    "\u0005\u01b8\u00dd\u0002\u07b4\u07b5\u0007Q\u0002\u0002\u07b5\u07b6",
    "\u0005\u014a\u00a6\u0002\u07b6\u07b7\u0007\u001a\u0002\u0002\u07b7\u07bc",
    "\u0005\u00ecw\u0002\u07b8\u07b9\u0007\u0017\u0002\u0002\u07b9\u07bb",
    "\u0005\u00ecw\u0002\u07ba\u07b8\u0003\u0002\u0002\u0002\u07bb\u07be",
    "\u0003\u0002\u0002\u0002\u07bc\u07ba\u0003\u0002\u0002\u0002\u07bc\u07bd",
    "\u0003\u0002\u0002\u0002\u07bd\u07bf\u0003\u0002\u0002\u0002\u07be\u07bc",
    "\u0003\u0002\u0002\u0002\u07bf\u07c0\u0007\u001b\u0002\u0002\u07c0\u00eb",
    "\u0003\u0002\u0002\u0002\u07c1\u07c3\u0005\u01b8\u00dd\u0002\u07c2\u07c4",
    "\t\t\u0002\u0002\u07c3\u07c2\u0003\u0002\u0002\u0002\u07c3\u07c4\u0003",
    "\u0002\u0002\u0002\u07c4\u00ed\u0003\u0002\u0002\u0002\u07c5\u07c6\u0005",
    "\u00f0y\u0002\u07c6\u00ef\u0003\u0002\u0002\u0002\u07c7\u07c8\u0007",
    "$\u0002\u0002\u07c8\u07c9\u0007\u001a\u0002\u0002\u07c9\u07ca\u0005",
    "\u01b8\u00dd\u0002\u07ca\u07cb\u0007\u0019\u0002\u0002\u07cb\u07d3\u0005",
    "\u01b8\u00dd\u0002\u07cc\u07cd\u0007\u0017\u0002\u0002\u07cd\u07ce\u0005",
    "\u01b8\u00dd\u0002\u07ce\u07cf\u0007\u0019\u0002\u0002\u07cf\u07d0\u0005",
    "\u01b8\u00dd\u0002\u07d0\u07d2\u0003\u0002\u0002\u0002\u07d1\u07cc\u0003",
    "\u0002\u0002\u0002\u07d2\u07d5\u0003\u0002\u0002\u0002\u07d3\u07d1\u0003",
    "\u0002\u0002\u0002\u07d3\u07d4\u0003\u0002\u0002\u0002\u07d4\u07d6\u0003",
    "\u0002\u0002\u0002\u07d5\u07d3\u0003\u0002\u0002\u0002\u07d6\u07da\u0007",
    "\u001b\u0002\u0002\u07d7\u07d9\u0005l7\u0002\u07d8\u07d7\u0003\u0002",
    "\u0002\u0002\u07d9\u07dc\u0003\u0002\u0002\u0002\u07da\u07d8\u0003\u0002",
    "\u0002\u0002\u07da\u07db\u0003\u0002\u0002\u0002\u07db\u00f1\u0003\u0002",
    "\u0002\u0002\u07dc\u07da\u0003\u0002\u0002\u0002\u07dd\u07de\u0007\u00f0",
    "\u0002\u0002\u07de\u07e5\u0005\u0180\u00c1\u0002\u07df\u07e0\u0007\u00f0",
    "\u0002\u0002\u07e0\u07e1\u0007\u001a\u0002\u0002\u07e1\u07e2\u0005\u0180",
    "\u00c1\u0002\u07e2\u07e3\u0007\u001b\u0002\u0002\u07e3\u07e5\u0003\u0002",
    "\u0002\u0002\u07e4\u07dd\u0003\u0002\u0002\u0002\u07e4\u07df\u0003\u0002",
    "\u0002\u0002\u07e5\u00f3\u0003\u0002\u0002\u0002\u07e6\u07e8\u0007\u0007",
    "\u0002\u0002\u07e7\u07e6\u0003\u0002\u0002\u0002\u07e7\u07e8\u0003\u0002",
    "\u0002\u0002\u07e8\u07e9\u0003\u0002\u0002\u0002\u07e9\u07eb\u0007\u00f1",
    "\u0002\u0002\u07ea\u07ec\u0005\u0180\u00c1\u0002\u07eb\u07ea\u0003\u0002",
    "\u0002\u0002\u07eb\u07ec\u0003\u0002\u0002\u0002\u07ec\u00f5\u0003\u0002",
    "\u0002\u0002\u07ed\u07ee\u0007\u00f2\u0002\u0002\u07ee\u00f7\u0003\u0002",
    "\u0002\u0002\u07ef\u07fb\u0007\u00f3\u0002\u0002\u07f0\u07f2\u0007\u00f4",
    "\u0002\u0002\u07f1\u07f3\u0007\u00f5\u0002\u0002\u07f2\u07f1\u0003\u0002",
    "\u0002\u0002\u07f2\u07f3\u0003\u0002\u0002\u0002\u07f3\u07f4\u0003\u0002",
    "\u0002\u0002\u07f4\u07f9\u0005\u0180\u00c1\u0002\u07f5\u07f6\u0007\u0016",
    "\u0002\u0002\u07f6\u07f7\u0007\u00d8\u0002\u0002\u07f7\u07f8\u0007\u0019",
    "\u0002\u0002\u07f8\u07fa\u0005\u0180\u00c1\u0002\u07f9\u07f5\u0003\u0002",
    "\u0002\u0002\u07f9\u07fa\u0003\u0002\u0002\u0002\u07fa\u07fc\u0003\u0002",
    "\u0002\u0002\u07fb\u07f0\u0003\u0002\u0002\u0002\u07fb\u07fc\u0003\u0002",
    "\u0002\u0002\u07fc\u00f9\u0003\u0002\u0002\u0002\u07fd\u07ff\u0007-",
    "\u0002\u0002\u07fe\u0800\u0005\u0180\u00c1\u0002\u07ff\u07fe\u0003\u0002",
    "\u0002\u0002\u07ff\u0800\u0003\u0002\u0002\u0002\u0800\u00fb\u0003\u0002",
    "\u0002\u0002\u0801\u0803\u0007\u00f6\u0002\u0002\u0802\u0804\u0007\u00ef",
    "\u0002\u0002\u0803\u0802\u0003\u0002\u0002\u0002\u0803\u0804\u0003\u0002",
    "\u0002\u0002\u0804\u00fd\u0003\u0002\u0002\u0002\u0805\u0809\u0005\u0100",
    "\u0081\u0002\u0806\u0809\u0005\u0102\u0082\u0002\u0807\u0809\u0005\u0104",
    "\u0083\u0002\u0808\u0805\u0003\u0002\u0002\u0002\u0808\u0806\u0003\u0002",
    "\u0002\u0002\u0808\u0807\u0003\u0002\u0002\u0002\u0809\u00ff\u0003\u0002",
    "\u0002\u0002\u080a\u080c\u0007\u00f7\u0002\u0002\u080b\u080a\u0003\u0002",
    "\u0002\u0002\u080b\u080c\u0003\u0002\u0002\u0002\u080c\u080d\u0003\u0002",
    "\u0002\u0002\u080d\u0810\u0007\u00b8\u0002\u0002\u080e\u0810\u0007\u00f8",
    "\u0002\u0002\u080f\u080b\u0003\u0002\u0002\u0002\u080f\u080e\u0003\u0002",
    "\u0002\u0002\u0810\u0812\u0003\u0002\u0002\u0002\u0811\u0813\u0007\u0019",
    "\u0002\u0002\u0812\u0811\u0003\u0002\u0002\u0002\u0812\u0813\u0003\u0002",
    "\u0002\u0002\u0813\u0814\u0003\u0002\u0002\u0002\u0814\u0815\u0005\u0180",
    "\u00c1\u0002\u0815\u0101\u0003\u0002\u0002\u0002\u0816\u0817\t\u001f",
    "\u0002\u0002\u0817\u0818\t \u0002\u0002\u0818\u0103\u0003\u0002\u0002",
    "\u0002\u0819\u081a\u0007\u00ff\u0002\u0002\u081a\u081d\u0007\u0019\u0002",
    "\u0002\u081b\u081e\u0005\u0180\u00c1\u0002\u081c\u081e\u0007\u0100\u0002",
    "\u0002\u081d\u081b\u0003\u0002\u0002\u0002\u081d\u081c\u0003\u0002\u0002",
    "\u0002\u081e\u0820\u0003\u0002\u0002\u0002\u081f\u0821\u0007R\u0002",
    "\u0002\u0820\u081f\u0003\u0002\u0002\u0002\u0820\u0821\u0003\u0002\u0002",
    "\u0002\u0821\u0822\u0003\u0002\u0002\u0002\u0822\u0823\u0007\u001e\u0002",
    "\u0002\u0823\u0824\t!\u0002\u0002\u0824\u0105\u0003\u0002\u0002\u0002",
    "\u0825\u0826\u0007\u0102\u0002\u0002\u0826\u0827\u0005\u01b8\u00dd\u0002",
    "\u0827\u0107\u0003\u0002\u0002\u0002\u0828\u082b\u0007\u0103\u0002\u0002",
    "\u0829\u082a\u0007\u0104\u0002\u0002\u082a\u082c\u0005\u0180\u00c1\u0002",
    "\u082b\u0829\u0003\u0002\u0002\u0002\u082b\u082c\u0003\u0002\u0002\u0002",
    "\u082c\u082d\u0003\u0002\u0002\u0002\u082d\u0837\u0007\u001e\u0002\u0002",
    "\u082e\u0838\u0005\u011a\u008e\u0002\u082f\u0831\u0005\u014a\u00a6\u0002",
    "\u0830\u0832\u0005\u014c\u00a7\u0002\u0831\u0830\u0003\u0002\u0002\u0002",
    "\u0831\u0832\u0003\u0002\u0002\u0002\u0832\u0835\u0003\u0002\u0002\u0002",
    "\u0833\u0834\u0007\u0105\u0002\u0002\u0834\u0836\u0005\u0180\u00c1\u0002",
    "\u0835\u0833\u0003\u0002\u0002\u0002\u0835\u0836\u0003\u0002\u0002\u0002",
    "\u0836\u0838\u0003\u0002\u0002\u0002\u0837\u082e\u0003\u0002\u0002\u0002",
    "\u0837\u082f\u0003\u0002\u0002\u0002\u0838\u0109\u0003\u0002\u0002\u0002",
    "\u0839\u083b\u0007\u0106\u0002\u0002\u083a\u083c\u0007<\u0002\u0002",
    "\u083b\u083a\u0003\u0002\u0002\u0002\u083b\u083c\u0003\u0002\u0002\u0002",
    "\u083c\u083d\u0003\u0002\u0002\u0002\u083d\u083e\u0005\u014a\u00a6\u0002",
    "\u083e\u010b\u0003\u0002\u0002\u0002\u083f\u0840\u0007\u0107\u0002\u0002",
    "\u0840\u0841\u0005\u0180\u00c1\u0002\u0841\u010d\u0003\u0002\u0002\u0002",
    "\u0842\u0844\u0007\u00d4\u0002\u0002\u0843\u0845\u0007\u001a\u0002\u0002",
    "\u0844\u0843\u0003\u0002\u0002\u0002\u0844\u0845\u0003\u0002\u0002\u0002",
    "\u0845\u0846\u0003\u0002\u0002\u0002\u0846\u084b\u0005\u0180\u00c1\u0002",
    "\u0847\u0848\u0007\u0017\u0002\u0002\u0848\u084a\u0005\u0180\u00c1\u0002",
    "\u0849\u0847\u0003\u0002\u0002\u0002\u084a\u084d\u0003\u0002\u0002\u0002",
    "\u084b\u0849\u0003\u0002\u0002\u0002\u084b\u084c\u0003\u0002\u0002\u0002",
    "\u084c\u084f\u0003\u0002\u0002\u0002\u084d\u084b\u0003\u0002\u0002\u0002",
    "\u084e\u0850\u0007\u001b\u0002\u0002\u084f\u084e\u0003\u0002\u0002\u0002",
    "\u084f\u0850\u0003\u0002\u0002\u0002\u0850\u0851\u0003\u0002\u0002\u0002",
    "\u0851\u0853\u0007\u00cd\u0002\u0002\u0852\u0854\u0007\u001a\u0002\u0002",
    "\u0853\u0852\u0003\u0002\u0002\u0002\u0853\u0854\u0003\u0002\u0002\u0002",
    "\u0854\u0855\u0003\u0002\u0002\u0002\u0855\u085a\u0005\u01b8\u00dd\u0002",
    "\u0856\u0857\u0007\u0017\u0002\u0002\u0857\u0859\u0005\u01b8\u00dd\u0002",
    "\u0858\u0856\u0003\u0002\u0002\u0002\u0859\u085c\u0003\u0002\u0002\u0002",
    "\u085a\u0858\u0003\u0002\u0002\u0002\u085a\u085b\u0003\u0002\u0002\u0002",
    "\u085b\u085e\u0003\u0002\u0002\u0002\u085c\u085a\u0003\u0002\u0002\u0002",
    "\u085d\u085f\u0007\u001b\u0002\u0002\u085e\u085d\u0003\u0002\u0002\u0002",
    "\u085e\u085f\u0003\u0002\u0002\u0002\u085f\u010f\u0003\u0002\u0002\u0002",
    "\u0860\u0861\u0007\u0108\u0002\u0002\u0861\u0862\u0005\u0170\u00b9\u0002",
    "\u0862\u0863\t\"\u0002\u0002\u0863\u0864\u0005\u0004\u0003\u0002\u0864",
    "\u0866\u0007\u0010\u0002\u0002\u0865\u0867\t#\u0002\u0002\u0866\u0865",
    "\u0003\u0002\u0002\u0002\u0866\u0867\u0003\u0002\u0002\u0002\u0867\u0111",
    "\u0003\u0002\u0002\u0002\u0868\u0869\u0007\u001e\u0002\u0002\u0869\u086a",
    "\u0007\u0013\u0002\u0002\u086a\u086c\u0007l\u0002\u0002\u086b\u086d",
    "\u0007\u001a\u0002\u0002\u086c\u086b\u0003\u0002\u0002\u0002\u086c\u086d",
    "\u0003\u0002\u0002\u0002\u086d\u086e\u0003\u0002\u0002\u0002\u086e\u0870",
    "\u0005\u011a\u008e\u0002\u086f\u0871\u0007\u001b\u0002\u0002\u0870\u086f",
    "\u0003\u0002\u0002\u0002\u0870\u0871\u0003\u0002\u0002\u0002\u0871\u0872",
    "\u0003\u0002\u0002\u0002\u0872\u0873\u0007\u010a\u0002\u0002\u0873\u0874",
    "\u0005\u0004\u0003\u0002\u0874\u0875\u0007\u0010\u0002\u0002\u0875\u0876",
    "\u0007\u010a\u0002\u0002\u0876\u0113\u0003\u0002\u0002\u0002\u0877\u0878",
    "\u0007\u001e\u0002\u0002\u0878\u0879\u0007\u0013\u0002\u0002\u0879\u087b",
    "\u0007l\u0002\u0002\u087a\u087c\u0007\u010b\u0002\u0002\u087b\u087a",
    "\u0003\u0002\u0002\u0002\u087b\u087c\u0003\u0002\u0002\u0002\u087c\u087d",
    "\u0003\u0002\u0002\u0002\u087d\u087e\u0005\u0180\u00c1\u0002\u087e\u087f",
    "\u0007\u010c\u0002\u0002\u087f\u0882\u0005\u0180\u00c1\u0002\u0880\u0881",
    "\t$\u0002\u0002\u0881\u0883\u0005\u0180\u00c1\u0002\u0882\u0880\u0003",
    "\u0002\u0002\u0002\u0882\u0883\u0003\u0002\u0002\u0002\u0883\u0884\u0003",
    "\u0002\u0002\u0002\u0884\u0885\u0007\u010a\u0002\u0002\u0885\u0886\u0005",
    "\u0004\u0003\u0002\u0886\u0887\u0007\u0010\u0002\u0002\u0887\u0888\u0007",
    "\u010a\u0002\u0002\u0888\u0115\u0003\u0002\u0002\u0002\u0889\u0890\u0007",
    "\u010e\u0002\u0002\u088a\u088b\u0007\u010f\u0002\u0002\u088b\u088c\u0007",
    "\u010f\u0002\u0002\u088c\u088d\u0007\u0013\u0002\u0002\u088d\u088e\u0007",
    "\u0110\u0002\u0002\u088e\u0890\u0007\u0110\u0002\u0002\u088f\u0889\u0003",
    "\u0002\u0002\u0002\u088f\u088a\u0003\u0002\u0002\u0002\u0890\u0117\u0003",
    "\u0002\u0002\u0002\u0891\u0892\u0007\u0111\u0002\u0002\u0892\u0897\u0005",
    "\u0180\u00c1\u0002\u0893\u0894\u0007\u0017\u0002\u0002\u0894\u0896\u0005",
    "\u0180\u00c1\u0002\u0895\u0893\u0003\u0002\u0002\u0002\u0896\u0899\u0003",
    "\u0002\u0002\u0002\u0897\u0895\u0003\u0002\u0002\u0002\u0897\u0898\u0003",
    "\u0002\u0002\u0002\u0898\u0119\u0003\u0002\u0002\u0002\u0899\u0897\u0003",
    "\u0002\u0002\u0002\u089a\u089c\u0005\u011c\u008f\u0002\u089b\u089a\u0003",
    "\u0002\u0002\u0002\u089b\u089c\u0003\u0002\u0002\u0002\u089c\u089d\u0003",
    "\u0002\u0002\u0002\u089d\u089e\u0005\u0122\u0092\u0002\u089e\u011b\u0003",
    "\u0002\u0002\u0002\u089f\u08a0\u0007$\u0002\u0002\u08a0\u08a5\u0005",
    "\u011e\u0090\u0002\u08a1\u08a2\u0007\u0017\u0002\u0002\u08a2\u08a4\u0005",
    "\u011e\u0090\u0002\u08a3\u08a1\u0003\u0002\u0002\u0002\u08a4\u08a7\u0003",
    "\u0002\u0002\u0002\u08a5\u08a3\u0003\u0002\u0002\u0002\u08a5\u08a6\u0003",
    "\u0002\u0002\u0002\u08a6\u011d\u0003\u0002\u0002\u0002\u08a7\u08a5\u0003",
    "\u0002\u0002\u0002\u08a8\u08aa\u0005\u01b8\u00dd\u0002\u08a9\u08ab\u0005",
    "\u0120\u0091\u0002\u08aa\u08a9\u0003\u0002\u0002\u0002\u08aa\u08ab\u0003",
    "\u0002\u0002\u0002\u08ab\u08ac\u0003\u0002\u0002\u0002\u08ac\u08ad\u0007",
    ")\u0002\u0002\u08ad\u08ae\u0007\u001a\u0002\u0002\u08ae\u08af\u0005",
    "\u0122\u0092\u0002\u08af\u08b0\u0007\u001b\u0002\u0002\u08b0\u011f\u0003",
    "\u0002\u0002\u0002\u08b1\u08b2\u0007\u001a\u0002\u0002\u08b2\u08b7\u0005",
    "\u01b8\u00dd\u0002\u08b3\u08b4\u0007\u0017\u0002\u0002\u08b4\u08b6\u0005",
    "\u01b8\u00dd\u0002\u08b5\u08b3\u0003\u0002\u0002\u0002\u08b6\u08b9\u0003",
    "\u0002\u0002\u0002\u08b7\u08b5\u0003\u0002\u0002\u0002\u08b7\u08b8\u0003",
    "\u0002\u0002\u0002\u08b8\u08ba\u0003\u0002\u0002\u0002\u08b9\u08b7\u0003",
    "\u0002\u0002\u0002\u08ba\u08bb\u0007\u001b\u0002\u0002\u08bb\u0121\u0003",
    "\u0002\u0002\u0002\u08bc\u08c2\u0005\u0124\u0093\u0002\u08bd\u08be\u0005",
    "\u0126\u0094\u0002\u08be\u08bf\u0005\u0124\u0093\u0002\u08bf\u08c1\u0003",
    "\u0002\u0002\u0002\u08c0\u08bd\u0003\u0002\u0002\u0002\u08c1\u08c4\u0003",
    "\u0002\u0002\u0002\u08c2\u08c0\u0003\u0002\u0002\u0002\u08c2\u08c3\u0003",
    "\u0002\u0002\u0002\u08c3\u0123\u0003\u0002\u0002\u0002\u08c4\u08c2\u0003",
    "\u0002\u0002\u0002\u08c5\u08cb\u0005\u0128\u0095\u0002\u08c6\u08c7\u0007",
    "\u001a\u0002\u0002\u08c7\u08c8\u0005\u0122\u0092\u0002\u08c8\u08c9\u0007",
    "\u001b\u0002\u0002\u08c9\u08cb\u0003\u0002\u0002\u0002\u08ca\u08c5\u0003",
    "\u0002\u0002\u0002\u08ca\u08c6\u0003\u0002\u0002\u0002\u08cb\u0125\u0003",
    "\u0002\u0002\u0002\u08cc\u08ce\u0007\u0112\u0002\u0002\u08cd\u08cf\u0007",
    "\u0113\u0002\u0002\u08ce\u08cd\u0003\u0002\u0002\u0002\u08ce\u08cf\u0003",
    "\u0002\u0002\u0002\u08cf\u08d9\u0003\u0002\u0002\u0002\u08d0\u08d2\u0007",
    "\u0114\u0002\u0002\u08d1\u08d3\u0007\u0113\u0002\u0002\u08d2\u08d1\u0003",
    "\u0002\u0002\u0002\u08d2\u08d3\u0003\u0002\u0002\u0002\u08d3\u08d9\u0003",
    "\u0002\u0002\u0002\u08d4\u08d6\u0007\u0115\u0002\u0002\u08d5\u08d7\u0007",
    "\u0113\u0002\u0002\u08d6\u08d5\u0003\u0002\u0002\u0002\u08d6\u08d7\u0003",
    "\u0002\u0002\u0002\u08d7\u08d9\u0003\u0002\u0002\u0002\u08d8\u08cc\u0003",
    "\u0002\u0002\u0002\u08d8\u08d0\u0003\u0002\u0002\u0002\u08d8\u08d4\u0003",
    "\u0002\u0002\u0002\u08d9\u0127\u0003\u0002\u0002\u0002\u08da\u08db\t",
    "%\u0002\u0002\u08db\u08dd\u0005\u012a\u0096\u0002\u08dc\u08de\u0005",
    "\u0136\u009c\u0002\u08dd\u08dc\u0003\u0002\u0002\u0002\u08dd\u08de\u0003",
    "\u0002\u0002\u0002\u08de\u08e0\u0003\u0002\u0002\u0002\u08df\u08e1\u0005",
    "\u0138\u009d\u0002\u08e0\u08df\u0003\u0002\u0002\u0002\u08e0\u08e1\u0003",
    "\u0002\u0002\u0002\u08e1\u08e3\u0003\u0002\u0002\u0002\u08e2\u08e4\u0005",
    "\u014c\u00a7\u0002\u08e3\u08e2\u0003\u0002\u0002\u0002\u08e3\u08e4\u0003",
    "\u0002\u0002\u0002\u08e4\u08e6\u0003\u0002\u0002\u0002\u08e5\u08e7\u0005",
    "\u014e\u00a8\u0002\u08e6\u08e5\u0003\u0002\u0002\u0002\u08e6\u08e7\u0003",
    "\u0002\u0002\u0002\u08e7\u08ea\u0003\u0002\u0002\u0002\u08e8\u08eb\u0005",
    "\u0150\u00a9\u0002\u08e9\u08eb\u0005\u0152\u00aa\u0002\u08ea\u08e8\u0003",
    "\u0002\u0002\u0002\u08ea\u08e9\u0003\u0002\u0002\u0002\u08ea\u08eb\u0003",
    "\u0002\u0002\u0002\u08eb\u08ed\u0003\u0002\u0002\u0002\u08ec\u08ee\u0005",
    "\u0154\u00ab\u0002\u08ed\u08ec\u0003\u0002\u0002\u0002\u08ed\u08ee\u0003",
    "\u0002\u0002\u0002\u08ee\u08f0\u0003\u0002\u0002\u0002\u08ef\u08f1\u0005",
    "\u0156\u00ac\u0002\u08f0\u08ef\u0003\u0002\u0002\u0002\u08f0\u08f1\u0003",
    "\u0002\u0002\u0002\u08f1\u0129\u0003\u0002\u0002\u0002\u08f2\u08f4\u0005",
    "\u012c\u0097\u0002\u08f3\u08f2\u0003\u0002\u0002\u0002\u08f3\u08f4\u0003",
    "\u0002\u0002\u0002\u08f4\u08f6\u0003\u0002\u0002\u0002\u08f5\u08f7\u0005",
    "\u012e\u0098\u0002\u08f6\u08f5\u0003\u0002\u0002\u0002\u08f6\u08f7\u0003",
    "\u0002\u0002\u0002\u08f7\u08f8\u0003\u0002\u0002\u0002\u08f8\u08fd\u0005",
    "\u0130\u0099\u0002\u08f9\u08fa\u0007\u0017\u0002\u0002\u08fa\u08fc\u0005",
    "\u0130\u0099\u0002\u08fb\u08f9\u0003\u0002\u0002\u0002\u08fc\u08ff\u0003",
    "\u0002\u0002\u0002\u08fd\u08fb\u0003\u0002\u0002\u0002\u08fd\u08fe\u0003",
    "\u0002\u0002\u0002\u08fe\u012b\u0003\u0002\u0002\u0002\u08ff\u08fd\u0003",
    "\u0002\u0002\u0002\u0900\u0901\t&\u0002\u0002\u0901\u012d\u0003\u0002",
    "\u0002\u0002\u0902\u0903\u0007\u0104\u0002\u0002\u0903\u0904\u0005\u0180",
    "\u00c1\u0002\u0904\u012f\u0003\u0002\u0002\u0002\u0905\u0906\u0005\u01b8",
    "\u00dd\u0002\u0906\u0907\u0007\u0019\u0002\u0002\u0907\u0909\u0003\u0002",
    "\u0002\u0002\u0908\u0905\u0003\u0002\u0002\u0002\u0908\u0909\u0003\u0002",
    "\u0002\u0002\u0909\u090a\u0003\u0002\u0002\u0002\u090a\u090c\u0005\u0180",
    "\u00c1\u0002\u090b\u090d\u0005\u0132\u009a\u0002\u090c\u090b\u0003\u0002",
    "\u0002\u0002\u090c\u090d\u0003\u0002\u0002\u0002\u090d\u0910\u0003\u0002",
    "\u0002\u0002\u090e\u0910\u0005\u0134\u009b\u0002\u090f\u0908\u0003\u0002",
    "\u0002\u0002\u090f\u090e\u0003\u0002\u0002\u0002\u0910\u0131\u0003\u0002",
    "\u0002\u0002\u0911\u0913\u0006\u009a\u0005\u0002\u0912\u0914\u0007)",
    "\u0002\u0002\u0913\u0912\u0003\u0002\u0002\u0002\u0913\u0914\u0003\u0002",
    "\u0002\u0002\u0914\u0915\u0003\u0002\u0002\u0002\u0915\u091b\u0005\u01b8",
    "\u00dd\u0002\u0916\u0917\u0007\u001a\u0002\u0002\u0917\u0918\u0007\u0119",
    "\u0002\u0002\u0918\u0919\u0007\u011a\u0002\u0002\u0919\u091b\u0007\u001b",
    "\u0002\u0002\u091a\u0911\u0003\u0002\u0002\u0002\u091a\u0916\u0003\u0002",
    "\u0002\u0002\u091b\u0133\u0003\u0002\u0002\u0002\u091c\u091d\u0007\u0013",
    "\u0002\u0002\u091d\u091f\u0007\u0007\u0002\u0002\u091e\u091c\u0003\u0002",
    "\u0002\u0002\u091e\u091f\u0003\u0002\u0002\u0002\u091f\u0920\u0003\u0002",
    "\u0002\u0002\u0920\u0921\u0007\b\u0002\u0002\u0921\u0135\u0003\u0002",
    "\u0002\u0002\u0922\u0923\u0007\u00cd\u0002\u0002\u0923\u0928\u0005\u01b8",
    "\u00dd\u0002\u0924\u0925\u0007\u0017\u0002\u0002\u0925\u0927\u0005\u01b8",
    "\u00dd\u0002\u0926\u0924\u0003\u0002\u0002\u0002\u0927\u092a\u0003\u0002",
    "\u0002\u0002\u0928\u0926\u0003\u0002\u0002\u0002\u0928\u0929\u0003\u0002",
    "\u0002\u0002\u0929\u0137\u0003\u0002\u0002\u0002\u092a\u0928\u0003\u0002",
    "\u0002\u0002\u092b\u092c\u0007\u00e1\u0002\u0002\u092c\u0930\u0005\u013a",
    "\u009e\u0002\u092d\u092f\u0005\u0140\u00a1\u0002\u092e\u092d\u0003\u0002",
    "\u0002\u0002\u092f\u0932\u0003\u0002\u0002\u0002\u0930\u092e\u0003\u0002",
    "\u0002\u0002\u0930\u0931\u0003\u0002\u0002\u0002\u0931\u0139\u0003\u0002",
    "\u0002\u0002\u0932\u0930\u0003\u0002\u0002\u0002\u0933\u0937\u0005\u013c",
    "\u009f\u0002\u0934\u0937\u0005\u013e\u00a0\u0002\u0935\u0937\u0005\u0144",
    "\u00a3\u0002\u0936\u0933\u0003\u0002\u0002\u0002\u0936\u0934\u0003\u0002",
    "\u0002\u0002\u0936\u0935\u0003\u0002\u0002\u0002\u0937\u013b\u0003\u0002",
    "\u0002\u0002\u0938\u093a\u0005\u014a\u00a6\u0002\u0939\u093b\u0005\u0148",
    "\u00a5\u0002\u093a\u0939\u0003\u0002\u0002\u0002\u093a\u093b\u0003\u0002",
    "\u0002\u0002\u093b\u013d\u0003\u0002\u0002\u0002\u093c\u093d\u0007\u001a",
    "\u0002\u0002\u093d\u093e\u0005\u011a\u008e\u0002\u093e\u0940\u0007\u001b",
    "\u0002\u0002\u093f\u0941\u0005\u0148\u00a5\u0002\u0940\u093f\u0003\u0002",
    "\u0002\u0002\u0940\u0941\u0003\u0002\u0002\u0002\u0941\u013f\u0003\u0002",
    "\u0002\u0002\u0942\u0943\u0007\u0017\u0002\u0002\u0943\u094a\u0005\u013a",
    "\u009e\u0002\u0944\u0945\u0005\u0142\u00a2\u0002\u0945\u0946\u0005\u013a",
    "\u009e\u0002\u0946\u0947\u0007Q\u0002\u0002\u0947\u0948\u0005\u0170",
    "\u00b9\u0002\u0948\u094a\u0003\u0002\u0002\u0002\u0949\u0942\u0003\u0002",
    "\u0002\u0002\u0949\u0944\u0003\u0002\u0002\u0002\u094a\u0141\u0003\u0002",
    "\u0002\u0002\u094b\u094d\u0007\u011b\u0002\u0002\u094c\u094b\u0003\u0002",
    "\u0002\u0002\u094c\u094d\u0003\u0002\u0002\u0002\u094d\u094e\u0003\u0002",
    "\u0002\u0002\u094e\u0955\u0007\u011c\u0002\u0002\u094f\u0951\t\'\u0002",
    "\u0002\u0950\u0952\u0007\u0120\u0002\u0002\u0951\u0950\u0003\u0002\u0002",
    "\u0002\u0951\u0952\u0003\u0002\u0002\u0002\u0952\u0953\u0003\u0002\u0002",
    "\u0002\u0953\u0955\u0007\u011c\u0002\u0002\u0954\u094c\u0003\u0002\u0002",
    "\u0002\u0954\u094f\u0003\u0002\u0002\u0002\u0955\u0143\u0003\u0002\u0002",
    "\u0002\u0956\u0957\u0007<\u0002\u0002\u0957\u0958\u0007\u001a\u0002",
    "\u0002\u0958\u0959\u0007\u00d4\u0002\u0002\u0959\u095e\u0005\u0146\u00a4",
    "\u0002\u095a\u095b\u0007\u0017\u0002\u0002\u095b\u095d\u0005\u0146\u00a4",
    "\u0002\u095c\u095a\u0003\u0002\u0002\u0002\u095d\u0960\u0003\u0002\u0002",
    "\u0002\u095e\u095c\u0003\u0002\u0002\u0002\u095e\u095f\u0003\u0002\u0002",
    "\u0002\u095f\u0961\u0003\u0002\u0002\u0002\u0960\u095e\u0003\u0002\u0002",
    "\u0002\u0961\u0963\u0007\u001b\u0002\u0002\u0962\u0964\u0005\u0148\u00a5",
    "\u0002\u0963\u0962\u0003\u0002\u0002\u0002\u0963\u0964\u0003\u0002\u0002",
    "\u0002\u0964\u0145\u0003\u0002\u0002\u0002\u0965\u0972\u0005\u0180\u00c1",
    "\u0002\u0966\u0967\u0007\u001a\u0002\u0002\u0967\u096c\u0005\u0180\u00c1",
    "\u0002\u0968\u0969\u0007\u0017\u0002\u0002\u0969\u096b\u0005\u0180\u00c1",
    "\u0002\u096a\u0968\u0003\u0002\u0002\u0002\u096b\u096e\u0003\u0002\u0002",
    "\u0002\u096c\u096a\u0003\u0002\u0002\u0002\u096c\u096d\u0003\u0002\u0002",
    "\u0002\u096d\u096f\u0003\u0002\u0002\u0002\u096e\u096c\u0003\u0002\u0002",
    "\u0002\u096f\u0970\u0007\u001b\u0002\u0002\u0970\u0972\u0003\u0002\u0002",
    "\u0002\u0971\u0965\u0003\u0002\u0002\u0002\u0971\u0966\u0003\u0002\u0002",
    "\u0002\u0972\u0147\u0003\u0002\u0002\u0002\u0973\u0975\u0006\u00a5\u0006",
    "\u0002\u0974\u0976\u0007)\u0002\u0002\u0975\u0974\u0003\u0002\u0002",
    "\u0002\u0975\u0976\u0003\u0002\u0002\u0002\u0976\u0977\u0003\u0002\u0002",
    "\u0002\u0977\u0982\u0005\u01b8\u00dd\u0002\u0978\u0979\u0007\u001a\u0002",
    "\u0002\u0979\u097e\u0007\u0013\u0002\u0002\u097a\u097b\u0007\u0017\u0002",
    "\u0002\u097b\u097d\u0007\u0013\u0002\u0002\u097c\u097a\u0003\u0002\u0002",
    "\u0002\u097d\u0980\u0003\u0002\u0002\u0002\u097e\u097c\u0003\u0002\u0002",
    "\u0002\u097e\u097f\u0003\u0002\u0002\u0002\u097f\u0981\u0003\u0002\u0002",
    "\u0002\u0980\u097e\u0003\u0002\u0002\u0002\u0981\u0983\u0007\u001b\u0002",
    "\u0002\u0982\u0978\u0003\u0002\u0002\u0002\u0982\u0983\u0003\u0002\u0002",
    "\u0002\u0983\u0149\u0003\u0002\u0002\u0002\u0984\u0985\u0005\u01b8\u00dd",
    "\u0002\u0985\u014b\u0003\u0002\u0002\u0002\u0986\u0987\u0007\u0121\u0002",
    "\u0002\u0987\u0988\u0005\u0170\u00b9\u0002\u0988\u014d\u0003\u0002\u0002",
    "\u0002\u0989\u098a\u0007\u0122\u0002\u0002\u098a\u098b\u0007o\u0002",
    "\u0002\u098b\u0990\u0005\u0180\u00c1\u0002\u098c\u098d\u0007\u0017\u0002",
    "\u0002\u098d\u098f\u0005\u0180\u00c1\u0002\u098e\u098c\u0003\u0002\u0002",
    "\u0002\u098f\u0992\u0003\u0002\u0002\u0002\u0990\u098e\u0003\u0002\u0002",
    "\u0002\u0990\u0991\u0003\u0002\u0002\u0002\u0991\u014f\u0003\u0002\u0002",
    "\u0002\u0992\u0990\u0003\u0002\u0002\u0002\u0993\u0994\u0007\u0123\u0002",
    "\u0002\u0994\u0995\u0005\u0170\u00b9\u0002\u0995\u0151\u0003\u0002\u0002",
    "\u0002\u0996\u0997\u0007\u0124\u0002\u0002\u0997\u0998\u0005\u0170\u00b9",
    "\u0002\u0998\u0153\u0003\u0002\u0002\u0002\u0999\u099a\u0007\u0125\u0002",
    "\u0002\u099a\u099b\u0007o\u0002\u0002\u099b\u099d\u0005\u0180\u00c1",
    "\u0002\u099c\u099e\t\t\u0002\u0002\u099d\u099c\u0003\u0002\u0002\u0002",
    "\u099d\u099e\u0003\u0002\u0002\u0002\u099e\u09a6\u0003\u0002\u0002\u0002",
    "\u099f\u09a0\u0007\u0017\u0002\u0002\u09a0\u09a2\u0005\u0180\u00c1\u0002",
    "\u09a1\u09a3\t\t\u0002\u0002\u09a2\u09a1\u0003\u0002\u0002\u0002\u09a2",
    "\u09a3\u0003\u0002\u0002\u0002\u09a3\u09a5\u0003\u0002\u0002\u0002\u09a4",
    "\u099f\u0003\u0002\u0002\u0002\u09a5\u09a8\u0003\u0002\u0002\u0002\u09a6",
    "\u09a4\u0003\u0002\u0002\u0002\u09a6\u09a7\u0003\u0002\u0002\u0002\u09a7",
    "\u0155\u0003\u0002\u0002\u0002\u09a8\u09a6\u0003\u0002\u0002\u0002\u09a9",
    "\u09ab\u0005\u0158\u00ad\u0002\u09aa\u09a9\u0003\u0002\u0002\u0002\u09ab",
    "\u09ac\u0003\u0002\u0002\u0002\u09ac\u09aa\u0003\u0002\u0002\u0002\u09ac",
    "\u09ad\u0003\u0002\u0002\u0002\u09ad\u0157\u0003\u0002\u0002\u0002\u09ae",
    "\u09af\u0007\u0105\u0002\u0002\u09af\u09ba\u0005\u0180\u00c1\u0002\u09b0",
    "\u09b1\u0007$\u0002\u0002\u09b1\u09b7\t(\u0002\u0002\u09b2\u09b3\u0007",
    "\u0107\u0002\u0002\u09b3\u09b4\u0007\u0129\u0002\u0002\u09b4\u09b5\u0007",
    "\u012a\u0002\u0002\u09b5\u09b6\t)\u0002\u0002\u09b6\u09b8\u0007\u012d",
    "\u0002\u0002\u09b7\u09b2\u0003\u0002\u0002\u0002\u09b7\u09b8\u0003\u0002",
    "\u0002\u0002\u09b8\u09ba\u0003\u0002\u0002\u0002\u09b9\u09ae\u0003\u0002",
    "\u0002\u0002\u09b9\u09b0\u0003\u0002\u0002\u0002\u09ba\u0159\u0003\u0002",
    "\u0002\u0002\u09bb\u09bc\u0007R\u0002\u0002\u09bc\u09bd\u0005\u015e",
    "\u00b0\u0002\u09bd\u09be\u0007\u0016\u0002\u0002\u09be\u09c0\u0005\u015c",
    "\u00af\u0002\u09bf\u09c1\u0005\u014c\u00a7\u0002\u09c0\u09bf\u0003\u0002",
    "\u0002\u0002\u09c0\u09c1\u0003\u0002\u0002\u0002\u09c1\u09c3\u0003\u0002",
    "\u0002\u0002\u09c2\u09c4\u0005\u0160\u00b1\u0002\u09c3\u09c2\u0003\u0002",
    "\u0002\u0002\u09c3\u09c4\u0003\u0002\u0002\u0002\u09c4\u015b\u0003\u0002",
    "\u0002\u0002\u09c5\u09ca\u0005\u001c\u000f\u0002\u09c6\u09c7\u0007\u0017",
    "\u0002\u0002\u09c7\u09c9\u0005\u001c\u000f\u0002\u09c8\u09c6\u0003\u0002",
    "\u0002\u0002\u09c9\u09cc\u0003\u0002\u0002\u0002\u09ca\u09c8\u0003\u0002",
    "\u0002\u0002\u09ca\u09cb\u0003\u0002\u0002\u0002\u09cb\u015d\u0003\u0002",
    "\u0002\u0002\u09cc\u09ca\u0003\u0002\u0002\u0002\u09cd\u09cf\u0005\u014a",
    "\u00a6\u0002\u09ce\u09d0\u0005\u0138\u009d\u0002\u09cf\u09ce\u0003\u0002",
    "\u0002\u0002\u09cf\u09d0\u0003\u0002\u0002\u0002\u09d0\u09d6\u0003\u0002",
    "\u0002\u0002\u09d1\u09d2\u0007\u001a\u0002\u0002\u09d2\u09d3\u0005\u011a",
    "\u008e\u0002\u09d3\u09d4\u0007\u001b\u0002\u0002\u09d4\u09d6\u0003\u0002",
    "\u0002\u0002\u09d5\u09cd\u0003\u0002\u0002\u0002\u09d5\u09d1\u0003\u0002",
    "\u0002\u0002\u09d6\u09db\u0003\u0002\u0002\u0002\u09d7\u09d9\u0007)",
    "\u0002\u0002\u09d8\u09d7\u0003\u0002\u0002\u0002\u09d8\u09d9\u0003\u0002",
    "\u0002\u0002\u09d9\u09da\u0003\u0002\u0002\u0002\u09da\u09dc\u0005\u01b8",
    "\u00dd\u0002\u09db\u09d8\u0003\u0002\u0002\u0002\u09db\u09dc\u0003\u0002",
    "\u0002\u0002\u09dc\u015f\u0003\u0002\u0002\u0002\u09dd\u09de\u0007\u00ce",
    "\u0002\u0002\u09de\u09df\u0005\u00b2Z\u0002\u09df\u0161\u0003\u0002",
    "\u0002\u0002\u09e0\u09e1\u0007\u012e\u0002\u0002\u09e1\u09e2\u0007\u00cd",
    "\u0002\u0002\u09e2\u09e3\u0005\u0164\u00b3\u0002\u09e3\u09e4\u0007\u0111",
    "\u0002\u0002\u09e4\u09e5\u0005\u0164\u00b3\u0002\u09e5\u09e6\u0007Q",
    "\u0002\u0002\u09e6\u09e8\u0005\u0170\u00b9\u0002\u09e7\u09e9\u0005\u0166",
    "\u00b4\u0002\u09e8\u09e7\u0003\u0002\u0002\u0002\u09e9\u09ea\u0003\u0002",
    "\u0002\u0002\u09ea\u09e8\u0003\u0002\u0002\u0002\u09ea\u09eb\u0003\u0002",
    "\u0002\u0002\u09eb\u0163\u0003\u0002\u0002\u0002\u09ec\u09f2\u0005\u014a",
    "\u00a6\u0002\u09ed\u09ee\u0007\u001a\u0002\u0002\u09ee\u09ef\u0005\u011a",
    "\u008e\u0002\u09ef\u09f0\u0007\u001b\u0002\u0002\u09f0\u09f2\u0003\u0002",
    "\u0002\u0002\u09f1\u09ec\u0003\u0002\u0002\u0002\u09f1\u09ed\u0003\u0002",
    "\u0002\u0002\u09f2\u09f7\u0003\u0002\u0002\u0002\u09f3\u09f5\u0007)",
    "\u0002\u0002\u09f4\u09f3\u0003\u0002\u0002\u0002\u09f4\u09f5\u0003\u0002",
    "\u0002\u0002\u09f5\u09f6\u0003\u0002\u0002\u0002\u09f6\u09f8\u0005\u01b8",
    "\u00dd\u0002\u09f7\u09f4\u0003\u0002\u0002\u0002\u09f7\u09f8\u0003\u0002",
    "\u0002\u0002\u09f8\u0165\u0003\u0002\u0002\u0002\u09f9\u09fb\u0007\u0012",
    "\u0002\u0002\u09fa\u09fc\u00078\u0002\u0002\u09fb\u09fa\u0003\u0002",
    "\u0002\u0002\u09fb\u09fc\u0003\u0002\u0002\u0002\u09fc\u09fd\u0003\u0002",
    "\u0002\u0002\u09fd\u0a00\u0007\u012f\u0002\u0002\u09fe\u09ff\u0007\u0129",
    "\u0002\u0002\u09ff\u0a01\u0005\u0170\u00b9\u0002\u0a00\u09fe\u0003\u0002",
    "\u0002\u0002\u0a00\u0a01\u0003\u0002\u0002\u0002\u0a01\u0a02\u0003\u0002",
    "\u0002\u0002\u0a02\u0a03\u0007\u0014\u0002\u0002\u0a03\u0a07\u0005\u0168",
    "\u00b5\u0002\u0a04\u0a05\u0007\u00ce\u0002\u0002\u0a05\u0a07\u0007\u00ee",
    "\u0002\u0002\u0a06\u09f9\u0003\u0002\u0002\u0002\u0a06\u0a04\u0003\u0002",
    "\u0002\u0002\u0a07\u0167\u0003\u0002\u0002\u0002\u0a08\u0a0a\u0007\u00d2",
    "\u0002\u0002\u0a09\u0a0b\u0005\u00b4[\u0002\u0a0a\u0a09\u0003\u0002",
    "\u0002\u0002\u0a0a\u0a0b\u0003\u0002\u0002\u0002\u0a0b\u0a0c\u0003\u0002",
    "\u0002\u0002\u0a0c\u0a0d\u0007\u00d4\u0002\u0002\u0a0d\u0a1d\u0005\u00b8",
    "]\u0002\u0a0e\u0a0f\u0007R\u0002\u0002\u0a0f\u0a10\u0007\u0016\u0002",
    "\u0002\u0a10\u0a15\u0005\u001c\u000f\u0002\u0a11\u0a12\u0007\u0017\u0002",
    "\u0002\u0a12\u0a14\u0005\u001c\u000f\u0002\u0a13\u0a11\u0003\u0002\u0002",
    "\u0002\u0a14\u0a17\u0003\u0002\u0002\u0002\u0a15\u0a13\u0003\u0002\u0002",
    "\u0002\u0a15\u0a16\u0003\u0002\u0002\u0002\u0a16\u0a19\u0003\u0002\u0002",
    "\u0002\u0a17\u0a15\u0003\u0002\u0002\u0002\u0a18\u0a1a\u0005\u014c\u00a7",
    "\u0002\u0a19\u0a18\u0003\u0002\u0002\u0002\u0a19\u0a1a\u0003\u0002\u0002",
    "\u0002\u0a1a\u0a1d\u0003\u0002\u0002\u0002\u0a1b\u0a1d\u0007S\u0002",
    "\u0002\u0a1c\u0a08\u0003\u0002\u0002\u0002\u0a1c\u0a0e\u0003\u0002\u0002",
    "\u0002\u0a1c\u0a1b\u0003\u0002\u0002\u0002\u0a1d\u0169\u0003\u0002\u0002",
    "\u0002\u0a1e\u0a20\u0007S\u0002\u0002\u0a1f\u0a21\u0007\u00e1\u0002",
    "\u0002\u0a20\u0a1f\u0003\u0002\u0002\u0002\u0a20\u0a21\u0003\u0002\u0002",
    "\u0002\u0a21\u0a22\u0003\u0002\u0002\u0002\u0a22\u0a24\u0005\u014a\u00a6",
    "\u0002\u0a23\u0a25\u0005\u016c\u00b7\u0002\u0a24\u0a23\u0003\u0002\u0002",
    "\u0002\u0a24\u0a25\u0003\u0002\u0002\u0002\u0a25\u0a28\u0003\u0002\u0002",
    "\u0002\u0a26\u0a29\u0005\u014c\u00a7\u0002\u0a27\u0a29\u0007\u0113\u0002",
    "\u0002\u0a28\u0a26\u0003\u0002\u0002\u0002\u0a28\u0a27\u0003\u0002\u0002",
    "\u0002\u0a28\u0a29\u0003\u0002\u0002\u0002\u0a29\u016b\u0003\u0002\u0002",
    "\u0002\u0a2a\u0a2c\u0006\u00b7\u0007\u0002\u0a2b\u0a2d\u0007)\u0002",
    "\u0002\u0a2c\u0a2b\u0003\u0002\u0002\u0002\u0a2c\u0a2d\u0003\u0002\u0002",
    "\u0002\u0a2d\u0a2e\u0003\u0002\u0002\u0002\u0a2e\u0a2f\u0005\u01b8\u00dd",
    "\u0002\u0a2f\u016d\u0003\u0002\u0002\u0002\u0a30\u0a32\t*\u0002\u0002",
    "\u0a31\u0a33\u0007<\u0002\u0002\u0a32\u0a31\u0003\u0002\u0002\u0002",
    "\u0a32\u0a33\u0003\u0002\u0002\u0002\u0a33\u0a34\u0003\u0002\u0002\u0002",
    "\u0a34\u0a35\u0005\u014a\u00a6\u0002\u0a35\u016f\u0003\u0002\u0002\u0002",
    "\u0a36\u0a38\b\u00b9\u0001\u0002\u0a37\u0a39\u00078\u0002\u0002\u0a38",
    "\u0a37\u0003\u0002\u0002\u0002\u0a38\u0a39\u0003\u0002\u0002\u0002\u0a39",
    "\u0a3a\u0003\u0002\u0002\u0002\u0a3a\u0a3b\u0007\u001a\u0002\u0002\u0a3b",
    "\u0a3c\u0005\u0170\u00b9\u0002\u0a3c\u0a3d\u0007\u001b\u0002\u0002\u0a3d",
    "\u0a40\u0003\u0002\u0002\u0002\u0a3e\u0a40\u0005\u0172\u00ba\u0002\u0a3f",
    "\u0a36\u0003\u0002\u0002\u0002\u0a3f\u0a3e\u0003\u0002\u0002\u0002\u0a40",
    "\u0a47\u0003\u0002\u0002\u0002\u0a41\u0a42\f\u0004\u0002\u0002\u0a42",
    "\u0a43\u0005\u017c\u00bf\u0002\u0a43\u0a44\u0005\u0170\u00b9\u0005\u0a44",
    "\u0a46\u0003\u0002\u0002\u0002\u0a45\u0a41\u0003\u0002\u0002\u0002\u0a46",
    "\u0a49\u0003\u0002\u0002\u0002\u0a47\u0a45\u0003\u0002\u0002\u0002\u0a47",
    "\u0a48\u0003\u0002\u0002\u0002\u0a48\u0171\u0003\u0002\u0002\u0002\u0a49",
    "\u0a47\u0003\u0002\u0002\u0002\u0a4a\u0a4e\u0005\u0174\u00bb\u0002\u0a4b",
    "\u0a4e\u0005\u017a\u00be\u0002\u0a4c\u0a4e\u0005\u0180\u00c1\u0002\u0a4d",
    "\u0a4a\u0003\u0002\u0002\u0002\u0a4d\u0a4b\u0003\u0002\u0002\u0002\u0a4d",
    "\u0a4c\u0003\u0002\u0002\u0002\u0a4e\u0173\u0003\u0002\u0002\u0002\u0a4f",
    "\u0a50\u0005\u0180\u00c1\u0002\u0a50\u0a52\u0007,\u0002\u0002\u0a51",
    "\u0a53\u00078\u0002\u0002\u0a52\u0a51\u0003\u0002\u0002\u0002\u0a52",
    "\u0a53\u0003\u0002\u0002\u0002\u0a53\u0a54\u0003\u0002\u0002\u0002\u0a54",
    "\u0a55\u0007\u0015\u0002\u0002\u0a55\u0a67\u0003\u0002\u0002\u0002\u0a56",
    "\u0a57\u0005\u0180\u00c1\u0002\u0a57\u0a58\u0007\u0131\u0002\u0002\u0a58",
    "\u0a59\u0005\u0180\u00c1\u0002\u0a59\u0a5a\u0007\u0129\u0002\u0002\u0a5a",
    "\u0a5b\u0005\u0180\u00c1\u0002\u0a5b\u0a67\u0003\u0002\u0002\u0002\u0a5c",
    "\u0a5e\u00078\u0002\u0002\u0a5d\u0a5c\u0003\u0002\u0002\u0002\u0a5d",
    "\u0a5e\u0003\u0002\u0002\u0002\u0a5e\u0a5f\u0003\u0002\u0002\u0002\u0a5f",
    "\u0a60\u0007?\u0002\u0002\u0a60\u0a61\u0007\u001a\u0002\u0002\u0a61",
    "\u0a62\u0005\u011a\u008e\u0002\u0a62\u0a63\u0007\u001b\u0002\u0002\u0a63",
    "\u0a67\u0003\u0002\u0002\u0002\u0a64\u0a67\u0005\u0176\u00bc\u0002\u0a65",
    "\u0a67\u0005\u0178\u00bd\u0002\u0a66\u0a4f\u0003\u0002\u0002\u0002\u0a66",
    "\u0a56\u0003\u0002\u0002\u0002\u0a66\u0a5d\u0003\u0002\u0002\u0002\u0a66",
    "\u0a64\u0003\u0002\u0002\u0002\u0a66\u0a65\u0003\u0002\u0002\u0002\u0a67",
    "\u0175\u0003\u0002\u0002\u0002\u0a68\u0a6a\u0005\u0180\u00c1\u0002\u0a69",
    "\u0a6b\u00078\u0002\u0002\u0a6a\u0a69\u0003\u0002\u0002\u0002\u0a6a",
    "\u0a6b\u0003\u0002\u0002\u0002\u0a6b\u0a6c\u0003\u0002\u0002\u0002\u0a6c",
    "\u0a6d\u0007l\u0002\u0002\u0a6d\u0a77\u0007\u001a\u0002\u0002\u0a6e",
    "\u0a73\u0005\u0180\u00c1\u0002\u0a6f\u0a70\u0007\u0017\u0002\u0002\u0a70",
    "\u0a72\u0005\u0180\u00c1\u0002\u0a71\u0a6f\u0003\u0002\u0002\u0002\u0a72",
    "\u0a75\u0003\u0002\u0002\u0002\u0a73\u0a71\u0003\u0002\u0002\u0002\u0a73",
    "\u0a74\u0003\u0002\u0002\u0002\u0a74\u0a78\u0003\u0002\u0002\u0002\u0a75",
    "\u0a73\u0003\u0002\u0002\u0002\u0a76\u0a78\u0005\u011a\u008e\u0002\u0a77",
    "\u0a6e\u0003\u0002\u0002\u0002\u0a77\u0a76\u0003\u0002\u0002\u0002\u0a78",
    "\u0a79\u0003\u0002\u0002\u0002\u0a79\u0a7a\u0007\u001b\u0002\u0002\u0a7a",
    "\u0177\u0003\u0002\u0002\u0002\u0a7b\u0a7c\u0007\u001a\u0002\u0002\u0a7c",
    "\u0a81\u0005\u0180\u00c1\u0002\u0a7d\u0a7e\u0007\u0017\u0002\u0002\u0a7e",
    "\u0a80\u0005\u0180\u00c1\u0002\u0a7f\u0a7d\u0003\u0002\u0002\u0002\u0a80",
    "\u0a83\u0003\u0002\u0002\u0002\u0a81\u0a7f\u0003\u0002\u0002\u0002\u0a81",
    "\u0a82\u0003\u0002\u0002\u0002\u0a82\u0a84\u0003\u0002\u0002\u0002\u0a83",
    "\u0a81\u0003\u0002\u0002\u0002\u0a84\u0a86\u0007\u001b\u0002\u0002\u0a85",
    "\u0a87\u00078\u0002\u0002\u0a86\u0a85\u0003\u0002\u0002\u0002\u0a86",
    "\u0a87\u0003\u0002\u0002\u0002\u0a87\u0a88\u0003\u0002\u0002\u0002\u0a88",
    "\u0a89\u0007l\u0002\u0002\u0a89\u0a8a\u0007\u001a\u0002\u0002\u0a8a",
    "\u0a8b\u0005\u011a\u008e\u0002\u0a8b\u0a8c\u0007\u001b\u0002\u0002\u0a8c",
    "\u0179\u0003\u0002\u0002\u0002\u0a8d\u0a8e\u0005\u0180\u00c1\u0002\u0a8e",
    "\u0a8f\u0005\u017e\u00c0\u0002\u0a8f\u0a90\u0005\u0180\u00c1\u0002\u0a90",
    "\u017b\u0003\u0002\u0002\u0002\u0a91\u0a92\t+\u0002\u0002\u0a92\u017d",
    "\u0003\u0002\u0002\u0002\u0a93\u0aa0\u0007\u0019\u0002\u0002\u0a94\u0aa0",
    "\u0007\u0132\u0002\u0002\u0a95\u0aa0\u0007\u0133\u0002\u0002\u0a96\u0aa0",
    "\u0007\u0134\u0002\u0002\u0a97\u0aa0\u0007\u010f\u0002\u0002\u0a98\u0aa0",
    "\u0007\u0135\u0002\u0002\u0a99\u0aa0\u0007\u0110\u0002\u0002\u0a9a\u0aa0",
    "\u0007\u0136\u0002\u0002\u0a9b\u0a9d\u00078\u0002\u0002\u0a9c\u0a9b",
    "\u0003\u0002\u0002\u0002\u0a9c\u0a9d\u0003\u0002\u0002\u0002\u0a9d\u0a9e",
    "\u0003\u0002\u0002\u0002\u0a9e\u0aa0\t,\u0002\u0002\u0a9f\u0a93\u0003",
    "\u0002\u0002\u0002\u0a9f\u0a94\u0003\u0002\u0002\u0002\u0a9f\u0a95\u0003",
    "\u0002\u0002\u0002\u0a9f\u0a96\u0003\u0002\u0002\u0002\u0a9f\u0a97\u0003",
    "\u0002\u0002\u0002\u0a9f\u0a98\u0003\u0002\u0002\u0002\u0a9f\u0a99\u0003",
    "\u0002\u0002\u0002\u0a9f\u0a9a\u0003\u0002\u0002\u0002\u0a9f\u0a9c\u0003",
    "\u0002\u0002\u0002\u0aa0\u017f\u0003\u0002\u0002\u0002\u0aa1\u0aa2\b",
    "\u00c1\u0001\u0002\u0aa2\u0aa3\u0007\u001a\u0002\u0002\u0aa3\u0aa4\u0005",
    "\u011a\u008e\u0002\u0aa4\u0aa5\u0007\u001b\u0002\u0002\u0aa5\u0ab3\u0003",
    "\u0002\u0002\u0002\u0aa6\u0aa7\u0007\u001a\u0002\u0002\u0aa7\u0aa8\u0005",
    "\u0180\u00c1\u0002\u0aa8\u0aa9\u0007\u001b\u0002\u0002\u0aa9\u0ab3\u0003",
    "\u0002\u0002\u0002\u0aaa\u0ab3\u0005\u0184\u00c3\u0002\u0aab\u0ab3\u0005",
    "\u0188\u00c5\u0002\u0aac\u0ab3\u0005\u018c\u00c7\u0002\u0aad\u0ab3\u0005",
    "\u0192\u00ca\u0002\u0aae\u0ab3\u0005\u0194\u00cb\u0002\u0aaf\u0ab3\u0005",
    "\u019c\u00cf\u0002\u0ab0\u0ab3\u0005\u019e\u00d0\u0002\u0ab1\u0ab3\u0005",
    "\u0182\u00c2\u0002\u0ab2\u0aa1\u0003\u0002\u0002\u0002\u0ab2\u0aa6\u0003",
    "\u0002\u0002\u0002\u0ab2\u0aaa\u0003\u0002\u0002\u0002\u0ab2\u0aab\u0003",
    "\u0002\u0002\u0002\u0ab2\u0aac\u0003\u0002\u0002\u0002\u0ab2\u0aad\u0003",
    "\u0002\u0002\u0002\u0ab2\u0aae\u0003\u0002\u0002\u0002\u0ab2\u0aaf\u0003",
    "\u0002\u0002\u0002\u0ab2\u0ab0\u0003\u0002\u0002\u0002\u0ab2\u0ab1\u0003",
    "\u0002\u0002\u0002\u0ab3\u0ac4\u0003\u0002\u0002\u0002\u0ab4\u0ab5\f",
    "\u0010\u0002\u0002\u0ab5\u0ab6\u0007\u0139\u0002\u0002\u0ab6\u0ac3\u0005",
    "\u0180\u00c1\u0011\u0ab7\u0ab8\f\u000f\u0002\u0002\u0ab8\u0ab9\u0007",
    "\u013a\u0002\u0002\u0ab9\u0ac3\u0005\u0180\u00c1\u0010\u0aba\u0abb\f",
    "\u000e\u0002\u0002\u0abb\u0abc\u0007\u013b\u0002\u0002\u0abc\u0ac3\u0005",
    "\u0180\u00c1\u000f\u0abd\u0abe\f\r\u0002\u0002\u0abe\u0abf\u0007\u013c",
    "\u0002\u0002\u0abf\u0ac3\u0005\u0180\u00c1\u000e\u0ac0\u0ac1\f\u0011",
    "\u0002\u0002\u0ac1\u0ac3\u0005\u0186\u00c4\u0002\u0ac2\u0ab4\u0003\u0002",
    "\u0002\u0002\u0ac2\u0ab7\u0003\u0002\u0002\u0002\u0ac2\u0aba\u0003\u0002",
    "\u0002\u0002\u0ac2\u0abd\u0003\u0002\u0002\u0002\u0ac2\u0ac0\u0003\u0002",
    "\u0002\u0002\u0ac3\u0ac6\u0003\u0002\u0002\u0002\u0ac4\u0ac2\u0003\u0002",
    "\u0002\u0002\u0ac4\u0ac5\u0003\u0002\u0002\u0002\u0ac5\u0181\u0003\u0002",
    "\u0002\u0002\u0ac6\u0ac4\u0003\u0002\u0002\u0002\u0ac7\u0ad0\u0005\u01b4",
    "\u00db\u0002\u0ac8\u0ad0\u0005\u01b6\u00dc\u0002\u0ac9\u0ad0\u0005\u01c0",
    "\u00e1\u0002\u0aca\u0ad0\u0005\u01b8\u00dd\u0002\u0acb\u0ad0\u0005\u01ba",
    "\u00de\u0002\u0acc\u0ad0\u0005\u01be\u00e0\u0002\u0acd\u0ad0\u0005\u01bc",
    "\u00df\u0002\u0ace\u0ad0\u0005\u01c2\u00e2\u0002\u0acf\u0ac7\u0003\u0002",
    "\u0002\u0002\u0acf\u0ac8\u0003\u0002\u0002\u0002\u0acf\u0ac9\u0003\u0002",
    "\u0002\u0002\u0acf\u0aca\u0003\u0002\u0002\u0002\u0acf\u0acb\u0003\u0002",
    "\u0002\u0002\u0acf\u0acc\u0003\u0002\u0002\u0002\u0acf\u0acd\u0003\u0002",
    "\u0002\u0002\u0acf\u0ace\u0003\u0002\u0002\u0002\u0ad0\u0183\u0003\u0002",
    "\u0002\u0002\u0ad1\u0ad2\u0007\u013d\u0002\u0002\u0ad2\u0ad3\u0005\u0180",
    "\u00c1\u0002\u0ad3\u0ad4\u0005\u0186\u00c4\u0002\u0ad4\u0185\u0003\u0002",
    "\u0002\u0002\u0ad5\u0ad6\t-\u0002\u0002\u0ad6\u0187\u0003\u0002\u0002",
    "\u0002\u0ad7\u0ad8\u0005\u018a\u00c6\u0002\u0ad8\u0ad9\t.\u0002\u0002",
    "\u0ad9\u0ade\u0005\u018a\u00c6\u0002\u0ada\u0adb\t.\u0002\u0002\u0adb",
    "\u0add\u0005\u018a\u00c6\u0002\u0adc\u0ada\u0003\u0002\u0002\u0002\u0add",
    "\u0ae0\u0003\u0002\u0002\u0002\u0ade\u0adc\u0003\u0002\u0002\u0002\u0ade",
    "\u0adf\u0003\u0002\u0002\u0002\u0adf\u0189\u0003\u0002\u0002\u0002\u0ae0",
    "\u0ade\u0003\u0002\u0002\u0002\u0ae1\u0ae2\u0007\u001a\u0002\u0002\u0ae2",
    "\u0ae3\u0005\u0180\u00c1\u0002\u0ae3\u0ae4\u0007\u001b\u0002\u0002\u0ae4",
    "\u0aeb\u0003\u0002\u0002\u0002\u0ae5\u0aeb\u0005\u018c\u00c7\u0002\u0ae6",
    "\u0aeb\u0005\u0194\u00cb\u0002\u0ae7\u0aeb\u0005\u019c\u00cf\u0002\u0ae8",
    "\u0aeb\u0005\u019e\u00d0\u0002\u0ae9\u0aeb\u0005\u0182\u00c2\u0002\u0aea",
    "\u0ae1\u0003\u0002\u0002\u0002\u0aea\u0ae5\u0003\u0002\u0002\u0002\u0aea",
    "\u0ae6\u0003\u0002\u0002\u0002\u0aea\u0ae7\u0003\u0002\u0002\u0002\u0aea",
    "\u0ae8\u0003\u0002\u0002\u0002\u0aea\u0ae9\u0003\u0002\u0002\u0002\u0aeb",
    "\u018b\u0003\u0002\u0002\u0002\u0aec\u0aef\u0005\u018e\u00c8\u0002\u0aed",
    "\u0aef\u0005\u0190\u00c9\u0002\u0aee\u0aec\u0003\u0002\u0002\u0002\u0aee",
    "\u0aed\u0003\u0002\u0002\u0002\u0aef\u018d\u0003\u0002\u0002\u0002\u0af0",
    "\u0af1\u0007\u0146\u0002\u0002\u0af1\u0af7\u0005\u0180\u00c1\u0002\u0af2",
    "\u0af3\u0007\u0012\u0002\u0002\u0af3\u0af4\u0005\u0180\u00c1\u0002\u0af4",
    "\u0af5\u0007\u0014\u0002\u0002\u0af5\u0af6\u0005\u0180\u00c1\u0002\u0af6",
    "\u0af8\u0003\u0002\u0002\u0002\u0af7\u0af2\u0003\u0002\u0002\u0002\u0af8",
    "\u0af9\u0003\u0002\u0002\u0002\u0af9\u0af7\u0003\u0002\u0002\u0002\u0af9",
    "\u0afa\u0003\u0002\u0002\u0002\u0afa\u0afd\u0003\u0002\u0002\u0002\u0afb",
    "\u0afc\u0007\u00ce\u0002\u0002\u0afc\u0afe\u0005\u0180\u00c1\u0002\u0afd",
    "\u0afb\u0003\u0002\u0002\u0002\u0afd\u0afe\u0003\u0002\u0002\u0002\u0afe",
    "\u0aff\u0003\u0002\u0002\u0002\u0aff\u0b00\u0007\u0010\u0002\u0002\u0b00",
    "\u018f\u0003\u0002\u0002\u0002\u0b01\u0b07\u0007\u0146\u0002\u0002\u0b02",
    "\u0b03\u0007\u0012\u0002\u0002\u0b03\u0b04\u0005\u0170\u00b9\u0002\u0b04",
    "\u0b05\u0007\u0014\u0002\u0002\u0b05\u0b06\u0005\u0180\u00c1\u0002\u0b06",
    "\u0b08\u0003\u0002\u0002\u0002\u0b07\u0b02\u0003\u0002\u0002\u0002\u0b08",
    "\u0b09\u0003\u0002\u0002\u0002\u0b09\u0b07\u0003\u0002\u0002\u0002\u0b09",
    "\u0b0a\u0003\u0002\u0002\u0002\u0b0a\u0b0d\u0003\u0002\u0002\u0002\u0b0b",
    "\u0b0c\u0007\u00ce\u0002\u0002\u0b0c\u0b0e\u0005\u0180\u00c1\u0002\u0b0d",
    "\u0b0b\u0003\u0002\u0002\u0002\u0b0d\u0b0e\u0003\u0002\u0002\u0002\u0b0e",
    "\u0b0f\u0003\u0002\u0002\u0002\u0b0f\u0b10\u0007\u0010\u0002\u0002\u0b10",
    "\u0191\u0003\u0002\u0002\u0002\u0b11\u0b12\u0005\u01b8\u00dd\u0002\u0b12",
    "\u0b13\u0007\u0006\u0002\u0002\u0b13\u0b14\t/\u0002\u0002\u0b14\u0193",
    "\u0003\u0002\u0002\u0002\u0b15\u0b16\u0007\u0149\u0002\u0002\u0b16\u0b18",
    "\u0007\u001a\u0002\u0002\u0b17\u0b19\u0005\u0196\u00cc\u0002\u0b18\u0b17",
    "\u0003\u0002\u0002\u0002\u0b18\u0b19\u0003\u0002\u0002\u0002\u0b19\u0b1a",
    "\u0003\u0002\u0002\u0002\u0b1a\u0b1b\u0005\u0180\u00c1\u0002\u0b1b\u0b1d",
    "\u0007\u001b\u0002\u0002\u0b1c\u0b1e\u0005\u0198\u00cd\u0002\u0b1d\u0b1c",
    "\u0003\u0002\u0002\u0002\u0b1d\u0b1e\u0003\u0002\u0002\u0002\u0b1e\u0bae",
    "\u0003\u0002\u0002\u0002\u0b1f\u0b20\u0007\u014a\u0002\u0002\u0b20\u0b26",
    "\u0007\u001a\u0002\u0002\u0b21\u0b23\u0005\u0196\u00cc\u0002\u0b22\u0b21",
    "\u0003\u0002\u0002\u0002\u0b22\u0b23\u0003\u0002\u0002\u0002\u0b23\u0b24",
    "\u0003\u0002\u0002\u0002\u0b24\u0b27\u0005\u0180\u00c1\u0002\u0b25\u0b27",
    "\u0007\b\u0002\u0002\u0b26\u0b22\u0003\u0002\u0002\u0002\u0b26\u0b25",
    "\u0003\u0002\u0002\u0002\u0b27\u0b28\u0003\u0002\u0002\u0002\u0b28\u0b2a",
    "\u0007\u001b\u0002\u0002\u0b29\u0b2b\u0005\u0198\u00cd\u0002\u0b2a\u0b29",
    "\u0003\u0002\u0002\u0002\u0b2a\u0b2b\u0003\u0002\u0002\u0002\u0b2b\u0bae",
    "\u0003\u0002\u0002\u0002\u0b2c\u0b2d\u0007\u014b\u0002\u0002\u0b2d\u0b33",
    "\u0007\u001a\u0002\u0002\u0b2e\u0b30\u0005\u0196\u00cc\u0002\u0b2f\u0b2e",
    "\u0003\u0002\u0002\u0002\u0b2f\u0b30\u0003\u0002\u0002\u0002\u0b30\u0b31",
    "\u0003\u0002\u0002\u0002\u0b31\u0b34\u0005\u0180\u00c1\u0002\u0b32\u0b34",
    "\u0007\b\u0002\u0002\u0b33\u0b2f\u0003\u0002\u0002\u0002\u0b33\u0b32",
    "\u0003\u0002\u0002\u0002\u0b34\u0b35\u0003\u0002\u0002\u0002\u0b35\u0b37",
    "\u0007\u001b\u0002\u0002\u0b36\u0b38\u0005\u0198\u00cd\u0002\u0b37\u0b36",
    "\u0003\u0002\u0002\u0002\u0b37\u0b38\u0003\u0002\u0002\u0002\u0b38\u0bae",
    "\u0003\u0002\u0002\u0002\u0b39\u0b3a\u0007\u014c\u0002\u0002\u0b3a\u0b3b",
    "\u0007\u001a\u0002\u0002\u0b3b\u0b3c\u0007\u001b\u0002\u0002\u0b3c\u0bae",
    "\u0005\u0198\u00cd\u0002\u0b3d\u0b3e\u0007\u014d\u0002\u0002\u0b3e\u0b3f",
    "\u0007\u001a\u0002\u0002\u0b3f\u0b40\u0007\u001b\u0002\u0002\u0b40\u0bae",
    "\u0005\u0198\u00cd\u0002\u0b41\u0b42\u0007\u014e\u0002\u0002\u0b42\u0b43",
    "\u0007\u001a\u0002\u0002\u0b43\u0b44\u0005\u0180\u00c1\u0002\u0b44\u0b45",
    "\u0007\u001b\u0002\u0002\u0b45\u0b46\u0005\u0198\u00cd\u0002\u0b46\u0bae",
    "\u0003\u0002\u0002\u0002\u0b47\u0b48\u0007\u014f\u0002\u0002\u0b48\u0b49",
    "\u0007\u001a\u0002\u0002\u0b49\u0b50\u0005\u0180\u00c1\u0002\u0b4a\u0b4b",
    "\u0007\u0017\u0002\u0002\u0b4b\u0b4e\u0005\u0180\u00c1\u0002\u0b4c\u0b4d",
    "\u0007\u0017\u0002\u0002\u0b4d\u0b4f\u0005\u0180\u00c1\u0002\u0b4e\u0b4c",
    "\u0003\u0002\u0002\u0002\u0b4e\u0b4f\u0003\u0002\u0002\u0002\u0b4f\u0b51",
    "\u0003\u0002\u0002\u0002\u0b50\u0b4a\u0003\u0002\u0002\u0002\u0b50\u0b51",
    "\u0003\u0002\u0002\u0002\u0b51\u0b52\u0003\u0002\u0002\u0002\u0b52\u0b53",
    "\u0007\u001b\u0002\u0002\u0b53\u0b54\u0005\u0198\u00cd\u0002\u0b54\u0bae",
    "\u0003\u0002\u0002\u0002\u0b55\u0b56\u0007\u0150\u0002\u0002\u0b56\u0b57",
    "\u0007\u001a\u0002\u0002\u0b57\u0b58\u0005\u0180\u00c1\u0002\u0b58\u0b59",
    "\u0007\u001b\u0002\u0002\u0b59\u0b5a\u0005\u0198\u00cd\u0002\u0b5a\u0bae",
    "\u0003\u0002\u0002\u0002\u0b5b\u0b5c\u0007\u0151\u0002\u0002\u0b5c\u0b5d",
    "\u0007\u001a\u0002\u0002\u0b5d\u0b64\u0005\u0180\u00c1\u0002\u0b5e\u0b5f",
    "\u0007\u0017\u0002\u0002\u0b5f\u0b62\u0005\u0180\u00c1\u0002\u0b60\u0b61",
    "\u0007\u0017\u0002\u0002\u0b61\u0b63\u0005\u0180\u00c1\u0002\u0b62\u0b60",
    "\u0003\u0002\u0002\u0002\u0b62\u0b63\u0003\u0002\u0002\u0002\u0b63\u0b65",
    "\u0003\u0002\u0002\u0002\u0b64\u0b5e\u0003\u0002\u0002\u0002\u0b64\u0b65",
    "\u0003\u0002\u0002\u0002\u0b65\u0b66\u0003\u0002\u0002\u0002\u0b66\u0b67",
    "\u0007\u001b\u0002\u0002\u0b67\u0b68\u0005\u0198\u00cd\u0002\u0b68\u0bae",
    "\u0003\u0002\u0002\u0002\u0b69\u0b6a\u0007\u00b3\u0002\u0002\u0b6a\u0b6c",
    "\u0007\u001a\u0002\u0002\u0b6b\u0b6d\u0005\u0196\u00cc\u0002\u0b6c\u0b6b",
    "\u0003\u0002\u0002\u0002\u0b6c\u0b6d\u0003\u0002\u0002\u0002\u0b6d\u0b6e",
    "\u0003\u0002\u0002\u0002\u0b6e\u0b6f\u0005\u0180\u00c1\u0002\u0b6f\u0b71",
    "\u0007\u001b\u0002\u0002\u0b70\u0b72\u0005\u0198\u00cd\u0002\u0b71\u0b70",
    "\u0003\u0002\u0002\u0002\u0b71\u0b72\u0003\u0002\u0002\u0002\u0b72\u0bae",
    "\u0003\u0002\u0002\u0002\u0b73\u0b74\u0007\u0152\u0002\u0002\u0b74\u0b76",
    "\u0007\u001a\u0002\u0002\u0b75\u0b77\u0005\u0196\u00cc\u0002\u0b76\u0b75",
    "\u0003\u0002\u0002\u0002\u0b76\u0b77\u0003\u0002\u0002\u0002\u0b77\u0b78",
    "\u0003\u0002\u0002\u0002\u0b78\u0b79\u0005\u0180\u00c1\u0002\u0b79\u0b7b",
    "\u0007\u001b\u0002\u0002\u0b7a\u0b7c\u0005\u0198\u00cd\u0002\u0b7b\u0b7a",
    "\u0003\u0002\u0002\u0002\u0b7b\u0b7c\u0003\u0002\u0002\u0002\u0b7c\u0bae",
    "\u0003\u0002\u0002\u0002\u0b7d\u0b7e\u0007\u0153\u0002\u0002\u0b7e\u0b7f",
    "\u0007\u001a\u0002\u0002\u0b7f\u0b80\u0007\u001b\u0002\u0002\u0b80\u0bae",
    "\u0005\u0198\u00cd\u0002\u0b81\u0b82\u0007\u0154\u0002\u0002\u0b82\u0b83",
    "\u0007\u001a\u0002\u0002\u0b83\u0b84\u0007\u001b\u0002\u0002\u0b84\u0bae",
    "\u0005\u0198\u00cd\u0002\u0b85\u0b86\u0007\u0155\u0002\u0002\u0b86\u0b88",
    "\u0007\u001a\u0002\u0002\u0b87\u0b89\u0005\u0196\u00cc\u0002\u0b88\u0b87",
    "\u0003\u0002\u0002\u0002\u0b88\u0b89\u0003\u0002\u0002\u0002\u0b89\u0b8a",
    "\u0003\u0002\u0002\u0002\u0b8a\u0b8b\u0005\u0180\u00c1\u0002\u0b8b\u0b8d",
    "\u0007\u001b\u0002\u0002\u0b8c\u0b8e\u0005\u0198\u00cd\u0002\u0b8d\u0b8c",
    "\u0003\u0002\u0002\u0002\u0b8d\u0b8e\u0003\u0002\u0002\u0002\u0b8e\u0bae",
    "\u0003\u0002\u0002\u0002\u0b8f\u0b90\u0007\u00e8\u0002\u0002\u0b90\u0b92",
    "\u0007\u001a\u0002\u0002\u0b91\u0b93\u0005\u0196\u00cc\u0002\u0b92\u0b91",
    "\u0003\u0002\u0002\u0002\u0b92\u0b93\u0003\u0002\u0002\u0002\u0b93\u0b94",
    "\u0003\u0002\u0002\u0002\u0b94\u0b95\u0005\u0180\u00c1\u0002\u0b95\u0b97",
    "\u0007\u001b\u0002\u0002\u0b96\u0b98\u0005\u0198\u00cd\u0002\u0b97\u0b96",
    "\u0003\u0002\u0002\u0002\u0b97\u0b98\u0003\u0002\u0002\u0002\u0b98\u0bae",
    "\u0003\u0002\u0002\u0002\u0b99\u0b9a\u0007\u0156\u0002\u0002\u0b9a\u0b9c",
    "\u0007\u001a\u0002\u0002\u0b9b\u0b9d\u0005\u0196\u00cc\u0002\u0b9c\u0b9b",
    "\u0003\u0002\u0002\u0002\u0b9c\u0b9d\u0003\u0002\u0002\u0002\u0b9d\u0b9e",
    "\u0003\u0002\u0002\u0002\u0b9e\u0b9f\u0005\u0180\u00c1\u0002\u0b9f\u0ba1",
    "\u0007\u001b\u0002\u0002\u0ba0\u0ba2\u0005\u0198\u00cd\u0002\u0ba1\u0ba0",
    "\u0003\u0002\u0002\u0002\u0ba1\u0ba2\u0003\u0002\u0002\u0002\u0ba2\u0bae",
    "\u0003\u0002\u0002\u0002\u0ba3\u0ba4\u0007\u0157\u0002\u0002\u0ba4\u0ba6",
    "\u0007\u001a\u0002\u0002\u0ba5\u0ba7\u0005\u0196\u00cc\u0002\u0ba6\u0ba5",
    "\u0003\u0002\u0002\u0002\u0ba6\u0ba7\u0003\u0002\u0002\u0002\u0ba7\u0ba8",
    "\u0003\u0002\u0002\u0002\u0ba8\u0ba9\u0005\u0180\u00c1\u0002\u0ba9\u0bab",
    "\u0007\u001b\u0002\u0002\u0baa\u0bac\u0005\u0198\u00cd\u0002\u0bab\u0baa",
    "\u0003\u0002\u0002\u0002\u0bab\u0bac\u0003\u0002\u0002\u0002\u0bac\u0bae",
    "\u0003\u0002\u0002\u0002\u0bad\u0b15\u0003\u0002\u0002\u0002\u0bad\u0b1f",
    "\u0003\u0002\u0002\u0002\u0bad\u0b2c\u0003\u0002\u0002\u0002\u0bad\u0b39",
    "\u0003\u0002\u0002\u0002\u0bad\u0b3d\u0003\u0002\u0002\u0002\u0bad\u0b41",
    "\u0003\u0002\u0002\u0002\u0bad\u0b47\u0003\u0002\u0002\u0002\u0bad\u0b55",
    "\u0003\u0002\u0002\u0002\u0bad\u0b5b\u0003\u0002\u0002\u0002\u0bad\u0b69",
    "\u0003\u0002\u0002\u0002\u0bad\u0b73\u0003\u0002\u0002\u0002\u0bad\u0b7d",
    "\u0003\u0002\u0002\u0002\u0bad\u0b81\u0003\u0002\u0002\u0002\u0bad\u0b85",
    "\u0003\u0002\u0002\u0002\u0bad\u0b8f\u0003\u0002\u0002\u0002\u0bad\u0b99",
    "\u0003\u0002\u0002\u0002\u0bad\u0ba3\u0003\u0002\u0002\u0002\u0bae\u0195",
    "\u0003\u0002\u0002\u0002\u0baf\u0bb0\t&\u0002\u0002\u0bb0\u0197\u0003",
    "\u0002\u0002\u0002\u0bb1\u0bb2\u0007\u0158\u0002\u0002\u0bb2\u0bb4\u0007",
    "\u001a\u0002\u0002\u0bb3\u0bb5\u0005\u019a\u00ce\u0002\u0bb4\u0bb3\u0003",
    "\u0002\u0002\u0002\u0bb4\u0bb5\u0003\u0002\u0002\u0002\u0bb5\u0bb7\u0003",
    "\u0002\u0002\u0002\u0bb6\u0bb8\u0005\u0154\u00ab\u0002\u0bb7\u0bb6\u0003",
    "\u0002\u0002\u0002\u0bb7\u0bb8\u0003\u0002\u0002\u0002\u0bb8\u0bb9\u0003",
    "\u0002\u0002\u0002\u0bb9\u0bba\u0007\u001b\u0002\u0002\u0bba\u0199\u0003",
    "\u0002\u0002\u0002\u0bbb\u0bbc\u0007\u0159\u0002\u0002\u0bbc\u0bbd\u0007",
    "o\u0002\u0002\u0bbd\u0bc2\u0005\u0180\u00c1\u0002\u0bbe\u0bbf\u0007",
    "\u0017\u0002\u0002\u0bbf\u0bc1\u0005\u0180\u00c1\u0002\u0bc0\u0bbe\u0003",
    "\u0002\u0002\u0002\u0bc1\u0bc4\u0003\u0002\u0002\u0002\u0bc2\u0bc0\u0003",
    "\u0002\u0002\u0002\u0bc2\u0bc3\u0003\u0002\u0002\u0002\u0bc3\u019b\u0003",
    "\u0002\u0002\u0002\u0bc4\u0bc2\u0003\u0002\u0002\u0002\u0bc5\u0c8e\u0007",
    "\u015a\u0002\u0002\u0bc6\u0bc7\u0007\u015b\u0002\u0002\u0bc7\u0bc8\u0007",
    "\u001a\u0002\u0002\u0bc8\u0bc9\u0005\u0180\u00c1\u0002\u0bc9\u0bca\u0007",
    ")\u0002\u0002\u0bca\u0bcc\u0005x=\u0002\u0bcb\u0bcd\u0005z>\u0002\u0bcc",
    "\u0bcb\u0003\u0002\u0002\u0002\u0bcc\u0bcd\u0003\u0002\u0002\u0002\u0bcd",
    "\u0bce\u0003\u0002\u0002\u0002\u0bce\u0bcf\u0007\u001b\u0002\u0002\u0bcf",
    "\u0c8e\u0003\u0002\u0002\u0002\u0bd0\u0bd1\u0007\u014a\u0002\u0002\u0bd1",
    "\u0bd4\u0007\u001a\u0002\u0002\u0bd2\u0bd5\u0005\u0180\u00c1\u0002\u0bd3",
    "\u0bd5\u0007\b\u0002\u0002\u0bd4\u0bd2\u0003\u0002\u0002\u0002\u0bd4",
    "\u0bd3\u0003\u0002\u0002\u0002\u0bd5\u0bd6\u0003\u0002\u0002\u0002\u0bd6",
    "\u0c8e\u0007\u001b\u0002\u0002\u0bd7\u0c8e\u0007\u015c\u0002\u0002\u0bd8",
    "\u0bd9\u0007\u00f7\u0002\u0002\u0bd9\u0c8e\u0007\u0091\u0002\u0002\u0bda",
    "\u0bde\u0007\u015d\u0002\u0002\u0bdb\u0bdc\u0007\u00f7\u0002\u0002\u0bdc",
    "\u0bde\u0007\u00ac\u0002\u0002\u0bdd\u0bda\u0003\u0002\u0002\u0002\u0bdd",
    "\u0bdb\u0003\u0002\u0002\u0002\u0bde\u0be3\u0003\u0002\u0002\u0002\u0bdf",
    "\u0be0\u0007\u001a\u0002\u0002\u0be0\u0be1\u0005\u0180\u00c1\u0002\u0be1",
    "\u0be2\u0007\u001b\u0002\u0002\u0be2\u0be4\u0003\u0002\u0002\u0002\u0be3",
    "\u0bdf\u0003\u0002\u0002\u0002\u0be3\u0be4\u0003\u0002\u0002\u0002\u0be4",
    "\u0c8e\u0003\u0002\u0002\u0002\u0be5\u0c8e\u0007\u015e\u0002\u0002\u0be6",
    "\u0be7\u0007\u00f7\u0002\u0002\u0be7\u0c8e\u0007\u015f\u0002\u0002\u0be8",
    "\u0be9\u0007\u0160\u0002\u0002\u0be9\u0bea\u0007\u001a\u0002\u0002\u0bea",
    "\u0bf7\u0005\u0180\u00c1\u0002\u0beb\u0bec\u0007\u0017\u0002\u0002\u0bec",
    "\u0bf4\u0005\u0180\u00c1\u0002\u0bed\u0bee\u0007\u0017\u0002\u0002\u0bee",
    "\u0bef\u0005\u0180\u00c1\u0002\u0bef\u0bf0\u0007\u0019\u0002\u0002\u0bf0",
    "\u0bf1\u0005\u0180\u00c1\u0002\u0bf1\u0bf3\u0003\u0002\u0002\u0002\u0bf2",
    "\u0bed\u0003\u0002\u0002\u0002\u0bf3\u0bf6\u0003\u0002\u0002\u0002\u0bf4",
    "\u0bf2\u0003\u0002\u0002\u0002\u0bf4\u0bf5\u0003\u0002\u0002\u0002\u0bf5",
    "\u0bf8\u0003\u0002\u0002\u0002\u0bf6\u0bf4\u0003\u0002\u0002\u0002\u0bf7",
    "\u0beb\u0003\u0002\u0002\u0002\u0bf7\u0bf8\u0003\u0002\u0002\u0002\u0bf8",
    "\u0bf9\u0003\u0002\u0002\u0002\u0bf9\u0bfa\u0007\u001b\u0002\u0002\u0bfa",
    "\u0c8e\u0003\u0002\u0002\u0002\u0bfb\u0bfc\u0007\u0161\u0002\u0002\u0bfc",
    "\u0bfd\u0007\u001a\u0002\u0002\u0bfd\u0c0a\u0005\u0180\u00c1\u0002\u0bfe",
    "\u0bff\u0007\u0017\u0002\u0002\u0bff\u0c07\u0005\u0180\u00c1\u0002\u0c00",
    "\u0c01\u0007\u0017\u0002\u0002\u0c01\u0c02\u0005\u0180\u00c1\u0002\u0c02",
    "\u0c03\u0007\u0019\u0002\u0002\u0c03\u0c04\u0005\u0180\u00c1\u0002\u0c04",
    "\u0c06\u0003\u0002\u0002\u0002\u0c05\u0c00\u0003\u0002\u0002\u0002\u0c06",
    "\u0c09\u0003\u0002\u0002\u0002\u0c07\u0c05\u0003\u0002\u0002\u0002\u0c07",
    "\u0c08\u0003\u0002\u0002\u0002\u0c08\u0c0b\u0003\u0002\u0002\u0002\u0c09",
    "\u0c07\u0003\u0002\u0002\u0002\u0c0a\u0bfe\u0003\u0002\u0002\u0002\u0c0a",
    "\u0c0b\u0003\u0002\u0002\u0002\u0c0b\u0c0c\u0003\u0002\u0002\u0002\u0c0c",
    "\u0c0d\u0007\u001b\u0002\u0002\u0c0d\u0c8e\u0003\u0002\u0002\u0002\u0c0e",
    "\u0c0f\u0007\u0162\u0002\u0002\u0c0f\u0c10\u0007\u001a\u0002\u0002\u0c10",
    "\u0c1d\u0005\u0180\u00c1\u0002\u0c11\u0c12\u0007\u0017\u0002\u0002\u0c12",
    "\u0c1a\u0005\u0180\u00c1\u0002\u0c13\u0c14\u0007\u0017\u0002\u0002\u0c14",
    "\u0c15\u0005\u0180\u00c1\u0002\u0c15\u0c16\u0007\u0019\u0002\u0002\u0c16",
    "\u0c17\u0005\u0180\u00c1\u0002\u0c17\u0c19\u0003\u0002\u0002\u0002\u0c18",
    "\u0c13\u0003\u0002\u0002\u0002\u0c19\u0c1c\u0003\u0002\u0002\u0002\u0c1a",
    "\u0c18\u0003\u0002\u0002\u0002\u0c1a\u0c1b\u0003\u0002\u0002\u0002\u0c1b",
    "\u0c1e\u0003\u0002\u0002\u0002\u0c1c\u0c1a\u0003\u0002\u0002\u0002\u0c1d",
    "\u0c11\u0003\u0002\u0002\u0002\u0c1d\u0c1e\u0003\u0002\u0002\u0002\u0c1e",
    "\u0c1f\u0003\u0002\u0002\u0002\u0c1f\u0c20\u0007\u001b\u0002\u0002\u0c20",
    "\u0c8e\u0003\u0002\u0002\u0002\u0c21\u0c22\u0007\u0163\u0002\u0002\u0c22",
    "\u0c23\u0007\u001a\u0002\u0002\u0c23\u0c30\u0005\u0180\u00c1\u0002\u0c24",
    "\u0c25\u0007\u0017\u0002\u0002\u0c25\u0c2d\u0005\u0180\u00c1\u0002\u0c26",
    "\u0c27\u0007\u0017\u0002\u0002\u0c27\u0c28\u0005\u0180\u00c1\u0002\u0c28",
    "\u0c29\u0007\u0019\u0002\u0002\u0c29\u0c2a\u0005\u0180\u00c1\u0002\u0c2a",
    "\u0c2c\u0003\u0002\u0002\u0002\u0c2b\u0c26\u0003\u0002\u0002\u0002\u0c2c",
    "\u0c2f\u0003\u0002\u0002\u0002\u0c2d\u0c2b\u0003\u0002\u0002\u0002\u0c2d",
    "\u0c2e\u0003\u0002\u0002\u0002\u0c2e\u0c31\u0003\u0002\u0002\u0002\u0c2f",
    "\u0c2d\u0003\u0002\u0002\u0002\u0c30\u0c24\u0003\u0002\u0002\u0002\u0c30",
    "\u0c31\u0003\u0002\u0002\u0002\u0c31\u0c32\u0003\u0002\u0002\u0002\u0c32",
    "\u0c33\u0007\u001b\u0002\u0002\u0c33\u0c8e\u0003\u0002\u0002\u0002\u0c34",
    "\u0c35\u0007\u0164\u0002\u0002\u0c35\u0c36\u0007\u001a\u0002\u0002\u0c36",
    "\u0c43\u0005\u0180\u00c1\u0002\u0c37\u0c38\u0007\u0017\u0002\u0002\u0c38",
    "\u0c40\u0005\u0180\u00c1\u0002\u0c39\u0c3a\u0007\u0017\u0002\u0002\u0c3a",
    "\u0c3b\u0005\u0180\u00c1\u0002\u0c3b\u0c3c\u0007\u0019\u0002\u0002\u0c3c",
    "\u0c3d\u0005\u0180\u00c1\u0002\u0c3d\u0c3f\u0003\u0002\u0002\u0002\u0c3e",
    "\u0c39\u0003\u0002\u0002\u0002\u0c3f\u0c42\u0003\u0002\u0002\u0002\u0c40",
    "\u0c3e\u0003\u0002\u0002\u0002\u0c40\u0c41\u0003\u0002\u0002\u0002\u0c41",
    "\u0c44\u0003\u0002\u0002\u0002\u0c42\u0c40\u0003\u0002\u0002\u0002\u0c43",
    "\u0c37\u0003\u0002\u0002\u0002\u0c43\u0c44\u0003\u0002\u0002\u0002\u0c44",
    "\u0c45\u0003\u0002\u0002\u0002\u0c45\u0c46\u0007\u001b\u0002\u0002\u0c46",
    "\u0c8e\u0003\u0002\u0002\u0002\u0c47\u0c48\u0007\u0165\u0002\u0002\u0c48",
    "\u0c49\u0007\u001a\u0002\u0002\u0c49\u0c56\u0005\u0180\u00c1\u0002\u0c4a",
    "\u0c4b\u0007\u0017\u0002\u0002\u0c4b\u0c53\u0005\u0180\u00c1\u0002\u0c4c",
    "\u0c4d\u0007\u0017\u0002\u0002\u0c4d\u0c4e\u0005\u0180\u00c1\u0002\u0c4e",
    "\u0c4f\u0007\u0019\u0002\u0002\u0c4f\u0c50\u0005\u0180\u00c1\u0002\u0c50",
    "\u0c52\u0003\u0002\u0002\u0002\u0c51\u0c4c\u0003\u0002\u0002\u0002\u0c52",
    "\u0c55\u0003\u0002\u0002\u0002\u0c53\u0c51\u0003\u0002\u0002\u0002\u0c53",
    "\u0c54\u0003\u0002\u0002\u0002\u0c54\u0c57\u0003\u0002\u0002\u0002\u0c55",
    "\u0c53\u0003\u0002\u0002\u0002\u0c56\u0c4a\u0003\u0002\u0002\u0002\u0c56",
    "\u0c57\u0003\u0002\u0002\u0002\u0c57\u0c58\u0003\u0002\u0002\u0002\u0c58",
    "\u0c59\u0007\u001b\u0002\u0002\u0c59\u0c8e\u0003\u0002\u0002\u0002\u0c5a",
    "\u0c5b\u0007\u0166\u0002\u0002\u0c5b\u0c5c\u0007\u001a\u0002\u0002\u0c5c",
    "\u0c64\u0005\u0180\u00c1\u0002\u0c5d\u0c5e\u0007\u0017\u0002\u0002\u0c5e",
    "\u0c5f\u0005\u0180\u00c1\u0002\u0c5f\u0c60\u0007\u0019\u0002\u0002\u0c60",
    "\u0c61\u0005\u0180\u00c1\u0002\u0c61\u0c63\u0003\u0002\u0002\u0002\u0c62",
    "\u0c5d\u0003\u0002\u0002\u0002\u0c63\u0c66\u0003\u0002\u0002\u0002\u0c64",
    "\u0c62\u0003\u0002\u0002\u0002\u0c64\u0c65\u0003\u0002\u0002\u0002\u0c65",
    "\u0c67\u0003\u0002\u0002\u0002\u0c66\u0c64\u0003\u0002\u0002\u0002\u0c67",
    "\u0c68\u0007\u001b\u0002\u0002\u0c68\u0c8e\u0003\u0002\u0002\u0002\u0c69",
    "\u0c6a\u0007\u0167\u0002\u0002\u0c6a\u0c6b\u0007\u001a\u0002\u0002\u0c6b",
    "\u0c71\u0005\u0180\u00c1\u0002\u0c6c\u0c6d\u0007\u0017\u0002\u0002\u0c6d",
    "\u0c6e\u0005\u0180\u00c1\u0002\u0c6e\u0c6f\u0007\u0019\u0002\u0002\u0c6f",
    "\u0c70\u0005\u0180\u00c1\u0002\u0c70\u0c72\u0003\u0002\u0002\u0002\u0c71",
    "\u0c6c\u0003\u0002\u0002\u0002\u0c72\u0c73\u0003\u0002\u0002\u0002\u0c73",
    "\u0c71\u0003\u0002\u0002\u0002\u0c73\u0c74\u0003\u0002\u0002\u0002\u0c74",
    "\u0c77\u0003\u0002\u0002\u0002\u0c75\u0c76\u0007\u0017\u0002\u0002\u0c76",
    "\u0c78\u0005\u0180\u00c1\u0002\u0c77\u0c75\u0003\u0002\u0002\u0002\u0c77",
    "\u0c78\u0003\u0002\u0002\u0002\u0c78\u0c79\u0003\u0002\u0002\u0002\u0c79",
    "\u0c7a\u0007\u001b\u0002\u0002\u0c7a\u0c8e\u0003\u0002\u0002\u0002\u0c7b",
    "\u0c7c\u0007\u0168\u0002\u0002\u0c7c\u0c7d\u0007\u001a\u0002\u0002\u0c7d",
    "\u0c7e\u0005\u0180\u00c1\u0002\u0c7e\u0c7f\u0007\u001b\u0002\u0002\u0c7f",
    "\u0c8e\u0003\u0002\u0002\u0002\u0c80\u0c81\u0007\u0169\u0002\u0002\u0c81",
    "\u0c82\u0007\u001a\u0002\u0002\u0c82\u0c83\u0005\u0180\u00c1\u0002\u0c83",
    "\u0c84\u0007\u00e1\u0002\u0002\u0c84\u0c87\u0005\u0180\u00c1\u0002\u0c85",
    "\u0c86\u0007\u001e\u0002\u0002\u0c86\u0c88\u0005\u0180\u00c1\u0002\u0c87",
    "\u0c85\u0003\u0002\u0002\u0002\u0c87\u0c88\u0003\u0002\u0002\u0002\u0c88",
    "\u0c89\u0003\u0002\u0002\u0002\u0c89\u0c8a\u0007\u001b\u0002\u0002\u0c8a",
    "\u0c8e\u0003\u0002\u0002\u0002\u0c8b\u0c8e\u0007\u016a\u0002\u0002\u0c8c",
    "\u0c8e\u0007\u015f\u0002\u0002\u0c8d\u0bc5\u0003\u0002\u0002\u0002\u0c8d",
    "\u0bc6\u0003\u0002\u0002\u0002\u0c8d\u0bd0\u0003\u0002\u0002\u0002\u0c8d",
    "\u0bd7\u0003\u0002\u0002\u0002\u0c8d\u0bd8\u0003\u0002\u0002\u0002\u0c8d",
    "\u0bdd\u0003\u0002\u0002\u0002\u0c8d\u0be5\u0003\u0002\u0002\u0002\u0c8d",
    "\u0be6\u0003\u0002\u0002\u0002\u0c8d\u0be8\u0003\u0002\u0002\u0002\u0c8d",
    "\u0bfb\u0003\u0002\u0002\u0002\u0c8d\u0c0e\u0003\u0002\u0002\u0002\u0c8d",
    "\u0c21\u0003\u0002\u0002\u0002\u0c8d\u0c34\u0003\u0002\u0002\u0002\u0c8d",
    "\u0c47\u0003\u0002\u0002\u0002\u0c8d\u0c5a\u0003\u0002\u0002\u0002\u0c8d",
    "\u0c69\u0003\u0002\u0002\u0002\u0c8d\u0c7b\u0003\u0002\u0002\u0002\u0c8d",
    "\u0c80\u0003\u0002\u0002\u0002\u0c8d\u0c8b\u0003\u0002\u0002\u0002\u0c8d",
    "\u0c8c\u0003\u0002\u0002\u0002\u0c8e\u019d\u0003\u0002\u0002\u0002\u0c8f",
    "\u0c90\u0005\u01b8\u00dd\u0002\u0c90\u0c92\u0007\u001a\u0002\u0002\u0c91",
    "\u0c93\u0005\u01a0\u00d1\u0002\u0c92\u0c91\u0003\u0002\u0002\u0002\u0c92",
    "\u0c93\u0003\u0002\u0002\u0002\u0c93\u0c94\u0003\u0002\u0002\u0002\u0c94",
    "\u0c95\u0007\u001b\u0002\u0002\u0c95\u019f\u0003\u0002\u0002\u0002\u0c96",
    "\u0c9b\u0005\u01a2\u00d2\u0002\u0c97\u0c98\u0007\u0017\u0002\u0002\u0c98",
    "\u0c9a\u0005\u01a2\u00d2\u0002\u0c99\u0c97\u0003\u0002\u0002\u0002\u0c9a",
    "\u0c9d\u0003\u0002\u0002\u0002\u0c9b\u0c99\u0003\u0002\u0002\u0002\u0c9b",
    "\u0c9c\u0003\u0002\u0002\u0002\u0c9c\u01a1\u0003\u0002\u0002\u0002\u0c9d",
    "\u0c9b\u0003\u0002\u0002\u0002\u0c9e\u0ca4\u0006\u00d2\u000e\u0002\u0c9f",
    "\u0ca0\u0005\u01b8\u00dd\u0002\u0ca0\u0ca2\u0007\u0019\u0002\u0002\u0ca1",
    "\u0ca3\u0007\u0110\u0002\u0002\u0ca2\u0ca1\u0003\u0002\u0002\u0002\u0ca2",
    "\u0ca3\u0003\u0002\u0002\u0002\u0ca3\u0ca5\u0003\u0002\u0002\u0002\u0ca4",
    "\u0c9f\u0003\u0002\u0002\u0002\u0ca4\u0ca5\u0003\u0002\u0002\u0002\u0ca5",
    "\u0ca6\u0003\u0002\u0002\u0002\u0ca6\u0ca7\u0005\u0180\u00c1\u0002\u0ca7",
    "\u01a3\u0003\u0002\u0002\u0002\u0ca8\u0cab\u0005\u011a\u008e\u0002\u0ca9",
    "\u0cab\u0005\u0180\u00c1\u0002\u0caa\u0ca8\u0003\u0002\u0002\u0002\u0caa",
    "\u0ca9\u0003\u0002\u0002\u0002\u0cab\u01a5\u0003\u0002\u0002\u0002\u0cac",
    "\u0caf\u0005\u01b2\u00da\u0002\u0cad\u0caf\u0005\u0180\u00c1\u0002\u0cae",
    "\u0cac\u0003\u0002\u0002\u0002\u0cae\u0cad\u0003\u0002\u0002\u0002\u0caf",
    "\u01a7\u0003\u0002\u0002\u0002\u0cb0\u0cb4\u0007\u016b\u0002\u0002\u0cb1",
    "\u0cb3\u0005\u01aa\u00d6\u0002\u0cb2\u0cb1\u0003\u0002\u0002\u0002\u0cb3",
    "\u0cb6\u0003\u0002\u0002\u0002\u0cb4\u0cb2\u0003\u0002\u0002\u0002\u0cb4",
    "\u0cb5\u0003\u0002\u0002\u0002\u0cb5\u01a9\u0003\u0002\u0002\u0002\u0cb6",
    "\u0cb4\u0003\u0002\u0002\u0002\u0cb7\u0cb8\u0007\u013c\u0002\u0002\u0cb8",
    "\u0cb9\u0005\u01b8\u00dd\u0002\u0cb9\u0cba\u0005\u0180\u00c1\u0002\u0cba",
    "\u0cc4\u0003\u0002\u0002\u0002\u0cbb\u0cbc\u0007\u013c\u0002\u0002\u0cbc",
    "\u0cbd\u0005\u01b8\u00dd\u0002\u0cbd\u0cbe\u0007\u0013\u0002\u0002\u0cbe",
    "\u0cbf\u0007\u0019\u0002\u0002\u0cbf\u0cc0\u0005\u0180\u00c1\u0002\u0cc0",
    "\u0cc4\u0003\u0002\u0002\u0002\u0cc1\u0cc2\u0007\u013c\u0002\u0002\u0cc2",
    "\u0cc4\u0005\u01b8\u00dd\u0002\u0cc3\u0cb7\u0003\u0002\u0002\u0002\u0cc3",
    "\u0cbb\u0003\u0002\u0002\u0002\u0cc3\u0cc1\u0003\u0002\u0002\u0002\u0cc4",
    "\u01ab\u0003\u0002\u0002\u0002\u0cc5\u0cc6\u0007\t\u0002\u0002\u0cc6",
    "\u0cc7\u0005\u01ae\u00d8\u0002\u0cc7\u0cc8\u0007\n\u0002\u0002\u0cc8",
    "\u0ccb\u0003\u0002\u0002\u0002\u0cc9\u0ccb\u0005\u01b0\u00d9\u0002\u0cca",
    "\u0cc5\u0003\u0002\u0002\u0002\u0cca\u0cc9\u0003\u0002\u0002\u0002\u0ccb",
    "\u01ad\u0003\u0002\u0002\u0002\u0ccc\u0cce\u000b\u0002\u0002\u0002\u0ccd",
    "\u0ccc\u0003\u0002\u0002\u0002\u0cce\u0cd1\u0003\u0002\u0002\u0002\u0ccf",
    "\u0cd0\u0003\u0002\u0002\u0002\u0ccf\u0ccd\u0003\u0002\u0002\u0002\u0cd0",
    "\u01af\u0003\u0002\u0002\u0002\u0cd1\u0ccf\u0003\u0002\u0002\u0002\u0cd2",
    "\u0cd3\u0007\u016c\u0002\u0002\u0cd3\u0cd4\u0005\u0180\u00c1\u0002\u0cd4",
    "\u01b1\u0003\u0002\u0002\u0002\u0cd5\u0ce4\u0007\u016d\u0002\u0002\u0cd6",
    "\u0cda\u0007\u0005\u0002\u0002\u0cd7\u0cd8\u0007\u0007\u0002\u0002\u0cd8",
    "\u0cda\u0007\u0005\u0002\u0002\u0cd9\u0cd6\u0003\u0002\u0002\u0002\u0cd9",
    "\u0cd7\u0003\u0002\u0002\u0002\u0cd9\u0cda\u0003\u0002\u0002\u0002\u0cda",
    "\u0cdb\u0003\u0002\u0002\u0002\u0cdb\u0ce0\u0005\u01b8\u00dd\u0002\u0cdc",
    "\u0cdd\u0007\u0005\u0002\u0002\u0cdd\u0cdf\u0005\u01b8\u00dd\u0002\u0cde",
    "\u0cdc\u0003\u0002\u0002\u0002\u0cdf\u0ce2\u0003\u0002\u0002\u0002\u0ce0",
    "\u0cde\u0003\u0002\u0002\u0002\u0ce0\u0ce1\u0003\u0002\u0002\u0002\u0ce1",
    "\u0ce4\u0003\u0002\u0002\u0002\u0ce2\u0ce0\u0003\u0002\u0002\u0002\u0ce3",
    "\u0cd5\u0003\u0002\u0002\u0002\u0ce3\u0cd9\u0003\u0002\u0002\u0002\u0ce4",
    "\u01b3\u0003\u0002\u0002\u0002\u0ce5\u0ce6\u0007\u0091\u0002\u0002\u0ce6",
    "\u0ce7\u0005\u01ba\u00de\u0002\u0ce7\u01b5\u0003\u0002\u0002\u0002\u0ce8",
    "\u0ce9\u0007\u00ac\u0002\u0002\u0ce9\u0cea\u0005\u01ba\u00de\u0002\u0cea",
    "\u01b7\u0003\u0002\u0002\u0002\u0ceb\u0ced\u0007\u000b\u0002\u0002\u0cec",
    "\u0ceb\u0003\u0002\u0002\u0002\u0cec\u0ced\u0003\u0002\u0002\u0002\u0ced",
    "\u0cf0\u0003\u0002\u0002\u0002\u0cee\u0cf1\u0007\u0013\u0002\u0002\u0cef",
    "\u0cf1\u0005\u01c4\u00e3\u0002\u0cf0\u0cee\u0003\u0002\u0002\u0002\u0cf0",
    "\u0cef\u0003\u0002\u0002\u0002\u0cf1\u0cf9\u0003\u0002\u0002\u0002\u0cf2",
    "\u0cf5\u0007\u0007\u0002\u0002\u0cf3\u0cf6\u0007\u0013\u0002\u0002\u0cf4",
    "\u0cf6\u0005\u01c4\u00e3\u0002\u0cf5\u0cf3\u0003\u0002\u0002\u0002\u0cf5",
    "\u0cf4\u0003\u0002\u0002\u0002\u0cf6\u0cf8\u0003\u0002\u0002\u0002\u0cf7",
    "\u0cf2\u0003\u0002\u0002\u0002\u0cf8\u0cfb\u0003\u0002\u0002\u0002\u0cf9",
    "\u0cf7\u0003\u0002\u0002\u0002\u0cf9\u0cfa\u0003\u0002\u0002\u0002\u0cfa",
    "\u01b9\u0003\u0002\u0002\u0002\u0cfb\u0cf9\u0003\u0002\u0002\u0002\u0cfc",
    "\u0cff\u0007\u011a\u0002\u0002\u0cfd\u0cff\u0007\u016e\u0002\u0002\u0cfe",
    "\u0cfc\u0003\u0002\u0002\u0002\u0cfe\u0cfd\u0003\u0002\u0002\u0002\u0cff",
    "\u01bb\u0003\u0002\u0002\u0002\u0d00\u0d02\t0\u0002\u0002\u0d01\u0d00",
    "\u0003\u0002\u0002\u0002\u0d01\u0d02\u0003\u0002\u0002\u0002\u0d02\u0d03",
    "\u0003\u0002\u0002\u0002\u0d03\u0d04\u0007J\u0002\u0002\u0d04\u01bd",
    "\u0003\u0002\u0002\u0002\u0d05\u0d07\t0\u0002\u0002\u0d06\u0d05\u0003",
    "\u0002\u0002\u0002\u0d06\u0d07\u0003\u0002\u0002\u0002\u0d07\u0d08\u0003",
    "\u0002\u0002\u0002\u0d08\u0d09\u0007\u016f\u0002\u0002\u0d09\u01bf\u0003",
    "\u0002\u0002\u0002\u0d0a\u0d0b\t1\u0002\u0002\u0d0b\u01c1\u0003\u0002",
    "\u0002\u0002\u0d0c\u0d0d\u0007\u0015\u0002\u0002\u0d0d\u01c3\u0003\u0002",
    "\u0002\u0002\u0d0e\u0d0f\t2\u0002\u0002\u0d0f\u01c5\u0003\u0002\u0002",
    "\u0002\u01aa\u01cb\u01ce\u01d2\u01d5\u01da\u01e1\u01e7\u01e9\u01f2\u01f5",
    "\u01f7\u0236\u023e\u024e\u0255\u0258\u025d\u0261\u026a\u026f\u0277\u027c",
    "\u0285\u0291\u0296\u0299\u02a7\u02ae\u02b7\u02c8\u02cc\u02d4\u02df\u02e9",
    "\u02f1\u02f8\u02fc\u0300\u0305\u0309\u030e\u0312\u0316\u0320\u0324\u0329",
    "\u032e\u0332\u033f\u0344\u034a\u0353\u0357\u035f\u0362\u0367\u036c\u0373",
    "\u037c\u037f\u0386\u038c\u0391\u0397\u039c\u039f\u03a5\u03b3\u03bd\u03c3",
    "\u03c8\u03cd\u03d2\u03d6\u03db\u03de\u03e8\u03f4\u03fb\u03fe\u040a\u040f",
    "\u0414\u0417\u041e\u042a\u0437\u0439\u043e\u0441\u0450\u0456\u0461\u0464",
    "\u046e\u0475\u047b\u0483\u048d\u04a1\u04a7\u04ab\u04b0\u04b4\u04b9\u04bc",
    "\u04c1\u04c4\u04d0\u04d7\u04dc\u04e1\u04e5\u04ea\u04ed\u04f7\u0503\u050a",
    "\u0512\u0521\u0540\u0542\u0547\u054b\u0550\u0557\u055a\u055d\u0562\u0566",
    "\u0568\u056f\u0575\u057c\u0582\u0585\u058a\u058e\u0591\u0598\u059e\u05a1",
    "\u05ab\u05b4\u05bb\u05c2\u05c4\u05ca\u05cd\u05d8\u05e1\u05e7\u05ed\u05f0",
    "\u05f5\u05f8\u05fb\u05fe\u0601\u0607\u0611\u061c\u061f\u0626\u062b\u0630",
    "\u0634\u063c\u0640\u0645\u0649\u064b\u0650\u0658\u065d\u0663\u066a\u066d",
    "\u0674\u067c\u0684\u0687\u068a\u068f\u0698\u069c\u06a6\u06b9\u06c0\u06c2",
    "\u06c6\u06ca\u06d2\u06dd\u06e6\u06ee\u06f6\u06fa\u0702\u0714\u0722\u0729",
    "\u072d\u0734\u0736\u073a\u0743\u074b\u0754\u0764\u076a\u076e\u0778\u0780",
    "\u0789\u078d\u0793\u0798\u079c\u07a6\u07ac\u07b0\u07bc\u07c3\u07d3\u07da",
    "\u07e4\u07e7\u07eb\u07f2\u07f9\u07fb\u07ff\u0803\u0808\u080b\u080f\u0812",
    "\u081d\u0820\u082b\u0831\u0835\u0837\u083b\u0844\u084b\u084f\u0853\u085a",
    "\u085e\u0866\u086c\u0870\u087b\u0882\u088f\u0897\u089b\u08a5\u08aa\u08b7",
    "\u08c2\u08ca\u08ce\u08d2\u08d6\u08d8\u08dd\u08e0\u08e3\u08e6\u08ea\u08ed",
    "\u08f0\u08f3\u08f6\u08fd\u0908\u090c\u090f\u0913\u091a\u091e\u0928\u0930",
    "\u0936\u093a\u0940\u0949\u094c\u0951\u0954\u095e\u0963\u096c\u0971\u0975",
    "\u097e\u0982\u0990\u099d\u09a2\u09a6\u09ac\u09b7\u09b9\u09c0\u09c3\u09ca",
    "\u09cf\u09d5\u09d8\u09db\u09ea\u09f1\u09f4\u09f7\u09fb\u0a00\u0a06\u0a0a",
    "\u0a15\u0a19\u0a1c\u0a20\u0a24\u0a28\u0a2c\u0a32\u0a38\u0a3f\u0a47\u0a4d",
    "\u0a52\u0a5d\u0a66\u0a6a\u0a73\u0a77\u0a81\u0a86\u0a9c\u0a9f\u0ab2\u0ac2",
    "\u0ac4\u0acf\u0ade\u0aea\u0aee\u0af9\u0afd\u0b09\u0b0d\u0b18\u0b1d\u0b22",
    "\u0b26\u0b2a\u0b2f\u0b33\u0b37\u0b4e\u0b50\u0b62\u0b64\u0b6c\u0b71\u0b76",
    "\u0b7b\u0b88\u0b8d\u0b92\u0b97\u0b9c\u0ba1\u0ba6\u0bab\u0bad\u0bb4\u0bb7",
    "\u0bc2\u0bcc\u0bd4\u0bdd\u0be3\u0bf4\u0bf7\u0c07\u0c0a\u0c1a\u0c1d\u0c2d",
    "\u0c30\u0c40\u0c43\u0c53\u0c56\u0c64\u0c73\u0c77\u0c87\u0c8d\u0c92\u0c9b",
    "\u0ca2\u0ca4\u0caa\u0cae\u0cb4\u0cc3\u0cca\u0ccf\u0cd9\u0ce0\u0ce3\u0cec",
    "\u0cf0\u0cf5\u0cf9\u0cfe\u0d01\u0d06"].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, "'@'", "'#'", "'/'", "'%'", "'.'", "'*'", "'!'", 
                     "';'", "'-'", "'+'" ];

var symbolicNames = [ null, null, null, null, null, null, null, null, null, 
                      null, null, "T_GO", "T_BEGIN", "T_SEMICOLON", "T_END", 
                      "T_EXCEPTION", "T_WHEN", "L_ID", "T_THEN", "T_NULL", 
                      "T_SET", "T_COMMA", "T_COLON", "T_EQUAL", "T_OPEN_P", 
                      "T_CLOSE_P", "T_ALLOCATE", "T_CURSOR", "T_FOR", "T_RESULT", 
                      "T_PROCEDURE", "T_ASSOCIATE", "T_LOCATOR", "T_LOCATORS", 
                      "T_WITH", "T_TRANSACTION", "T_BREAK", "T_CALL", "T_DECLARE", 
                      "T_AS", "T_CONSTANT", "T_CONDITION", "T_IS", "T_RETURN", 
                      "T_ONLY", "T_TO", "T_CALLER", "T_CLIENT", "T_WITHOUT", 
                      "T_CONTINUE", "T_EXIT", "T_HANDLER", "T_SQLEXCEPTION", 
                      "T_SQLWARNING", "T_NOT", "T_FOUND", "T_GLOBAL", "T_TEMPORARY", 
                      "T_TABLE", "T_CREATE", "T_IF", "T_EXISTS", "T_LOCAL", 
                      "T_MULTISET", "T_VOLATILE", "T_LIKE", "T_CONSTRAINT", 
                      "T_PRIMARY", "T_KEY", "T_UNIQUE", "T_REFERENCES", 
                      "T_IDENTITY", "L_INT", "T_AUTO_INCREMENT", "T_ENABLE", 
                      "T_CLUSTERED", "T_ASC", "T_DESC", "T_FOREIGN", "T_ON", 
                      "T_UPDATE", "T_DELETE", "T_NO", "T_ACTION", "T_RESTRICT", 
                      "T_DEFAULT", "T_CASCADE", "T_LOG", "T_FALLBACK", "T_COMMIT", 
                      "T_PRESERVE", "T_ROWS", "T_SEGMENT", "T_CREATION", 
                      "T_IMMEDIATE", "T_DEFERRED", "T_PCTFREE", "T_PCTUSED", 
                      "T_INITRANS", "T_MAXTRANS", "T_NOCOMPRESS", "T_LOGGING", 
                      "T_NOLOGGING", "T_STORAGE", "T_TABLESPACE", "T_INDEX", 
                      "T_IN", "T_REPLACE", "T_DISTRIBUTE", "T_BY", "T_HASH", 
                      "T_LOGGED", "T_COMPRESS", "T_YES", "T_DEFINITION", 
                      "T_DROP", "T_DATA", "T_STORED", "T_ROW", "T_FORMAT", 
                      "T_DELIMITED", "T_FIELDS", "T_TERMINATED", "T_ESCAPED", 
                      "T_COLLECTION", "T_ITEMS", "T_MAP", "T_KEYS", "T_LINES", 
                      "T_DEFINED", "T_TEXTIMAGE_ON", "T_COMMENT", "T_CHARACTER", 
                      "T_CHARSET", "T_ENGINE", "T_ALTER", "T_ADD2", "T_CHAR", 
                      "T_BIGINT", "T_BINARY_DOUBLE", "T_BINARY_FLOAT", "T_BINARY_INTEGER", 
                      "T_BIT", "T_DATE", "T_DATETIME", "T_DEC", "T_DECIMAL", 
                      "T_DOUBLE", "T_PRECISION", "T_FLOAT", "T_INT", "T_INT2", 
                      "T_INT4", "T_INT8", "T_INTEGER", "T_NCHAR", "T_NVARCHAR", 
                      "T_NUMBER", "T_NUMERIC", "T_PLS_INTEGER", "T_REAL", 
                      "T_RESULT_SET_LOCATOR", "T_VARYING", "T_SIMPLE_FLOAT", 
                      "T_SIMPLE_DOUBLE", "T_SIMPLE_INTEGER", "T_SMALLINT", 
                      "T_SMALLDATETIME", "T_STRING", "T_SYS_REFCURSOR", 
                      "T_TIMESTAMP", "T_TINYINT", "T_VARCHAR", "T_VARCHAR2", 
                      "T_XML", "T_TYPE", "T_ROWTYPE", "T_MAX", "T_BYTE", 
                      "T_CASESPECIFIC", "T_CS", "T_DATABASE", "T_SCHEMA", 
                      "T_LOCATION", "T_OR", "T_FUNCTION", "T_RETURNS", "T_PACKAGE", 
                      "T_PROC", "T_BODY", "T_OUT", "T_INOUT", "T_LANGUAGE", 
                      "T_SQL", "T_SECURITY", "T_CREATOR", "T_DEFINER", "T_INVOKER", 
                      "T_OWNER", "T_DYNAMIC", "T_SETS", "T_EXEC", "T_EXECUTE", 
                      "T_INTO", "T_ELSE", "T_ELSIF", "T_ELSEIF", "T_INCLUDE", 
                      "T_INSERT", "T_OVERWRITE", "T_VALUES", "T_DIRECTORY", 
                      "T_GET", "T_DIAGNOSTICS", "T_MESSAGE_TEXT", "T_ROW_COUNT", 
                      "T_GRANT", "T_ROLE", "T_LEAVE", "T_OBJECT", "T_AT", 
                      "T_OPEN", "T_FETCH", "T_FROM", "T_COLLECT", "T_STATISTICS", 
                      "T_STATS", "T_COLUMN", "T_CLOSE", "T_CMP", "T_SUM", 
                      "T_COPY", "T_HDFS", "T_BATCHSIZE", "T_DELIMITER", 
                      "T_SQLINSERT", "T_IGNORE", "T_WORK", "T_PRINT", "T_QUIT", 
                      "T_RAISE", "T_RESIGNAL", "T_SQLSTATE", "T_VALUE", 
                      "T_ROLLBACK", "T_CURRENT", "T_CURRENT_SCHEMA", "T_ANSI_NULLS", 
                      "T_ANSI_PADDING", "T_NOCOUNT", "T_QUOTED_IDENTIFIER", 
                      "T_XACT_ABORT", "T_OFF", "T_QUERY_BAND", "T_NONE", 
                      "T_SESSION", "T_SIGNAL", "T_SUMMARY", "T_TOP", "T_LIMIT", 
                      "T_TRUNCATE", "T_USE", "T_WHILE", "T_DO", "T_LOOP", 
                      "T_REVERSE", "T_DOT2", "T_STEP", "L_LABEL", "T_LESS", 
                      "T_GREATER", "T_USING", "T_UNION", "T_ALL", "T_EXCEPT", 
                      "T_INTERSECT", "T_SELECT", "T_SEL", "T_DISTINCT", 
                      "T_TITLE", "L_S_STRING", "T_INNER", "T_JOIN", "T_LEFT", 
                      "T_RIGHT", "T_FULL", "T_OUTER", "T_WHERE", "T_GROUP", 
                      "T_HAVING", "T_QUALIFY", "T_ORDER", "T_RR", "T_RS", 
                      "T_UR", "T_AND", "T_KEEP", "T_EXCLUSIVE", "T_SHARE", 
                      "T_LOCKS", "T_MERGE", "T_MATCHED", "T_DESCRIBE", "T_BETWEEN", 
                      "T_EQUAL2", "T_NOTEQUAL", "T_NOTEQUAL2", "T_LESSEQUAL", 
                      "T_GREATEREQUAL", "T_RLIKE", "T_REGEXP", "T_MUL", 
                      "T_DIV", "T_ADD", "T_SUB", "T_INTERVAL", "T_DAY", 
                      "T_DAYS", "T_MICROSECOND", "T_MICROSECONDS", "T_SECOND", 
                      "T_SECONDS", "T_PIPE", "T_CONCAT", "T_CASE", "T_ISOPEN", 
                      "T_NOTFOUND", "T_AVG", "T_COUNT", "T_COUNT_BIG", "T_CUME_DIST", 
                      "T_DENSE_RANK", "T_FIRST_VALUE", "T_LAG", "T_LAST_VALUE", 
                      "T_LEAD", "T_MIN", "T_RANK", "T_ROW_NUMBER", "T_STDEV", 
                      "T_VAR", "T_VARIANCE", "T_OVER", "T_PARTITION", "T_ACTIVITY_COUNT", 
                      "T_CAST", "T_CURRENT_DATE", "T_CURRENT_TIMESTAMP", 
                      "T_CURRENT_USER", "T_USER", "T_MAX_PART_STRING", "T_MIN_PART_STRING", 
                      "T_MAX_PART_INT", "T_MIN_PART_INT", "T_MAX_PART_DATE", 
                      "T_MIN_PART_DATE", "T_PART_COUNT", "T_PART_LOC", "T_TRIM", 
                      "T_SUBSTRING", "T_SYSDATE", "T_HIVE", "T_HOST", "L_FILE", 
                      "L_D_STRING", "L_DEC", "T_TRUE", "T_FALSE", "T_DIR", 
                      "T_FILE", "T_FILES", "T_NEW", "T_PWD", "T_SESSIONS", 
                      "T_SUBDIR" ];

var ruleNames =  [ "program", "block", "begin_end_block", "single_block_stmt", 
                   "block_end", "proc_block", "stmt", "semicolon_stmt", 
                   "exception_block", "exception_block_item", "null_stmt", 
                   "expr_stmt", "assignment_stmt", "assignment_stmt_item", 
                   "assignment_stmt_single_item", "assignment_stmt_multiple_item", 
                   "assignment_stmt_select_item", "allocate_cursor_stmt", 
                   "associate_locator_stmt", "begin_transaction_stmt", "break_stmt", 
                   "call_stmt", "declare_stmt", "declare_block", "declare_block_inplace", 
                   "declare_stmt_item", "declare_var_item", "declare_condition_item", 
                   "declare_cursor_item", "cursor_with_return", "cursor_without_return", 
                   "declare_handler_item", "declare_temporary_table_item", 
                   "create_table_stmt", "create_local_temp_table_stmt", 
                   "create_table_definition", "create_table_columns", "create_table_columns_item", 
                   "column_name", "create_table_column_inline_cons", "create_table_column_cons", 
                   "create_table_fk_action", "create_table_preoptions", 
                   "create_table_preoptions_item", "create_table_preoptions_td_item", 
                   "create_table_options", "create_table_options_item", 
                   "create_table_options_ora_item", "create_table_options_db2_item", 
                   "create_table_options_td_item", "create_table_options_hive_item", 
                   "create_table_hive_row_format", "create_table_hive_row_format_fields", 
                   "create_table_options_mssql_item", "create_table_options_mysql_item", 
                   "alter_table_stmt", "alter_table_item", "alter_table_add_constraint", 
                   "alter_table_add_constraint_item", "dtype", "dtype_len", 
                   "dtype_attr", "dtype_default", "create_database_stmt", 
                   "create_database_option", "create_function_stmt", "create_function_return", 
                   "create_package_stmt", "package_spec", "package_spec_item", 
                   "create_package_body_stmt", "package_body", "package_body_item", 
                   "create_procedure_stmt", "create_routine_params", "create_routine_param_item", 
                   "create_routine_options", "create_routine_option", "drop_stmt", 
                   "end_transaction_stmt", "exec_stmt", "if_stmt", "if_plsql_stmt", 
                   "if_tsql_stmt", "if_bteq_stmt", "elseif_block", "else_block", 
                   "include_stmt", "insert_stmt", "insert_stmt_cols", "insert_stmt_rows", 
                   "insert_stmt_row", "insert_directory_stmt", "exit_stmt", 
                   "get_diag_stmt", "get_diag_stmt_item", "get_diag_stmt_exception_item", 
                   "get_diag_stmt_rowcount_item", "grant_stmt", "grant_stmt_item", 
                   "leave_stmt", "map_object_stmt", "open_stmt", "fetch_stmt", 
                   "collect_stats_stmt", "collect_stats_clause", "close_stmt", 
                   "cmp_stmt", "cmp_source", "copy_from_local_stmt", "copy_stmt", 
                   "copy_source", "copy_target", "copy_option", "copy_file_option", 
                   "commit_stmt", "create_index_stmt", "create_index_col", 
                   "index_storage_clause", "index_mssql_storage_clause", 
                   "print_stmt", "quit_stmt", "raise_stmt", "resignal_stmt", 
                   "return_stmt", "rollback_stmt", "set_session_option", 
                   "set_current_schema_option", "set_mssql_session_option", 
                   "set_teradata_session_option", "signal_stmt", "summary_stmt", 
                   "truncate_stmt", "use_stmt", "values_into_stmt", "while_stmt", 
                   "for_cursor_stmt", "for_range_stmt", "label", "using_clause", 
                   "select_stmt", "cte_select_stmt", "cte_select_stmt_item", 
                   "cte_select_cols", "fullselect_stmt", "fullselect_stmt_item", 
                   "fullselect_set_clause", "subselect_stmt", "select_list", 
                   "select_list_set", "select_list_limit", "select_list_item", 
                   "select_list_alias", "select_list_asterisk", "into_clause", 
                   "from_clause", "from_table_clause", "from_table_name_clause", 
                   "from_subselect_clause", "from_join_clause", "from_join_type_clause", 
                   "from_table_values_clause", "from_table_values_row", 
                   "from_alias_clause", "table_name", "where_clause", "group_by_clause", 
                   "having_clause", "qualify_clause", "order_by_clause", 
                   "select_options", "select_options_item", "update_stmt", 
                   "update_assignment", "update_table", "update_upsert", 
                   "merge_stmt", "merge_table", "merge_condition", "merge_action", 
                   "delete_stmt", "delete_alias", "describe_stmt", "bool_expr", 
                   "bool_expr_atom", "bool_expr_unary", "bool_expr_single_in", 
                   "bool_expr_multi_in", "bool_expr_binary", "bool_expr_logical_operator", 
                   "bool_expr_binary_operator", "expr", "expr_atom", "expr_interval", 
                   "interval_item", "expr_concat", "expr_concat_item", "expr_case", 
                   "expr_case_simple", "expr_case_searched", "expr_cursor_attribute", 
                   "expr_agg_window_func", "expr_func_all_distinct", "expr_func_over_clause", 
                   "expr_func_partition_by_clause", "expr_spec_func", "expr_func", 
                   "expr_func_params", "func_param", "expr_select", "expr_file", 
                   "hive", "hive_item", "host", "host_cmd", "host_stmt", 
                   "file_name", "date_literal", "timestamp_literal", "ident", 
                   "string", "int_number", "dec_number", "bool_literal", 
                   "null_const", "non_reserved_words" ];

function HiveSqlParser (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;
}

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

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

HiveSqlParser.EOF = antlr4.Token.EOF;
HiveSqlParser.T__0 = 1;
HiveSqlParser.T__1 = 2;
HiveSqlParser.T__2 = 3;
HiveSqlParser.T__3 = 4;
HiveSqlParser.T__4 = 5;
HiveSqlParser.T__5 = 6;
HiveSqlParser.T__6 = 7;
HiveSqlParser.T__7 = 8;
HiveSqlParser.T__8 = 9;
HiveSqlParser.T__9 = 10;
HiveSqlParser.T_GO = 11;
HiveSqlParser.T_BEGIN = 12;
HiveSqlParser.T_SEMICOLON = 13;
HiveSqlParser.T_END = 14;
HiveSqlParser.T_EXCEPTION = 15;
HiveSqlParser.T_WHEN = 16;
HiveSqlParser.L_ID = 17;
HiveSqlParser.T_THEN = 18;
HiveSqlParser.T_NULL = 19;
HiveSqlParser.T_SET = 20;
HiveSqlParser.T_COMMA = 21;
HiveSqlParser.T_COLON = 22;
HiveSqlParser.T_EQUAL = 23;
HiveSqlParser.T_OPEN_P = 24;
HiveSqlParser.T_CLOSE_P = 25;
HiveSqlParser.T_ALLOCATE = 26;
HiveSqlParser.T_CURSOR = 27;
HiveSqlParser.T_FOR = 28;
HiveSqlParser.T_RESULT = 29;
HiveSqlParser.T_PROCEDURE = 30;
HiveSqlParser.T_ASSOCIATE = 31;
HiveSqlParser.T_LOCATOR = 32;
HiveSqlParser.T_LOCATORS = 33;
HiveSqlParser.T_WITH = 34;
HiveSqlParser.T_TRANSACTION = 35;
HiveSqlParser.T_BREAK = 36;
HiveSqlParser.T_CALL = 37;
HiveSqlParser.T_DECLARE = 38;
HiveSqlParser.T_AS = 39;
HiveSqlParser.T_CONSTANT = 40;
HiveSqlParser.T_CONDITION = 41;
HiveSqlParser.T_IS = 42;
HiveSqlParser.T_RETURN = 43;
HiveSqlParser.T_ONLY = 44;
HiveSqlParser.T_TO = 45;
HiveSqlParser.T_CALLER = 46;
HiveSqlParser.T_CLIENT = 47;
HiveSqlParser.T_WITHOUT = 48;
HiveSqlParser.T_CONTINUE = 49;
HiveSqlParser.T_EXIT = 50;
HiveSqlParser.T_HANDLER = 51;
HiveSqlParser.T_SQLEXCEPTION = 52;
HiveSqlParser.T_SQLWARNING = 53;
HiveSqlParser.T_NOT = 54;
HiveSqlParser.T_FOUND = 55;
HiveSqlParser.T_GLOBAL = 56;
HiveSqlParser.T_TEMPORARY = 57;
HiveSqlParser.T_TABLE = 58;
HiveSqlParser.T_CREATE = 59;
HiveSqlParser.T_IF = 60;
HiveSqlParser.T_EXISTS = 61;
HiveSqlParser.T_LOCAL = 62;
HiveSqlParser.T_MULTISET = 63;
HiveSqlParser.T_VOLATILE = 64;
HiveSqlParser.T_LIKE = 65;
HiveSqlParser.T_CONSTRAINT = 66;
HiveSqlParser.T_PRIMARY = 67;
HiveSqlParser.T_KEY = 68;
HiveSqlParser.T_UNIQUE = 69;
HiveSqlParser.T_REFERENCES = 70;
HiveSqlParser.T_IDENTITY = 71;
HiveSqlParser.L_INT = 72;
HiveSqlParser.T_AUTO_INCREMENT = 73;
HiveSqlParser.T_ENABLE = 74;
HiveSqlParser.T_CLUSTERED = 75;
HiveSqlParser.T_ASC = 76;
HiveSqlParser.T_DESC = 77;
HiveSqlParser.T_FOREIGN = 78;
HiveSqlParser.T_ON = 79;
HiveSqlParser.T_UPDATE = 80;
HiveSqlParser.T_DELETE = 81;
HiveSqlParser.T_NO = 82;
HiveSqlParser.T_ACTION = 83;
HiveSqlParser.T_RESTRICT = 84;
HiveSqlParser.T_DEFAULT = 85;
HiveSqlParser.T_CASCADE = 86;
HiveSqlParser.T_LOG = 87;
HiveSqlParser.T_FALLBACK = 88;
HiveSqlParser.T_COMMIT = 89;
HiveSqlParser.T_PRESERVE = 90;
HiveSqlParser.T_ROWS = 91;
HiveSqlParser.T_SEGMENT = 92;
HiveSqlParser.T_CREATION = 93;
HiveSqlParser.T_IMMEDIATE = 94;
HiveSqlParser.T_DEFERRED = 95;
HiveSqlParser.T_PCTFREE = 96;
HiveSqlParser.T_PCTUSED = 97;
HiveSqlParser.T_INITRANS = 98;
HiveSqlParser.T_MAXTRANS = 99;
HiveSqlParser.T_NOCOMPRESS = 100;
HiveSqlParser.T_LOGGING = 101;
HiveSqlParser.T_NOLOGGING = 102;
HiveSqlParser.T_STORAGE = 103;
HiveSqlParser.T_TABLESPACE = 104;
HiveSqlParser.T_INDEX = 105;
HiveSqlParser.T_IN = 106;
HiveSqlParser.T_REPLACE = 107;
HiveSqlParser.T_DISTRIBUTE = 108;
HiveSqlParser.T_BY = 109;
HiveSqlParser.T_HASH = 110;
HiveSqlParser.T_LOGGED = 111;
HiveSqlParser.T_COMPRESS = 112;
HiveSqlParser.T_YES = 113;
HiveSqlParser.T_DEFINITION = 114;
HiveSqlParser.T_DROP = 115;
HiveSqlParser.T_DATA = 116;
HiveSqlParser.T_STORED = 117;
HiveSqlParser.T_ROW = 118;
HiveSqlParser.T_FORMAT = 119;
HiveSqlParser.T_DELIMITED = 120;
HiveSqlParser.T_FIELDS = 121;
HiveSqlParser.T_TERMINATED = 122;
HiveSqlParser.T_ESCAPED = 123;
HiveSqlParser.T_COLLECTION = 124;
HiveSqlParser.T_ITEMS = 125;
HiveSqlParser.T_MAP = 126;
HiveSqlParser.T_KEYS = 127;
HiveSqlParser.T_LINES = 128;
HiveSqlParser.T_DEFINED = 129;
HiveSqlParser.T_TEXTIMAGE_ON = 130;
HiveSqlParser.T_COMMENT = 131;
HiveSqlParser.T_CHARACTER = 132;
HiveSqlParser.T_CHARSET = 133;
HiveSqlParser.T_ENGINE = 134;
HiveSqlParser.T_ALTER = 135;
HiveSqlParser.T_ADD2 = 136;
HiveSqlParser.T_CHAR = 137;
HiveSqlParser.T_BIGINT = 138;
HiveSqlParser.T_BINARY_DOUBLE = 139;
HiveSqlParser.T_BINARY_FLOAT = 140;
HiveSqlParser.T_BINARY_INTEGER = 141;
HiveSqlParser.T_BIT = 142;
HiveSqlParser.T_DATE = 143;
HiveSqlParser.T_DATETIME = 144;
HiveSqlParser.T_DEC = 145;
HiveSqlParser.T_DECIMAL = 146;
HiveSqlParser.T_DOUBLE = 147;
HiveSqlParser.T_PRECISION = 148;
HiveSqlParser.T_FLOAT = 149;
HiveSqlParser.T_INT = 150;
HiveSqlParser.T_INT2 = 151;
HiveSqlParser.T_INT4 = 152;
HiveSqlParser.T_INT8 = 153;
HiveSqlParser.T_INTEGER = 154;
HiveSqlParser.T_NCHAR = 155;
HiveSqlParser.T_NVARCHAR = 156;
HiveSqlParser.T_NUMBER = 157;
HiveSqlParser.T_NUMERIC = 158;
HiveSqlParser.T_PLS_INTEGER = 159;
HiveSqlParser.T_REAL = 160;
HiveSqlParser.T_RESULT_SET_LOCATOR = 161;
HiveSqlParser.T_VARYING = 162;
HiveSqlParser.T_SIMPLE_FLOAT = 163;
HiveSqlParser.T_SIMPLE_DOUBLE = 164;
HiveSqlParser.T_SIMPLE_INTEGER = 165;
HiveSqlParser.T_SMALLINT = 166;
HiveSqlParser.T_SMALLDATETIME = 167;
HiveSqlParser.T_STRING = 168;
HiveSqlParser.T_SYS_REFCURSOR = 169;
HiveSqlParser.T_TIMESTAMP = 170;
HiveSqlParser.T_TINYINT = 171;
HiveSqlParser.T_VARCHAR = 172;
HiveSqlParser.T_VARCHAR2 = 173;
HiveSqlParser.T_XML = 174;
HiveSqlParser.T_TYPE = 175;
HiveSqlParser.T_ROWTYPE = 176;
HiveSqlParser.T_MAX = 177;
HiveSqlParser.T_BYTE = 178;
HiveSqlParser.T_CASESPECIFIC = 179;
HiveSqlParser.T_CS = 180;
HiveSqlParser.T_DATABASE = 181;
HiveSqlParser.T_SCHEMA = 182;
HiveSqlParser.T_LOCATION = 183;
HiveSqlParser.T_OR = 184;
HiveSqlParser.T_FUNCTION = 185;
HiveSqlParser.T_RETURNS = 186;
HiveSqlParser.T_PACKAGE = 187;
HiveSqlParser.T_PROC = 188;
HiveSqlParser.T_BODY = 189;
HiveSqlParser.T_OUT = 190;
HiveSqlParser.T_INOUT = 191;
HiveSqlParser.T_LANGUAGE = 192;
HiveSqlParser.T_SQL = 193;
HiveSqlParser.T_SECURITY = 194;
HiveSqlParser.T_CREATOR = 195;
HiveSqlParser.T_DEFINER = 196;
HiveSqlParser.T_INVOKER = 197;
HiveSqlParser.T_OWNER = 198;
HiveSqlParser.T_DYNAMIC = 199;
HiveSqlParser.T_SETS = 200;
HiveSqlParser.T_EXEC = 201;
HiveSqlParser.T_EXECUTE = 202;
HiveSqlParser.T_INTO = 203;
HiveSqlParser.T_ELSE = 204;
HiveSqlParser.T_ELSIF = 205;
HiveSqlParser.T_ELSEIF = 206;
HiveSqlParser.T_INCLUDE = 207;
HiveSqlParser.T_INSERT = 208;
HiveSqlParser.T_OVERWRITE = 209;
HiveSqlParser.T_VALUES = 210;
HiveSqlParser.T_DIRECTORY = 211;
HiveSqlParser.T_GET = 212;
HiveSqlParser.T_DIAGNOSTICS = 213;
HiveSqlParser.T_MESSAGE_TEXT = 214;
HiveSqlParser.T_ROW_COUNT = 215;
HiveSqlParser.T_GRANT = 216;
HiveSqlParser.T_ROLE = 217;
HiveSqlParser.T_LEAVE = 218;
HiveSqlParser.T_OBJECT = 219;
HiveSqlParser.T_AT = 220;
HiveSqlParser.T_OPEN = 221;
HiveSqlParser.T_FETCH = 222;
HiveSqlParser.T_FROM = 223;
HiveSqlParser.T_COLLECT = 224;
HiveSqlParser.T_STATISTICS = 225;
HiveSqlParser.T_STATS = 226;
HiveSqlParser.T_COLUMN = 227;
HiveSqlParser.T_CLOSE = 228;
HiveSqlParser.T_CMP = 229;
HiveSqlParser.T_SUM = 230;
HiveSqlParser.T_COPY = 231;
HiveSqlParser.T_HDFS = 232;
HiveSqlParser.T_BATCHSIZE = 233;
HiveSqlParser.T_DELIMITER = 234;
HiveSqlParser.T_SQLINSERT = 235;
HiveSqlParser.T_IGNORE = 236;
HiveSqlParser.T_WORK = 237;
HiveSqlParser.T_PRINT = 238;
HiveSqlParser.T_QUIT = 239;
HiveSqlParser.T_RAISE = 240;
HiveSqlParser.T_RESIGNAL = 241;
HiveSqlParser.T_SQLSTATE = 242;
HiveSqlParser.T_VALUE = 243;
HiveSqlParser.T_ROLLBACK = 244;
HiveSqlParser.T_CURRENT = 245;
HiveSqlParser.T_CURRENT_SCHEMA = 246;
HiveSqlParser.T_ANSI_NULLS = 247;
HiveSqlParser.T_ANSI_PADDING = 248;
HiveSqlParser.T_NOCOUNT = 249;
HiveSqlParser.T_QUOTED_IDENTIFIER = 250;
HiveSqlParser.T_XACT_ABORT = 251;
HiveSqlParser.T_OFF = 252;
HiveSqlParser.T_QUERY_BAND = 253;
HiveSqlParser.T_NONE = 254;
HiveSqlParser.T_SESSION = 255;
HiveSqlParser.T_SIGNAL = 256;
HiveSqlParser.T_SUMMARY = 257;
HiveSqlParser.T_TOP = 258;
HiveSqlParser.T_LIMIT = 259;
HiveSqlParser.T_TRUNCATE = 260;
HiveSqlParser.T_USE = 261;
HiveSqlParser.T_WHILE = 262;
HiveSqlParser.T_DO = 263;
HiveSqlParser.T_LOOP = 264;
HiveSqlParser.T_REVERSE = 265;
HiveSqlParser.T_DOT2 = 266;
HiveSqlParser.T_STEP = 267;
HiveSqlParser.L_LABEL = 268;
HiveSqlParser.T_LESS = 269;
HiveSqlParser.T_GREATER = 270;
HiveSqlParser.T_USING = 271;
HiveSqlParser.T_UNION = 272;
HiveSqlParser.T_ALL = 273;
HiveSqlParser.T_EXCEPT = 274;
HiveSqlParser.T_INTERSECT = 275;
HiveSqlParser.T_SELECT = 276;
HiveSqlParser.T_SEL = 277;
HiveSqlParser.T_DISTINCT = 278;
HiveSqlParser.T_TITLE = 279;
HiveSqlParser.L_S_STRING = 280;
HiveSqlParser.T_INNER = 281;
HiveSqlParser.T_JOIN = 282;
HiveSqlParser.T_LEFT = 283;
HiveSqlParser.T_RIGHT = 284;
HiveSqlParser.T_FULL = 285;
HiveSqlParser.T_OUTER = 286;
HiveSqlParser.T_WHERE = 287;
HiveSqlParser.T_GROUP = 288;
HiveSqlParser.T_HAVING = 289;
HiveSqlParser.T_QUALIFY = 290;
HiveSqlParser.T_ORDER = 291;
HiveSqlParser.T_RR = 292;
HiveSqlParser.T_RS = 293;
HiveSqlParser.T_UR = 294;
HiveSqlParser.T_AND = 295;
HiveSqlParser.T_KEEP = 296;
HiveSqlParser.T_EXCLUSIVE = 297;
HiveSqlParser.T_SHARE = 298;
HiveSqlParser.T_LOCKS = 299;
HiveSqlParser.T_MERGE = 300;
HiveSqlParser.T_MATCHED = 301;
HiveSqlParser.T_DESCRIBE = 302;
HiveSqlParser.T_BETWEEN = 303;
HiveSqlParser.T_EQUAL2 = 304;
HiveSqlParser.T_NOTEQUAL = 305;
HiveSqlParser.T_NOTEQUAL2 = 306;
HiveSqlParser.T_LESSEQUAL = 307;
HiveSqlParser.T_GREATEREQUAL = 308;
HiveSqlParser.T_RLIKE = 309;
HiveSqlParser.T_REGEXP = 310;
HiveSqlParser.T_MUL = 311;
HiveSqlParser.T_DIV = 312;
HiveSqlParser.T_ADD = 313;
HiveSqlParser.T_SUB = 314;
HiveSqlParser.T_INTERVAL = 315;
HiveSqlParser.T_DAY = 316;
HiveSqlParser.T_DAYS = 317;
HiveSqlParser.T_MICROSECOND = 318;
HiveSqlParser.T_MICROSECONDS = 319;
HiveSqlParser.T_SECOND = 320;
HiveSqlParser.T_SECONDS = 321;
HiveSqlParser.T_PIPE = 322;
HiveSqlParser.T_CONCAT = 323;
HiveSqlParser.T_CASE = 324;
HiveSqlParser.T_ISOPEN = 325;
HiveSqlParser.T_NOTFOUND = 326;
HiveSqlParser.T_AVG = 327;
HiveSqlParser.T_COUNT = 328;
HiveSqlParser.T_COUNT_BIG = 329;
HiveSqlParser.T_CUME_DIST = 330;
HiveSqlParser.T_DENSE_RANK = 331;
HiveSqlParser.T_FIRST_VALUE = 332;
HiveSqlParser.T_LAG = 333;
HiveSqlParser.T_LAST_VALUE = 334;
HiveSqlParser.T_LEAD = 335;
HiveSqlParser.T_MIN = 336;
HiveSqlParser.T_RANK = 337;
HiveSqlParser.T_ROW_NUMBER = 338;
HiveSqlParser.T_STDEV = 339;
HiveSqlParser.T_VAR = 340;
HiveSqlParser.T_VARIANCE = 341;
HiveSqlParser.T_OVER = 342;
HiveSqlParser.T_PARTITION = 343;
HiveSqlParser.T_ACTIVITY_COUNT = 344;
HiveSqlParser.T_CAST = 345;
HiveSqlParser.T_CURRENT_DATE = 346;
HiveSqlParser.T_CURRENT_TIMESTAMP = 347;
HiveSqlParser.T_CURRENT_USER = 348;
HiveSqlParser.T_USER = 349;
HiveSqlParser.T_MAX_PART_STRING = 350;
HiveSqlParser.T_MIN_PART_STRING = 351;
HiveSqlParser.T_MAX_PART_INT = 352;
HiveSqlParser.T_MIN_PART_INT = 353;
HiveSqlParser.T_MAX_PART_DATE = 354;
HiveSqlParser.T_MIN_PART_DATE = 355;
HiveSqlParser.T_PART_COUNT = 356;
HiveSqlParser.T_PART_LOC = 357;
HiveSqlParser.T_TRIM = 358;
HiveSqlParser.T_SUBSTRING = 359;
HiveSqlParser.T_SYSDATE = 360;
HiveSqlParser.T_HIVE = 361;
HiveSqlParser.T_HOST = 362;
HiveSqlParser.L_FILE = 363;
HiveSqlParser.L_D_STRING = 364;
HiveSqlParser.L_DEC = 365;
HiveSqlParser.T_TRUE = 366;
HiveSqlParser.T_FALSE = 367;
HiveSqlParser.T_DIR = 368;
HiveSqlParser.T_FILE = 369;
HiveSqlParser.T_FILES = 370;
HiveSqlParser.T_NEW = 371;
HiveSqlParser.T_PWD = 372;
HiveSqlParser.T_SESSIONS = 373;
HiveSqlParser.T_SUBDIR = 374;

HiveSqlParser.RULE_program = 0;
HiveSqlParser.RULE_block = 1;
HiveSqlParser.RULE_begin_end_block = 2;
HiveSqlParser.RULE_single_block_stmt = 3;
HiveSqlParser.RULE_block_end = 4;
HiveSqlParser.RULE_proc_block = 5;
HiveSqlParser.RULE_stmt = 6;
HiveSqlParser.RULE_semicolon_stmt = 7;
HiveSqlParser.RULE_exception_block = 8;
HiveSqlParser.RULE_exception_block_item = 9;
HiveSqlParser.RULE_null_stmt = 10;
HiveSqlParser.RULE_expr_stmt = 11;
HiveSqlParser.RULE_assignment_stmt = 12;
HiveSqlParser.RULE_assignment_stmt_item = 13;
HiveSqlParser.RULE_assignment_stmt_single_item = 14;
HiveSqlParser.RULE_assignment_stmt_multiple_item = 15;
HiveSqlParser.RULE_assignment_stmt_select_item = 16;
HiveSqlParser.RULE_allocate_cursor_stmt = 17;
HiveSqlParser.RULE_associate_locator_stmt = 18;
HiveSqlParser.RULE_begin_transaction_stmt = 19;
HiveSqlParser.RULE_break_stmt = 20;
HiveSqlParser.RULE_call_stmt = 21;
HiveSqlParser.RULE_declare_stmt = 22;
HiveSqlParser.RULE_declare_block = 23;
HiveSqlParser.RULE_declare_block_inplace = 24;
HiveSqlParser.RULE_declare_stmt_item = 25;
HiveSqlParser.RULE_declare_var_item = 26;
HiveSqlParser.RULE_declare_condition_item = 27;
HiveSqlParser.RULE_declare_cursor_item = 28;
HiveSqlParser.RULE_cursor_with_return = 29;
HiveSqlParser.RULE_cursor_without_return = 30;
HiveSqlParser.RULE_declare_handler_item = 31;
HiveSqlParser.RULE_declare_temporary_table_item = 32;
HiveSqlParser.RULE_create_table_stmt = 33;
HiveSqlParser.RULE_create_local_temp_table_stmt = 34;
HiveSqlParser.RULE_create_table_definition = 35;
HiveSqlParser.RULE_create_table_columns = 36;
HiveSqlParser.RULE_create_table_columns_item = 37;
HiveSqlParser.RULE_column_name = 38;
HiveSqlParser.RULE_create_table_column_inline_cons = 39;
HiveSqlParser.RULE_create_table_column_cons = 40;
HiveSqlParser.RULE_create_table_fk_action = 41;
HiveSqlParser.RULE_create_table_preoptions = 42;
HiveSqlParser.RULE_create_table_preoptions_item = 43;
HiveSqlParser.RULE_create_table_preoptions_td_item = 44;
HiveSqlParser.RULE_create_table_options = 45;
HiveSqlParser.RULE_create_table_options_item = 46;
HiveSqlParser.RULE_create_table_options_ora_item = 47;
HiveSqlParser.RULE_create_table_options_db2_item = 48;
HiveSqlParser.RULE_create_table_options_td_item = 49;
HiveSqlParser.RULE_create_table_options_hive_item = 50;
HiveSqlParser.RULE_create_table_hive_row_format = 51;
HiveSqlParser.RULE_create_table_hive_row_format_fields = 52;
HiveSqlParser.RULE_create_table_options_mssql_item = 53;
HiveSqlParser.RULE_create_table_options_mysql_item = 54;
HiveSqlParser.RULE_alter_table_stmt = 55;
HiveSqlParser.RULE_alter_table_item = 56;
HiveSqlParser.RULE_alter_table_add_constraint = 57;
HiveSqlParser.RULE_alter_table_add_constraint_item = 58;
HiveSqlParser.RULE_dtype = 59;
HiveSqlParser.RULE_dtype_len = 60;
HiveSqlParser.RULE_dtype_attr = 61;
HiveSqlParser.RULE_dtype_default = 62;
HiveSqlParser.RULE_create_database_stmt = 63;
HiveSqlParser.RULE_create_database_option = 64;
HiveSqlParser.RULE_create_function_stmt = 65;
HiveSqlParser.RULE_create_function_return = 66;
HiveSqlParser.RULE_create_package_stmt = 67;
HiveSqlParser.RULE_package_spec = 68;
HiveSqlParser.RULE_package_spec_item = 69;
HiveSqlParser.RULE_create_package_body_stmt = 70;
HiveSqlParser.RULE_package_body = 71;
HiveSqlParser.RULE_package_body_item = 72;
HiveSqlParser.RULE_create_procedure_stmt = 73;
HiveSqlParser.RULE_create_routine_params = 74;
HiveSqlParser.RULE_create_routine_param_item = 75;
HiveSqlParser.RULE_create_routine_options = 76;
HiveSqlParser.RULE_create_routine_option = 77;
HiveSqlParser.RULE_drop_stmt = 78;
HiveSqlParser.RULE_end_transaction_stmt = 79;
HiveSqlParser.RULE_exec_stmt = 80;
HiveSqlParser.RULE_if_stmt = 81;
HiveSqlParser.RULE_if_plsql_stmt = 82;
HiveSqlParser.RULE_if_tsql_stmt = 83;
HiveSqlParser.RULE_if_bteq_stmt = 84;
HiveSqlParser.RULE_elseif_block = 85;
HiveSqlParser.RULE_else_block = 86;
HiveSqlParser.RULE_include_stmt = 87;
HiveSqlParser.RULE_insert_stmt = 88;
HiveSqlParser.RULE_insert_stmt_cols = 89;
HiveSqlParser.RULE_insert_stmt_rows = 90;
HiveSqlParser.RULE_insert_stmt_row = 91;
HiveSqlParser.RULE_insert_directory_stmt = 92;
HiveSqlParser.RULE_exit_stmt = 93;
HiveSqlParser.RULE_get_diag_stmt = 94;
HiveSqlParser.RULE_get_diag_stmt_item = 95;
HiveSqlParser.RULE_get_diag_stmt_exception_item = 96;
HiveSqlParser.RULE_get_diag_stmt_rowcount_item = 97;
HiveSqlParser.RULE_grant_stmt = 98;
HiveSqlParser.RULE_grant_stmt_item = 99;
HiveSqlParser.RULE_leave_stmt = 100;
HiveSqlParser.RULE_map_object_stmt = 101;
HiveSqlParser.RULE_open_stmt = 102;
HiveSqlParser.RULE_fetch_stmt = 103;
HiveSqlParser.RULE_collect_stats_stmt = 104;
HiveSqlParser.RULE_collect_stats_clause = 105;
HiveSqlParser.RULE_close_stmt = 106;
HiveSqlParser.RULE_cmp_stmt = 107;
HiveSqlParser.RULE_cmp_source = 108;
HiveSqlParser.RULE_copy_from_local_stmt = 109;
HiveSqlParser.RULE_copy_stmt = 110;
HiveSqlParser.RULE_copy_source = 111;
HiveSqlParser.RULE_copy_target = 112;
HiveSqlParser.RULE_copy_option = 113;
HiveSqlParser.RULE_copy_file_option = 114;
HiveSqlParser.RULE_commit_stmt = 115;
HiveSqlParser.RULE_create_index_stmt = 116;
HiveSqlParser.RULE_create_index_col = 117;
HiveSqlParser.RULE_index_storage_clause = 118;
HiveSqlParser.RULE_index_mssql_storage_clause = 119;
HiveSqlParser.RULE_print_stmt = 120;
HiveSqlParser.RULE_quit_stmt = 121;
HiveSqlParser.RULE_raise_stmt = 122;
HiveSqlParser.RULE_resignal_stmt = 123;
HiveSqlParser.RULE_return_stmt = 124;
HiveSqlParser.RULE_rollback_stmt = 125;
HiveSqlParser.RULE_set_session_option = 126;
HiveSqlParser.RULE_set_current_schema_option = 127;
HiveSqlParser.RULE_set_mssql_session_option = 128;
HiveSqlParser.RULE_set_teradata_session_option = 129;
HiveSqlParser.RULE_signal_stmt = 130;
HiveSqlParser.RULE_summary_stmt = 131;
HiveSqlParser.RULE_truncate_stmt = 132;
HiveSqlParser.RULE_use_stmt = 133;
HiveSqlParser.RULE_values_into_stmt = 134;
HiveSqlParser.RULE_while_stmt = 135;
HiveSqlParser.RULE_for_cursor_stmt = 136;
HiveSqlParser.RULE_for_range_stmt = 137;
HiveSqlParser.RULE_label = 138;
HiveSqlParser.RULE_using_clause = 139;
HiveSqlParser.RULE_select_stmt = 140;
HiveSqlParser.RULE_cte_select_stmt = 141;
HiveSqlParser.RULE_cte_select_stmt_item = 142;
HiveSqlParser.RULE_cte_select_cols = 143;
HiveSqlParser.RULE_fullselect_stmt = 144;
HiveSqlParser.RULE_fullselect_stmt_item = 145;
HiveSqlParser.RULE_fullselect_set_clause = 146;
HiveSqlParser.RULE_subselect_stmt = 147;
HiveSqlParser.RULE_select_list = 148;
HiveSqlParser.RULE_select_list_set = 149;
HiveSqlParser.RULE_select_list_limit = 150;
HiveSqlParser.RULE_select_list_item = 151;
HiveSqlParser.RULE_select_list_alias = 152;
HiveSqlParser.RULE_select_list_asterisk = 153;
HiveSqlParser.RULE_into_clause = 154;
HiveSqlParser.RULE_from_clause = 155;
HiveSqlParser.RULE_from_table_clause = 156;
HiveSqlParser.RULE_from_table_name_clause = 157;
HiveSqlParser.RULE_from_subselect_clause = 158;
HiveSqlParser.RULE_from_join_clause = 159;
HiveSqlParser.RULE_from_join_type_clause = 160;
HiveSqlParser.RULE_from_table_values_clause = 161;
HiveSqlParser.RULE_from_table_values_row = 162;
HiveSqlParser.RULE_from_alias_clause = 163;
HiveSqlParser.RULE_table_name = 164;
HiveSqlParser.RULE_where_clause = 165;
HiveSqlParser.RULE_group_by_clause = 166;
HiveSqlParser.RULE_having_clause = 167;
HiveSqlParser.RULE_qualify_clause = 168;
HiveSqlParser.RULE_order_by_clause = 169;
HiveSqlParser.RULE_select_options = 170;
HiveSqlParser.RULE_select_options_item = 171;
HiveSqlParser.RULE_update_stmt = 172;
HiveSqlParser.RULE_update_assignment = 173;
HiveSqlParser.RULE_update_table = 174;
HiveSqlParser.RULE_update_upsert = 175;
HiveSqlParser.RULE_merge_stmt = 176;
HiveSqlParser.RULE_merge_table = 177;
HiveSqlParser.RULE_merge_condition = 178;
HiveSqlParser.RULE_merge_action = 179;
HiveSqlParser.RULE_delete_stmt = 180;
HiveSqlParser.RULE_delete_alias = 181;
HiveSqlParser.RULE_describe_stmt = 182;
HiveSqlParser.RULE_bool_expr = 183;
HiveSqlParser.RULE_bool_expr_atom = 184;
HiveSqlParser.RULE_bool_expr_unary = 185;
HiveSqlParser.RULE_bool_expr_single_in = 186;
HiveSqlParser.RULE_bool_expr_multi_in = 187;
HiveSqlParser.RULE_bool_expr_binary = 188;
HiveSqlParser.RULE_bool_expr_logical_operator = 189;
HiveSqlParser.RULE_bool_expr_binary_operator = 190;
HiveSqlParser.RULE_expr = 191;
HiveSqlParser.RULE_expr_atom = 192;
HiveSqlParser.RULE_expr_interval = 193;
HiveSqlParser.RULE_interval_item = 194;
HiveSqlParser.RULE_expr_concat = 195;
HiveSqlParser.RULE_expr_concat_item = 196;
HiveSqlParser.RULE_expr_case = 197;
HiveSqlParser.RULE_expr_case_simple = 198;
HiveSqlParser.RULE_expr_case_searched = 199;
HiveSqlParser.RULE_expr_cursor_attribute = 200;
HiveSqlParser.RULE_expr_agg_window_func = 201;
HiveSqlParser.RULE_expr_func_all_distinct = 202;
HiveSqlParser.RULE_expr_func_over_clause = 203;
HiveSqlParser.RULE_expr_func_partition_by_clause = 204;
HiveSqlParser.RULE_expr_spec_func = 205;
HiveSqlParser.RULE_expr_func = 206;
HiveSqlParser.RULE_expr_func_params = 207;
HiveSqlParser.RULE_func_param = 208;
HiveSqlParser.RULE_expr_select = 209;
HiveSqlParser.RULE_expr_file = 210;
HiveSqlParser.RULE_hive = 211;
HiveSqlParser.RULE_hive_item = 212;
HiveSqlParser.RULE_host = 213;
HiveSqlParser.RULE_host_cmd = 214;
HiveSqlParser.RULE_host_stmt = 215;
HiveSqlParser.RULE_file_name = 216;
HiveSqlParser.RULE_date_literal = 217;
HiveSqlParser.RULE_timestamp_literal = 218;
HiveSqlParser.RULE_ident = 219;
HiveSqlParser.RULE_string = 220;
HiveSqlParser.RULE_int_number = 221;
HiveSqlParser.RULE_dec_number = 222;
HiveSqlParser.RULE_bool_literal = 223;
HiveSqlParser.RULE_null_const = 224;
HiveSqlParser.RULE_non_reserved_words = 225;


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

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

ProgramContext.prototype.block = function() {
    return this.getTypedRuleContext(BlockContext,0);
};

ProgramContext.prototype.EOF = function() {
    return this.getToken(HiveSqlParser.EOF, 0);
};

ProgramContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterProgram(this);
	}
};

ProgramContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitProgram(this);
	}
};

ProgramContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitProgram(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.ProgramContext = ProgramContext;

HiveSqlParser.prototype.program = function() {

    var localctx = new ProgramContext(this, this._ctx, this.state);
    this.enterRule(localctx, 0, HiveSqlParser.RULE_program);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 452;
        this.block();
        this.state = 453;
        this.match(HiveSqlParser.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 BlockContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_block;
    return this;
}

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

BlockContext.prototype.begin_end_block = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Begin_end_blockContext);
    } else {
        return this.getTypedRuleContext(Begin_end_blockContext,i);
    }
};

BlockContext.prototype.stmt = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(StmtContext);
    } else {
        return this.getTypedRuleContext(StmtContext,i);
    }
};

BlockContext.prototype.T_GO = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_GO);
    } else {
        return this.getToken(HiveSqlParser.T_GO, i);
    }
};


BlockContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterBlock(this);
	}
};

BlockContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitBlock(this);
	}
};

BlockContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitBlock(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.BlockContext = BlockContext;

HiveSqlParser.prototype.block = function() {

    var localctx = new BlockContext(this, this._ctx, this.state);
    this.enterRule(localctx, 2, HiveSqlParser.RULE_block);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 462; 
        this._errHandler.sync(this);
        var _alt = 1;
        do {
        	switch (_alt) {
        	case 1:
        		this.state = 457;
        		this._errHandler.sync(this);
        		var la_ = this._interp.adaptivePredict(this._input,0,this._ctx);
        		switch(la_) {
        		case 1:
        		    this.state = 455;
        		    this.begin_end_block();
        		    break;

        		case 2:
        		    this.state = 456;
        		    this.stmt();
        		    break;

        		}
        		this.state = 460;
        		this._errHandler.sync(this);
        		var la_ = this._interp.adaptivePredict(this._input,1,this._ctx);
        		if(la_===1) {
        		    this.state = 459;
        		    this.match(HiveSqlParser.T_GO);

        		}
        		break;
        	default:
        		throw new antlr4.error.NoViableAltException(this);
        	}
        	this.state = 464; 
        	this._errHandler.sync(this);
        	_alt = this._interp.adaptivePredict(this._input,2, 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 Begin_end_blockContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_begin_end_block;
    return this;
}

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

Begin_end_blockContext.prototype.T_BEGIN = function() {
    return this.getToken(HiveSqlParser.T_BEGIN, 0);
};

Begin_end_blockContext.prototype.block = function() {
    return this.getTypedRuleContext(BlockContext,0);
};

Begin_end_blockContext.prototype.block_end = function() {
    return this.getTypedRuleContext(Block_endContext,0);
};

Begin_end_blockContext.prototype.declare_block = function() {
    return this.getTypedRuleContext(Declare_blockContext,0);
};

Begin_end_blockContext.prototype.exception_block = function() {
    return this.getTypedRuleContext(Exception_blockContext,0);
};

Begin_end_blockContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterBegin_end_block(this);
	}
};

Begin_end_blockContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitBegin_end_block(this);
	}
};

Begin_end_blockContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitBegin_end_block(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Begin_end_blockContext = Begin_end_blockContext;

HiveSqlParser.prototype.begin_end_block = function() {

    var localctx = new Begin_end_blockContext(this, this._ctx, this.state);
    this.enterRule(localctx, 4, HiveSqlParser.RULE_begin_end_block);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 467;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===HiveSqlParser.T_DECLARE) {
            this.state = 466;
            this.declare_block();
        }

        this.state = 469;
        this.match(HiveSqlParser.T_BEGIN);
        this.state = 470;
        this.block();
        this.state = 472;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,4,this._ctx);
        if(la_===1) {
            this.state = 471;
            this.exception_block();

        }
        this.state = 474;
        this.block_end();
    } 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 Single_block_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_single_block_stmt;
    return this;
}

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

Single_block_stmtContext.prototype.T_BEGIN = function() {
    return this.getToken(HiveSqlParser.T_BEGIN, 0);
};

Single_block_stmtContext.prototype.block = function() {
    return this.getTypedRuleContext(BlockContext,0);
};

Single_block_stmtContext.prototype.block_end = function() {
    return this.getTypedRuleContext(Block_endContext,0);
};

Single_block_stmtContext.prototype.exception_block = function() {
    return this.getTypedRuleContext(Exception_blockContext,0);
};

Single_block_stmtContext.prototype.stmt = function() {
    return this.getTypedRuleContext(StmtContext,0);
};

Single_block_stmtContext.prototype.T_SEMICOLON = function() {
    return this.getToken(HiveSqlParser.T_SEMICOLON, 0);
};

Single_block_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterSingle_block_stmt(this);
	}
};

Single_block_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitSingle_block_stmt(this);
	}
};

Single_block_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitSingle_block_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Single_block_stmtContext = Single_block_stmtContext;

HiveSqlParser.prototype.single_block_stmt = function() {

    var localctx = new Single_block_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 6, HiveSqlParser.RULE_single_block_stmt);
    try {
        this.state = 487;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,7,this._ctx);
        switch(la_) {
        case 1:
            this.enterOuterAlt(localctx, 1);
            this.state = 476;
            this.match(HiveSqlParser.T_BEGIN);
            this.state = 477;
            this.block();
            this.state = 479;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,5,this._ctx);
            if(la_===1) {
                this.state = 478;
                this.exception_block();

            }
            this.state = 481;
            this.block_end();
            break;

        case 2:
            this.enterOuterAlt(localctx, 2);
            this.state = 483;
            this.stmt();
            this.state = 485;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,6,this._ctx);
            if(la_===1) {
                this.state = 484;
                this.match(HiveSqlParser.T_SEMICOLON);

            }
            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 Block_endContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_block_end;
    return this;
}

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

Block_endContext.prototype.T_END = function() {
    return this.getToken(HiveSqlParser.T_END, 0);
};

Block_endContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterBlock_end(this);
	}
};

Block_endContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitBlock_end(this);
	}
};

Block_endContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitBlock_end(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Block_endContext = Block_endContext;

HiveSqlParser.prototype.block_end = function() {

    var localctx = new Block_endContext(this, this._ctx, this.state);
    this.enterRule(localctx, 8, HiveSqlParser.RULE_block_end);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 489;
        if (!( !this._input.LT(2).getText().equalsIgnoreCase("TRANSACTION"))) {
            throw new antlr4.error.FailedPredicateException(this, "!this._input.LT(2).getText().equalsIgnoreCase(\"TRANSACTION\")");
        }
        this.state = 490;
        this.match(HiveSqlParser.T_END);
    } 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 Proc_blockContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_proc_block;
    return this;
}

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

Proc_blockContext.prototype.begin_end_block = function() {
    return this.getTypedRuleContext(Begin_end_blockContext,0);
};

Proc_blockContext.prototype.stmt = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(StmtContext);
    } else {
        return this.getTypedRuleContext(StmtContext,i);
    }
};

Proc_blockContext.prototype.T_GO = function() {
    return this.getToken(HiveSqlParser.T_GO, 0);
};

Proc_blockContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterProc_block(this);
	}
};

Proc_blockContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitProc_block(this);
	}
};

Proc_blockContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitProc_block(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Proc_blockContext = Proc_blockContext;

HiveSqlParser.prototype.proc_block = function() {

    var localctx = new Proc_blockContext(this, this._ctx, this.state);
    this.enterRule(localctx, 10, HiveSqlParser.RULE_proc_block);
    try {
        this.state = 501;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,10,this._ctx);
        switch(la_) {
        case 1:
            this.enterOuterAlt(localctx, 1);
            this.state = 492;
            this.begin_end_block();
            break;

        case 2:
            this.enterOuterAlt(localctx, 2);
            this.state = 494; 
            this._errHandler.sync(this);
            var _alt = 1;
            do {
            	switch (_alt) {
            	case 1:
            		this.state = 493;
            		this.stmt();
            		break;
            	default:
            		throw new antlr4.error.NoViableAltException(this);
            	}
            	this.state = 496; 
            	this._errHandler.sync(this);
            	_alt = this._interp.adaptivePredict(this._input,8, this._ctx);
            } while ( _alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER );
            this.state = 499;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,9,this._ctx);
            if(la_===1) {
                this.state = 498;
                this.match(HiveSqlParser.T_GO);

            }
            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 StmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_stmt;
    return this;
}

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

StmtContext.prototype.assignment_stmt = function() {
    return this.getTypedRuleContext(Assignment_stmtContext,0);
};

StmtContext.prototype.allocate_cursor_stmt = function() {
    return this.getTypedRuleContext(Allocate_cursor_stmtContext,0);
};

StmtContext.prototype.alter_table_stmt = function() {
    return this.getTypedRuleContext(Alter_table_stmtContext,0);
};

StmtContext.prototype.associate_locator_stmt = function() {
    return this.getTypedRuleContext(Associate_locator_stmtContext,0);
};

StmtContext.prototype.begin_transaction_stmt = function() {
    return this.getTypedRuleContext(Begin_transaction_stmtContext,0);
};

StmtContext.prototype.break_stmt = function() {
    return this.getTypedRuleContext(Break_stmtContext,0);
};

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

StmtContext.prototype.collect_stats_stmt = function() {
    return this.getTypedRuleContext(Collect_stats_stmtContext,0);
};

StmtContext.prototype.close_stmt = function() {
    return this.getTypedRuleContext(Close_stmtContext,0);
};

StmtContext.prototype.cmp_stmt = function() {
    return this.getTypedRuleContext(Cmp_stmtContext,0);
};

StmtContext.prototype.copy_from_local_stmt = function() {
    return this.getTypedRuleContext(Copy_from_local_stmtContext,0);
};

StmtContext.prototype.copy_stmt = function() {
    return this.getTypedRuleContext(Copy_stmtContext,0);
};

StmtContext.prototype.commit_stmt = function() {
    return this.getTypedRuleContext(Commit_stmtContext,0);
};

StmtContext.prototype.create_database_stmt = function() {
    return this.getTypedRuleContext(Create_database_stmtContext,0);
};

StmtContext.prototype.create_function_stmt = function() {
    return this.getTypedRuleContext(Create_function_stmtContext,0);
};

StmtContext.prototype.create_index_stmt = function() {
    return this.getTypedRuleContext(Create_index_stmtContext,0);
};

StmtContext.prototype.create_local_temp_table_stmt = function() {
    return this.getTypedRuleContext(Create_local_temp_table_stmtContext,0);
};

StmtContext.prototype.create_package_stmt = function() {
    return this.getTypedRuleContext(Create_package_stmtContext,0);
};

StmtContext.prototype.create_package_body_stmt = function() {
    return this.getTypedRuleContext(Create_package_body_stmtContext,0);
};

StmtContext.prototype.create_procedure_stmt = function() {
    return this.getTypedRuleContext(Create_procedure_stmtContext,0);
};

StmtContext.prototype.create_table_stmt = function() {
    return this.getTypedRuleContext(Create_table_stmtContext,0);
};

StmtContext.prototype.declare_stmt = function() {
    return this.getTypedRuleContext(Declare_stmtContext,0);
};

StmtContext.prototype.delete_stmt = function() {
    return this.getTypedRuleContext(Delete_stmtContext,0);
};

StmtContext.prototype.describe_stmt = function() {
    return this.getTypedRuleContext(Describe_stmtContext,0);
};

StmtContext.prototype.drop_stmt = function() {
    return this.getTypedRuleContext(Drop_stmtContext,0);
};

StmtContext.prototype.end_transaction_stmt = function() {
    return this.getTypedRuleContext(End_transaction_stmtContext,0);
};

StmtContext.prototype.exec_stmt = function() {
    return this.getTypedRuleContext(Exec_stmtContext,0);
};

StmtContext.prototype.exit_stmt = function() {
    return this.getTypedRuleContext(Exit_stmtContext,0);
};

StmtContext.prototype.fetch_stmt = function() {
    return this.getTypedRuleContext(Fetch_stmtContext,0);
};

StmtContext.prototype.for_cursor_stmt = function() {
    return this.getTypedRuleContext(For_cursor_stmtContext,0);
};

StmtContext.prototype.for_range_stmt = function() {
    return this.getTypedRuleContext(For_range_stmtContext,0);
};

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

StmtContext.prototype.include_stmt = function() {
    return this.getTypedRuleContext(Include_stmtContext,0);
};

StmtContext.prototype.insert_stmt = function() {
    return this.getTypedRuleContext(Insert_stmtContext,0);
};

StmtContext.prototype.insert_directory_stmt = function() {
    return this.getTypedRuleContext(Insert_directory_stmtContext,0);
};

StmtContext.prototype.get_diag_stmt = function() {
    return this.getTypedRuleContext(Get_diag_stmtContext,0);
};

StmtContext.prototype.grant_stmt = function() {
    return this.getTypedRuleContext(Grant_stmtContext,0);
};

StmtContext.prototype.leave_stmt = function() {
    return this.getTypedRuleContext(Leave_stmtContext,0);
};

StmtContext.prototype.map_object_stmt = function() {
    return this.getTypedRuleContext(Map_object_stmtContext,0);
};

StmtContext.prototype.merge_stmt = function() {
    return this.getTypedRuleContext(Merge_stmtContext,0);
};

StmtContext.prototype.open_stmt = function() {
    return this.getTypedRuleContext(Open_stmtContext,0);
};

StmtContext.prototype.print_stmt = function() {
    return this.getTypedRuleContext(Print_stmtContext,0);
};

StmtContext.prototype.quit_stmt = function() {
    return this.getTypedRuleContext(Quit_stmtContext,0);
};

StmtContext.prototype.raise_stmt = function() {
    return this.getTypedRuleContext(Raise_stmtContext,0);
};

StmtContext.prototype.resignal_stmt = function() {
    return this.getTypedRuleContext(Resignal_stmtContext,0);
};

StmtContext.prototype.return_stmt = function() {
    return this.getTypedRuleContext(Return_stmtContext,0);
};

StmtContext.prototype.rollback_stmt = function() {
    return this.getTypedRuleContext(Rollback_stmtContext,0);
};

StmtContext.prototype.select_stmt = function() {
    return this.getTypedRuleContext(Select_stmtContext,0);
};

StmtContext.prototype.signal_stmt = function() {
    return this.getTypedRuleContext(Signal_stmtContext,0);
};

StmtContext.prototype.summary_stmt = function() {
    return this.getTypedRuleContext(Summary_stmtContext,0);
};

StmtContext.prototype.update_stmt = function() {
    return this.getTypedRuleContext(Update_stmtContext,0);
};

StmtContext.prototype.use_stmt = function() {
    return this.getTypedRuleContext(Use_stmtContext,0);
};

StmtContext.prototype.truncate_stmt = function() {
    return this.getTypedRuleContext(Truncate_stmtContext,0);
};

StmtContext.prototype.values_into_stmt = function() {
    return this.getTypedRuleContext(Values_into_stmtContext,0);
};

StmtContext.prototype.while_stmt = function() {
    return this.getTypedRuleContext(While_stmtContext,0);
};

StmtContext.prototype.label = function() {
    return this.getTypedRuleContext(LabelContext,0);
};

StmtContext.prototype.hive = function() {
    return this.getTypedRuleContext(HiveContext,0);
};

StmtContext.prototype.host = function() {
    return this.getTypedRuleContext(HostContext,0);
};

StmtContext.prototype.null_stmt = function() {
    return this.getTypedRuleContext(Null_stmtContext,0);
};

StmtContext.prototype.expr_stmt = function() {
    return this.getTypedRuleContext(Expr_stmtContext,0);
};

StmtContext.prototype.semicolon_stmt = function() {
    return this.getTypedRuleContext(Semicolon_stmtContext,0);
};

StmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterStmt(this);
	}
};

StmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitStmt(this);
	}
};

StmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitStmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.StmtContext = StmtContext;

HiveSqlParser.prototype.stmt = function() {

    var localctx = new StmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 12, HiveSqlParser.RULE_stmt);
    try {
        this.state = 564;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,11,this._ctx);
        switch(la_) {
        case 1:
            this.enterOuterAlt(localctx, 1);
            this.state = 503;
            this.assignment_stmt();
            break;

        case 2:
            this.enterOuterAlt(localctx, 2);
            this.state = 504;
            this.allocate_cursor_stmt();
            break;

        case 3:
            this.enterOuterAlt(localctx, 3);
            this.state = 505;
            this.alter_table_stmt();
            break;

        case 4:
            this.enterOuterAlt(localctx, 4);
            this.state = 506;
            this.associate_locator_stmt();
            break;

        case 5:
            this.enterOuterAlt(localctx, 5);
            this.state = 507;
            this.begin_transaction_stmt();
            break;

        case 6:
            this.enterOuterAlt(localctx, 6);
            this.state = 508;
            this.break_stmt();
            break;

        case 7:
            this.enterOuterAlt(localctx, 7);
            this.state = 509;
            this.call_stmt();
            break;

        case 8:
            this.enterOuterAlt(localctx, 8);
            this.state = 510;
            this.collect_stats_stmt();
            break;

        case 9:
            this.enterOuterAlt(localctx, 9);
            this.state = 511;
            this.close_stmt();
            break;

        case 10:
            this.enterOuterAlt(localctx, 10);
            this.state = 512;
            this.cmp_stmt();
            break;

        case 11:
            this.enterOuterAlt(localctx, 11);
            this.state = 513;
            this.copy_from_local_stmt();
            break;

        case 12:
            this.enterOuterAlt(localctx, 12);
            this.state = 514;
            this.copy_stmt();
            break;

        case 13:
            this.enterOuterAlt(localctx, 13);
            this.state = 515;
            this.commit_stmt();
            break;

        case 14:
            this.enterOuterAlt(localctx, 14);
            this.state = 516;
            this.create_database_stmt();
            break;

        case 15:
            this.enterOuterAlt(localctx, 15);
            this.state = 517;
            this.create_function_stmt();
            break;

        case 16:
            this.enterOuterAlt(localctx, 16);
            this.state = 518;
            this.create_index_stmt();
            break;

        case 17:
            this.enterOuterAlt(localctx, 17);
            this.state = 519;
            this.create_local_temp_table_stmt();
            break;

        case 18:
            this.enterOuterAlt(localctx, 18);
            this.state = 520;
            this.create_package_stmt();
            break;

        case 19:
            this.enterOuterAlt(localctx, 19);
            this.state = 521;
            this.create_package_body_stmt();
            break;

        case 20:
            this.enterOuterAlt(localctx, 20);
            this.state = 522;
            this.create_procedure_stmt();
            break;

        case 21:
            this.enterOuterAlt(localctx, 21);
            this.state = 523;
            this.create_table_stmt();
            break;

        case 22:
            this.enterOuterAlt(localctx, 22);
            this.state = 524;
            this.declare_stmt();
            break;

        case 23:
            this.enterOuterAlt(localctx, 23);
            this.state = 525;
            this.delete_stmt();
            break;

        case 24:
            this.enterOuterAlt(localctx, 24);
            this.state = 526;
            this.describe_stmt();
            break;

        case 25:
            this.enterOuterAlt(localctx, 25);
            this.state = 527;
            this.drop_stmt();
            break;

        case 26:
            this.enterOuterAlt(localctx, 26);
            this.state = 528;
            this.end_transaction_stmt();
            break;

        case 27:
            this.enterOuterAlt(localctx, 27);
            this.state = 529;
            this.exec_stmt();
            break;

        case 28:
            this.enterOuterAlt(localctx, 28);
            this.state = 530;
            this.exit_stmt();
            break;

        case 29:
            this.enterOuterAlt(localctx, 29);
            this.state = 531;
            this.fetch_stmt();
            break;

        case 30:
            this.enterOuterAlt(localctx, 30);
            this.state = 532;
            this.for_cursor_stmt();
            break;

        case 31:
            this.enterOuterAlt(localctx, 31);
            this.state = 533;
            this.for_range_stmt();
            break;

        case 32:
            this.enterOuterAlt(localctx, 32);
            this.state = 534;
            this.if_stmt();
            break;

        case 33:
            this.enterOuterAlt(localctx, 33);
            this.state = 535;
            this.include_stmt();
            break;

        case 34:
            this.enterOuterAlt(localctx, 34);
            this.state = 536;
            this.insert_stmt();
            break;

        case 35:
            this.enterOuterAlt(localctx, 35);
            this.state = 537;
            this.insert_directory_stmt();
            break;

        case 36:
            this.enterOuterAlt(localctx, 36);
            this.state = 538;
            this.get_diag_stmt();
            break;

        case 37:
            this.enterOuterAlt(localctx, 37);
            this.state = 539;
            this.grant_stmt();
            break;

        case 38:
            this.enterOuterAlt(localctx, 38);
            this.state = 540;
            this.leave_stmt();
            break;

        case 39:
            this.enterOuterAlt(localctx, 39);
            this.state = 541;
            this.map_object_stmt();
            break;

        case 40:
            this.enterOuterAlt(localctx, 40);
            this.state = 542;
            this.merge_stmt();
            break;

        case 41:
            this.enterOuterAlt(localctx, 41);
            this.state = 543;
            this.open_stmt();
            break;

        case 42:
            this.enterOuterAlt(localctx, 42);
            this.state = 544;
            this.print_stmt();
            break;

        case 43:
            this.enterOuterAlt(localctx, 43);
            this.state = 545;
            this.quit_stmt();
            break;

        case 44:
            this.enterOuterAlt(localctx, 44);
            this.state = 546;
            this.raise_stmt();
            break;

        case 45:
            this.enterOuterAlt(localctx, 45);
            this.state = 547;
            this.resignal_stmt();
            break;

        case 46:
            this.enterOuterAlt(localctx, 46);
            this.state = 548;
            this.return_stmt();
            break;

        case 47:
            this.enterOuterAlt(localctx, 47);
            this.state = 549;
            this.rollback_stmt();
            break;

        case 48:
            this.enterOuterAlt(localctx, 48);
            this.state = 550;
            this.select_stmt();
            break;

        case 49:
            this.enterOuterAlt(localctx, 49);
            this.state = 551;
            this.signal_stmt();
            break;

        case 50:
            this.enterOuterAlt(localctx, 50);
            this.state = 552;
            this.summary_stmt();
            break;

        case 51:
            this.enterOuterAlt(localctx, 51);
            this.state = 553;
            this.update_stmt();
            break;

        case 52:
            this.enterOuterAlt(localctx, 52);
            this.state = 554;
            this.use_stmt();
            break;

        case 53:
            this.enterOuterAlt(localctx, 53);
            this.state = 555;
            this.truncate_stmt();
            break;

        case 54:
            this.enterOuterAlt(localctx, 54);
            this.state = 556;
            this.values_into_stmt();
            break;

        case 55:
            this.enterOuterAlt(localctx, 55);
            this.state = 557;
            this.while_stmt();
            break;

        case 56:
            this.enterOuterAlt(localctx, 56);
            this.state = 558;
            this.label();
            break;

        case 57:
            this.enterOuterAlt(localctx, 57);
            this.state = 559;
            this.hive();
            break;

        case 58:
            this.enterOuterAlt(localctx, 58);
            this.state = 560;
            this.host();
            break;

        case 59:
            this.enterOuterAlt(localctx, 59);
            this.state = 561;
            this.null_stmt();
            break;

        case 60:
            this.enterOuterAlt(localctx, 60);
            this.state = 562;
            this.expr_stmt();
            break;

        case 61:
            this.enterOuterAlt(localctx, 61);
            this.state = 563;
            this.semicolon_stmt();
            break;

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


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

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

Semicolon_stmtContext.prototype.T_SEMICOLON = function() {
    return this.getToken(HiveSqlParser.T_SEMICOLON, 0);
};

Semicolon_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterSemicolon_stmt(this);
	}
};

Semicolon_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitSemicolon_stmt(this);
	}
};

Semicolon_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitSemicolon_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Semicolon_stmtContext = Semicolon_stmtContext;

HiveSqlParser.prototype.semicolon_stmt = function() {

    var localctx = new Semicolon_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 14, HiveSqlParser.RULE_semicolon_stmt);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 566;
        _la = this._input.LA(1);
        if(!((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << HiveSqlParser.T__0) | (1 << HiveSqlParser.T__1) | (1 << HiveSqlParser.T__2) | (1 << HiveSqlParser.T_SEMICOLON))) !== 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 Exception_blockContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_exception_block;
    return this;
}

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

Exception_blockContext.prototype.T_EXCEPTION = function() {
    return this.getToken(HiveSqlParser.T_EXCEPTION, 0);
};

Exception_blockContext.prototype.exception_block_item = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Exception_block_itemContext);
    } else {
        return this.getTypedRuleContext(Exception_block_itemContext,i);
    }
};

Exception_blockContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterException_block(this);
	}
};

Exception_blockContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitException_block(this);
	}
};

Exception_blockContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitException_block(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Exception_blockContext = Exception_blockContext;

HiveSqlParser.prototype.exception_block = function() {

    var localctx = new Exception_blockContext(this, this._ctx, this.state);
    this.enterRule(localctx, 16, HiveSqlParser.RULE_exception_block);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 568;
        this.match(HiveSqlParser.T_EXCEPTION);
        this.state = 570; 
        this._errHandler.sync(this);
        var _alt = 1;
        do {
        	switch (_alt) {
        	case 1:
        		this.state = 569;
        		this.exception_block_item();
        		break;
        	default:
        		throw new antlr4.error.NoViableAltException(this);
        	}
        	this.state = 572; 
        	this._errHandler.sync(this);
        	_alt = this._interp.adaptivePredict(this._input,12, 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 Exception_block_itemContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_exception_block_item;
    return this;
}

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

Exception_block_itemContext.prototype.T_WHEN = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_WHEN);
    } else {
        return this.getToken(HiveSqlParser.T_WHEN, i);
    }
};


Exception_block_itemContext.prototype.L_ID = function() {
    return this.getToken(HiveSqlParser.L_ID, 0);
};

Exception_block_itemContext.prototype.T_THEN = function() {
    return this.getToken(HiveSqlParser.T_THEN, 0);
};

Exception_block_itemContext.prototype.block = function() {
    return this.getTypedRuleContext(BlockContext,0);
};

Exception_block_itemContext.prototype.T_END = function() {
    return this.getToken(HiveSqlParser.T_END, 0);
};

Exception_block_itemContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterException_block_item(this);
	}
};

Exception_block_itemContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitException_block_item(this);
	}
};

Exception_block_itemContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitException_block_item(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Exception_block_itemContext = Exception_block_itemContext;

HiveSqlParser.prototype.exception_block_item = function() {

    var localctx = new Exception_block_itemContext(this, this._ctx, this.state);
    this.enterRule(localctx, 18, HiveSqlParser.RULE_exception_block_item);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 574;
        this.match(HiveSqlParser.T_WHEN);
        this.state = 575;
        this.match(HiveSqlParser.L_ID);
        this.state = 576;
        this.match(HiveSqlParser.T_THEN);
        this.state = 577;
        this.block();
        this.state = 578;
        _la = this._input.LA(1);
        if(_la<=0 || _la===HiveSqlParser.T_END || _la===HiveSqlParser.T_WHEN) {
        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 Null_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_null_stmt;
    return this;
}

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

Null_stmtContext.prototype.T_NULL = function() {
    return this.getToken(HiveSqlParser.T_NULL, 0);
};

Null_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterNull_stmt(this);
	}
};

Null_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitNull_stmt(this);
	}
};

Null_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitNull_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Null_stmtContext = Null_stmtContext;

HiveSqlParser.prototype.null_stmt = function() {

    var localctx = new Null_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 20, HiveSqlParser.RULE_null_stmt);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 580;
        this.match(HiveSqlParser.T_NULL);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


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

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

Expr_stmtContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Expr_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterExpr_stmt(this);
	}
};

Expr_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitExpr_stmt(this);
	}
};

Expr_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitExpr_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Expr_stmtContext = Expr_stmtContext;

HiveSqlParser.prototype.expr_stmt = function() {

    var localctx = new Expr_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 22, HiveSqlParser.RULE_expr_stmt);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 582;
        if (!( !this._input.LT(1).getText().equalsIgnoreCase("GO"))) {
            throw new antlr4.error.FailedPredicateException(this, "!this._input.LT(1).getText().equalsIgnoreCase(\"GO\")");
        }
        this.state = 583;
        this.expr(0);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


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

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

Assignment_stmtContext.prototype.T_SET = function() {
    return this.getToken(HiveSqlParser.T_SET, 0);
};

Assignment_stmtContext.prototype.set_session_option = function() {
    return this.getTypedRuleContext(Set_session_optionContext,0);
};

Assignment_stmtContext.prototype.assignment_stmt_item = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Assignment_stmt_itemContext);
    } else {
        return this.getTypedRuleContext(Assignment_stmt_itemContext,i);
    }
};

Assignment_stmtContext.prototype.T_COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_COMMA);
    } else {
        return this.getToken(HiveSqlParser.T_COMMA, i);
    }
};


Assignment_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterAssignment_stmt(this);
	}
};

Assignment_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitAssignment_stmt(this);
	}
};

Assignment_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitAssignment_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Assignment_stmtContext = Assignment_stmtContext;

HiveSqlParser.prototype.assignment_stmt = function() {

    var localctx = new Assignment_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 24, HiveSqlParser.RULE_assignment_stmt);
    try {
        this.state = 598;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,15,this._ctx);
        switch(la_) {
        case 1:
            this.enterOuterAlt(localctx, 1);
            this.state = 585;
            this.match(HiveSqlParser.T_SET);
            this.state = 586;
            this.set_session_option();
            break;

        case 2:
            this.enterOuterAlt(localctx, 2);
            this.state = 588;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,13,this._ctx);
            if(la_===1) {
                this.state = 587;
                this.match(HiveSqlParser.T_SET);

            }
            this.state = 590;
            this.assignment_stmt_item();
            this.state = 595;
            this._errHandler.sync(this);
            var _alt = this._interp.adaptivePredict(this._input,14,this._ctx)
            while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
                if(_alt===1) {
                    this.state = 591;
                    this.match(HiveSqlParser.T_COMMA);
                    this.state = 592;
                    this.assignment_stmt_item(); 
                }
                this.state = 597;
                this._errHandler.sync(this);
                _alt = this._interp.adaptivePredict(this._input,14,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 Assignment_stmt_itemContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_assignment_stmt_item;
    return this;
}

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

Assignment_stmt_itemContext.prototype.assignment_stmt_single_item = function() {
    return this.getTypedRuleContext(Assignment_stmt_single_itemContext,0);
};

Assignment_stmt_itemContext.prototype.assignment_stmt_multiple_item = function() {
    return this.getTypedRuleContext(Assignment_stmt_multiple_itemContext,0);
};

Assignment_stmt_itemContext.prototype.assignment_stmt_select_item = function() {
    return this.getTypedRuleContext(Assignment_stmt_select_itemContext,0);
};

Assignment_stmt_itemContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterAssignment_stmt_item(this);
	}
};

Assignment_stmt_itemContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitAssignment_stmt_item(this);
	}
};

Assignment_stmt_itemContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitAssignment_stmt_item(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Assignment_stmt_itemContext = Assignment_stmt_itemContext;

HiveSqlParser.prototype.assignment_stmt_item = function() {

    var localctx = new Assignment_stmt_itemContext(this, this._ctx, this.state);
    this.enterRule(localctx, 26, HiveSqlParser.RULE_assignment_stmt_item);
    try {
        this.state = 603;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,16,this._ctx);
        switch(la_) {
        case 1:
            this.enterOuterAlt(localctx, 1);
            this.state = 600;
            this.assignment_stmt_single_item();
            break;

        case 2:
            this.enterOuterAlt(localctx, 2);
            this.state = 601;
            this.assignment_stmt_multiple_item();
            break;

        case 3:
            this.enterOuterAlt(localctx, 3);
            this.state = 602;
            this.assignment_stmt_select_item();
            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 Assignment_stmt_single_itemContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_assignment_stmt_single_item;
    return this;
}

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

Assignment_stmt_single_itemContext.prototype.ident = function() {
    return this.getTypedRuleContext(IdentContext,0);
};

Assignment_stmt_single_itemContext.prototype.T_EQUAL = function() {
    return this.getToken(HiveSqlParser.T_EQUAL, 0);
};

Assignment_stmt_single_itemContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Assignment_stmt_single_itemContext.prototype.T_COLON = function() {
    return this.getToken(HiveSqlParser.T_COLON, 0);
};

Assignment_stmt_single_itemContext.prototype.T_OPEN_P = function() {
    return this.getToken(HiveSqlParser.T_OPEN_P, 0);
};

Assignment_stmt_single_itemContext.prototype.T_CLOSE_P = function() {
    return this.getToken(HiveSqlParser.T_CLOSE_P, 0);
};

Assignment_stmt_single_itemContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterAssignment_stmt_single_item(this);
	}
};

Assignment_stmt_single_itemContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitAssignment_stmt_single_item(this);
	}
};

Assignment_stmt_single_itemContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitAssignment_stmt_single_item(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Assignment_stmt_single_itemContext = Assignment_stmt_single_itemContext;

HiveSqlParser.prototype.assignment_stmt_single_item = function() {

    var localctx = new Assignment_stmt_single_itemContext(this, this._ctx, this.state);
    this.enterRule(localctx, 28, HiveSqlParser.RULE_assignment_stmt_single_item);
    var _la = 0; // Token type
    try {
        this.state = 621;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case HiveSqlParser.T__8:
        case HiveSqlParser.T_GO:
        case HiveSqlParser.T_BEGIN:
        case HiveSqlParser.T_EXCEPTION:
        case HiveSqlParser.L_ID:
        case HiveSqlParser.T_THEN:
        case HiveSqlParser.T_SET:
        case HiveSqlParser.T_ALLOCATE:
        case HiveSqlParser.T_CURSOR:
        case HiveSqlParser.T_FOR:
        case HiveSqlParser.T_RESULT:
        case HiveSqlParser.T_PROCEDURE:
        case HiveSqlParser.T_ASSOCIATE:
        case HiveSqlParser.T_LOCATOR:
        case HiveSqlParser.T_LOCATORS:
        case HiveSqlParser.T_WITH:
        case HiveSqlParser.T_TRANSACTION:
        case HiveSqlParser.T_BREAK:
        case HiveSqlParser.T_CALL:
        case HiveSqlParser.T_DECLARE:
        case HiveSqlParser.T_AS:
        case HiveSqlParser.T_CONSTANT:
        case HiveSqlParser.T_CONDITION:
        case HiveSqlParser.T_IS:
        case HiveSqlParser.T_RETURN:
        case HiveSqlParser.T_ONLY:
        case HiveSqlParser.T_TO:
        case HiveSqlParser.T_CALLER:
        case HiveSqlParser.T_CLIENT:
        case HiveSqlParser.T_WITHOUT:
        case HiveSqlParser.T_CONTINUE:
        case HiveSqlParser.T_EXIT:
        case HiveSqlParser.T_HANDLER:
        case HiveSqlParser.T_SQLEXCEPTION:
        case HiveSqlParser.T_SQLWARNING:
        case HiveSqlParser.T_NOT:
        case HiveSqlParser.T_FOUND:
        case HiveSqlParser.T_GLOBAL:
        case HiveSqlParser.T_TEMPORARY:
        case HiveSqlParser.T_TABLE:
        case HiveSqlParser.T_CREATE:
        case HiveSqlParser.T_IF:
        case HiveSqlParser.T_EXISTS:
        case HiveSqlParser.T_LOCAL:
        case HiveSqlParser.T_MULTISET:
        case HiveSqlParser.T_VOLATILE:
        case HiveSqlParser.T_LIKE:
        case HiveSqlParser.T_CONSTRAINT:
        case HiveSqlParser.T_PRIMARY:
        case HiveSqlParser.T_KEY:
        case HiveSqlParser.T_UNIQUE:
        case HiveSqlParser.T_REFERENCES:
        case HiveSqlParser.T_IDENTITY:
        case HiveSqlParser.T_AUTO_INCREMENT:
        case HiveSqlParser.T_ENABLE:
        case HiveSqlParser.T_CLUSTERED:
        case HiveSqlParser.T_ASC:
        case HiveSqlParser.T_DESC:
        case HiveSqlParser.T_FOREIGN:
        case HiveSqlParser.T_ON:
        case HiveSqlParser.T_UPDATE:
        case HiveSqlParser.T_DELETE:
        case HiveSqlParser.T_NO:
        case HiveSqlParser.T_ACTION:
        case HiveSqlParser.T_RESTRICT:
        case HiveSqlParser.T_DEFAULT:
        case HiveSqlParser.T_CASCADE:
        case HiveSqlParser.T_LOG:
        case HiveSqlParser.T_FALLBACK:
        case HiveSqlParser.T_COMMIT:
        case HiveSqlParser.T_PRESERVE:
        case HiveSqlParser.T_ROWS:
        case HiveSqlParser.T_SEGMENT:
        case HiveSqlParser.T_CREATION:
        case HiveSqlParser.T_IMMEDIATE:
        case HiveSqlParser.T_DEFERRED:
        case HiveSqlParser.T_PCTFREE:
        case HiveSqlParser.T_PCTUSED:
        case HiveSqlParser.T_INITRANS:
        case HiveSqlParser.T_MAXTRANS:
        case HiveSqlParser.T_NOCOMPRESS:
        case HiveSqlParser.T_LOGGING:
        case HiveSqlParser.T_NOLOGGING:
        case HiveSqlParser.T_STORAGE:
        case HiveSqlParser.T_TABLESPACE:
        case HiveSqlParser.T_INDEX:
        case HiveSqlParser.T_IN:
        case HiveSqlParser.T_REPLACE:
        case HiveSqlParser.T_DISTRIBUTE:
        case HiveSqlParser.T_BY:
        case HiveSqlParser.T_HASH:
        case HiveSqlParser.T_LOGGED:
        case HiveSqlParser.T_COMPRESS:
        case HiveSqlParser.T_YES:
        case HiveSqlParser.T_DEFINITION:
        case HiveSqlParser.T_DROP:
        case HiveSqlParser.T_DATA:
        case HiveSqlParser.T_STORED:
        case HiveSqlParser.T_ROW:
        case HiveSqlParser.T_FORMAT:
        case HiveSqlParser.T_DELIMITED:
        case HiveSqlParser.T_FIELDS:
        case HiveSqlParser.T_TERMINATED:
        case HiveSqlParser.T_ESCAPED:
        case HiveSqlParser.T_COLLECTION:
        case HiveSqlParser.T_ITEMS:
        case HiveSqlParser.T_MAP:
        case HiveSqlParser.T_KEYS:
        case HiveSqlParser.T_LINES:
        case HiveSqlParser.T_DEFINED:
        case HiveSqlParser.T_TEXTIMAGE_ON:
        case HiveSqlParser.T_COMMENT:
        case HiveSqlParser.T_CHARACTER:
        case HiveSqlParser.T_CHARSET:
        case HiveSqlParser.T_ENGINE:
        case HiveSqlParser.T_ALTER:
        case HiveSqlParser.T_ADD2:
        case HiveSqlParser.T_CHAR:
        case HiveSqlParser.T_BIGINT:
        case HiveSqlParser.T_BINARY_DOUBLE:
        case HiveSqlParser.T_BINARY_FLOAT:
        case HiveSqlParser.T_BIT:
        case HiveSqlParser.T_DATE:
        case HiveSqlParser.T_DATETIME:
        case HiveSqlParser.T_DEC:
        case HiveSqlParser.T_DECIMAL:
        case HiveSqlParser.T_DOUBLE:
        case HiveSqlParser.T_PRECISION:
        case HiveSqlParser.T_FLOAT:
        case HiveSqlParser.T_INT:
        case HiveSqlParser.T_INT2:
        case HiveSqlParser.T_INT4:
        case HiveSqlParser.T_INT8:
        case HiveSqlParser.T_INTEGER:
        case HiveSqlParser.T_NCHAR:
        case HiveSqlParser.T_NVARCHAR:
        case HiveSqlParser.T_NUMBER:
        case HiveSqlParser.T_NUMERIC:
        case HiveSqlParser.T_REAL:
        case HiveSqlParser.T_RESULT_SET_LOCATOR:
        case HiveSqlParser.T_VARYING:
        case HiveSqlParser.T_SIMPLE_FLOAT:
        case HiveSqlParser.T_SIMPLE_DOUBLE:
        case HiveSqlParser.T_SMALLINT:
        case HiveSqlParser.T_SMALLDATETIME:
        case HiveSqlParser.T_STRING:
        case HiveSqlParser.T_SYS_REFCURSOR:
        case HiveSqlParser.T_TIMESTAMP:
        case HiveSqlParser.T_VARCHAR:
        case HiveSqlParser.T_VARCHAR2:
        case HiveSqlParser.T_XML:
        case HiveSqlParser.T_MAX:
        case HiveSqlParser.T_BYTE:
        case HiveSqlParser.T_CASESPECIFIC:
        case HiveSqlParser.T_CS:
        case HiveSqlParser.T_DATABASE:
        case HiveSqlParser.T_SCHEMA:
        case HiveSqlParser.T_LOCATION:
        case HiveSqlParser.T_OR:
        case HiveSqlParser.T_FUNCTION:
        case HiveSqlParser.T_RETURNS:
        case HiveSqlParser.T_PACKAGE:
        case HiveSqlParser.T_PROC:
        case HiveSqlParser.T_BODY:
        case HiveSqlParser.T_OUT:
        case HiveSqlParser.T_INOUT:
        case HiveSqlParser.T_LANGUAGE:
        case HiveSqlParser.T_SQL:
        case HiveSqlParser.T_SECURITY:
        case HiveSqlParser.T_CREATOR:
        case HiveSqlParser.T_DEFINER:
        case HiveSqlParser.T_INVOKER:
        case HiveSqlParser.T_OWNER:
        case HiveSqlParser.T_DYNAMIC:
        case HiveSqlParser.T_SETS:
        case HiveSqlParser.T_EXEC:
        case HiveSqlParser.T_EXECUTE:
        case HiveSqlParser.T_INTO:
        case HiveSqlParser.T_INCLUDE:
        case HiveSqlParser.T_INSERT:
        case HiveSqlParser.T_OVERWRITE:
        case HiveSqlParser.T_VALUES:
        case HiveSqlParser.T_DIRECTORY:
        case HiveSqlParser.T_GET:
        case HiveSqlParser.T_DIAGNOSTICS:
        case HiveSqlParser.T_MESSAGE_TEXT:
        case HiveSqlParser.T_ROW_COUNT:
        case HiveSqlParser.T_GRANT:
        case HiveSqlParser.T_ROLE:
        case HiveSqlParser.T_LEAVE:
        case HiveSqlParser.T_OBJECT:
        case HiveSqlParser.T_AT:
        case HiveSqlParser.T_OPEN:
        case HiveSqlParser.T_FETCH:
        case HiveSqlParser.T_FROM:
        case HiveSqlParser.T_COLLECT:
        case HiveSqlParser.T_STATISTICS:
        case HiveSqlParser.T_STATS:
        case HiveSqlParser.T_COLUMN:
        case HiveSqlParser.T_CLOSE:
        case HiveSqlParser.T_CMP:
        case HiveSqlParser.T_SUM:
        case HiveSqlParser.T_COPY:
        case HiveSqlParser.T_HDFS:
        case HiveSqlParser.T_BATCHSIZE:
        case HiveSqlParser.T_DELIMITER:
        case HiveSqlParser.T_SQLINSERT:
        case HiveSqlParser.T_IGNORE:
        case HiveSqlParser.T_WORK:
        case HiveSqlParser.T_PRINT:
        case HiveSqlParser.T_QUIT:
        case HiveSqlParser.T_RAISE:
        case HiveSqlParser.T_RESIGNAL:
        case HiveSqlParser.T_SQLSTATE:
        case HiveSqlParser.T_VALUE:
        case HiveSqlParser.T_ROLLBACK:
        case HiveSqlParser.T_CURRENT:
        case HiveSqlParser.T_CURRENT_SCHEMA:
        case HiveSqlParser.T_ANSI_NULLS:
        case HiveSqlParser.T_ANSI_PADDING:
        case HiveSqlParser.T_NOCOUNT:
        case HiveSqlParser.T_QUOTED_IDENTIFIER:
        case HiveSqlParser.T_XACT_ABORT:
        case HiveSqlParser.T_OFF:
        case HiveSqlParser.T_QUERY_BAND:
        case HiveSqlParser.T_NONE:
        case HiveSqlParser.T_SESSION:
        case HiveSqlParser.T_SIGNAL:
        case HiveSqlParser.T_SUMMARY:
        case HiveSqlParser.T_TOP:
        case HiveSqlParser.T_LIMIT:
        case HiveSqlParser.T_TRUNCATE:
        case HiveSqlParser.T_USE:
        case HiveSqlParser.T_WHILE:
        case HiveSqlParser.T_DO:
        case HiveSqlParser.T_LOOP:
        case HiveSqlParser.T_REVERSE:
        case HiveSqlParser.T_STEP:
        case HiveSqlParser.T_USING:
        case HiveSqlParser.T_ALL:
        case HiveSqlParser.T_EXCEPT:
        case HiveSqlParser.T_INTERSECT:
        case HiveSqlParser.T_SELECT:
        case HiveSqlParser.T_SEL:
        case HiveSqlParser.T_DISTINCT:
        case HiveSqlParser.T_TITLE:
        case HiveSqlParser.T_INNER:
        case HiveSqlParser.T_JOIN:
        case HiveSqlParser.T_LEFT:
        case HiveSqlParser.T_RIGHT:
        case HiveSqlParser.T_FULL:
        case HiveSqlParser.T_OUTER:
        case HiveSqlParser.T_GROUP:
        case HiveSqlParser.T_HAVING:
        case HiveSqlParser.T_QUALIFY:
        case HiveSqlParser.T_ORDER:
        case HiveSqlParser.T_RR:
        case HiveSqlParser.T_RS:
        case HiveSqlParser.T_UR:
        case HiveSqlParser.T_AND:
        case HiveSqlParser.T_KEEP:
        case HiveSqlParser.T_EXCLUSIVE:
        case HiveSqlParser.T_SHARE:
        case HiveSqlParser.T_LOCKS:
        case HiveSqlParser.T_MERGE:
        case HiveSqlParser.T_MATCHED:
        case HiveSqlParser.T_DESCRIBE:
        case HiveSqlParser.T_BETWEEN:
        case HiveSqlParser.T_RLIKE:
        case HiveSqlParser.T_REGEXP:
        case HiveSqlParser.T_INTERVAL:
        case HiveSqlParser.T_DAY:
        case HiveSqlParser.T_DAYS:
        case HiveSqlParser.T_MICROSECOND:
        case HiveSqlParser.T_MICROSECONDS:
        case HiveSqlParser.T_SECOND:
        case HiveSqlParser.T_SECONDS:
        case HiveSqlParser.T_CONCAT:
        case HiveSqlParser.T_CASE:
        case HiveSqlParser.T_ISOPEN:
        case HiveSqlParser.T_NOTFOUND:
        case HiveSqlParser.T_AVG:
        case HiveSqlParser.T_COUNT:
        case HiveSqlParser.T_COUNT_BIG:
        case HiveSqlParser.T_CUME_DIST:
        case HiveSqlParser.T_DENSE_RANK:
        case HiveSqlParser.T_FIRST_VALUE:
        case HiveSqlParser.T_LAG:
        case HiveSqlParser.T_LAST_VALUE:
        case HiveSqlParser.T_LEAD:
        case HiveSqlParser.T_MIN:
        case HiveSqlParser.T_RANK:
        case HiveSqlParser.T_ROW_NUMBER:
        case HiveSqlParser.T_STDEV:
        case HiveSqlParser.T_VAR:
        case HiveSqlParser.T_VARIANCE:
        case HiveSqlParser.T_OVER:
        case HiveSqlParser.T_PARTITION:
        case HiveSqlParser.T_ACTIVITY_COUNT:
        case HiveSqlParser.T_CAST:
        case HiveSqlParser.T_CURRENT_DATE:
        case HiveSqlParser.T_CURRENT_TIMESTAMP:
        case HiveSqlParser.T_CURRENT_USER:
        case HiveSqlParser.T_USER:
        case HiveSqlParser.T_PART_COUNT:
        case HiveSqlParser.T_PART_LOC:
        case HiveSqlParser.T_TRIM:
        case HiveSqlParser.T_SUBSTRING:
        case HiveSqlParser.T_SYSDATE:
        case HiveSqlParser.T_HIVE:
        case HiveSqlParser.T_HOST:
        case HiveSqlParser.T_TRUE:
        case HiveSqlParser.T_FALSE:
        case HiveSqlParser.T_DIR:
        case HiveSqlParser.T_FILE:
        case HiveSqlParser.T_FILES:
        case HiveSqlParser.T_NEW:
        case HiveSqlParser.T_PWD:
        case HiveSqlParser.T_SESSIONS:
        case HiveSqlParser.T_SUBDIR:
            this.enterOuterAlt(localctx, 1);
            this.state = 605;
            this.ident();
            this.state = 607;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===HiveSqlParser.T_COLON) {
                this.state = 606;
                this.match(HiveSqlParser.T_COLON);
            }

            this.state = 609;
            this.match(HiveSqlParser.T_EQUAL);
            this.state = 610;
            this.expr(0);
            break;
        case HiveSqlParser.T_OPEN_P:
            this.enterOuterAlt(localctx, 2);
            this.state = 612;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 613;
            this.ident();
            this.state = 614;
            this.match(HiveSqlParser.T_CLOSE_P);
            this.state = 616;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===HiveSqlParser.T_COLON) {
                this.state = 615;
                this.match(HiveSqlParser.T_COLON);
            }

            this.state = 618;
            this.match(HiveSqlParser.T_EQUAL);
            this.state = 619;
            this.expr(0);
            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 Assignment_stmt_multiple_itemContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_assignment_stmt_multiple_item;
    return this;
}

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

Assignment_stmt_multiple_itemContext.prototype.T_OPEN_P = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_OPEN_P);
    } else {
        return this.getToken(HiveSqlParser.T_OPEN_P, i);
    }
};


Assignment_stmt_multiple_itemContext.prototype.ident = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(IdentContext);
    } else {
        return this.getTypedRuleContext(IdentContext,i);
    }
};

Assignment_stmt_multiple_itemContext.prototype.T_CLOSE_P = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_CLOSE_P);
    } else {
        return this.getToken(HiveSqlParser.T_CLOSE_P, i);
    }
};


Assignment_stmt_multiple_itemContext.prototype.T_EQUAL = function() {
    return this.getToken(HiveSqlParser.T_EQUAL, 0);
};

Assignment_stmt_multiple_itemContext.prototype.expr = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(ExprContext);
    } else {
        return this.getTypedRuleContext(ExprContext,i);
    }
};

Assignment_stmt_multiple_itemContext.prototype.T_COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_COMMA);
    } else {
        return this.getToken(HiveSqlParser.T_COMMA, i);
    }
};


Assignment_stmt_multiple_itemContext.prototype.T_COLON = function() {
    return this.getToken(HiveSqlParser.T_COLON, 0);
};

Assignment_stmt_multiple_itemContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterAssignment_stmt_multiple_item(this);
	}
};

Assignment_stmt_multiple_itemContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitAssignment_stmt_multiple_item(this);
	}
};

Assignment_stmt_multiple_itemContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitAssignment_stmt_multiple_item(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Assignment_stmt_multiple_itemContext = Assignment_stmt_multiple_itemContext;

HiveSqlParser.prototype.assignment_stmt_multiple_item = function() {

    var localctx = new Assignment_stmt_multiple_itemContext(this, this._ctx, this.state);
    this.enterRule(localctx, 30, HiveSqlParser.RULE_assignment_stmt_multiple_item);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 623;
        this.match(HiveSqlParser.T_OPEN_P);
        this.state = 624;
        this.ident();
        this.state = 629;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===HiveSqlParser.T_COMMA) {
            this.state = 625;
            this.match(HiveSqlParser.T_COMMA);
            this.state = 626;
            this.ident();
            this.state = 631;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
        this.state = 632;
        this.match(HiveSqlParser.T_CLOSE_P);
        this.state = 634;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===HiveSqlParser.T_COLON) {
            this.state = 633;
            this.match(HiveSqlParser.T_COLON);
        }

        this.state = 636;
        this.match(HiveSqlParser.T_EQUAL);
        this.state = 637;
        this.match(HiveSqlParser.T_OPEN_P);
        this.state = 638;
        this.expr(0);
        this.state = 643;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===HiveSqlParser.T_COMMA) {
            this.state = 639;
            this.match(HiveSqlParser.T_COMMA);
            this.state = 640;
            this.expr(0);
            this.state = 645;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
        this.state = 646;
        this.match(HiveSqlParser.T_CLOSE_P);
    } 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 Assignment_stmt_select_itemContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_assignment_stmt_select_item;
    return this;
}

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

Assignment_stmt_select_itemContext.prototype.T_EQUAL = function() {
    return this.getToken(HiveSqlParser.T_EQUAL, 0);
};

Assignment_stmt_select_itemContext.prototype.T_OPEN_P = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_OPEN_P);
    } else {
        return this.getToken(HiveSqlParser.T_OPEN_P, i);
    }
};


Assignment_stmt_select_itemContext.prototype.select_stmt = function() {
    return this.getTypedRuleContext(Select_stmtContext,0);
};

Assignment_stmt_select_itemContext.prototype.T_CLOSE_P = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_CLOSE_P);
    } else {
        return this.getToken(HiveSqlParser.T_CLOSE_P, i);
    }
};


Assignment_stmt_select_itemContext.prototype.ident = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(IdentContext);
    } else {
        return this.getTypedRuleContext(IdentContext,i);
    }
};

Assignment_stmt_select_itemContext.prototype.T_COLON = function() {
    return this.getToken(HiveSqlParser.T_COLON, 0);
};

Assignment_stmt_select_itemContext.prototype.T_COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_COMMA);
    } else {
        return this.getToken(HiveSqlParser.T_COMMA, i);
    }
};


Assignment_stmt_select_itemContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterAssignment_stmt_select_item(this);
	}
};

Assignment_stmt_select_itemContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitAssignment_stmt_select_item(this);
	}
};

Assignment_stmt_select_itemContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitAssignment_stmt_select_item(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Assignment_stmt_select_itemContext = Assignment_stmt_select_itemContext;

HiveSqlParser.prototype.assignment_stmt_select_item = function() {

    var localctx = new Assignment_stmt_select_itemContext(this, this._ctx, this.state);
    this.enterRule(localctx, 32, HiveSqlParser.RULE_assignment_stmt_select_item);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 660;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case HiveSqlParser.T__8:
        case HiveSqlParser.T_GO:
        case HiveSqlParser.T_BEGIN:
        case HiveSqlParser.T_EXCEPTION:
        case HiveSqlParser.L_ID:
        case HiveSqlParser.T_THEN:
        case HiveSqlParser.T_SET:
        case HiveSqlParser.T_ALLOCATE:
        case HiveSqlParser.T_CURSOR:
        case HiveSqlParser.T_FOR:
        case HiveSqlParser.T_RESULT:
        case HiveSqlParser.T_PROCEDURE:
        case HiveSqlParser.T_ASSOCIATE:
        case HiveSqlParser.T_LOCATOR:
        case HiveSqlParser.T_LOCATORS:
        case HiveSqlParser.T_WITH:
        case HiveSqlParser.T_TRANSACTION:
        case HiveSqlParser.T_BREAK:
        case HiveSqlParser.T_CALL:
        case HiveSqlParser.T_DECLARE:
        case HiveSqlParser.T_AS:
        case HiveSqlParser.T_CONSTANT:
        case HiveSqlParser.T_CONDITION:
        case HiveSqlParser.T_IS:
        case HiveSqlParser.T_RETURN:
        case HiveSqlParser.T_ONLY:
        case HiveSqlParser.T_TO:
        case HiveSqlParser.T_CALLER:
        case HiveSqlParser.T_CLIENT:
        case HiveSqlParser.T_WITHOUT:
        case HiveSqlParser.T_CONTINUE:
        case HiveSqlParser.T_EXIT:
        case HiveSqlParser.T_HANDLER:
        case HiveSqlParser.T_SQLEXCEPTION:
        case HiveSqlParser.T_SQLWARNING:
        case HiveSqlParser.T_NOT:
        case HiveSqlParser.T_FOUND:
        case HiveSqlParser.T_GLOBAL:
        case HiveSqlParser.T_TEMPORARY:
        case HiveSqlParser.T_TABLE:
        case HiveSqlParser.T_CREATE:
        case HiveSqlParser.T_IF:
        case HiveSqlParser.T_EXISTS:
        case HiveSqlParser.T_LOCAL:
        case HiveSqlParser.T_MULTISET:
        case HiveSqlParser.T_VOLATILE:
        case HiveSqlParser.T_LIKE:
        case HiveSqlParser.T_CONSTRAINT:
        case HiveSqlParser.T_PRIMARY:
        case HiveSqlParser.T_KEY:
        case HiveSqlParser.T_UNIQUE:
        case HiveSqlParser.T_REFERENCES:
        case HiveSqlParser.T_IDENTITY:
        case HiveSqlParser.T_AUTO_INCREMENT:
        case HiveSqlParser.T_ENABLE:
        case HiveSqlParser.T_CLUSTERED:
        case HiveSqlParser.T_ASC:
        case HiveSqlParser.T_DESC:
        case HiveSqlParser.T_FOREIGN:
        case HiveSqlParser.T_ON:
        case HiveSqlParser.T_UPDATE:
        case HiveSqlParser.T_DELETE:
        case HiveSqlParser.T_NO:
        case HiveSqlParser.T_ACTION:
        case HiveSqlParser.T_RESTRICT:
        case HiveSqlParser.T_DEFAULT:
        case HiveSqlParser.T_CASCADE:
        case HiveSqlParser.T_LOG:
        case HiveSqlParser.T_FALLBACK:
        case HiveSqlParser.T_COMMIT:
        case HiveSqlParser.T_PRESERVE:
        case HiveSqlParser.T_ROWS:
        case HiveSqlParser.T_SEGMENT:
        case HiveSqlParser.T_CREATION:
        case HiveSqlParser.T_IMMEDIATE:
        case HiveSqlParser.T_DEFERRED:
        case HiveSqlParser.T_PCTFREE:
        case HiveSqlParser.T_PCTUSED:
        case HiveSqlParser.T_INITRANS:
        case HiveSqlParser.T_MAXTRANS:
        case HiveSqlParser.T_NOCOMPRESS:
        case HiveSqlParser.T_LOGGING:
        case HiveSqlParser.T_NOLOGGING:
        case HiveSqlParser.T_STORAGE:
        case HiveSqlParser.T_TABLESPACE:
        case HiveSqlParser.T_INDEX:
        case HiveSqlParser.T_IN:
        case HiveSqlParser.T_REPLACE:
        case HiveSqlParser.T_DISTRIBUTE:
        case HiveSqlParser.T_BY:
        case HiveSqlParser.T_HASH:
        case HiveSqlParser.T_LOGGED:
        case HiveSqlParser.T_COMPRESS:
        case HiveSqlParser.T_YES:
        case HiveSqlParser.T_DEFINITION:
        case HiveSqlParser.T_DROP:
        case HiveSqlParser.T_DATA:
        case HiveSqlParser.T_STORED:
        case HiveSqlParser.T_ROW:
        case HiveSqlParser.T_FORMAT:
        case HiveSqlParser.T_DELIMITED:
        case HiveSqlParser.T_FIELDS:
        case HiveSqlParser.T_TERMINATED:
        case HiveSqlParser.T_ESCAPED:
        case HiveSqlParser.T_COLLECTION:
        case HiveSqlParser.T_ITEMS:
        case HiveSqlParser.T_MAP:
        case HiveSqlParser.T_KEYS:
        case HiveSqlParser.T_LINES:
        case HiveSqlParser.T_DEFINED:
        case HiveSqlParser.T_TEXTIMAGE_ON:
        case HiveSqlParser.T_COMMENT:
        case HiveSqlParser.T_CHARACTER:
        case HiveSqlParser.T_CHARSET:
        case HiveSqlParser.T_ENGINE:
        case HiveSqlParser.T_ALTER:
        case HiveSqlParser.T_ADD2:
        case HiveSqlParser.T_CHAR:
        case HiveSqlParser.T_BIGINT:
        case HiveSqlParser.T_BINARY_DOUBLE:
        case HiveSqlParser.T_BINARY_FLOAT:
        case HiveSqlParser.T_BIT:
        case HiveSqlParser.T_DATE:
        case HiveSqlParser.T_DATETIME:
        case HiveSqlParser.T_DEC:
        case HiveSqlParser.T_DECIMAL:
        case HiveSqlParser.T_DOUBLE:
        case HiveSqlParser.T_PRECISION:
        case HiveSqlParser.T_FLOAT:
        case HiveSqlParser.T_INT:
        case HiveSqlParser.T_INT2:
        case HiveSqlParser.T_INT4:
        case HiveSqlParser.T_INT8:
        case HiveSqlParser.T_INTEGER:
        case HiveSqlParser.T_NCHAR:
        case HiveSqlParser.T_NVARCHAR:
        case HiveSqlParser.T_NUMBER:
        case HiveSqlParser.T_NUMERIC:
        case HiveSqlParser.T_REAL:
        case HiveSqlParser.T_RESULT_SET_LOCATOR:
        case HiveSqlParser.T_VARYING:
        case HiveSqlParser.T_SIMPLE_FLOAT:
        case HiveSqlParser.T_SIMPLE_DOUBLE:
        case HiveSqlParser.T_SMALLINT:
        case HiveSqlParser.T_SMALLDATETIME:
        case HiveSqlParser.T_STRING:
        case HiveSqlParser.T_SYS_REFCURSOR:
        case HiveSqlParser.T_TIMESTAMP:
        case HiveSqlParser.T_VARCHAR:
        case HiveSqlParser.T_VARCHAR2:
        case HiveSqlParser.T_XML:
        case HiveSqlParser.T_MAX:
        case HiveSqlParser.T_BYTE:
        case HiveSqlParser.T_CASESPECIFIC:
        case HiveSqlParser.T_CS:
        case HiveSqlParser.T_DATABASE:
        case HiveSqlParser.T_SCHEMA:
        case HiveSqlParser.T_LOCATION:
        case HiveSqlParser.T_OR:
        case HiveSqlParser.T_FUNCTION:
        case HiveSqlParser.T_RETURNS:
        case HiveSqlParser.T_PACKAGE:
        case HiveSqlParser.T_PROC:
        case HiveSqlParser.T_BODY:
        case HiveSqlParser.T_OUT:
        case HiveSqlParser.T_INOUT:
        case HiveSqlParser.T_LANGUAGE:
        case HiveSqlParser.T_SQL:
        case HiveSqlParser.T_SECURITY:
        case HiveSqlParser.T_CREATOR:
        case HiveSqlParser.T_DEFINER:
        case HiveSqlParser.T_INVOKER:
        case HiveSqlParser.T_OWNER:
        case HiveSqlParser.T_DYNAMIC:
        case HiveSqlParser.T_SETS:
        case HiveSqlParser.T_EXEC:
        case HiveSqlParser.T_EXECUTE:
        case HiveSqlParser.T_INTO:
        case HiveSqlParser.T_INCLUDE:
        case HiveSqlParser.T_INSERT:
        case HiveSqlParser.T_OVERWRITE:
        case HiveSqlParser.T_VALUES:
        case HiveSqlParser.T_DIRECTORY:
        case HiveSqlParser.T_GET:
        case HiveSqlParser.T_DIAGNOSTICS:
        case HiveSqlParser.T_MESSAGE_TEXT:
        case HiveSqlParser.T_ROW_COUNT:
        case HiveSqlParser.T_GRANT:
        case HiveSqlParser.T_ROLE:
        case HiveSqlParser.T_LEAVE:
        case HiveSqlParser.T_OBJECT:
        case HiveSqlParser.T_AT:
        case HiveSqlParser.T_OPEN:
        case HiveSqlParser.T_FETCH:
        case HiveSqlParser.T_FROM:
        case HiveSqlParser.T_COLLECT:
        case HiveSqlParser.T_STATISTICS:
        case HiveSqlParser.T_STATS:
        case HiveSqlParser.T_COLUMN:
        case HiveSqlParser.T_CLOSE:
        case HiveSqlParser.T_CMP:
        case HiveSqlParser.T_SUM:
        case HiveSqlParser.T_COPY:
        case HiveSqlParser.T_HDFS:
        case HiveSqlParser.T_BATCHSIZE:
        case HiveSqlParser.T_DELIMITER:
        case HiveSqlParser.T_SQLINSERT:
        case HiveSqlParser.T_IGNORE:
        case HiveSqlParser.T_WORK:
        case HiveSqlParser.T_PRINT:
        case HiveSqlParser.T_QUIT:
        case HiveSqlParser.T_RAISE:
        case HiveSqlParser.T_RESIGNAL:
        case HiveSqlParser.T_SQLSTATE:
        case HiveSqlParser.T_VALUE:
        case HiveSqlParser.T_ROLLBACK:
        case HiveSqlParser.T_CURRENT:
        case HiveSqlParser.T_CURRENT_SCHEMA:
        case HiveSqlParser.T_ANSI_NULLS:
        case HiveSqlParser.T_ANSI_PADDING:
        case HiveSqlParser.T_NOCOUNT:
        case HiveSqlParser.T_QUOTED_IDENTIFIER:
        case HiveSqlParser.T_XACT_ABORT:
        case HiveSqlParser.T_OFF:
        case HiveSqlParser.T_QUERY_BAND:
        case HiveSqlParser.T_NONE:
        case HiveSqlParser.T_SESSION:
        case HiveSqlParser.T_SIGNAL:
        case HiveSqlParser.T_SUMMARY:
        case HiveSqlParser.T_TOP:
        case HiveSqlParser.T_LIMIT:
        case HiveSqlParser.T_TRUNCATE:
        case HiveSqlParser.T_USE:
        case HiveSqlParser.T_WHILE:
        case HiveSqlParser.T_DO:
        case HiveSqlParser.T_LOOP:
        case HiveSqlParser.T_REVERSE:
        case HiveSqlParser.T_STEP:
        case HiveSqlParser.T_USING:
        case HiveSqlParser.T_ALL:
        case HiveSqlParser.T_EXCEPT:
        case HiveSqlParser.T_INTERSECT:
        case HiveSqlParser.T_SELECT:
        case HiveSqlParser.T_SEL:
        case HiveSqlParser.T_DISTINCT:
        case HiveSqlParser.T_TITLE:
        case HiveSqlParser.T_INNER:
        case HiveSqlParser.T_JOIN:
        case HiveSqlParser.T_LEFT:
        case HiveSqlParser.T_RIGHT:
        case HiveSqlParser.T_FULL:
        case HiveSqlParser.T_OUTER:
        case HiveSqlParser.T_GROUP:
        case HiveSqlParser.T_HAVING:
        case HiveSqlParser.T_QUALIFY:
        case HiveSqlParser.T_ORDER:
        case HiveSqlParser.T_RR:
        case HiveSqlParser.T_RS:
        case HiveSqlParser.T_UR:
        case HiveSqlParser.T_AND:
        case HiveSqlParser.T_KEEP:
        case HiveSqlParser.T_EXCLUSIVE:
        case HiveSqlParser.T_SHARE:
        case HiveSqlParser.T_LOCKS:
        case HiveSqlParser.T_MERGE:
        case HiveSqlParser.T_MATCHED:
        case HiveSqlParser.T_DESCRIBE:
        case HiveSqlParser.T_BETWEEN:
        case HiveSqlParser.T_RLIKE:
        case HiveSqlParser.T_REGEXP:
        case HiveSqlParser.T_INTERVAL:
        case HiveSqlParser.T_DAY:
        case HiveSqlParser.T_DAYS:
        case HiveSqlParser.T_MICROSECOND:
        case HiveSqlParser.T_MICROSECONDS:
        case HiveSqlParser.T_SECOND:
        case HiveSqlParser.T_SECONDS:
        case HiveSqlParser.T_CONCAT:
        case HiveSqlParser.T_CASE:
        case HiveSqlParser.T_ISOPEN:
        case HiveSqlParser.T_NOTFOUND:
        case HiveSqlParser.T_AVG:
        case HiveSqlParser.T_COUNT:
        case HiveSqlParser.T_COUNT_BIG:
        case HiveSqlParser.T_CUME_DIST:
        case HiveSqlParser.T_DENSE_RANK:
        case HiveSqlParser.T_FIRST_VALUE:
        case HiveSqlParser.T_LAG:
        case HiveSqlParser.T_LAST_VALUE:
        case HiveSqlParser.T_LEAD:
        case HiveSqlParser.T_MIN:
        case HiveSqlParser.T_RANK:
        case HiveSqlParser.T_ROW_NUMBER:
        case HiveSqlParser.T_STDEV:
        case HiveSqlParser.T_VAR:
        case HiveSqlParser.T_VARIANCE:
        case HiveSqlParser.T_OVER:
        case HiveSqlParser.T_PARTITION:
        case HiveSqlParser.T_ACTIVITY_COUNT:
        case HiveSqlParser.T_CAST:
        case HiveSqlParser.T_CURRENT_DATE:
        case HiveSqlParser.T_CURRENT_TIMESTAMP:
        case HiveSqlParser.T_CURRENT_USER:
        case HiveSqlParser.T_USER:
        case HiveSqlParser.T_PART_COUNT:
        case HiveSqlParser.T_PART_LOC:
        case HiveSqlParser.T_TRIM:
        case HiveSqlParser.T_SUBSTRING:
        case HiveSqlParser.T_SYSDATE:
        case HiveSqlParser.T_HIVE:
        case HiveSqlParser.T_HOST:
        case HiveSqlParser.T_TRUE:
        case HiveSqlParser.T_FALSE:
        case HiveSqlParser.T_DIR:
        case HiveSqlParser.T_FILE:
        case HiveSqlParser.T_FILES:
        case HiveSqlParser.T_NEW:
        case HiveSqlParser.T_PWD:
        case HiveSqlParser.T_SESSIONS:
        case HiveSqlParser.T_SUBDIR:
            this.state = 648;
            this.ident();
            break;
        case HiveSqlParser.T_OPEN_P:
            this.state = 649;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 650;
            this.ident();
            this.state = 655;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            while(_la===HiveSqlParser.T_COMMA) {
                this.state = 651;
                this.match(HiveSqlParser.T_COMMA);
                this.state = 652;
                this.ident();
                this.state = 657;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
            }
            this.state = 658;
            this.match(HiveSqlParser.T_CLOSE_P);
            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
        this.state = 663;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===HiveSqlParser.T_COLON) {
            this.state = 662;
            this.match(HiveSqlParser.T_COLON);
        }

        this.state = 665;
        this.match(HiveSqlParser.T_EQUAL);
        this.state = 666;
        this.match(HiveSqlParser.T_OPEN_P);
        this.state = 667;
        this.select_stmt();
        this.state = 668;
        this.match(HiveSqlParser.T_CLOSE_P);
    } 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 Allocate_cursor_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_allocate_cursor_stmt;
    return this;
}

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

Allocate_cursor_stmtContext.prototype.T_ALLOCATE = function() {
    return this.getToken(HiveSqlParser.T_ALLOCATE, 0);
};

Allocate_cursor_stmtContext.prototype.ident = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(IdentContext);
    } else {
        return this.getTypedRuleContext(IdentContext,i);
    }
};

Allocate_cursor_stmtContext.prototype.T_CURSOR = function() {
    return this.getToken(HiveSqlParser.T_CURSOR, 0);
};

Allocate_cursor_stmtContext.prototype.T_FOR = function() {
    return this.getToken(HiveSqlParser.T_FOR, 0);
};

Allocate_cursor_stmtContext.prototype.T_PROCEDURE = function() {
    return this.getToken(HiveSqlParser.T_PROCEDURE, 0);
};

Allocate_cursor_stmtContext.prototype.T_RESULT = function() {
    return this.getToken(HiveSqlParser.T_RESULT, 0);
};

Allocate_cursor_stmtContext.prototype.T_SET = function() {
    return this.getToken(HiveSqlParser.T_SET, 0);
};

Allocate_cursor_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterAllocate_cursor_stmt(this);
	}
};

Allocate_cursor_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitAllocate_cursor_stmt(this);
	}
};

Allocate_cursor_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitAllocate_cursor_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Allocate_cursor_stmtContext = Allocate_cursor_stmtContext;

HiveSqlParser.prototype.allocate_cursor_stmt = function() {

    var localctx = new Allocate_cursor_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 34, HiveSqlParser.RULE_allocate_cursor_stmt);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 670;
        this.match(HiveSqlParser.T_ALLOCATE);
        this.state = 671;
        this.ident();
        this.state = 672;
        this.match(HiveSqlParser.T_CURSOR);
        this.state = 673;
        this.match(HiveSqlParser.T_FOR);
        this.state = 677;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case HiveSqlParser.T_RESULT:
            this.state = 674;
            this.match(HiveSqlParser.T_RESULT);
            this.state = 675;
            this.match(HiveSqlParser.T_SET);
            break;
        case HiveSqlParser.T_PROCEDURE:
            this.state = 676;
            this.match(HiveSqlParser.T_PROCEDURE);
            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
        this.state = 679;
        this.ident();
    } 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 Associate_locator_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_associate_locator_stmt;
    return this;
}

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

Associate_locator_stmtContext.prototype.T_ASSOCIATE = function() {
    return this.getToken(HiveSqlParser.T_ASSOCIATE, 0);
};

Associate_locator_stmtContext.prototype.T_OPEN_P = function() {
    return this.getToken(HiveSqlParser.T_OPEN_P, 0);
};

Associate_locator_stmtContext.prototype.ident = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(IdentContext);
    } else {
        return this.getTypedRuleContext(IdentContext,i);
    }
};

Associate_locator_stmtContext.prototype.T_CLOSE_P = function() {
    return this.getToken(HiveSqlParser.T_CLOSE_P, 0);
};

Associate_locator_stmtContext.prototype.T_WITH = function() {
    return this.getToken(HiveSqlParser.T_WITH, 0);
};

Associate_locator_stmtContext.prototype.T_PROCEDURE = function() {
    return this.getToken(HiveSqlParser.T_PROCEDURE, 0);
};

Associate_locator_stmtContext.prototype.T_LOCATOR = function() {
    return this.getToken(HiveSqlParser.T_LOCATOR, 0);
};

Associate_locator_stmtContext.prototype.T_LOCATORS = function() {
    return this.getToken(HiveSqlParser.T_LOCATORS, 0);
};

Associate_locator_stmtContext.prototype.T_RESULT = function() {
    return this.getToken(HiveSqlParser.T_RESULT, 0);
};

Associate_locator_stmtContext.prototype.T_SET = function() {
    return this.getToken(HiveSqlParser.T_SET, 0);
};

Associate_locator_stmtContext.prototype.T_COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_COMMA);
    } else {
        return this.getToken(HiveSqlParser.T_COMMA, i);
    }
};


Associate_locator_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterAssociate_locator_stmt(this);
	}
};

Associate_locator_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitAssociate_locator_stmt(this);
	}
};

Associate_locator_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitAssociate_locator_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Associate_locator_stmtContext = Associate_locator_stmtContext;

HiveSqlParser.prototype.associate_locator_stmt = function() {

    var localctx = new Associate_locator_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 36, HiveSqlParser.RULE_associate_locator_stmt);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 681;
        this.match(HiveSqlParser.T_ASSOCIATE);
        this.state = 684;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===HiveSqlParser.T_RESULT) {
            this.state = 682;
            this.match(HiveSqlParser.T_RESULT);
            this.state = 683;
            this.match(HiveSqlParser.T_SET);
        }

        this.state = 686;
        _la = this._input.LA(1);
        if(!(_la===HiveSqlParser.T_LOCATOR || _la===HiveSqlParser.T_LOCATORS)) {
        this._errHandler.recoverInline(this);
        }
        else {
        	this._errHandler.reportMatch(this);
            this.consume();
        }
        this.state = 687;
        this.match(HiveSqlParser.T_OPEN_P);
        this.state = 688;
        this.ident();
        this.state = 693;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===HiveSqlParser.T_COMMA) {
            this.state = 689;
            this.match(HiveSqlParser.T_COMMA);
            this.state = 690;
            this.ident();
            this.state = 695;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
        this.state = 696;
        this.match(HiveSqlParser.T_CLOSE_P);
        this.state = 697;
        this.match(HiveSqlParser.T_WITH);
        this.state = 698;
        this.match(HiveSqlParser.T_PROCEDURE);
        this.state = 699;
        this.ident();
    } 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 Begin_transaction_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_begin_transaction_stmt;
    return this;
}

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

Begin_transaction_stmtContext.prototype.T_BEGIN = function() {
    return this.getToken(HiveSqlParser.T_BEGIN, 0);
};

Begin_transaction_stmtContext.prototype.T_TRANSACTION = function() {
    return this.getToken(HiveSqlParser.T_TRANSACTION, 0);
};

Begin_transaction_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterBegin_transaction_stmt(this);
	}
};

Begin_transaction_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitBegin_transaction_stmt(this);
	}
};

Begin_transaction_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitBegin_transaction_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Begin_transaction_stmtContext = Begin_transaction_stmtContext;

HiveSqlParser.prototype.begin_transaction_stmt = function() {

    var localctx = new Begin_transaction_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 38, HiveSqlParser.RULE_begin_transaction_stmt);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 701;
        this.match(HiveSqlParser.T_BEGIN);
        this.state = 702;
        this.match(HiveSqlParser.T_TRANSACTION);
    } 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 Break_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_break_stmt;
    return this;
}

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

Break_stmtContext.prototype.T_BREAK = function() {
    return this.getToken(HiveSqlParser.T_BREAK, 0);
};

Break_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterBreak_stmt(this);
	}
};

Break_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitBreak_stmt(this);
	}
};

Break_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitBreak_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Break_stmtContext = Break_stmtContext;

HiveSqlParser.prototype.break_stmt = function() {

    var localctx = new Break_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 40, HiveSqlParser.RULE_break_stmt);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 704;
        this.match(HiveSqlParser.T_BREAK);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


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

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

Call_stmtContext.prototype.T_CALL = function() {
    return this.getToken(HiveSqlParser.T_CALL, 0);
};

Call_stmtContext.prototype.ident = function() {
    return this.getTypedRuleContext(IdentContext,0);
};

Call_stmtContext.prototype.T_OPEN_P = function() {
    return this.getToken(HiveSqlParser.T_OPEN_P, 0);
};

Call_stmtContext.prototype.T_CLOSE_P = function() {
    return this.getToken(HiveSqlParser.T_CLOSE_P, 0);
};

Call_stmtContext.prototype.expr_func_params = function() {
    return this.getTypedRuleContext(Expr_func_paramsContext,0);
};

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

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

Call_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitCall_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Call_stmtContext = Call_stmtContext;

HiveSqlParser.prototype.call_stmt = function() {

    var localctx = new Call_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 42, HiveSqlParser.RULE_call_stmt);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 706;
        this.match(HiveSqlParser.T_CALL);
        this.state = 707;
        this.ident();
        this.state = 714;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,30,this._ctx);
        if(la_===1) {
            this.state = 708;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 710;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,29,this._ctx);
            if(la_===1) {
                this.state = 709;
                this.expr_func_params();

            }
            this.state = 712;
            this.match(HiveSqlParser.T_CLOSE_P);

        } else if(la_===2) {
            this.state = 713;
            this.expr_func_params();

        }
    } 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 Declare_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_declare_stmt;
    return this;
}

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

Declare_stmtContext.prototype.T_DECLARE = function() {
    return this.getToken(HiveSqlParser.T_DECLARE, 0);
};

Declare_stmtContext.prototype.declare_stmt_item = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Declare_stmt_itemContext);
    } else {
        return this.getTypedRuleContext(Declare_stmt_itemContext,i);
    }
};

Declare_stmtContext.prototype.T_COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_COMMA);
    } else {
        return this.getToken(HiveSqlParser.T_COMMA, i);
    }
};


Declare_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterDeclare_stmt(this);
	}
};

Declare_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitDeclare_stmt(this);
	}
};

Declare_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitDeclare_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Declare_stmtContext = Declare_stmtContext;

HiveSqlParser.prototype.declare_stmt = function() {

    var localctx = new Declare_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 44, HiveSqlParser.RULE_declare_stmt);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 716;
        this.match(HiveSqlParser.T_DECLARE);
        this.state = 717;
        this.declare_stmt_item();
        this.state = 722;
        this._errHandler.sync(this);
        var _alt = this._interp.adaptivePredict(this._input,31,this._ctx)
        while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
            if(_alt===1) {
                this.state = 718;
                this.match(HiveSqlParser.T_COMMA);
                this.state = 719;
                this.declare_stmt_item(); 
            }
            this.state = 724;
            this._errHandler.sync(this);
            _alt = this._interp.adaptivePredict(this._input,31,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 Declare_blockContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_declare_block;
    return this;
}

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

Declare_blockContext.prototype.T_DECLARE = function() {
    return this.getToken(HiveSqlParser.T_DECLARE, 0);
};

Declare_blockContext.prototype.declare_stmt_item = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Declare_stmt_itemContext);
    } else {
        return this.getTypedRuleContext(Declare_stmt_itemContext,i);
    }
};

Declare_blockContext.prototype.T_SEMICOLON = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_SEMICOLON);
    } else {
        return this.getToken(HiveSqlParser.T_SEMICOLON, i);
    }
};


Declare_blockContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterDeclare_block(this);
	}
};

Declare_blockContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitDeclare_block(this);
	}
};

Declare_blockContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitDeclare_block(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Declare_blockContext = Declare_blockContext;

HiveSqlParser.prototype.declare_block = function() {

    var localctx = new Declare_blockContext(this, this._ctx, this.state);
    this.enterRule(localctx, 46, HiveSqlParser.RULE_declare_block);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 725;
        this.match(HiveSqlParser.T_DECLARE);
        this.state = 726;
        this.declare_stmt_item();
        this.state = 727;
        this.match(HiveSqlParser.T_SEMICOLON);
        this.state = 733;
        this._errHandler.sync(this);
        var _alt = this._interp.adaptivePredict(this._input,32,this._ctx)
        while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
            if(_alt===1) {
                this.state = 728;
                this.declare_stmt_item();
                this.state = 729;
                this.match(HiveSqlParser.T_SEMICOLON); 
            }
            this.state = 735;
            this._errHandler.sync(this);
            _alt = this._interp.adaptivePredict(this._input,32,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 Declare_block_inplaceContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_declare_block_inplace;
    return this;
}

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

Declare_block_inplaceContext.prototype.declare_stmt_item = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Declare_stmt_itemContext);
    } else {
        return this.getTypedRuleContext(Declare_stmt_itemContext,i);
    }
};

Declare_block_inplaceContext.prototype.T_SEMICOLON = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_SEMICOLON);
    } else {
        return this.getToken(HiveSqlParser.T_SEMICOLON, i);
    }
};


Declare_block_inplaceContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterDeclare_block_inplace(this);
	}
};

Declare_block_inplaceContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitDeclare_block_inplace(this);
	}
};

Declare_block_inplaceContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitDeclare_block_inplace(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Declare_block_inplaceContext = Declare_block_inplaceContext;

HiveSqlParser.prototype.declare_block_inplace = function() {

    var localctx = new Declare_block_inplaceContext(this, this._ctx, this.state);
    this.enterRule(localctx, 48, HiveSqlParser.RULE_declare_block_inplace);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 736;
        this.declare_stmt_item();
        this.state = 737;
        this.match(HiveSqlParser.T_SEMICOLON);
        this.state = 743;
        this._errHandler.sync(this);
        var _alt = this._interp.adaptivePredict(this._input,33,this._ctx)
        while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
            if(_alt===1) {
                this.state = 738;
                this.declare_stmt_item();
                this.state = 739;
                this.match(HiveSqlParser.T_SEMICOLON); 
            }
            this.state = 745;
            this._errHandler.sync(this);
            _alt = this._interp.adaptivePredict(this._input,33,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 Declare_stmt_itemContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_declare_stmt_item;
    return this;
}

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

Declare_stmt_itemContext.prototype.declare_cursor_item = function() {
    return this.getTypedRuleContext(Declare_cursor_itemContext,0);
};

Declare_stmt_itemContext.prototype.declare_condition_item = function() {
    return this.getTypedRuleContext(Declare_condition_itemContext,0);
};

Declare_stmt_itemContext.prototype.declare_handler_item = function() {
    return this.getTypedRuleContext(Declare_handler_itemContext,0);
};

Declare_stmt_itemContext.prototype.declare_var_item = function() {
    return this.getTypedRuleContext(Declare_var_itemContext,0);
};

Declare_stmt_itemContext.prototype.declare_temporary_table_item = function() {
    return this.getTypedRuleContext(Declare_temporary_table_itemContext,0);
};

Declare_stmt_itemContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterDeclare_stmt_item(this);
	}
};

Declare_stmt_itemContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitDeclare_stmt_item(this);
	}
};

Declare_stmt_itemContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitDeclare_stmt_item(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Declare_stmt_itemContext = Declare_stmt_itemContext;

HiveSqlParser.prototype.declare_stmt_item = function() {

    var localctx = new Declare_stmt_itemContext(this, this._ctx, this.state);
    this.enterRule(localctx, 50, HiveSqlParser.RULE_declare_stmt_item);
    try {
        this.state = 751;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,34,this._ctx);
        switch(la_) {
        case 1:
            this.enterOuterAlt(localctx, 1);
            this.state = 746;
            this.declare_cursor_item();
            break;

        case 2:
            this.enterOuterAlt(localctx, 2);
            this.state = 747;
            this.declare_condition_item();
            break;

        case 3:
            this.enterOuterAlt(localctx, 3);
            this.state = 748;
            this.declare_handler_item();
            break;

        case 4:
            this.enterOuterAlt(localctx, 4);
            this.state = 749;
            this.declare_var_item();
            break;

        case 5:
            this.enterOuterAlt(localctx, 5);
            this.state = 750;
            this.declare_temporary_table_item();
            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 Declare_var_itemContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_declare_var_item;
    return this;
}

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

Declare_var_itemContext.prototype.ident = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(IdentContext);
    } else {
        return this.getTypedRuleContext(IdentContext,i);
    }
};

Declare_var_itemContext.prototype.dtype = function() {
    return this.getTypedRuleContext(DtypeContext,0);
};

Declare_var_itemContext.prototype.T_COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_COMMA);
    } else {
        return this.getToken(HiveSqlParser.T_COMMA, i);
    }
};


Declare_var_itemContext.prototype.T_AS = function() {
    return this.getToken(HiveSqlParser.T_AS, 0);
};

Declare_var_itemContext.prototype.dtype_len = function() {
    return this.getTypedRuleContext(Dtype_lenContext,0);
};

Declare_var_itemContext.prototype.dtype_attr = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Dtype_attrContext);
    } else {
        return this.getTypedRuleContext(Dtype_attrContext,i);
    }
};

Declare_var_itemContext.prototype.dtype_default = function() {
    return this.getTypedRuleContext(Dtype_defaultContext,0);
};

Declare_var_itemContext.prototype.T_CONSTANT = function() {
    return this.getToken(HiveSqlParser.T_CONSTANT, 0);
};

Declare_var_itemContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterDeclare_var_item(this);
	}
};

Declare_var_itemContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitDeclare_var_item(this);
	}
};

Declare_var_itemContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitDeclare_var_item(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Declare_var_itemContext = Declare_var_itemContext;

HiveSqlParser.prototype.declare_var_item = function() {

    var localctx = new Declare_var_itemContext(this, this._ctx, this.state);
    this.enterRule(localctx, 52, HiveSqlParser.RULE_declare_var_item);
    var _la = 0; // Token type
    try {
        this.state = 788;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,42,this._ctx);
        switch(la_) {
        case 1:
            this.enterOuterAlt(localctx, 1);
            this.state = 753;
            this.ident();
            this.state = 758;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            while(_la===HiveSqlParser.T_COMMA) {
                this.state = 754;
                this.match(HiveSqlParser.T_COMMA);
                this.state = 755;
                this.ident();
                this.state = 760;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
            }
            this.state = 762;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,36,this._ctx);
            if(la_===1) {
                this.state = 761;
                this.match(HiveSqlParser.T_AS);

            }
            this.state = 764;
            this.dtype();
            this.state = 766;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,37,this._ctx);
            if(la_===1) {
                this.state = 765;
                this.dtype_len();

            }
            this.state = 771;
            this._errHandler.sync(this);
            var _alt = this._interp.adaptivePredict(this._input,38,this._ctx)
            while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
                if(_alt===1) {
                    this.state = 768;
                    this.dtype_attr(); 
                }
                this.state = 773;
                this._errHandler.sync(this);
                _alt = this._interp.adaptivePredict(this._input,38,this._ctx);
            }

            this.state = 775;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,39,this._ctx);
            if(la_===1) {
                this.state = 774;
                this.dtype_default();

            }
            break;

        case 2:
            this.enterOuterAlt(localctx, 2);
            this.state = 777;
            this.ident();
            this.state = 778;
            this.match(HiveSqlParser.T_CONSTANT);
            this.state = 780;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,40,this._ctx);
            if(la_===1) {
                this.state = 779;
                this.match(HiveSqlParser.T_AS);

            }
            this.state = 782;
            this.dtype();
            this.state = 784;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===HiveSqlParser.T_OPEN_P) {
                this.state = 783;
                this.dtype_len();
            }

            this.state = 786;
            this.dtype_default();
            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 Declare_condition_itemContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_declare_condition_item;
    return this;
}

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

Declare_condition_itemContext.prototype.ident = function() {
    return this.getTypedRuleContext(IdentContext,0);
};

Declare_condition_itemContext.prototype.T_CONDITION = function() {
    return this.getToken(HiveSqlParser.T_CONDITION, 0);
};

Declare_condition_itemContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterDeclare_condition_item(this);
	}
};

Declare_condition_itemContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitDeclare_condition_item(this);
	}
};

Declare_condition_itemContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitDeclare_condition_item(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Declare_condition_itemContext = Declare_condition_itemContext;

HiveSqlParser.prototype.declare_condition_item = function() {

    var localctx = new Declare_condition_itemContext(this, this._ctx, this.state);
    this.enterRule(localctx, 54, HiveSqlParser.RULE_declare_condition_item);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 790;
        this.ident();
        this.state = 791;
        this.match(HiveSqlParser.T_CONDITION);
    } 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 Declare_cursor_itemContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_declare_cursor_item;
    return this;
}

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

Declare_cursor_itemContext.prototype.T_IS = function() {
    return this.getToken(HiveSqlParser.T_IS, 0);
};

Declare_cursor_itemContext.prototype.T_AS = function() {
    return this.getToken(HiveSqlParser.T_AS, 0);
};

Declare_cursor_itemContext.prototype.T_FOR = function() {
    return this.getToken(HiveSqlParser.T_FOR, 0);
};

Declare_cursor_itemContext.prototype.T_CURSOR = function() {
    return this.getToken(HiveSqlParser.T_CURSOR, 0);
};

Declare_cursor_itemContext.prototype.ident = function() {
    return this.getTypedRuleContext(IdentContext,0);
};

Declare_cursor_itemContext.prototype.select_stmt = function() {
    return this.getTypedRuleContext(Select_stmtContext,0);
};

Declare_cursor_itemContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Declare_cursor_itemContext.prototype.cursor_with_return = function() {
    return this.getTypedRuleContext(Cursor_with_returnContext,0);
};

Declare_cursor_itemContext.prototype.cursor_without_return = function() {
    return this.getTypedRuleContext(Cursor_without_returnContext,0);
};

Declare_cursor_itemContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterDeclare_cursor_item(this);
	}
};

Declare_cursor_itemContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitDeclare_cursor_item(this);
	}
};

Declare_cursor_itemContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitDeclare_cursor_item(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Declare_cursor_itemContext = Declare_cursor_itemContext;

HiveSqlParser.prototype.declare_cursor_item = function() {

    var localctx = new Declare_cursor_itemContext(this, this._ctx, this.state);
    this.enterRule(localctx, 56, HiveSqlParser.RULE_declare_cursor_item);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 798;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,43,this._ctx);
        switch(la_) {
        case 1:
            this.state = 793;
            this.match(HiveSqlParser.T_CURSOR);
            this.state = 794;
            this.ident();
            break;

        case 2:
            this.state = 795;
            this.ident();
            this.state = 796;
            this.match(HiveSqlParser.T_CURSOR);
            break;

        }
        this.state = 802;
        this._errHandler.sync(this);
        switch (this._input.LA(1)) {
        case HiveSqlParser.T_WITH:
        	this.state = 800;
        	this.cursor_with_return();
        	break;
        case HiveSqlParser.T_WITHOUT:
        	this.state = 801;
        	this.cursor_without_return();
        	break;
        case HiveSqlParser.T_FOR:
        case HiveSqlParser.T_AS:
        case HiveSqlParser.T_IS:
        	break;
        default:
        	break;
        }
        this.state = 804;
        _la = this._input.LA(1);
        if(!(((((_la - 28)) & ~0x1f) == 0 && ((1 << (_la - 28)) & ((1 << (HiveSqlParser.T_FOR - 28)) | (1 << (HiveSqlParser.T_AS - 28)) | (1 << (HiveSqlParser.T_IS - 28)))) !== 0))) {
        this._errHandler.recoverInline(this);
        }
        else {
        	this._errHandler.reportMatch(this);
            this.consume();
        }
        this.state = 807;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,45,this._ctx);
        switch(la_) {
        case 1:
            this.state = 805;
            this.select_stmt();
            break;

        case 2:
            this.state = 806;
            this.expr(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 Cursor_with_returnContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_cursor_with_return;
    return this;
}

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

Cursor_with_returnContext.prototype.T_WITH = function() {
    return this.getToken(HiveSqlParser.T_WITH, 0);
};

Cursor_with_returnContext.prototype.T_RETURN = function() {
    return this.getToken(HiveSqlParser.T_RETURN, 0);
};

Cursor_with_returnContext.prototype.T_ONLY = function() {
    return this.getToken(HiveSqlParser.T_ONLY, 0);
};

Cursor_with_returnContext.prototype.T_TO = function() {
    return this.getToken(HiveSqlParser.T_TO, 0);
};

Cursor_with_returnContext.prototype.T_CALLER = function() {
    return this.getToken(HiveSqlParser.T_CALLER, 0);
};

Cursor_with_returnContext.prototype.T_CLIENT = function() {
    return this.getToken(HiveSqlParser.T_CLIENT, 0);
};

Cursor_with_returnContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterCursor_with_return(this);
	}
};

Cursor_with_returnContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitCursor_with_return(this);
	}
};

Cursor_with_returnContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitCursor_with_return(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Cursor_with_returnContext = Cursor_with_returnContext;

HiveSqlParser.prototype.cursor_with_return = function() {

    var localctx = new Cursor_with_returnContext(this, this._ctx, this.state);
    this.enterRule(localctx, 58, HiveSqlParser.RULE_cursor_with_return);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 809;
        this.match(HiveSqlParser.T_WITH);
        this.state = 810;
        this.match(HiveSqlParser.T_RETURN);
        this.state = 812;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===HiveSqlParser.T_ONLY) {
            this.state = 811;
            this.match(HiveSqlParser.T_ONLY);
        }

        this.state = 816;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===HiveSqlParser.T_TO) {
            this.state = 814;
            this.match(HiveSqlParser.T_TO);
            this.state = 815;
            _la = this._input.LA(1);
            if(!(_la===HiveSqlParser.T_CALLER || _la===HiveSqlParser.T_CLIENT)) {
            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 Cursor_without_returnContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_cursor_without_return;
    return this;
}

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

Cursor_without_returnContext.prototype.T_WITHOUT = function() {
    return this.getToken(HiveSqlParser.T_WITHOUT, 0);
};

Cursor_without_returnContext.prototype.T_RETURN = function() {
    return this.getToken(HiveSqlParser.T_RETURN, 0);
};

Cursor_without_returnContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterCursor_without_return(this);
	}
};

Cursor_without_returnContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitCursor_without_return(this);
	}
};

Cursor_without_returnContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitCursor_without_return(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Cursor_without_returnContext = Cursor_without_returnContext;

HiveSqlParser.prototype.cursor_without_return = function() {

    var localctx = new Cursor_without_returnContext(this, this._ctx, this.state);
    this.enterRule(localctx, 60, HiveSqlParser.RULE_cursor_without_return);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 818;
        this.match(HiveSqlParser.T_WITHOUT);
        this.state = 819;
        this.match(HiveSqlParser.T_RETURN);
    } 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 Declare_handler_itemContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_declare_handler_item;
    return this;
}

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

Declare_handler_itemContext.prototype.T_HANDLER = function() {
    return this.getToken(HiveSqlParser.T_HANDLER, 0);
};

Declare_handler_itemContext.prototype.T_FOR = function() {
    return this.getToken(HiveSqlParser.T_FOR, 0);
};

Declare_handler_itemContext.prototype.single_block_stmt = function() {
    return this.getTypedRuleContext(Single_block_stmtContext,0);
};

Declare_handler_itemContext.prototype.T_CONTINUE = function() {
    return this.getToken(HiveSqlParser.T_CONTINUE, 0);
};

Declare_handler_itemContext.prototype.T_EXIT = function() {
    return this.getToken(HiveSqlParser.T_EXIT, 0);
};

Declare_handler_itemContext.prototype.T_SQLEXCEPTION = function() {
    return this.getToken(HiveSqlParser.T_SQLEXCEPTION, 0);
};

Declare_handler_itemContext.prototype.T_SQLWARNING = function() {
    return this.getToken(HiveSqlParser.T_SQLWARNING, 0);
};

Declare_handler_itemContext.prototype.T_NOT = function() {
    return this.getToken(HiveSqlParser.T_NOT, 0);
};

Declare_handler_itemContext.prototype.T_FOUND = function() {
    return this.getToken(HiveSqlParser.T_FOUND, 0);
};

Declare_handler_itemContext.prototype.ident = function() {
    return this.getTypedRuleContext(IdentContext,0);
};

Declare_handler_itemContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterDeclare_handler_item(this);
	}
};

Declare_handler_itemContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitDeclare_handler_item(this);
	}
};

Declare_handler_itemContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitDeclare_handler_item(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Declare_handler_itemContext = Declare_handler_itemContext;

HiveSqlParser.prototype.declare_handler_item = function() {

    var localctx = new Declare_handler_itemContext(this, this._ctx, this.state);
    this.enterRule(localctx, 62, HiveSqlParser.RULE_declare_handler_item);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 821;
        _la = this._input.LA(1);
        if(!(_la===HiveSqlParser.T_CONTINUE || _la===HiveSqlParser.T_EXIT)) {
        this._errHandler.recoverInline(this);
        }
        else {
        	this._errHandler.reportMatch(this);
            this.consume();
        }
        this.state = 822;
        this.match(HiveSqlParser.T_HANDLER);
        this.state = 823;
        this.match(HiveSqlParser.T_FOR);
        this.state = 829;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,48,this._ctx);
        switch(la_) {
        case 1:
            this.state = 824;
            this.match(HiveSqlParser.T_SQLEXCEPTION);
            break;

        case 2:
            this.state = 825;
            this.match(HiveSqlParser.T_SQLWARNING);
            break;

        case 3:
            this.state = 826;
            this.match(HiveSqlParser.T_NOT);
            this.state = 827;
            this.match(HiveSqlParser.T_FOUND);
            break;

        case 4:
            this.state = 828;
            this.ident();
            break;

        }
        this.state = 831;
        this.single_block_stmt();
    } 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 Declare_temporary_table_itemContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_declare_temporary_table_item;
    return this;
}

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

Declare_temporary_table_itemContext.prototype.T_TEMPORARY = function() {
    return this.getToken(HiveSqlParser.T_TEMPORARY, 0);
};

Declare_temporary_table_itemContext.prototype.T_TABLE = function() {
    return this.getToken(HiveSqlParser.T_TABLE, 0);
};

Declare_temporary_table_itemContext.prototype.ident = function() {
    return this.getTypedRuleContext(IdentContext,0);
};

Declare_temporary_table_itemContext.prototype.create_table_definition = function() {
    return this.getTypedRuleContext(Create_table_definitionContext,0);
};

Declare_temporary_table_itemContext.prototype.T_GLOBAL = function() {
    return this.getToken(HiveSqlParser.T_GLOBAL, 0);
};

Declare_temporary_table_itemContext.prototype.create_table_preoptions = function() {
    return this.getTypedRuleContext(Create_table_preoptionsContext,0);
};

Declare_temporary_table_itemContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterDeclare_temporary_table_item(this);
	}
};

Declare_temporary_table_itemContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitDeclare_temporary_table_item(this);
	}
};

Declare_temporary_table_itemContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitDeclare_temporary_table_item(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Declare_temporary_table_itemContext = Declare_temporary_table_itemContext;

HiveSqlParser.prototype.declare_temporary_table_item = function() {

    var localctx = new Declare_temporary_table_itemContext(this, this._ctx, this.state);
    this.enterRule(localctx, 64, HiveSqlParser.RULE_declare_temporary_table_item);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 834;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===HiveSqlParser.T_GLOBAL) {
            this.state = 833;
            this.match(HiveSqlParser.T_GLOBAL);
        }

        this.state = 836;
        this.match(HiveSqlParser.T_TEMPORARY);
        this.state = 837;
        this.match(HiveSqlParser.T_TABLE);
        this.state = 838;
        this.ident();
        this.state = 840;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===HiveSqlParser.T_COMMA || _la===HiveSqlParser.T_STORED || _la===HiveSqlParser.T_ROW) {
            this.state = 839;
            this.create_table_preoptions();
        }

        this.state = 842;
        this.create_table_definition();
    } 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 Create_table_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_create_table_stmt;
    return this;
}

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

Create_table_stmtContext.prototype.T_CREATE = function() {
    return this.getToken(HiveSqlParser.T_CREATE, 0);
};

Create_table_stmtContext.prototype.T_TABLE = function() {
    return this.getToken(HiveSqlParser.T_TABLE, 0);
};

Create_table_stmtContext.prototype.table_name = function() {
    return this.getTypedRuleContext(Table_nameContext,0);
};

Create_table_stmtContext.prototype.create_table_definition = function() {
    return this.getTypedRuleContext(Create_table_definitionContext,0);
};

Create_table_stmtContext.prototype.T_IF = function() {
    return this.getToken(HiveSqlParser.T_IF, 0);
};

Create_table_stmtContext.prototype.T_NOT = function() {
    return this.getToken(HiveSqlParser.T_NOT, 0);
};

Create_table_stmtContext.prototype.T_EXISTS = function() {
    return this.getToken(HiveSqlParser.T_EXISTS, 0);
};

Create_table_stmtContext.prototype.create_table_preoptions = function() {
    return this.getTypedRuleContext(Create_table_preoptionsContext,0);
};

Create_table_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterCreate_table_stmt(this);
	}
};

Create_table_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitCreate_table_stmt(this);
	}
};

Create_table_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitCreate_table_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Create_table_stmtContext = Create_table_stmtContext;

HiveSqlParser.prototype.create_table_stmt = function() {

    var localctx = new Create_table_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 66, HiveSqlParser.RULE_create_table_stmt);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 844;
        this.match(HiveSqlParser.T_CREATE);
        this.state = 845;
        this.match(HiveSqlParser.T_TABLE);
        this.state = 849;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,51,this._ctx);
        if(la_===1) {
            this.state = 846;
            this.match(HiveSqlParser.T_IF);
            this.state = 847;
            this.match(HiveSqlParser.T_NOT);
            this.state = 848;
            this.match(HiveSqlParser.T_EXISTS);

        }
        this.state = 851;
        this.table_name();
        this.state = 853;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===HiveSqlParser.T_COMMA || _la===HiveSqlParser.T_STORED || _la===HiveSqlParser.T_ROW) {
            this.state = 852;
            this.create_table_preoptions();
        }

        this.state = 855;
        this.create_table_definition();
    } 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 Create_local_temp_table_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_create_local_temp_table_stmt;
    return this;
}

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

Create_local_temp_table_stmtContext.prototype.T_CREATE = function() {
    return this.getToken(HiveSqlParser.T_CREATE, 0);
};

Create_local_temp_table_stmtContext.prototype.T_TABLE = function() {
    return this.getToken(HiveSqlParser.T_TABLE, 0);
};

Create_local_temp_table_stmtContext.prototype.ident = function() {
    return this.getTypedRuleContext(IdentContext,0);
};

Create_local_temp_table_stmtContext.prototype.create_table_definition = function() {
    return this.getTypedRuleContext(Create_table_definitionContext,0);
};

Create_local_temp_table_stmtContext.prototype.T_LOCAL = function() {
    return this.getToken(HiveSqlParser.T_LOCAL, 0);
};

Create_local_temp_table_stmtContext.prototype.T_TEMPORARY = function() {
    return this.getToken(HiveSqlParser.T_TEMPORARY, 0);
};

Create_local_temp_table_stmtContext.prototype.T_VOLATILE = function() {
    return this.getToken(HiveSqlParser.T_VOLATILE, 0);
};

Create_local_temp_table_stmtContext.prototype.create_table_preoptions = function() {
    return this.getTypedRuleContext(Create_table_preoptionsContext,0);
};

Create_local_temp_table_stmtContext.prototype.T_SET = function() {
    return this.getToken(HiveSqlParser.T_SET, 0);
};

Create_local_temp_table_stmtContext.prototype.T_MULTISET = function() {
    return this.getToken(HiveSqlParser.T_MULTISET, 0);
};

Create_local_temp_table_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterCreate_local_temp_table_stmt(this);
	}
};

Create_local_temp_table_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitCreate_local_temp_table_stmt(this);
	}
};

Create_local_temp_table_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitCreate_local_temp_table_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Create_local_temp_table_stmtContext = Create_local_temp_table_stmtContext;

HiveSqlParser.prototype.create_local_temp_table_stmt = function() {

    var localctx = new Create_local_temp_table_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 68, HiveSqlParser.RULE_create_local_temp_table_stmt);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 857;
        this.match(HiveSqlParser.T_CREATE);
        this.state = 864;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case HiveSqlParser.T_LOCAL:
            this.state = 858;
            this.match(HiveSqlParser.T_LOCAL);
            this.state = 859;
            this.match(HiveSqlParser.T_TEMPORARY);
            break;
        case HiveSqlParser.T_SET:
        case HiveSqlParser.T_MULTISET:
        case HiveSqlParser.T_VOLATILE:
            this.state = 861;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===HiveSqlParser.T_SET || _la===HiveSqlParser.T_MULTISET) {
                this.state = 860;
                _la = this._input.LA(1);
                if(!(_la===HiveSqlParser.T_SET || _la===HiveSqlParser.T_MULTISET)) {
                this._errHandler.recoverInline(this);
                }
                else {
                	this._errHandler.reportMatch(this);
                    this.consume();
                }
            }

            this.state = 863;
            this.match(HiveSqlParser.T_VOLATILE);
            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
        this.state = 866;
        this.match(HiveSqlParser.T_TABLE);
        this.state = 867;
        this.ident();
        this.state = 869;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===HiveSqlParser.T_COMMA || _la===HiveSqlParser.T_STORED || _la===HiveSqlParser.T_ROW) {
            this.state = 868;
            this.create_table_preoptions();
        }

        this.state = 871;
        this.create_table_definition();
    } 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 Create_table_definitionContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_create_table_definition;
    return this;
}

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

Create_table_definitionContext.prototype.T_OPEN_P = function() {
    return this.getToken(HiveSqlParser.T_OPEN_P, 0);
};

Create_table_definitionContext.prototype.select_stmt = function() {
    return this.getTypedRuleContext(Select_stmtContext,0);
};

Create_table_definitionContext.prototype.T_CLOSE_P = function() {
    return this.getToken(HiveSqlParser.T_CLOSE_P, 0);
};

Create_table_definitionContext.prototype.create_table_columns = function() {
    return this.getTypedRuleContext(Create_table_columnsContext,0);
};

Create_table_definitionContext.prototype.T_LIKE = function() {
    return this.getToken(HiveSqlParser.T_LIKE, 0);
};

Create_table_definitionContext.prototype.table_name = function() {
    return this.getTypedRuleContext(Table_nameContext,0);
};

Create_table_definitionContext.prototype.create_table_options = function() {
    return this.getTypedRuleContext(Create_table_optionsContext,0);
};

Create_table_definitionContext.prototype.T_AS = function() {
    return this.getToken(HiveSqlParser.T_AS, 0);
};

Create_table_definitionContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterCreate_table_definition(this);
	}
};

Create_table_definitionContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitCreate_table_definition(this);
	}
};

Create_table_definitionContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitCreate_table_definition(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Create_table_definitionContext = Create_table_definitionContext;

HiveSqlParser.prototype.create_table_definition = function() {

    var localctx = new Create_table_definitionContext(this, this._ctx, this.state);
    this.enterRule(localctx, 70, HiveSqlParser.RULE_create_table_definition);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 890;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,58,this._ctx);
        switch(la_) {
        case 1:
            this.state = 874;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===HiveSqlParser.T_AS) {
                this.state = 873;
                this.match(HiveSqlParser.T_AS);
            }

            this.state = 876;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 877;
            this.select_stmt();
            this.state = 878;
            this.match(HiveSqlParser.T_CLOSE_P);
            break;

        case 2:
            this.state = 881;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===HiveSqlParser.T_AS) {
                this.state = 880;
                this.match(HiveSqlParser.T_AS);
            }

            this.state = 883;
            this.select_stmt();
            break;

        case 3:
            this.state = 884;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 885;
            this.create_table_columns();
            this.state = 886;
            this.match(HiveSqlParser.T_CLOSE_P);
            break;

        case 4:
            this.state = 888;
            this.match(HiveSqlParser.T_LIKE);
            this.state = 889;
            this.table_name();
            break;

        }
        this.state = 893;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,59,this._ctx);
        if(la_===1) {
            this.state = 892;
            this.create_table_options();

        }
    } 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 Create_table_columnsContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_create_table_columns;
    return this;
}

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

Create_table_columnsContext.prototype.create_table_columns_item = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Create_table_columns_itemContext);
    } else {
        return this.getTypedRuleContext(Create_table_columns_itemContext,i);
    }
};

Create_table_columnsContext.prototype.T_COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_COMMA);
    } else {
        return this.getToken(HiveSqlParser.T_COMMA, i);
    }
};


Create_table_columnsContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterCreate_table_columns(this);
	}
};

Create_table_columnsContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitCreate_table_columns(this);
	}
};

Create_table_columnsContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitCreate_table_columns(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Create_table_columnsContext = Create_table_columnsContext;

HiveSqlParser.prototype.create_table_columns = function() {

    var localctx = new Create_table_columnsContext(this, this._ctx, this.state);
    this.enterRule(localctx, 72, HiveSqlParser.RULE_create_table_columns);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 895;
        this.create_table_columns_item();
        this.state = 900;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===HiveSqlParser.T_COMMA) {
            this.state = 896;
            this.match(HiveSqlParser.T_COMMA);
            this.state = 897;
            this.create_table_columns_item();
            this.state = 902;
            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 Create_table_columns_itemContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_create_table_columns_item;
    return this;
}

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

Create_table_columns_itemContext.prototype.column_name = function() {
    return this.getTypedRuleContext(Column_nameContext,0);
};

Create_table_columns_itemContext.prototype.dtype = function() {
    return this.getTypedRuleContext(DtypeContext,0);
};

Create_table_columns_itemContext.prototype.dtype_len = function() {
    return this.getTypedRuleContext(Dtype_lenContext,0);
};

Create_table_columns_itemContext.prototype.dtype_attr = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Dtype_attrContext);
    } else {
        return this.getTypedRuleContext(Dtype_attrContext,i);
    }
};

Create_table_columns_itemContext.prototype.create_table_column_inline_cons = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Create_table_column_inline_consContext);
    } else {
        return this.getTypedRuleContext(Create_table_column_inline_consContext,i);
    }
};

Create_table_columns_itemContext.prototype.create_table_column_cons = function() {
    return this.getTypedRuleContext(Create_table_column_consContext,0);
};

Create_table_columns_itemContext.prototype.T_CONSTRAINT = function() {
    return this.getToken(HiveSqlParser.T_CONSTRAINT, 0);
};

Create_table_columns_itemContext.prototype.ident = function() {
    return this.getTypedRuleContext(IdentContext,0);
};

Create_table_columns_itemContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterCreate_table_columns_item(this);
	}
};

Create_table_columns_itemContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitCreate_table_columns_item(this);
	}
};

Create_table_columns_itemContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitCreate_table_columns_item(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Create_table_columns_itemContext = Create_table_columns_itemContext;

HiveSqlParser.prototype.create_table_columns_item = function() {

    var localctx = new Create_table_columns_itemContext(this, this._ctx, this.state);
    this.enterRule(localctx, 74, HiveSqlParser.RULE_create_table_columns_item);
    var _la = 0; // Token type
    try {
        this.state = 925;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,65,this._ctx);
        switch(la_) {
        case 1:
            this.enterOuterAlt(localctx, 1);
            this.state = 903;
            this.column_name();
            this.state = 904;
            this.dtype();
            this.state = 906;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===HiveSqlParser.T_OPEN_P) {
                this.state = 905;
                this.dtype_len();
            }

            this.state = 911;
            this._errHandler.sync(this);
            var _alt = this._interp.adaptivePredict(this._input,62,this._ctx)
            while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
                if(_alt===1) {
                    this.state = 908;
                    this.dtype_attr(); 
                }
                this.state = 913;
                this._errHandler.sync(this);
                _alt = this._interp.adaptivePredict(this._input,62,this._ctx);
            }

            this.state = 917;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            while(((((_la - 19)) & ~0x1f) == 0 && ((1 << (_la - 19)) & ((1 << (HiveSqlParser.T_NULL - 19)) | (1 << (HiveSqlParser.T_COLON - 19)) | (1 << (HiveSqlParser.T_EQUAL - 19)) | (1 << (HiveSqlParser.T_WITH - 19)))) !== 0) || ((((_la - 54)) & ~0x1f) == 0 && ((1 << (_la - 54)) & ((1 << (HiveSqlParser.T_NOT - 54)) | (1 << (HiveSqlParser.T_PRIMARY - 54)) | (1 << (HiveSqlParser.T_UNIQUE - 54)) | (1 << (HiveSqlParser.T_REFERENCES - 54)) | (1 << (HiveSqlParser.T_IDENTITY - 54)) | (1 << (HiveSqlParser.T_AUTO_INCREMENT - 54)) | (1 << (HiveSqlParser.T_ENABLE - 54)) | (1 << (HiveSqlParser.T_DEFAULT - 54)))) !== 0)) {
                this.state = 914;
                this.create_table_column_inline_cons();
                this.state = 919;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
            }
            break;

        case 2:
            this.enterOuterAlt(localctx, 2);
            this.state = 922;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===HiveSqlParser.T_CONSTRAINT) {
                this.state = 920;
                this.match(HiveSqlParser.T_CONSTRAINT);
                this.state = 921;
                this.ident();
            }

            this.state = 924;
            this.create_table_column_cons();
            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 Column_nameContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_column_name;
    return this;
}

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

Column_nameContext.prototype.ident = function() {
    return this.getTypedRuleContext(IdentContext,0);
};

Column_nameContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterColumn_name(this);
	}
};

Column_nameContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitColumn_name(this);
	}
};

Column_nameContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitColumn_name(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Column_nameContext = Column_nameContext;

HiveSqlParser.prototype.column_name = function() {

    var localctx = new Column_nameContext(this, this._ctx, this.state);
    this.enterRule(localctx, 76, HiveSqlParser.RULE_column_name);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 927;
        this.ident();
    } 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 Create_table_column_inline_consContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_create_table_column_inline_cons;
    return this;
}

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

Create_table_column_inline_consContext.prototype.dtype_default = function() {
    return this.getTypedRuleContext(Dtype_defaultContext,0);
};

Create_table_column_inline_consContext.prototype.T_NULL = function() {
    return this.getToken(HiveSqlParser.T_NULL, 0);
};

Create_table_column_inline_consContext.prototype.T_NOT = function() {
    return this.getToken(HiveSqlParser.T_NOT, 0);
};

Create_table_column_inline_consContext.prototype.T_PRIMARY = function() {
    return this.getToken(HiveSqlParser.T_PRIMARY, 0);
};

Create_table_column_inline_consContext.prototype.T_KEY = function() {
    return this.getToken(HiveSqlParser.T_KEY, 0);
};

Create_table_column_inline_consContext.prototype.T_UNIQUE = function() {
    return this.getToken(HiveSqlParser.T_UNIQUE, 0);
};

Create_table_column_inline_consContext.prototype.T_REFERENCES = function() {
    return this.getToken(HiveSqlParser.T_REFERENCES, 0);
};

Create_table_column_inline_consContext.prototype.table_name = function() {
    return this.getTypedRuleContext(Table_nameContext,0);
};

Create_table_column_inline_consContext.prototype.T_OPEN_P = function() {
    return this.getToken(HiveSqlParser.T_OPEN_P, 0);
};

Create_table_column_inline_consContext.prototype.ident = function() {
    return this.getTypedRuleContext(IdentContext,0);
};

Create_table_column_inline_consContext.prototype.T_CLOSE_P = function() {
    return this.getToken(HiveSqlParser.T_CLOSE_P, 0);
};

Create_table_column_inline_consContext.prototype.create_table_fk_action = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Create_table_fk_actionContext);
    } else {
        return this.getTypedRuleContext(Create_table_fk_actionContext,i);
    }
};

Create_table_column_inline_consContext.prototype.T_IDENTITY = function() {
    return this.getToken(HiveSqlParser.T_IDENTITY, 0);
};

Create_table_column_inline_consContext.prototype.L_INT = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.L_INT);
    } else {
        return this.getToken(HiveSqlParser.L_INT, i);
    }
};


Create_table_column_inline_consContext.prototype.T_COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_COMMA);
    } else {
        return this.getToken(HiveSqlParser.T_COMMA, i);
    }
};


Create_table_column_inline_consContext.prototype.T_AUTO_INCREMENT = function() {
    return this.getToken(HiveSqlParser.T_AUTO_INCREMENT, 0);
};

Create_table_column_inline_consContext.prototype.T_ENABLE = function() {
    return this.getToken(HiveSqlParser.T_ENABLE, 0);
};

Create_table_column_inline_consContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterCreate_table_column_inline_cons(this);
	}
};

Create_table_column_inline_consContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitCreate_table_column_inline_cons(this);
	}
};

Create_table_column_inline_consContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitCreate_table_column_inline_cons(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Create_table_column_inline_consContext = Create_table_column_inline_consContext;

HiveSqlParser.prototype.create_table_column_inline_cons = function() {

    var localctx = new Create_table_column_inline_consContext(this, this._ctx, this.state);
    this.enterRule(localctx, 78, HiveSqlParser.RULE_create_table_column_inline_cons);
    var _la = 0; // Token type
    try {
        this.state = 961;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case HiveSqlParser.T_COLON:
        case HiveSqlParser.T_EQUAL:
        case HiveSqlParser.T_WITH:
        case HiveSqlParser.T_DEFAULT:
            this.enterOuterAlt(localctx, 1);
            this.state = 929;
            this.dtype_default();
            break;
        case HiveSqlParser.T_NULL:
        case HiveSqlParser.T_NOT:
            this.enterOuterAlt(localctx, 2);
            this.state = 931;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===HiveSqlParser.T_NOT) {
                this.state = 930;
                this.match(HiveSqlParser.T_NOT);
            }

            this.state = 933;
            this.match(HiveSqlParser.T_NULL);
            break;
        case HiveSqlParser.T_PRIMARY:
            this.enterOuterAlt(localctx, 3);
            this.state = 934;
            this.match(HiveSqlParser.T_PRIMARY);
            this.state = 935;
            this.match(HiveSqlParser.T_KEY);
            break;
        case HiveSqlParser.T_UNIQUE:
            this.enterOuterAlt(localctx, 4);
            this.state = 936;
            this.match(HiveSqlParser.T_UNIQUE);
            break;
        case HiveSqlParser.T_REFERENCES:
            this.enterOuterAlt(localctx, 5);
            this.state = 937;
            this.match(HiveSqlParser.T_REFERENCES);
            this.state = 938;
            this.table_name();
            this.state = 939;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 940;
            this.ident();
            this.state = 941;
            this.match(HiveSqlParser.T_CLOSE_P);
            this.state = 945;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            while(_la===HiveSqlParser.T_ON) {
                this.state = 942;
                this.create_table_fk_action();
                this.state = 947;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
            }
            break;
        case HiveSqlParser.T_IDENTITY:
            this.enterOuterAlt(localctx, 6);
            this.state = 948;
            this.match(HiveSqlParser.T_IDENTITY);
            this.state = 949;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 950;
            this.match(HiveSqlParser.L_INT);
            this.state = 955;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            while(_la===HiveSqlParser.T_COMMA) {
                this.state = 951;
                this.match(HiveSqlParser.T_COMMA);
                this.state = 952;
                this.match(HiveSqlParser.L_INT);
                this.state = 957;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
            }
            this.state = 958;
            this.match(HiveSqlParser.T_CLOSE_P);
            break;
        case HiveSqlParser.T_AUTO_INCREMENT:
            this.enterOuterAlt(localctx, 7);
            this.state = 959;
            this.match(HiveSqlParser.T_AUTO_INCREMENT);
            break;
        case HiveSqlParser.T_ENABLE:
            this.enterOuterAlt(localctx, 8);
            this.state = 960;
            this.match(HiveSqlParser.T_ENABLE);
            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 Create_table_column_consContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_create_table_column_cons;
    return this;
}

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

Create_table_column_consContext.prototype.T_PRIMARY = function() {
    return this.getToken(HiveSqlParser.T_PRIMARY, 0);
};

Create_table_column_consContext.prototype.T_KEY = function() {
    return this.getToken(HiveSqlParser.T_KEY, 0);
};

Create_table_column_consContext.prototype.T_OPEN_P = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_OPEN_P);
    } else {
        return this.getToken(HiveSqlParser.T_OPEN_P, i);
    }
};


Create_table_column_consContext.prototype.ident = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(IdentContext);
    } else {
        return this.getTypedRuleContext(IdentContext,i);
    }
};

Create_table_column_consContext.prototype.T_CLOSE_P = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_CLOSE_P);
    } else {
        return this.getToken(HiveSqlParser.T_CLOSE_P, i);
    }
};


Create_table_column_consContext.prototype.T_CLUSTERED = function() {
    return this.getToken(HiveSqlParser.T_CLUSTERED, 0);
};

Create_table_column_consContext.prototype.T_COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_COMMA);
    } else {
        return this.getToken(HiveSqlParser.T_COMMA, i);
    }
};


Create_table_column_consContext.prototype.T_ENABLE = function() {
    return this.getToken(HiveSqlParser.T_ENABLE, 0);
};

Create_table_column_consContext.prototype.index_storage_clause = function() {
    return this.getTypedRuleContext(Index_storage_clauseContext,0);
};

Create_table_column_consContext.prototype.T_ASC = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_ASC);
    } else {
        return this.getToken(HiveSqlParser.T_ASC, i);
    }
};


Create_table_column_consContext.prototype.T_DESC = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_DESC);
    } else {
        return this.getToken(HiveSqlParser.T_DESC, i);
    }
};


Create_table_column_consContext.prototype.T_FOREIGN = function() {
    return this.getToken(HiveSqlParser.T_FOREIGN, 0);
};

Create_table_column_consContext.prototype.T_REFERENCES = function() {
    return this.getToken(HiveSqlParser.T_REFERENCES, 0);
};

Create_table_column_consContext.prototype.table_name = function() {
    return this.getTypedRuleContext(Table_nameContext,0);
};

Create_table_column_consContext.prototype.create_table_fk_action = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Create_table_fk_actionContext);
    } else {
        return this.getTypedRuleContext(Create_table_fk_actionContext,i);
    }
};

Create_table_column_consContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterCreate_table_column_cons(this);
	}
};

Create_table_column_consContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitCreate_table_column_cons(this);
	}
};

Create_table_column_consContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitCreate_table_column_cons(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Create_table_column_consContext = Create_table_column_consContext;

HiveSqlParser.prototype.create_table_column_cons = function() {

    var localctx = new Create_table_column_consContext(this, this._ctx, this.state);
    this.enterRule(localctx, 80, HiveSqlParser.RULE_create_table_column_cons);
    var _la = 0; // Token type
    try {
        this.state = 1020;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case HiveSqlParser.T_PRIMARY:
            this.enterOuterAlt(localctx, 1);
            this.state = 963;
            this.match(HiveSqlParser.T_PRIMARY);
            this.state = 964;
            this.match(HiveSqlParser.T_KEY);
            this.state = 966;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===HiveSqlParser.T_CLUSTERED) {
                this.state = 965;
                this.match(HiveSqlParser.T_CLUSTERED);
            }

            this.state = 968;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 969;
            this.ident();
            this.state = 971;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===HiveSqlParser.T_ASC || _la===HiveSqlParser.T_DESC) {
                this.state = 970;
                _la = this._input.LA(1);
                if(!(_la===HiveSqlParser.T_ASC || _la===HiveSqlParser.T_DESC)) {
                this._errHandler.recoverInline(this);
                }
                else {
                	this._errHandler.reportMatch(this);
                    this.consume();
                }
            }

            this.state = 980;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            while(_la===HiveSqlParser.T_COMMA) {
                this.state = 973;
                this.match(HiveSqlParser.T_COMMA);
                this.state = 974;
                this.ident();
                this.state = 976;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
                if(_la===HiveSqlParser.T_ASC || _la===HiveSqlParser.T_DESC) {
                    this.state = 975;
                    _la = this._input.LA(1);
                    if(!(_la===HiveSqlParser.T_ASC || _la===HiveSqlParser.T_DESC)) {
                    this._errHandler.recoverInline(this);
                    }
                    else {
                    	this._errHandler.reportMatch(this);
                        this.consume();
                    }
                }

                this.state = 982;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
            }
            this.state = 983;
            this.match(HiveSqlParser.T_CLOSE_P);
            this.state = 985;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===HiveSqlParser.T_ENABLE) {
                this.state = 984;
                this.match(HiveSqlParser.T_ENABLE);
            }

            this.state = 988;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===HiveSqlParser.T_WITH) {
                this.state = 987;
                this.index_storage_clause();
            }

            break;
        case HiveSqlParser.T_FOREIGN:
            this.enterOuterAlt(localctx, 2);
            this.state = 990;
            this.match(HiveSqlParser.T_FOREIGN);
            this.state = 991;
            this.match(HiveSqlParser.T_KEY);
            this.state = 992;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 993;
            this.ident();
            this.state = 998;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            while(_la===HiveSqlParser.T_COMMA) {
                this.state = 994;
                this.match(HiveSqlParser.T_COMMA);
                this.state = 995;
                this.ident();
                this.state = 1000;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
            }
            this.state = 1001;
            this.match(HiveSqlParser.T_CLOSE_P);
            this.state = 1002;
            this.match(HiveSqlParser.T_REFERENCES);
            this.state = 1003;
            this.table_name();
            this.state = 1004;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 1005;
            this.ident();
            this.state = 1010;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            while(_la===HiveSqlParser.T_COMMA) {
                this.state = 1006;
                this.match(HiveSqlParser.T_COMMA);
                this.state = 1007;
                this.ident();
                this.state = 1012;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
            }
            this.state = 1013;
            this.match(HiveSqlParser.T_CLOSE_P);
            this.state = 1017;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            while(_la===HiveSqlParser.T_ON) {
                this.state = 1014;
                this.create_table_fk_action();
                this.state = 1019;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
            }
            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 Create_table_fk_actionContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_create_table_fk_action;
    return this;
}

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

Create_table_fk_actionContext.prototype.T_ON = function() {
    return this.getToken(HiveSqlParser.T_ON, 0);
};

Create_table_fk_actionContext.prototype.T_UPDATE = function() {
    return this.getToken(HiveSqlParser.T_UPDATE, 0);
};

Create_table_fk_actionContext.prototype.T_DELETE = function() {
    return this.getToken(HiveSqlParser.T_DELETE, 0);
};

Create_table_fk_actionContext.prototype.T_NO = function() {
    return this.getToken(HiveSqlParser.T_NO, 0);
};

Create_table_fk_actionContext.prototype.T_ACTION = function() {
    return this.getToken(HiveSqlParser.T_ACTION, 0);
};

Create_table_fk_actionContext.prototype.T_RESTRICT = function() {
    return this.getToken(HiveSqlParser.T_RESTRICT, 0);
};

Create_table_fk_actionContext.prototype.T_SET = function() {
    return this.getToken(HiveSqlParser.T_SET, 0);
};

Create_table_fk_actionContext.prototype.T_NULL = function() {
    return this.getToken(HiveSqlParser.T_NULL, 0);
};

Create_table_fk_actionContext.prototype.T_DEFAULT = function() {
    return this.getToken(HiveSqlParser.T_DEFAULT, 0);
};

Create_table_fk_actionContext.prototype.T_CASCADE = function() {
    return this.getToken(HiveSqlParser.T_CASCADE, 0);
};

Create_table_fk_actionContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterCreate_table_fk_action(this);
	}
};

Create_table_fk_actionContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitCreate_table_fk_action(this);
	}
};

Create_table_fk_actionContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitCreate_table_fk_action(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Create_table_fk_actionContext = Create_table_fk_actionContext;

HiveSqlParser.prototype.create_table_fk_action = function() {

    var localctx = new Create_table_fk_actionContext(this, this._ctx, this.state);
    this.enterRule(localctx, 82, HiveSqlParser.RULE_create_table_fk_action);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1022;
        this.match(HiveSqlParser.T_ON);
        this.state = 1023;
        _la = this._input.LA(1);
        if(!(_la===HiveSqlParser.T_UPDATE || _la===HiveSqlParser.T_DELETE)) {
        this._errHandler.recoverInline(this);
        }
        else {
        	this._errHandler.reportMatch(this);
            this.consume();
        }
        this.state = 1032;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,80,this._ctx);
        switch(la_) {
        case 1:
            this.state = 1024;
            this.match(HiveSqlParser.T_NO);
            this.state = 1025;
            this.match(HiveSqlParser.T_ACTION);
            break;

        case 2:
            this.state = 1026;
            this.match(HiveSqlParser.T_RESTRICT);
            break;

        case 3:
            this.state = 1027;
            this.match(HiveSqlParser.T_SET);
            this.state = 1028;
            this.match(HiveSqlParser.T_NULL);
            break;

        case 4:
            this.state = 1029;
            this.match(HiveSqlParser.T_SET);
            this.state = 1030;
            this.match(HiveSqlParser.T_DEFAULT);
            break;

        case 5:
            this.state = 1031;
            this.match(HiveSqlParser.T_CASCADE);
            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 Create_table_preoptionsContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_create_table_preoptions;
    return this;
}

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

Create_table_preoptionsContext.prototype.create_table_preoptions_item = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Create_table_preoptions_itemContext);
    } else {
        return this.getTypedRuleContext(Create_table_preoptions_itemContext,i);
    }
};

Create_table_preoptionsContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterCreate_table_preoptions(this);
	}
};

Create_table_preoptionsContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitCreate_table_preoptions(this);
	}
};

Create_table_preoptionsContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitCreate_table_preoptions(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Create_table_preoptionsContext = Create_table_preoptionsContext;

HiveSqlParser.prototype.create_table_preoptions = function() {

    var localctx = new Create_table_preoptionsContext(this, this._ctx, this.state);
    this.enterRule(localctx, 84, HiveSqlParser.RULE_create_table_preoptions);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1035; 
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        do {
            this.state = 1034;
            this.create_table_preoptions_item();
            this.state = 1037; 
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        } while(_la===HiveSqlParser.T_COMMA || _la===HiveSqlParser.T_STORED || _la===HiveSqlParser.T_ROW);
    } 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 Create_table_preoptions_itemContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_create_table_preoptions_item;
    return this;
}

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

Create_table_preoptions_itemContext.prototype.T_COMMA = function() {
    return this.getToken(HiveSqlParser.T_COMMA, 0);
};

Create_table_preoptions_itemContext.prototype.create_table_preoptions_td_item = function() {
    return this.getTypedRuleContext(Create_table_preoptions_td_itemContext,0);
};

Create_table_preoptions_itemContext.prototype.create_table_options_hive_item = function() {
    return this.getTypedRuleContext(Create_table_options_hive_itemContext,0);
};

Create_table_preoptions_itemContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterCreate_table_preoptions_item(this);
	}
};

Create_table_preoptions_itemContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitCreate_table_preoptions_item(this);
	}
};

Create_table_preoptions_itemContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitCreate_table_preoptions_item(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Create_table_preoptions_itemContext = Create_table_preoptions_itemContext;

HiveSqlParser.prototype.create_table_preoptions_item = function() {

    var localctx = new Create_table_preoptions_itemContext(this, this._ctx, this.state);
    this.enterRule(localctx, 86, HiveSqlParser.RULE_create_table_preoptions_item);
    try {
        this.state = 1042;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case HiveSqlParser.T_COMMA:
            this.enterOuterAlt(localctx, 1);
            this.state = 1039;
            this.match(HiveSqlParser.T_COMMA);
            this.state = 1040;
            this.create_table_preoptions_td_item();
            break;
        case HiveSqlParser.T_STORED:
        case HiveSqlParser.T_ROW:
            this.enterOuterAlt(localctx, 2);
            this.state = 1041;
            this.create_table_options_hive_item();
            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 Create_table_preoptions_td_itemContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_create_table_preoptions_td_item;
    return this;
}

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

Create_table_preoptions_td_itemContext.prototype.T_LOG = function() {
    return this.getToken(HiveSqlParser.T_LOG, 0);
};

Create_table_preoptions_td_itemContext.prototype.T_FALLBACK = function() {
    return this.getToken(HiveSqlParser.T_FALLBACK, 0);
};

Create_table_preoptions_td_itemContext.prototype.T_NO = function() {
    return this.getToken(HiveSqlParser.T_NO, 0);
};

Create_table_preoptions_td_itemContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterCreate_table_preoptions_td_item(this);
	}
};

Create_table_preoptions_td_itemContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitCreate_table_preoptions_td_item(this);
	}
};

Create_table_preoptions_td_itemContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitCreate_table_preoptions_td_item(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Create_table_preoptions_td_itemContext = Create_table_preoptions_td_itemContext;

HiveSqlParser.prototype.create_table_preoptions_td_item = function() {

    var localctx = new Create_table_preoptions_td_itemContext(this, this._ctx, this.state);
    this.enterRule(localctx, 88, HiveSqlParser.RULE_create_table_preoptions_td_item);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1045;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===HiveSqlParser.T_NO) {
            this.state = 1044;
            this.match(HiveSqlParser.T_NO);
        }

        this.state = 1047;
        _la = this._input.LA(1);
        if(!(_la===HiveSqlParser.T_LOG || _la===HiveSqlParser.T_FALLBACK)) {
        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 Create_table_optionsContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_create_table_options;
    return this;
}

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

Create_table_optionsContext.prototype.create_table_options_item = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Create_table_options_itemContext);
    } else {
        return this.getTypedRuleContext(Create_table_options_itemContext,i);
    }
};

Create_table_optionsContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterCreate_table_options(this);
	}
};

Create_table_optionsContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitCreate_table_options(this);
	}
};

Create_table_optionsContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitCreate_table_options(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Create_table_optionsContext = Create_table_optionsContext;

HiveSqlParser.prototype.create_table_options = function() {

    var localctx = new Create_table_optionsContext(this, this._ctx, this.state);
    this.enterRule(localctx, 90, HiveSqlParser.RULE_create_table_options);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1050; 
        this._errHandler.sync(this);
        var _alt = 1;
        do {
        	switch (_alt) {
        	case 1:
        		this.state = 1049;
        		this.create_table_options_item();
        		break;
        	default:
        		throw new antlr4.error.NoViableAltException(this);
        	}
        	this.state = 1052; 
        	this._errHandler.sync(this);
        	_alt = this._interp.adaptivePredict(this._input,84, 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 Create_table_options_itemContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_create_table_options_item;
    return this;
}

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

Create_table_options_itemContext.prototype.T_ON = function() {
    return this.getToken(HiveSqlParser.T_ON, 0);
};

Create_table_options_itemContext.prototype.T_COMMIT = function() {
    return this.getToken(HiveSqlParser.T_COMMIT, 0);
};

Create_table_options_itemContext.prototype.T_ROWS = function() {
    return this.getToken(HiveSqlParser.T_ROWS, 0);
};

Create_table_options_itemContext.prototype.T_DELETE = function() {
    return this.getToken(HiveSqlParser.T_DELETE, 0);
};

Create_table_options_itemContext.prototype.T_PRESERVE = function() {
    return this.getToken(HiveSqlParser.T_PRESERVE, 0);
};

Create_table_options_itemContext.prototype.create_table_options_ora_item = function() {
    return this.getTypedRuleContext(Create_table_options_ora_itemContext,0);
};

Create_table_options_itemContext.prototype.create_table_options_db2_item = function() {
    return this.getTypedRuleContext(Create_table_options_db2_itemContext,0);
};

Create_table_options_itemContext.prototype.create_table_options_td_item = function() {
    return this.getTypedRuleContext(Create_table_options_td_itemContext,0);
};

Create_table_options_itemContext.prototype.create_table_options_hive_item = function() {
    return this.getTypedRuleContext(Create_table_options_hive_itemContext,0);
};

Create_table_options_itemContext.prototype.create_table_options_mssql_item = function() {
    return this.getTypedRuleContext(Create_table_options_mssql_itemContext,0);
};

Create_table_options_itemContext.prototype.create_table_options_mysql_item = function() {
    return this.getTypedRuleContext(Create_table_options_mysql_itemContext,0);
};

Create_table_options_itemContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterCreate_table_options_item(this);
	}
};

Create_table_options_itemContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitCreate_table_options_item(this);
	}
};

Create_table_options_itemContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitCreate_table_options_item(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Create_table_options_itemContext = Create_table_options_itemContext;

HiveSqlParser.prototype.create_table_options_item = function() {

    var localctx = new Create_table_options_itemContext(this, this._ctx, this.state);
    this.enterRule(localctx, 92, HiveSqlParser.RULE_create_table_options_item);
    var _la = 0; // Token type
    try {
        this.state = 1064;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,85,this._ctx);
        switch(la_) {
        case 1:
            this.enterOuterAlt(localctx, 1);
            this.state = 1054;
            this.match(HiveSqlParser.T_ON);
            this.state = 1055;
            this.match(HiveSqlParser.T_COMMIT);
            this.state = 1056;
            _la = this._input.LA(1);
            if(!(_la===HiveSqlParser.T_DELETE || _la===HiveSqlParser.T_PRESERVE)) {
            this._errHandler.recoverInline(this);
            }
            else {
            	this._errHandler.reportMatch(this);
                this.consume();
            }
            this.state = 1057;
            this.match(HiveSqlParser.T_ROWS);
            break;

        case 2:
            this.enterOuterAlt(localctx, 2);
            this.state = 1058;
            this.create_table_options_ora_item();
            break;

        case 3:
            this.enterOuterAlt(localctx, 3);
            this.state = 1059;
            this.create_table_options_db2_item();
            break;

        case 4:
            this.enterOuterAlt(localctx, 4);
            this.state = 1060;
            this.create_table_options_td_item();
            break;

        case 5:
            this.enterOuterAlt(localctx, 5);
            this.state = 1061;
            this.create_table_options_hive_item();
            break;

        case 6:
            this.enterOuterAlt(localctx, 6);
            this.state = 1062;
            this.create_table_options_mssql_item();
            break;

        case 7:
            this.enterOuterAlt(localctx, 7);
            this.state = 1063;
            this.create_table_options_mysql_item();
            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 Create_table_options_ora_itemContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_create_table_options_ora_item;
    return this;
}

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

Create_table_options_ora_itemContext.prototype.T_SEGMENT = function() {
    return this.getToken(HiveSqlParser.T_SEGMENT, 0);
};

Create_table_options_ora_itemContext.prototype.T_CREATION = function() {
    return this.getToken(HiveSqlParser.T_CREATION, 0);
};

Create_table_options_ora_itemContext.prototype.T_IMMEDIATE = function() {
    return this.getToken(HiveSqlParser.T_IMMEDIATE, 0);
};

Create_table_options_ora_itemContext.prototype.T_DEFERRED = function() {
    return this.getToken(HiveSqlParser.T_DEFERRED, 0);
};

Create_table_options_ora_itemContext.prototype.L_INT = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.L_INT);
    } else {
        return this.getToken(HiveSqlParser.L_INT, i);
    }
};


Create_table_options_ora_itemContext.prototype.T_PCTFREE = function() {
    return this.getToken(HiveSqlParser.T_PCTFREE, 0);
};

Create_table_options_ora_itemContext.prototype.T_PCTUSED = function() {
    return this.getToken(HiveSqlParser.T_PCTUSED, 0);
};

Create_table_options_ora_itemContext.prototype.T_INITRANS = function() {
    return this.getToken(HiveSqlParser.T_INITRANS, 0);
};

Create_table_options_ora_itemContext.prototype.T_MAXTRANS = function() {
    return this.getToken(HiveSqlParser.T_MAXTRANS, 0);
};

Create_table_options_ora_itemContext.prototype.T_NOCOMPRESS = function() {
    return this.getToken(HiveSqlParser.T_NOCOMPRESS, 0);
};

Create_table_options_ora_itemContext.prototype.T_LOGGING = function() {
    return this.getToken(HiveSqlParser.T_LOGGING, 0);
};

Create_table_options_ora_itemContext.prototype.T_NOLOGGING = function() {
    return this.getToken(HiveSqlParser.T_NOLOGGING, 0);
};

Create_table_options_ora_itemContext.prototype.T_STORAGE = function() {
    return this.getToken(HiveSqlParser.T_STORAGE, 0);
};

Create_table_options_ora_itemContext.prototype.T_OPEN_P = function() {
    return this.getToken(HiveSqlParser.T_OPEN_P, 0);
};

Create_table_options_ora_itemContext.prototype.T_CLOSE_P = function() {
    return this.getToken(HiveSqlParser.T_CLOSE_P, 0);
};

Create_table_options_ora_itemContext.prototype.ident = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(IdentContext);
    } else {
        return this.getTypedRuleContext(IdentContext,i);
    }
};

Create_table_options_ora_itemContext.prototype.T_TABLESPACE = function() {
    return this.getToken(HiveSqlParser.T_TABLESPACE, 0);
};

Create_table_options_ora_itemContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterCreate_table_options_ora_item(this);
	}
};

Create_table_options_ora_itemContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitCreate_table_options_ora_item(this);
	}
};

Create_table_options_ora_itemContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitCreate_table_options_ora_item(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Create_table_options_ora_itemContext = Create_table_options_ora_itemContext;

HiveSqlParser.prototype.create_table_options_ora_item = function() {

    var localctx = new Create_table_options_ora_itemContext(this, this._ctx, this.state);
    this.enterRule(localctx, 94, HiveSqlParser.RULE_create_table_options_ora_item);
    var _la = 0; // Token type
    try {
        this.state = 1084;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case HiveSqlParser.T_SEGMENT:
            this.enterOuterAlt(localctx, 1);
            this.state = 1066;
            this.match(HiveSqlParser.T_SEGMENT);
            this.state = 1067;
            this.match(HiveSqlParser.T_CREATION);
            this.state = 1068;
            _la = this._input.LA(1);
            if(!(_la===HiveSqlParser.T_IMMEDIATE || _la===HiveSqlParser.T_DEFERRED)) {
            this._errHandler.recoverInline(this);
            }
            else {
            	this._errHandler.reportMatch(this);
                this.consume();
            }
            break;
        case HiveSqlParser.T_PCTFREE:
        case HiveSqlParser.T_PCTUSED:
        case HiveSqlParser.T_INITRANS:
        case HiveSqlParser.T_MAXTRANS:
            this.enterOuterAlt(localctx, 2);
            this.state = 1069;
            _la = this._input.LA(1);
            if(!(((((_la - 96)) & ~0x1f) == 0 && ((1 << (_la - 96)) & ((1 << (HiveSqlParser.T_PCTFREE - 96)) | (1 << (HiveSqlParser.T_PCTUSED - 96)) | (1 << (HiveSqlParser.T_INITRANS - 96)) | (1 << (HiveSqlParser.T_MAXTRANS - 96)))) !== 0))) {
            this._errHandler.recoverInline(this);
            }
            else {
            	this._errHandler.reportMatch(this);
                this.consume();
            }
            this.state = 1070;
            this.match(HiveSqlParser.L_INT);
            break;
        case HiveSqlParser.T_NOCOMPRESS:
            this.enterOuterAlt(localctx, 3);
            this.state = 1071;
            this.match(HiveSqlParser.T_NOCOMPRESS);
            break;
        case HiveSqlParser.T_LOGGING:
        case HiveSqlParser.T_NOLOGGING:
            this.enterOuterAlt(localctx, 4);
            this.state = 1072;
            _la = this._input.LA(1);
            if(!(_la===HiveSqlParser.T_LOGGING || _la===HiveSqlParser.T_NOLOGGING)) {
            this._errHandler.recoverInline(this);
            }
            else {
            	this._errHandler.reportMatch(this);
                this.consume();
            }
            break;
        case HiveSqlParser.T_STORAGE:
            this.enterOuterAlt(localctx, 5);
            this.state = 1073;
            this.match(HiveSqlParser.T_STORAGE);
            this.state = 1074;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 1077; 
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            do {
                this.state = 1077;
                this._errHandler.sync(this);
                switch(this._input.LA(1)) {
                case HiveSqlParser.T__8:
                case HiveSqlParser.T_GO:
                case HiveSqlParser.T_BEGIN:
                case HiveSqlParser.T_EXCEPTION:
                case HiveSqlParser.L_ID:
                case HiveSqlParser.T_THEN:
                case HiveSqlParser.T_SET:
                case HiveSqlParser.T_ALLOCATE:
                case HiveSqlParser.T_CURSOR:
                case HiveSqlParser.T_FOR:
                case HiveSqlParser.T_RESULT:
                case HiveSqlParser.T_PROCEDURE:
                case HiveSqlParser.T_ASSOCIATE:
                case HiveSqlParser.T_LOCATOR:
                case HiveSqlParser.T_LOCATORS:
                case HiveSqlParser.T_WITH:
                case HiveSqlParser.T_TRANSACTION:
                case HiveSqlParser.T_BREAK:
                case HiveSqlParser.T_CALL:
                case HiveSqlParser.T_DECLARE:
                case HiveSqlParser.T_AS:
                case HiveSqlParser.T_CONSTANT:
                case HiveSqlParser.T_CONDITION:
                case HiveSqlParser.T_IS:
                case HiveSqlParser.T_RETURN:
                case HiveSqlParser.T_ONLY:
                case HiveSqlParser.T_TO:
                case HiveSqlParser.T_CALLER:
                case HiveSqlParser.T_CLIENT:
                case HiveSqlParser.T_WITHOUT:
                case HiveSqlParser.T_CONTINUE:
                case HiveSqlParser.T_EXIT:
                case HiveSqlParser.T_HANDLER:
                case HiveSqlParser.T_SQLEXCEPTION:
                case HiveSqlParser.T_SQLWARNING:
                case HiveSqlParser.T_NOT:
                case HiveSqlParser.T_FOUND:
                case HiveSqlParser.T_GLOBAL:
                case HiveSqlParser.T_TEMPORARY:
                case HiveSqlParser.T_TABLE:
                case HiveSqlParser.T_CREATE:
                case HiveSqlParser.T_IF:
                case HiveSqlParser.T_EXISTS:
                case HiveSqlParser.T_LOCAL:
                case HiveSqlParser.T_MULTISET:
                case HiveSqlParser.T_VOLATILE:
                case HiveSqlParser.T_LIKE:
                case HiveSqlParser.T_CONSTRAINT:
                case HiveSqlParser.T_PRIMARY:
                case HiveSqlParser.T_KEY:
                case HiveSqlParser.T_UNIQUE:
                case HiveSqlParser.T_REFERENCES:
                case HiveSqlParser.T_IDENTITY:
                case HiveSqlParser.T_AUTO_INCREMENT:
                case HiveSqlParser.T_ENABLE:
                case HiveSqlParser.T_CLUSTERED:
                case HiveSqlParser.T_ASC:
                case HiveSqlParser.T_DESC:
                case HiveSqlParser.T_FOREIGN:
                case HiveSqlParser.T_ON:
                case HiveSqlParser.T_UPDATE:
                case HiveSqlParser.T_DELETE:
                case HiveSqlParser.T_NO:
                case HiveSqlParser.T_ACTION:
                case HiveSqlParser.T_RESTRICT:
                case HiveSqlParser.T_DEFAULT:
                case HiveSqlParser.T_CASCADE:
                case HiveSqlParser.T_LOG:
                case HiveSqlParser.T_FALLBACK:
                case HiveSqlParser.T_COMMIT:
                case HiveSqlParser.T_PRESERVE:
                case HiveSqlParser.T_ROWS:
                case HiveSqlParser.T_SEGMENT:
                case HiveSqlParser.T_CREATION:
                case HiveSqlParser.T_IMMEDIATE:
                case HiveSqlParser.T_DEFERRED:
                case HiveSqlParser.T_PCTFREE:
                case HiveSqlParser.T_PCTUSED:
                case HiveSqlParser.T_INITRANS:
                case HiveSqlParser.T_MAXTRANS:
                case HiveSqlParser.T_NOCOMPRESS:
                case HiveSqlParser.T_LOGGING:
                case HiveSqlParser.T_NOLOGGING:
                case HiveSqlParser.T_STORAGE:
                case HiveSqlParser.T_TABLESPACE:
                case HiveSqlParser.T_INDEX:
                case HiveSqlParser.T_IN:
                case HiveSqlParser.T_REPLACE:
                case HiveSqlParser.T_DISTRIBUTE:
                case HiveSqlParser.T_BY:
                case HiveSqlParser.T_HASH:
                case HiveSqlParser.T_LOGGED:
                case HiveSqlParser.T_COMPRESS:
                case HiveSqlParser.T_YES:
                case HiveSqlParser.T_DEFINITION:
                case HiveSqlParser.T_DROP:
                case HiveSqlParser.T_DATA:
                case HiveSqlParser.T_STORED:
                case HiveSqlParser.T_ROW:
                case HiveSqlParser.T_FORMAT:
                case HiveSqlParser.T_DELIMITED:
                case HiveSqlParser.T_FIELDS:
                case HiveSqlParser.T_TERMINATED:
                case HiveSqlParser.T_ESCAPED:
                case HiveSqlParser.T_COLLECTION:
                case HiveSqlParser.T_ITEMS:
                case HiveSqlParser.T_MAP:
                case HiveSqlParser.T_KEYS:
                case HiveSqlParser.T_LINES:
                case HiveSqlParser.T_DEFINED:
                case HiveSqlParser.T_TEXTIMAGE_ON:
                case HiveSqlParser.T_COMMENT:
                case HiveSqlParser.T_CHARACTER:
                case HiveSqlParser.T_CHARSET:
                case HiveSqlParser.T_ENGINE:
                case HiveSqlParser.T_ALTER:
                case HiveSqlParser.T_ADD2:
                case HiveSqlParser.T_CHAR:
                case HiveSqlParser.T_BIGINT:
                case HiveSqlParser.T_BINARY_DOUBLE:
                case HiveSqlParser.T_BINARY_FLOAT:
                case HiveSqlParser.T_BIT:
                case HiveSqlParser.T_DATE:
                case HiveSqlParser.T_DATETIME:
                case HiveSqlParser.T_DEC:
                case HiveSqlParser.T_DECIMAL:
                case HiveSqlParser.T_DOUBLE:
                case HiveSqlParser.T_PRECISION:
                case HiveSqlParser.T_FLOAT:
                case HiveSqlParser.T_INT:
                case HiveSqlParser.T_INT2:
                case HiveSqlParser.T_INT4:
                case HiveSqlParser.T_INT8:
                case HiveSqlParser.T_INTEGER:
                case HiveSqlParser.T_NCHAR:
                case HiveSqlParser.T_NVARCHAR:
                case HiveSqlParser.T_NUMBER:
                case HiveSqlParser.T_NUMERIC:
                case HiveSqlParser.T_REAL:
                case HiveSqlParser.T_RESULT_SET_LOCATOR:
                case HiveSqlParser.T_VARYING:
                case HiveSqlParser.T_SIMPLE_FLOAT:
                case HiveSqlParser.T_SIMPLE_DOUBLE:
                case HiveSqlParser.T_SMALLINT:
                case HiveSqlParser.T_SMALLDATETIME:
                case HiveSqlParser.T_STRING:
                case HiveSqlParser.T_SYS_REFCURSOR:
                case HiveSqlParser.T_TIMESTAMP:
                case HiveSqlParser.T_VARCHAR:
                case HiveSqlParser.T_VARCHAR2:
                case HiveSqlParser.T_XML:
                case HiveSqlParser.T_MAX:
                case HiveSqlParser.T_BYTE:
                case HiveSqlParser.T_CASESPECIFIC:
                case HiveSqlParser.T_CS:
                case HiveSqlParser.T_DATABASE:
                case HiveSqlParser.T_SCHEMA:
                case HiveSqlParser.T_LOCATION:
                case HiveSqlParser.T_OR:
                case HiveSqlParser.T_FUNCTION:
                case HiveSqlParser.T_RETURNS:
                case HiveSqlParser.T_PACKAGE:
                case HiveSqlParser.T_PROC:
                case HiveSqlParser.T_BODY:
                case HiveSqlParser.T_OUT:
                case HiveSqlParser.T_INOUT:
                case HiveSqlParser.T_LANGUAGE:
                case HiveSqlParser.T_SQL:
                case HiveSqlParser.T_SECURITY:
                case HiveSqlParser.T_CREATOR:
                case HiveSqlParser.T_DEFINER:
                case HiveSqlParser.T_INVOKER:
                case HiveSqlParser.T_OWNER:
                case HiveSqlParser.T_DYNAMIC:
                case HiveSqlParser.T_SETS:
                case HiveSqlParser.T_EXEC:
                case HiveSqlParser.T_EXECUTE:
                case HiveSqlParser.T_INTO:
                case HiveSqlParser.T_INCLUDE:
                case HiveSqlParser.T_INSERT:
                case HiveSqlParser.T_OVERWRITE:
                case HiveSqlParser.T_VALUES:
                case HiveSqlParser.T_DIRECTORY:
                case HiveSqlParser.T_GET:
                case HiveSqlParser.T_DIAGNOSTICS:
                case HiveSqlParser.T_MESSAGE_TEXT:
                case HiveSqlParser.T_ROW_COUNT:
                case HiveSqlParser.T_GRANT:
                case HiveSqlParser.T_ROLE:
                case HiveSqlParser.T_LEAVE:
                case HiveSqlParser.T_OBJECT:
                case HiveSqlParser.T_AT:
                case HiveSqlParser.T_OPEN:
                case HiveSqlParser.T_FETCH:
                case HiveSqlParser.T_FROM:
                case HiveSqlParser.T_COLLECT:
                case HiveSqlParser.T_STATISTICS:
                case HiveSqlParser.T_STATS:
                case HiveSqlParser.T_COLUMN:
                case HiveSqlParser.T_CLOSE:
                case HiveSqlParser.T_CMP:
                case HiveSqlParser.T_SUM:
                case HiveSqlParser.T_COPY:
                case HiveSqlParser.T_HDFS:
                case HiveSqlParser.T_BATCHSIZE:
                case HiveSqlParser.T_DELIMITER:
                case HiveSqlParser.T_SQLINSERT:
                case HiveSqlParser.T_IGNORE:
                case HiveSqlParser.T_WORK:
                case HiveSqlParser.T_PRINT:
                case HiveSqlParser.T_QUIT:
                case HiveSqlParser.T_RAISE:
                case HiveSqlParser.T_RESIGNAL:
                case HiveSqlParser.T_SQLSTATE:
                case HiveSqlParser.T_VALUE:
                case HiveSqlParser.T_ROLLBACK:
                case HiveSqlParser.T_CURRENT:
                case HiveSqlParser.T_CURRENT_SCHEMA:
                case HiveSqlParser.T_ANSI_NULLS:
                case HiveSqlParser.T_ANSI_PADDING:
                case HiveSqlParser.T_NOCOUNT:
                case HiveSqlParser.T_QUOTED_IDENTIFIER:
                case HiveSqlParser.T_XACT_ABORT:
                case HiveSqlParser.T_OFF:
                case HiveSqlParser.T_QUERY_BAND:
                case HiveSqlParser.T_NONE:
                case HiveSqlParser.T_SESSION:
                case HiveSqlParser.T_SIGNAL:
                case HiveSqlParser.T_SUMMARY:
                case HiveSqlParser.T_TOP:
                case HiveSqlParser.T_LIMIT:
                case HiveSqlParser.T_TRUNCATE:
                case HiveSqlParser.T_USE:
                case HiveSqlParser.T_WHILE:
                case HiveSqlParser.T_DO:
                case HiveSqlParser.T_LOOP:
                case HiveSqlParser.T_REVERSE:
                case HiveSqlParser.T_STEP:
                case HiveSqlParser.T_USING:
                case HiveSqlParser.T_ALL:
                case HiveSqlParser.T_EXCEPT:
                case HiveSqlParser.T_INTERSECT:
                case HiveSqlParser.T_SELECT:
                case HiveSqlParser.T_SEL:
                case HiveSqlParser.T_DISTINCT:
                case HiveSqlParser.T_TITLE:
                case HiveSqlParser.T_INNER:
                case HiveSqlParser.T_JOIN:
                case HiveSqlParser.T_LEFT:
                case HiveSqlParser.T_RIGHT:
                case HiveSqlParser.T_FULL:
                case HiveSqlParser.T_OUTER:
                case HiveSqlParser.T_GROUP:
                case HiveSqlParser.T_HAVING:
                case HiveSqlParser.T_QUALIFY:
                case HiveSqlParser.T_ORDER:
                case HiveSqlParser.T_RR:
                case HiveSqlParser.T_RS:
                case HiveSqlParser.T_UR:
                case HiveSqlParser.T_AND:
                case HiveSqlParser.T_KEEP:
                case HiveSqlParser.T_EXCLUSIVE:
                case HiveSqlParser.T_SHARE:
                case HiveSqlParser.T_LOCKS:
                case HiveSqlParser.T_MERGE:
                case HiveSqlParser.T_MATCHED:
                case HiveSqlParser.T_DESCRIBE:
                case HiveSqlParser.T_BETWEEN:
                case HiveSqlParser.T_RLIKE:
                case HiveSqlParser.T_REGEXP:
                case HiveSqlParser.T_INTERVAL:
                case HiveSqlParser.T_DAY:
                case HiveSqlParser.T_DAYS:
                case HiveSqlParser.T_MICROSECOND:
                case HiveSqlParser.T_MICROSECONDS:
                case HiveSqlParser.T_SECOND:
                case HiveSqlParser.T_SECONDS:
                case HiveSqlParser.T_CONCAT:
                case HiveSqlParser.T_CASE:
                case HiveSqlParser.T_ISOPEN:
                case HiveSqlParser.T_NOTFOUND:
                case HiveSqlParser.T_AVG:
                case HiveSqlParser.T_COUNT:
                case HiveSqlParser.T_COUNT_BIG:
                case HiveSqlParser.T_CUME_DIST:
                case HiveSqlParser.T_DENSE_RANK:
                case HiveSqlParser.T_FIRST_VALUE:
                case HiveSqlParser.T_LAG:
                case HiveSqlParser.T_LAST_VALUE:
                case HiveSqlParser.T_LEAD:
                case HiveSqlParser.T_MIN:
                case HiveSqlParser.T_RANK:
                case HiveSqlParser.T_ROW_NUMBER:
                case HiveSqlParser.T_STDEV:
                case HiveSqlParser.T_VAR:
                case HiveSqlParser.T_VARIANCE:
                case HiveSqlParser.T_OVER:
                case HiveSqlParser.T_PARTITION:
                case HiveSqlParser.T_ACTIVITY_COUNT:
                case HiveSqlParser.T_CAST:
                case HiveSqlParser.T_CURRENT_DATE:
                case HiveSqlParser.T_CURRENT_TIMESTAMP:
                case HiveSqlParser.T_CURRENT_USER:
                case HiveSqlParser.T_USER:
                case HiveSqlParser.T_PART_COUNT:
                case HiveSqlParser.T_PART_LOC:
                case HiveSqlParser.T_TRIM:
                case HiveSqlParser.T_SUBSTRING:
                case HiveSqlParser.T_SYSDATE:
                case HiveSqlParser.T_HIVE:
                case HiveSqlParser.T_HOST:
                case HiveSqlParser.T_TRUE:
                case HiveSqlParser.T_FALSE:
                case HiveSqlParser.T_DIR:
                case HiveSqlParser.T_FILE:
                case HiveSqlParser.T_FILES:
                case HiveSqlParser.T_NEW:
                case HiveSqlParser.T_PWD:
                case HiveSqlParser.T_SESSIONS:
                case HiveSqlParser.T_SUBDIR:
                    this.state = 1075;
                    this.ident();
                    break;
                case HiveSqlParser.L_INT:
                    this.state = 1076;
                    this.match(HiveSqlParser.L_INT);
                    break;
                default:
                    throw new antlr4.error.NoViableAltException(this);
                }
                this.state = 1079; 
                this._errHandler.sync(this);
                _la = this._input.LA(1);
            } while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << HiveSqlParser.T__8) | (1 << HiveSqlParser.T_GO) | (1 << HiveSqlParser.T_BEGIN) | (1 << HiveSqlParser.T_EXCEPTION) | (1 << HiveSqlParser.L_ID) | (1 << HiveSqlParser.T_THEN) | (1 << HiveSqlParser.T_SET) | (1 << HiveSqlParser.T_ALLOCATE) | (1 << HiveSqlParser.T_CURSOR) | (1 << HiveSqlParser.T_FOR) | (1 << HiveSqlParser.T_RESULT) | (1 << HiveSqlParser.T_PROCEDURE) | (1 << HiveSqlParser.T_ASSOCIATE))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (HiveSqlParser.T_LOCATOR - 32)) | (1 << (HiveSqlParser.T_LOCATORS - 32)) | (1 << (HiveSqlParser.T_WITH - 32)) | (1 << (HiveSqlParser.T_TRANSACTION - 32)) | (1 << (HiveSqlParser.T_BREAK - 32)) | (1 << (HiveSqlParser.T_CALL - 32)) | (1 << (HiveSqlParser.T_DECLARE - 32)) | (1 << (HiveSqlParser.T_AS - 32)) | (1 << (HiveSqlParser.T_CONSTANT - 32)) | (1 << (HiveSqlParser.T_CONDITION - 32)) | (1 << (HiveSqlParser.T_IS - 32)) | (1 << (HiveSqlParser.T_RETURN - 32)) | (1 << (HiveSqlParser.T_ONLY - 32)) | (1 << (HiveSqlParser.T_TO - 32)) | (1 << (HiveSqlParser.T_CALLER - 32)) | (1 << (HiveSqlParser.T_CLIENT - 32)) | (1 << (HiveSqlParser.T_WITHOUT - 32)) | (1 << (HiveSqlParser.T_CONTINUE - 32)) | (1 << (HiveSqlParser.T_EXIT - 32)) | (1 << (HiveSqlParser.T_HANDLER - 32)) | (1 << (HiveSqlParser.T_SQLEXCEPTION - 32)) | (1 << (HiveSqlParser.T_SQLWARNING - 32)) | (1 << (HiveSqlParser.T_NOT - 32)) | (1 << (HiveSqlParser.T_FOUND - 32)) | (1 << (HiveSqlParser.T_GLOBAL - 32)) | (1 << (HiveSqlParser.T_TEMPORARY - 32)) | (1 << (HiveSqlParser.T_TABLE - 32)) | (1 << (HiveSqlParser.T_CREATE - 32)) | (1 << (HiveSqlParser.T_IF - 32)) | (1 << (HiveSqlParser.T_EXISTS - 32)) | (1 << (HiveSqlParser.T_LOCAL - 32)) | (1 << (HiveSqlParser.T_MULTISET - 32)))) !== 0) || ((((_la - 64)) & ~0x1f) == 0 && ((1 << (_la - 64)) & ((1 << (HiveSqlParser.T_VOLATILE - 64)) | (1 << (HiveSqlParser.T_LIKE - 64)) | (1 << (HiveSqlParser.T_CONSTRAINT - 64)) | (1 << (HiveSqlParser.T_PRIMARY - 64)) | (1 << (HiveSqlParser.T_KEY - 64)) | (1 << (HiveSqlParser.T_UNIQUE - 64)) | (1 << (HiveSqlParser.T_REFERENCES - 64)) | (1 << (HiveSqlParser.T_IDENTITY - 64)) | (1 << (HiveSqlParser.L_INT - 64)) | (1 << (HiveSqlParser.T_AUTO_INCREMENT - 64)) | (1 << (HiveSqlParser.T_ENABLE - 64)) | (1 << (HiveSqlParser.T_CLUSTERED - 64)) | (1 << (HiveSqlParser.T_ASC - 64)) | (1 << (HiveSqlParser.T_DESC - 64)) | (1 << (HiveSqlParser.T_FOREIGN - 64)) | (1 << (HiveSqlParser.T_ON - 64)) | (1 << (HiveSqlParser.T_UPDATE - 64)) | (1 << (HiveSqlParser.T_DELETE - 64)) | (1 << (HiveSqlParser.T_NO - 64)) | (1 << (HiveSqlParser.T_ACTION - 64)) | (1 << (HiveSqlParser.T_RESTRICT - 64)) | (1 << (HiveSqlParser.T_DEFAULT - 64)) | (1 << (HiveSqlParser.T_CASCADE - 64)) | (1 << (HiveSqlParser.T_LOG - 64)) | (1 << (HiveSqlParser.T_FALLBACK - 64)) | (1 << (HiveSqlParser.T_COMMIT - 64)) | (1 << (HiveSqlParser.T_PRESERVE - 64)) | (1 << (HiveSqlParser.T_ROWS - 64)) | (1 << (HiveSqlParser.T_SEGMENT - 64)) | (1 << (HiveSqlParser.T_CREATION - 64)) | (1 << (HiveSqlParser.T_IMMEDIATE - 64)) | (1 << (HiveSqlParser.T_DEFERRED - 64)))) !== 0) || ((((_la - 96)) & ~0x1f) == 0 && ((1 << (_la - 96)) & ((1 << (HiveSqlParser.T_PCTFREE - 96)) | (1 << (HiveSqlParser.T_PCTUSED - 96)) | (1 << (HiveSqlParser.T_INITRANS - 96)) | (1 << (HiveSqlParser.T_MAXTRANS - 96)) | (1 << (HiveSqlParser.T_NOCOMPRESS - 96)) | (1 << (HiveSqlParser.T_LOGGING - 96)) | (1 << (HiveSqlParser.T_NOLOGGING - 96)) | (1 << (HiveSqlParser.T_STORAGE - 96)) | (1 << (HiveSqlParser.T_TABLESPACE - 96)) | (1 << (HiveSqlParser.T_INDEX - 96)) | (1 << (HiveSqlParser.T_IN - 96)) | (1 << (HiveSqlParser.T_REPLACE - 96)) | (1 << (HiveSqlParser.T_DISTRIBUTE - 96)) | (1 << (HiveSqlParser.T_BY - 96)) | (1 << (HiveSqlParser.T_HASH - 96)) | (1 << (HiveSqlParser.T_LOGGED - 96)) | (1 << (HiveSqlParser.T_COMPRESS - 96)) | (1 << (HiveSqlParser.T_YES - 96)) | (1 << (HiveSqlParser.T_DEFINITION - 96)) | (1 << (HiveSqlParser.T_DROP - 96)) | (1 << (HiveSqlParser.T_DATA - 96)) | (1 << (HiveSqlParser.T_STORED - 96)) | (1 << (HiveSqlParser.T_ROW - 96)) | (1 << (HiveSqlParser.T_FORMAT - 96)) | (1 << (HiveSqlParser.T_DELIMITED - 96)) | (1 << (HiveSqlParser.T_FIELDS - 96)) | (1 << (HiveSqlParser.T_TERMINATED - 96)) | (1 << (HiveSqlParser.T_ESCAPED - 96)) | (1 << (HiveSqlParser.T_COLLECTION - 96)) | (1 << (HiveSqlParser.T_ITEMS - 96)) | (1 << (HiveSqlParser.T_MAP - 96)) | (1 << (HiveSqlParser.T_KEYS - 96)))) !== 0) || ((((_la - 128)) & ~0x1f) == 0 && ((1 << (_la - 128)) & ((1 << (HiveSqlParser.T_LINES - 128)) | (1 << (HiveSqlParser.T_DEFINED - 128)) | (1 << (HiveSqlParser.T_TEXTIMAGE_ON - 128)) | (1 << (HiveSqlParser.T_COMMENT - 128)) | (1 << (HiveSqlParser.T_CHARACTER - 128)) | (1 << (HiveSqlParser.T_CHARSET - 128)) | (1 << (HiveSqlParser.T_ENGINE - 128)) | (1 << (HiveSqlParser.T_ALTER - 128)) | (1 << (HiveSqlParser.T_ADD2 - 128)) | (1 << (HiveSqlParser.T_CHAR - 128)) | (1 << (HiveSqlParser.T_BIGINT - 128)) | (1 << (HiveSqlParser.T_BINARY_DOUBLE - 128)) | (1 << (HiveSqlParser.T_BINARY_FLOAT - 128)) | (1 << (HiveSqlParser.T_BIT - 128)) | (1 << (HiveSqlParser.T_DATE - 128)) | (1 << (HiveSqlParser.T_DATETIME - 128)) | (1 << (HiveSqlParser.T_DEC - 128)) | (1 << (HiveSqlParser.T_DECIMAL - 128)) | (1 << (HiveSqlParser.T_DOUBLE - 128)) | (1 << (HiveSqlParser.T_PRECISION - 128)) | (1 << (HiveSqlParser.T_FLOAT - 128)) | (1 << (HiveSqlParser.T_INT - 128)) | (1 << (HiveSqlParser.T_INT2 - 128)) | (1 << (HiveSqlParser.T_INT4 - 128)) | (1 << (HiveSqlParser.T_INT8 - 128)) | (1 << (HiveSqlParser.T_INTEGER - 128)) | (1 << (HiveSqlParser.T_NCHAR - 128)) | (1 << (HiveSqlParser.T_NVARCHAR - 128)) | (1 << (HiveSqlParser.T_NUMBER - 128)) | (1 << (HiveSqlParser.T_NUMERIC - 128)))) !== 0) || ((((_la - 160)) & ~0x1f) == 0 && ((1 << (_la - 160)) & ((1 << (HiveSqlParser.T_REAL - 160)) | (1 << (HiveSqlParser.T_RESULT_SET_LOCATOR - 160)) | (1 << (HiveSqlParser.T_VARYING - 160)) | (1 << (HiveSqlParser.T_SIMPLE_FLOAT - 160)) | (1 << (HiveSqlParser.T_SIMPLE_DOUBLE - 160)) | (1 << (HiveSqlParser.T_SMALLINT - 160)) | (1 << (HiveSqlParser.T_SMALLDATETIME - 160)) | (1 << (HiveSqlParser.T_STRING - 160)) | (1 << (HiveSqlParser.T_SYS_REFCURSOR - 160)) | (1 << (HiveSqlParser.T_TIMESTAMP - 160)) | (1 << (HiveSqlParser.T_VARCHAR - 160)) | (1 << (HiveSqlParser.T_VARCHAR2 - 160)) | (1 << (HiveSqlParser.T_XML - 160)) | (1 << (HiveSqlParser.T_MAX - 160)) | (1 << (HiveSqlParser.T_BYTE - 160)) | (1 << (HiveSqlParser.T_CASESPECIFIC - 160)) | (1 << (HiveSqlParser.T_CS - 160)) | (1 << (HiveSqlParser.T_DATABASE - 160)) | (1 << (HiveSqlParser.T_SCHEMA - 160)) | (1 << (HiveSqlParser.T_LOCATION - 160)) | (1 << (HiveSqlParser.T_OR - 160)) | (1 << (HiveSqlParser.T_FUNCTION - 160)) | (1 << (HiveSqlParser.T_RETURNS - 160)) | (1 << (HiveSqlParser.T_PACKAGE - 160)) | (1 << (HiveSqlParser.T_PROC - 160)) | (1 << (HiveSqlParser.T_BODY - 160)) | (1 << (HiveSqlParser.T_OUT - 160)) | (1 << (HiveSqlParser.T_INOUT - 160)))) !== 0) || ((((_la - 192)) & ~0x1f) == 0 && ((1 << (_la - 192)) & ((1 << (HiveSqlParser.T_LANGUAGE - 192)) | (1 << (HiveSqlParser.T_SQL - 192)) | (1 << (HiveSqlParser.T_SECURITY - 192)) | (1 << (HiveSqlParser.T_CREATOR - 192)) | (1 << (HiveSqlParser.T_DEFINER - 192)) | (1 << (HiveSqlParser.T_INVOKER - 192)) | (1 << (HiveSqlParser.T_OWNER - 192)) | (1 << (HiveSqlParser.T_DYNAMIC - 192)) | (1 << (HiveSqlParser.T_SETS - 192)) | (1 << (HiveSqlParser.T_EXEC - 192)) | (1 << (HiveSqlParser.T_EXECUTE - 192)) | (1 << (HiveSqlParser.T_INTO - 192)) | (1 << (HiveSqlParser.T_INCLUDE - 192)) | (1 << (HiveSqlParser.T_INSERT - 192)) | (1 << (HiveSqlParser.T_OVERWRITE - 192)) | (1 << (HiveSqlParser.T_VALUES - 192)) | (1 << (HiveSqlParser.T_DIRECTORY - 192)) | (1 << (HiveSqlParser.T_GET - 192)) | (1 << (HiveSqlParser.T_DIAGNOSTICS - 192)) | (1 << (HiveSqlParser.T_MESSAGE_TEXT - 192)) | (1 << (HiveSqlParser.T_ROW_COUNT - 192)) | (1 << (HiveSqlParser.T_GRANT - 192)) | (1 << (HiveSqlParser.T_ROLE - 192)) | (1 << (HiveSqlParser.T_LEAVE - 192)) | (1 << (HiveSqlParser.T_OBJECT - 192)) | (1 << (HiveSqlParser.T_AT - 192)) | (1 << (HiveSqlParser.T_OPEN - 192)) | (1 << (HiveSqlParser.T_FETCH - 192)) | (1 << (HiveSqlParser.T_FROM - 192)))) !== 0) || ((((_la - 224)) & ~0x1f) == 0 && ((1 << (_la - 224)) & ((1 << (HiveSqlParser.T_COLLECT - 224)) | (1 << (HiveSqlParser.T_STATISTICS - 224)) | (1 << (HiveSqlParser.T_STATS - 224)) | (1 << (HiveSqlParser.T_COLUMN - 224)) | (1 << (HiveSqlParser.T_CLOSE - 224)) | (1 << (HiveSqlParser.T_CMP - 224)) | (1 << (HiveSqlParser.T_SUM - 224)) | (1 << (HiveSqlParser.T_COPY - 224)) | (1 << (HiveSqlParser.T_HDFS - 224)) | (1 << (HiveSqlParser.T_BATCHSIZE - 224)) | (1 << (HiveSqlParser.T_DELIMITER - 224)) | (1 << (HiveSqlParser.T_SQLINSERT - 224)) | (1 << (HiveSqlParser.T_IGNORE - 224)) | (1 << (HiveSqlParser.T_WORK - 224)) | (1 << (HiveSqlParser.T_PRINT - 224)) | (1 << (HiveSqlParser.T_QUIT - 224)) | (1 << (HiveSqlParser.T_RAISE - 224)) | (1 << (HiveSqlParser.T_RESIGNAL - 224)) | (1 << (HiveSqlParser.T_SQLSTATE - 224)) | (1 << (HiveSqlParser.T_VALUE - 224)) | (1 << (HiveSqlParser.T_ROLLBACK - 224)) | (1 << (HiveSqlParser.T_CURRENT - 224)) | (1 << (HiveSqlParser.T_CURRENT_SCHEMA - 224)) | (1 << (HiveSqlParser.T_ANSI_NULLS - 224)) | (1 << (HiveSqlParser.T_ANSI_PADDING - 224)) | (1 << (HiveSqlParser.T_NOCOUNT - 224)) | (1 << (HiveSqlParser.T_QUOTED_IDENTIFIER - 224)) | (1 << (HiveSqlParser.T_XACT_ABORT - 224)) | (1 << (HiveSqlParser.T_OFF - 224)) | (1 << (HiveSqlParser.T_QUERY_BAND - 224)) | (1 << (HiveSqlParser.T_NONE - 224)) | (1 << (HiveSqlParser.T_SESSION - 224)))) !== 0) || ((((_la - 256)) & ~0x1f) == 0 && ((1 << (_la - 256)) & ((1 << (HiveSqlParser.T_SIGNAL - 256)) | (1 << (HiveSqlParser.T_SUMMARY - 256)) | (1 << (HiveSqlParser.T_TOP - 256)) | (1 << (HiveSqlParser.T_LIMIT - 256)) | (1 << (HiveSqlParser.T_TRUNCATE - 256)) | (1 << (HiveSqlParser.T_USE - 256)) | (1 << (HiveSqlParser.T_WHILE - 256)) | (1 << (HiveSqlParser.T_DO - 256)) | (1 << (HiveSqlParser.T_LOOP - 256)) | (1 << (HiveSqlParser.T_REVERSE - 256)) | (1 << (HiveSqlParser.T_STEP - 256)) | (1 << (HiveSqlParser.T_USING - 256)) | (1 << (HiveSqlParser.T_ALL - 256)) | (1 << (HiveSqlParser.T_EXCEPT - 256)) | (1 << (HiveSqlParser.T_INTERSECT - 256)) | (1 << (HiveSqlParser.T_SELECT - 256)) | (1 << (HiveSqlParser.T_SEL - 256)) | (1 << (HiveSqlParser.T_DISTINCT - 256)) | (1 << (HiveSqlParser.T_TITLE - 256)) | (1 << (HiveSqlParser.T_INNER - 256)) | (1 << (HiveSqlParser.T_JOIN - 256)) | (1 << (HiveSqlParser.T_LEFT - 256)) | (1 << (HiveSqlParser.T_RIGHT - 256)) | (1 << (HiveSqlParser.T_FULL - 256)) | (1 << (HiveSqlParser.T_OUTER - 256)))) !== 0) || ((((_la - 288)) & ~0x1f) == 0 && ((1 << (_la - 288)) & ((1 << (HiveSqlParser.T_GROUP - 288)) | (1 << (HiveSqlParser.T_HAVING - 288)) | (1 << (HiveSqlParser.T_QUALIFY - 288)) | (1 << (HiveSqlParser.T_ORDER - 288)) | (1 << (HiveSqlParser.T_RR - 288)) | (1 << (HiveSqlParser.T_RS - 288)) | (1 << (HiveSqlParser.T_UR - 288)) | (1 << (HiveSqlParser.T_AND - 288)) | (1 << (HiveSqlParser.T_KEEP - 288)) | (1 << (HiveSqlParser.T_EXCLUSIVE - 288)) | (1 << (HiveSqlParser.T_SHARE - 288)) | (1 << (HiveSqlParser.T_LOCKS - 288)) | (1 << (HiveSqlParser.T_MERGE - 288)) | (1 << (HiveSqlParser.T_MATCHED - 288)) | (1 << (HiveSqlParser.T_DESCRIBE - 288)) | (1 << (HiveSqlParser.T_BETWEEN - 288)) | (1 << (HiveSqlParser.T_RLIKE - 288)) | (1 << (HiveSqlParser.T_REGEXP - 288)) | (1 << (HiveSqlParser.T_INTERVAL - 288)) | (1 << (HiveSqlParser.T_DAY - 288)) | (1 << (HiveSqlParser.T_DAYS - 288)) | (1 << (HiveSqlParser.T_MICROSECOND - 288)) | (1 << (HiveSqlParser.T_MICROSECONDS - 288)))) !== 0) || ((((_la - 320)) & ~0x1f) == 0 && ((1 << (_la - 320)) & ((1 << (HiveSqlParser.T_SECOND - 320)) | (1 << (HiveSqlParser.T_SECONDS - 320)) | (1 << (HiveSqlParser.T_CONCAT - 320)) | (1 << (HiveSqlParser.T_CASE - 320)) | (1 << (HiveSqlParser.T_ISOPEN - 320)) | (1 << (HiveSqlParser.T_NOTFOUND - 320)) | (1 << (HiveSqlParser.T_AVG - 320)) | (1 << (HiveSqlParser.T_COUNT - 320)) | (1 << (HiveSqlParser.T_COUNT_BIG - 320)) | (1 << (HiveSqlParser.T_CUME_DIST - 320)) | (1 << (HiveSqlParser.T_DENSE_RANK - 320)) | (1 << (HiveSqlParser.T_FIRST_VALUE - 320)) | (1 << (HiveSqlParser.T_LAG - 320)) | (1 << (HiveSqlParser.T_LAST_VALUE - 320)) | (1 << (HiveSqlParser.T_LEAD - 320)) | (1 << (HiveSqlParser.T_MIN - 320)) | (1 << (HiveSqlParser.T_RANK - 320)) | (1 << (HiveSqlParser.T_ROW_NUMBER - 320)) | (1 << (HiveSqlParser.T_STDEV - 320)) | (1 << (HiveSqlParser.T_VAR - 320)) | (1 << (HiveSqlParser.T_VARIANCE - 320)) | (1 << (HiveSqlParser.T_OVER - 320)) | (1 << (HiveSqlParser.T_PARTITION - 320)) | (1 << (HiveSqlParser.T_ACTIVITY_COUNT - 320)) | (1 << (HiveSqlParser.T_CAST - 320)) | (1 << (HiveSqlParser.T_CURRENT_DATE - 320)) | (1 << (HiveSqlParser.T_CURRENT_TIMESTAMP - 320)) | (1 << (HiveSqlParser.T_CURRENT_USER - 320)) | (1 << (HiveSqlParser.T_USER - 320)))) !== 0) || ((((_la - 356)) & ~0x1f) == 0 && ((1 << (_la - 356)) & ((1 << (HiveSqlParser.T_PART_COUNT - 356)) | (1 << (HiveSqlParser.T_PART_LOC - 356)) | (1 << (HiveSqlParser.T_TRIM - 356)) | (1 << (HiveSqlParser.T_SUBSTRING - 356)) | (1 << (HiveSqlParser.T_SYSDATE - 356)) | (1 << (HiveSqlParser.T_HIVE - 356)) | (1 << (HiveSqlParser.T_HOST - 356)) | (1 << (HiveSqlParser.T_TRUE - 356)) | (1 << (HiveSqlParser.T_FALSE - 356)) | (1 << (HiveSqlParser.T_DIR - 356)) | (1 << (HiveSqlParser.T_FILE - 356)) | (1 << (HiveSqlParser.T_FILES - 356)) | (1 << (HiveSqlParser.T_NEW - 356)) | (1 << (HiveSqlParser.T_PWD - 356)) | (1 << (HiveSqlParser.T_SESSIONS - 356)) | (1 << (HiveSqlParser.T_SUBDIR - 356)))) !== 0));
            this.state = 1081;
            this.match(HiveSqlParser.T_CLOSE_P);
            break;
        case HiveSqlParser.T_TABLESPACE:
            this.enterOuterAlt(localctx, 6);
            this.state = 1082;
            this.match(HiveSqlParser.T_TABLESPACE);
            this.state = 1083;
            this.ident();
            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 Create_table_options_db2_itemContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_create_table_options_db2_item;
    return this;
}

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

Create_table_options_db2_itemContext.prototype.T_IN = function() {
    return this.getToken(HiveSqlParser.T_IN, 0);
};

Create_table_options_db2_itemContext.prototype.ident = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(IdentContext);
    } else {
        return this.getTypedRuleContext(IdentContext,i);
    }
};

Create_table_options_db2_itemContext.prototype.T_INDEX = function() {
    return this.getToken(HiveSqlParser.T_INDEX, 0);
};

Create_table_options_db2_itemContext.prototype.T_WITH = function() {
    return this.getToken(HiveSqlParser.T_WITH, 0);
};

Create_table_options_db2_itemContext.prototype.T_REPLACE = function() {
    return this.getToken(HiveSqlParser.T_REPLACE, 0);
};

Create_table_options_db2_itemContext.prototype.T_DISTRIBUTE = function() {
    return this.getToken(HiveSqlParser.T_DISTRIBUTE, 0);
};

Create_table_options_db2_itemContext.prototype.T_BY = function() {
    return this.getToken(HiveSqlParser.T_BY, 0);
};

Create_table_options_db2_itemContext.prototype.T_HASH = function() {
    return this.getToken(HiveSqlParser.T_HASH, 0);
};

Create_table_options_db2_itemContext.prototype.T_OPEN_P = function() {
    return this.getToken(HiveSqlParser.T_OPEN_P, 0);
};

Create_table_options_db2_itemContext.prototype.T_CLOSE_P = function() {
    return this.getToken(HiveSqlParser.T_CLOSE_P, 0);
};

Create_table_options_db2_itemContext.prototype.T_COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_COMMA);
    } else {
        return this.getToken(HiveSqlParser.T_COMMA, i);
    }
};


Create_table_options_db2_itemContext.prototype.T_LOGGED = function() {
    return this.getToken(HiveSqlParser.T_LOGGED, 0);
};

Create_table_options_db2_itemContext.prototype.T_NOT = function() {
    return this.getToken(HiveSqlParser.T_NOT, 0);
};

Create_table_options_db2_itemContext.prototype.T_COMPRESS = function() {
    return this.getToken(HiveSqlParser.T_COMPRESS, 0);
};

Create_table_options_db2_itemContext.prototype.T_YES = function() {
    return this.getToken(HiveSqlParser.T_YES, 0);
};

Create_table_options_db2_itemContext.prototype.T_NO = function() {
    return this.getToken(HiveSqlParser.T_NO, 0);
};

Create_table_options_db2_itemContext.prototype.T_DEFINITION = function() {
    return this.getToken(HiveSqlParser.T_DEFINITION, 0);
};

Create_table_options_db2_itemContext.prototype.T_ONLY = function() {
    return this.getToken(HiveSqlParser.T_ONLY, 0);
};

Create_table_options_db2_itemContext.prototype.T_RESTRICT = function() {
    return this.getToken(HiveSqlParser.T_RESTRICT, 0);
};

Create_table_options_db2_itemContext.prototype.T_ON = function() {
    return this.getToken(HiveSqlParser.T_ON, 0);
};

Create_table_options_db2_itemContext.prototype.T_DROP = function() {
    return this.getToken(HiveSqlParser.T_DROP, 0);
};

Create_table_options_db2_itemContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterCreate_table_options_db2_item(this);
	}
};

Create_table_options_db2_itemContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitCreate_table_options_db2_item(this);
	}
};

Create_table_options_db2_itemContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitCreate_table_options_db2_item(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Create_table_options_db2_itemContext = Create_table_options_db2_itemContext;

HiveSqlParser.prototype.create_table_options_db2_item = function() {

    var localctx = new Create_table_options_db2_itemContext(this, this._ctx, this.state);
    this.enterRule(localctx, 96, HiveSqlParser.RULE_create_table_options_db2_item);
    var _la = 0; // Token type
    try {
        this.state = 1119;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,92,this._ctx);
        switch(la_) {
        case 1:
            this.enterOuterAlt(localctx, 1);
            this.state = 1087;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===HiveSqlParser.T_INDEX) {
                this.state = 1086;
                this.match(HiveSqlParser.T_INDEX);
            }

            this.state = 1089;
            this.match(HiveSqlParser.T_IN);
            this.state = 1090;
            this.ident();
            break;

        case 2:
            this.enterOuterAlt(localctx, 2);
            this.state = 1091;
            this.match(HiveSqlParser.T_WITH);
            this.state = 1092;
            this.match(HiveSqlParser.T_REPLACE);
            break;

        case 3:
            this.enterOuterAlt(localctx, 3);
            this.state = 1093;
            this.match(HiveSqlParser.T_DISTRIBUTE);
            this.state = 1094;
            this.match(HiveSqlParser.T_BY);
            this.state = 1095;
            this.match(HiveSqlParser.T_HASH);
            this.state = 1096;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 1097;
            this.ident();
            this.state = 1102;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            while(_la===HiveSqlParser.T_COMMA) {
                this.state = 1098;
                this.match(HiveSqlParser.T_COMMA);
                this.state = 1099;
                this.ident();
                this.state = 1104;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
            }
            this.state = 1105;
            this.match(HiveSqlParser.T_CLOSE_P);
            break;

        case 4:
            this.enterOuterAlt(localctx, 4);
            this.state = 1108;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===HiveSqlParser.T_NOT) {
                this.state = 1107;
                this.match(HiveSqlParser.T_NOT);
            }

            this.state = 1110;
            this.match(HiveSqlParser.T_LOGGED);
            break;

        case 5:
            this.enterOuterAlt(localctx, 5);
            this.state = 1111;
            this.match(HiveSqlParser.T_COMPRESS);
            this.state = 1112;
            _la = this._input.LA(1);
            if(!(_la===HiveSqlParser.T_NO || _la===HiveSqlParser.T_YES)) {
            this._errHandler.recoverInline(this);
            }
            else {
            	this._errHandler.reportMatch(this);
                this.consume();
            }
            break;

        case 6:
            this.enterOuterAlt(localctx, 6);
            this.state = 1113;
            this.match(HiveSqlParser.T_DEFINITION);
            this.state = 1114;
            this.match(HiveSqlParser.T_ONLY);
            break;

        case 7:
            this.enterOuterAlt(localctx, 7);
            this.state = 1115;
            this.match(HiveSqlParser.T_WITH);
            this.state = 1116;
            this.match(HiveSqlParser.T_RESTRICT);
            this.state = 1117;
            this.match(HiveSqlParser.T_ON);
            this.state = 1118;
            this.match(HiveSqlParser.T_DROP);
            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 Create_table_options_td_itemContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_create_table_options_td_item;
    return this;
}

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

Create_table_options_td_itemContext.prototype.T_PRIMARY = function() {
    return this.getToken(HiveSqlParser.T_PRIMARY, 0);
};

Create_table_options_td_itemContext.prototype.T_INDEX = function() {
    return this.getToken(HiveSqlParser.T_INDEX, 0);
};

Create_table_options_td_itemContext.prototype.T_OPEN_P = function() {
    return this.getToken(HiveSqlParser.T_OPEN_P, 0);
};

Create_table_options_td_itemContext.prototype.ident = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(IdentContext);
    } else {
        return this.getTypedRuleContext(IdentContext,i);
    }
};

Create_table_options_td_itemContext.prototype.T_CLOSE_P = function() {
    return this.getToken(HiveSqlParser.T_CLOSE_P, 0);
};

Create_table_options_td_itemContext.prototype.T_UNIQUE = function() {
    return this.getToken(HiveSqlParser.T_UNIQUE, 0);
};

Create_table_options_td_itemContext.prototype.T_COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_COMMA);
    } else {
        return this.getToken(HiveSqlParser.T_COMMA, i);
    }
};


Create_table_options_td_itemContext.prototype.T_WITH = function() {
    return this.getToken(HiveSqlParser.T_WITH, 0);
};

Create_table_options_td_itemContext.prototype.T_DATA = function() {
    return this.getToken(HiveSqlParser.T_DATA, 0);
};

Create_table_options_td_itemContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterCreate_table_options_td_item(this);
	}
};

Create_table_options_td_itemContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitCreate_table_options_td_item(this);
	}
};

Create_table_options_td_itemContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitCreate_table_options_td_item(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Create_table_options_td_itemContext = Create_table_options_td_itemContext;

HiveSqlParser.prototype.create_table_options_td_item = function() {

    var localctx = new Create_table_options_td_itemContext(this, this._ctx, this.state);
    this.enterRule(localctx, 98, HiveSqlParser.RULE_create_table_options_td_item);
    var _la = 0; // Token type
    try {
        this.state = 1139;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case HiveSqlParser.T_PRIMARY:
        case HiveSqlParser.T_UNIQUE:
            this.enterOuterAlt(localctx, 1);
            this.state = 1122;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===HiveSqlParser.T_UNIQUE) {
                this.state = 1121;
                this.match(HiveSqlParser.T_UNIQUE);
            }

            this.state = 1124;
            this.match(HiveSqlParser.T_PRIMARY);
            this.state = 1125;
            this.match(HiveSqlParser.T_INDEX);
            this.state = 1126;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 1127;
            this.ident();
            this.state = 1132;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            while(_la===HiveSqlParser.T_COMMA) {
                this.state = 1128;
                this.match(HiveSqlParser.T_COMMA);
                this.state = 1129;
                this.ident();
                this.state = 1134;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
            }
            this.state = 1135;
            this.match(HiveSqlParser.T_CLOSE_P);
            break;
        case HiveSqlParser.T_WITH:
            this.enterOuterAlt(localctx, 2);
            this.state = 1137;
            this.match(HiveSqlParser.T_WITH);
            this.state = 1138;
            this.match(HiveSqlParser.T_DATA);
            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 Create_table_options_hive_itemContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_create_table_options_hive_item;
    return this;
}

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

Create_table_options_hive_itemContext.prototype.create_table_hive_row_format = function() {
    return this.getTypedRuleContext(Create_table_hive_row_formatContext,0);
};

Create_table_options_hive_itemContext.prototype.T_STORED = function() {
    return this.getToken(HiveSqlParser.T_STORED, 0);
};

Create_table_options_hive_itemContext.prototype.T_AS = function() {
    return this.getToken(HiveSqlParser.T_AS, 0);
};

Create_table_options_hive_itemContext.prototype.ident = function() {
    return this.getTypedRuleContext(IdentContext,0);
};

Create_table_options_hive_itemContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterCreate_table_options_hive_item(this);
	}
};

Create_table_options_hive_itemContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitCreate_table_options_hive_item(this);
	}
};

Create_table_options_hive_itemContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitCreate_table_options_hive_item(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Create_table_options_hive_itemContext = Create_table_options_hive_itemContext;

HiveSqlParser.prototype.create_table_options_hive_item = function() {

    var localctx = new Create_table_options_hive_itemContext(this, this._ctx, this.state);
    this.enterRule(localctx, 100, HiveSqlParser.RULE_create_table_options_hive_item);
    try {
        this.state = 1145;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case HiveSqlParser.T_ROW:
            this.enterOuterAlt(localctx, 1);
            this.state = 1141;
            this.create_table_hive_row_format();
            break;
        case HiveSqlParser.T_STORED:
            this.enterOuterAlt(localctx, 2);
            this.state = 1142;
            this.match(HiveSqlParser.T_STORED);
            this.state = 1143;
            this.match(HiveSqlParser.T_AS);
            this.state = 1144;
            this.ident();
            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 Create_table_hive_row_formatContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_create_table_hive_row_format;
    return this;
}

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

Create_table_hive_row_formatContext.prototype.T_ROW = function() {
    return this.getToken(HiveSqlParser.T_ROW, 0);
};

Create_table_hive_row_formatContext.prototype.T_FORMAT = function() {
    return this.getToken(HiveSqlParser.T_FORMAT, 0);
};

Create_table_hive_row_formatContext.prototype.T_DELIMITED = function() {
    return this.getToken(HiveSqlParser.T_DELIMITED, 0);
};

Create_table_hive_row_formatContext.prototype.create_table_hive_row_format_fields = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Create_table_hive_row_format_fieldsContext);
    } else {
        return this.getTypedRuleContext(Create_table_hive_row_format_fieldsContext,i);
    }
};

Create_table_hive_row_formatContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterCreate_table_hive_row_format(this);
	}
};

Create_table_hive_row_formatContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitCreate_table_hive_row_format(this);
	}
};

Create_table_hive_row_formatContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitCreate_table_hive_row_format(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Create_table_hive_row_formatContext = Create_table_hive_row_formatContext;

HiveSqlParser.prototype.create_table_hive_row_format = function() {

    var localctx = new Create_table_hive_row_formatContext(this, this._ctx, this.state);
    this.enterRule(localctx, 102, HiveSqlParser.RULE_create_table_hive_row_format);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1147;
        this.match(HiveSqlParser.T_ROW);
        this.state = 1148;
        this.match(HiveSqlParser.T_FORMAT);
        this.state = 1149;
        this.match(HiveSqlParser.T_DELIMITED);
        this.state = 1153;
        this._errHandler.sync(this);
        var _alt = this._interp.adaptivePredict(this._input,97,this._ctx)
        while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
            if(_alt===1) {
                this.state = 1150;
                this.create_table_hive_row_format_fields(); 
            }
            this.state = 1155;
            this._errHandler.sync(this);
            _alt = this._interp.adaptivePredict(this._input,97,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 Create_table_hive_row_format_fieldsContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_create_table_hive_row_format_fields;
    return this;
}

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

Create_table_hive_row_format_fieldsContext.prototype.T_FIELDS = function() {
    return this.getToken(HiveSqlParser.T_FIELDS, 0);
};

Create_table_hive_row_format_fieldsContext.prototype.T_TERMINATED = function() {
    return this.getToken(HiveSqlParser.T_TERMINATED, 0);
};

Create_table_hive_row_format_fieldsContext.prototype.T_BY = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_BY);
    } else {
        return this.getToken(HiveSqlParser.T_BY, i);
    }
};


Create_table_hive_row_format_fieldsContext.prototype.expr = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(ExprContext);
    } else {
        return this.getTypedRuleContext(ExprContext,i);
    }
};

Create_table_hive_row_format_fieldsContext.prototype.T_ESCAPED = function() {
    return this.getToken(HiveSqlParser.T_ESCAPED, 0);
};

Create_table_hive_row_format_fieldsContext.prototype.T_COLLECTION = function() {
    return this.getToken(HiveSqlParser.T_COLLECTION, 0);
};

Create_table_hive_row_format_fieldsContext.prototype.T_ITEMS = function() {
    return this.getToken(HiveSqlParser.T_ITEMS, 0);
};

Create_table_hive_row_format_fieldsContext.prototype.T_MAP = function() {
    return this.getToken(HiveSqlParser.T_MAP, 0);
};

Create_table_hive_row_format_fieldsContext.prototype.T_KEYS = function() {
    return this.getToken(HiveSqlParser.T_KEYS, 0);
};

Create_table_hive_row_format_fieldsContext.prototype.T_LINES = function() {
    return this.getToken(HiveSqlParser.T_LINES, 0);
};

Create_table_hive_row_format_fieldsContext.prototype.T_NULL = function() {
    return this.getToken(HiveSqlParser.T_NULL, 0);
};

Create_table_hive_row_format_fieldsContext.prototype.T_DEFINED = function() {
    return this.getToken(HiveSqlParser.T_DEFINED, 0);
};

Create_table_hive_row_format_fieldsContext.prototype.T_AS = function() {
    return this.getToken(HiveSqlParser.T_AS, 0);
};

Create_table_hive_row_format_fieldsContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterCreate_table_hive_row_format_fields(this);
	}
};

Create_table_hive_row_format_fieldsContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitCreate_table_hive_row_format_fields(this);
	}
};

Create_table_hive_row_format_fieldsContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitCreate_table_hive_row_format_fields(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Create_table_hive_row_format_fieldsContext = Create_table_hive_row_format_fieldsContext;

HiveSqlParser.prototype.create_table_hive_row_format_fields = function() {

    var localctx = new Create_table_hive_row_format_fieldsContext(this, this._ctx, this.state);
    this.enterRule(localctx, 104, HiveSqlParser.RULE_create_table_hive_row_format_fields);
    try {
        this.state = 1183;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case HiveSqlParser.T_FIELDS:
            this.enterOuterAlt(localctx, 1);
            this.state = 1156;
            this.match(HiveSqlParser.T_FIELDS);
            this.state = 1157;
            this.match(HiveSqlParser.T_TERMINATED);
            this.state = 1158;
            this.match(HiveSqlParser.T_BY);
            this.state = 1159;
            this.expr(0);
            this.state = 1163;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,98,this._ctx);
            if(la_===1) {
                this.state = 1160;
                this.match(HiveSqlParser.T_ESCAPED);
                this.state = 1161;
                this.match(HiveSqlParser.T_BY);
                this.state = 1162;
                this.expr(0);

            }
            break;
        case HiveSqlParser.T_COLLECTION:
            this.enterOuterAlt(localctx, 2);
            this.state = 1165;
            this.match(HiveSqlParser.T_COLLECTION);
            this.state = 1166;
            this.match(HiveSqlParser.T_ITEMS);
            this.state = 1167;
            this.match(HiveSqlParser.T_TERMINATED);
            this.state = 1168;
            this.match(HiveSqlParser.T_BY);
            this.state = 1169;
            this.expr(0);
            break;
        case HiveSqlParser.T_MAP:
            this.enterOuterAlt(localctx, 3);
            this.state = 1170;
            this.match(HiveSqlParser.T_MAP);
            this.state = 1171;
            this.match(HiveSqlParser.T_KEYS);
            this.state = 1172;
            this.match(HiveSqlParser.T_TERMINATED);
            this.state = 1173;
            this.match(HiveSqlParser.T_BY);
            this.state = 1174;
            this.expr(0);
            break;
        case HiveSqlParser.T_LINES:
            this.enterOuterAlt(localctx, 4);
            this.state = 1175;
            this.match(HiveSqlParser.T_LINES);
            this.state = 1176;
            this.match(HiveSqlParser.T_TERMINATED);
            this.state = 1177;
            this.match(HiveSqlParser.T_BY);
            this.state = 1178;
            this.expr(0);
            break;
        case HiveSqlParser.T_NULL:
            this.enterOuterAlt(localctx, 5);
            this.state = 1179;
            this.match(HiveSqlParser.T_NULL);
            this.state = 1180;
            this.match(HiveSqlParser.T_DEFINED);
            this.state = 1181;
            this.match(HiveSqlParser.T_AS);
            this.state = 1182;
            this.expr(0);
            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 Create_table_options_mssql_itemContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_create_table_options_mssql_item;
    return this;
}

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

Create_table_options_mssql_itemContext.prototype.T_ON = function() {
    return this.getToken(HiveSqlParser.T_ON, 0);
};

Create_table_options_mssql_itemContext.prototype.ident = function() {
    return this.getTypedRuleContext(IdentContext,0);
};

Create_table_options_mssql_itemContext.prototype.T_TEXTIMAGE_ON = function() {
    return this.getToken(HiveSqlParser.T_TEXTIMAGE_ON, 0);
};

Create_table_options_mssql_itemContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterCreate_table_options_mssql_item(this);
	}
};

Create_table_options_mssql_itemContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitCreate_table_options_mssql_item(this);
	}
};

Create_table_options_mssql_itemContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitCreate_table_options_mssql_item(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Create_table_options_mssql_itemContext = Create_table_options_mssql_itemContext;

HiveSqlParser.prototype.create_table_options_mssql_item = function() {

    var localctx = new Create_table_options_mssql_itemContext(this, this._ctx, this.state);
    this.enterRule(localctx, 106, HiveSqlParser.RULE_create_table_options_mssql_item);
    try {
        this.state = 1189;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case HiveSqlParser.T_ON:
            this.enterOuterAlt(localctx, 1);
            this.state = 1185;
            this.match(HiveSqlParser.T_ON);
            this.state = 1186;
            this.ident();
            break;
        case HiveSqlParser.T_TEXTIMAGE_ON:
            this.enterOuterAlt(localctx, 2);
            this.state = 1187;
            this.match(HiveSqlParser.T_TEXTIMAGE_ON);
            this.state = 1188;
            this.ident();
            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 Create_table_options_mysql_itemContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_create_table_options_mysql_item;
    return this;
}

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

Create_table_options_mysql_itemContext.prototype.T_AUTO_INCREMENT = function() {
    return this.getToken(HiveSqlParser.T_AUTO_INCREMENT, 0);
};

Create_table_options_mysql_itemContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Create_table_options_mysql_itemContext.prototype.T_EQUAL = function() {
    return this.getToken(HiveSqlParser.T_EQUAL, 0);
};

Create_table_options_mysql_itemContext.prototype.T_COMMENT = function() {
    return this.getToken(HiveSqlParser.T_COMMENT, 0);
};

Create_table_options_mysql_itemContext.prototype.T_CHARACTER = function() {
    return this.getToken(HiveSqlParser.T_CHARACTER, 0);
};

Create_table_options_mysql_itemContext.prototype.T_SET = function() {
    return this.getToken(HiveSqlParser.T_SET, 0);
};

Create_table_options_mysql_itemContext.prototype.T_CHARSET = function() {
    return this.getToken(HiveSqlParser.T_CHARSET, 0);
};

Create_table_options_mysql_itemContext.prototype.T_DEFAULT = function() {
    return this.getToken(HiveSqlParser.T_DEFAULT, 0);
};

Create_table_options_mysql_itemContext.prototype.T_ENGINE = function() {
    return this.getToken(HiveSqlParser.T_ENGINE, 0);
};

Create_table_options_mysql_itemContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterCreate_table_options_mysql_item(this);
	}
};

Create_table_options_mysql_itemContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitCreate_table_options_mysql_item(this);
	}
};

Create_table_options_mysql_itemContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitCreate_table_options_mysql_item(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Create_table_options_mysql_itemContext = Create_table_options_mysql_itemContext;

HiveSqlParser.prototype.create_table_options_mysql_item = function() {

    var localctx = new Create_table_options_mysql_itemContext(this, this._ctx, this.state);
    this.enterRule(localctx, 108, HiveSqlParser.RULE_create_table_options_mysql_item);
    var _la = 0; // Token type
    try {
        this.state = 1218;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case HiveSqlParser.T_AUTO_INCREMENT:
            this.enterOuterAlt(localctx, 1);
            this.state = 1191;
            this.match(HiveSqlParser.T_AUTO_INCREMENT);
            this.state = 1193;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===HiveSqlParser.T_EQUAL) {
                this.state = 1192;
                this.match(HiveSqlParser.T_EQUAL);
            }

            this.state = 1195;
            this.expr(0);
            break;
        case HiveSqlParser.T_COMMENT:
            this.enterOuterAlt(localctx, 2);
            this.state = 1196;
            this.match(HiveSqlParser.T_COMMENT);
            this.state = 1198;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===HiveSqlParser.T_EQUAL) {
                this.state = 1197;
                this.match(HiveSqlParser.T_EQUAL);
            }

            this.state = 1200;
            this.expr(0);
            break;
        case HiveSqlParser.T_DEFAULT:
        case HiveSqlParser.T_CHARACTER:
        case HiveSqlParser.T_CHARSET:
            this.enterOuterAlt(localctx, 3);
            this.state = 1202;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===HiveSqlParser.T_DEFAULT) {
                this.state = 1201;
                this.match(HiveSqlParser.T_DEFAULT);
            }

            this.state = 1207;
            this._errHandler.sync(this);
            switch(this._input.LA(1)) {
            case HiveSqlParser.T_CHARACTER:
                this.state = 1204;
                this.match(HiveSqlParser.T_CHARACTER);
                this.state = 1205;
                this.match(HiveSqlParser.T_SET);
                break;
            case HiveSqlParser.T_CHARSET:
                this.state = 1206;
                this.match(HiveSqlParser.T_CHARSET);
                break;
            default:
                throw new antlr4.error.NoViableAltException(this);
            }
            this.state = 1210;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===HiveSqlParser.T_EQUAL) {
                this.state = 1209;
                this.match(HiveSqlParser.T_EQUAL);
            }

            this.state = 1212;
            this.expr(0);
            break;
        case HiveSqlParser.T_ENGINE:
            this.enterOuterAlt(localctx, 4);
            this.state = 1213;
            this.match(HiveSqlParser.T_ENGINE);
            this.state = 1215;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===HiveSqlParser.T_EQUAL) {
                this.state = 1214;
                this.match(HiveSqlParser.T_EQUAL);
            }

            this.state = 1217;
            this.expr(0);
            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 Alter_table_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_alter_table_stmt;
    return this;
}

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

Alter_table_stmtContext.prototype.T_ALTER = function() {
    return this.getToken(HiveSqlParser.T_ALTER, 0);
};

Alter_table_stmtContext.prototype.T_TABLE = function() {
    return this.getToken(HiveSqlParser.T_TABLE, 0);
};

Alter_table_stmtContext.prototype.table_name = function() {
    return this.getTypedRuleContext(Table_nameContext,0);
};

Alter_table_stmtContext.prototype.alter_table_item = function() {
    return this.getTypedRuleContext(Alter_table_itemContext,0);
};

Alter_table_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterAlter_table_stmt(this);
	}
};

Alter_table_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitAlter_table_stmt(this);
	}
};

Alter_table_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitAlter_table_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Alter_table_stmtContext = Alter_table_stmtContext;

HiveSqlParser.prototype.alter_table_stmt = function() {

    var localctx = new Alter_table_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 110, HiveSqlParser.RULE_alter_table_stmt);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1220;
        this.match(HiveSqlParser.T_ALTER);
        this.state = 1221;
        this.match(HiveSqlParser.T_TABLE);
        this.state = 1222;
        this.table_name();
        this.state = 1223;
        this.alter_table_item();
    } 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 Alter_table_itemContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_alter_table_item;
    return this;
}

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

Alter_table_itemContext.prototype.alter_table_add_constraint = function() {
    return this.getTypedRuleContext(Alter_table_add_constraintContext,0);
};

Alter_table_itemContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterAlter_table_item(this);
	}
};

Alter_table_itemContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitAlter_table_item(this);
	}
};

Alter_table_itemContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitAlter_table_item(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Alter_table_itemContext = Alter_table_itemContext;

HiveSqlParser.prototype.alter_table_item = function() {

    var localctx = new Alter_table_itemContext(this, this._ctx, this.state);
    this.enterRule(localctx, 112, HiveSqlParser.RULE_alter_table_item);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1225;
        this.alter_table_add_constraint();
    } 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 Alter_table_add_constraintContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_alter_table_add_constraint;
    return this;
}

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

Alter_table_add_constraintContext.prototype.T_ADD2 = function() {
    return this.getToken(HiveSqlParser.T_ADD2, 0);
};

Alter_table_add_constraintContext.prototype.alter_table_add_constraint_item = function() {
    return this.getTypedRuleContext(Alter_table_add_constraint_itemContext,0);
};

Alter_table_add_constraintContext.prototype.T_CONSTRAINT = function() {
    return this.getToken(HiveSqlParser.T_CONSTRAINT, 0);
};

Alter_table_add_constraintContext.prototype.ident = function() {
    return this.getTypedRuleContext(IdentContext,0);
};

Alter_table_add_constraintContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterAlter_table_add_constraint(this);
	}
};

Alter_table_add_constraintContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitAlter_table_add_constraint(this);
	}
};

Alter_table_add_constraintContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitAlter_table_add_constraint(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Alter_table_add_constraintContext = Alter_table_add_constraintContext;

HiveSqlParser.prototype.alter_table_add_constraint = function() {

    var localctx = new Alter_table_add_constraintContext(this, this._ctx, this.state);
    this.enterRule(localctx, 114, HiveSqlParser.RULE_alter_table_add_constraint);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1227;
        this.match(HiveSqlParser.T_ADD2);
        this.state = 1230;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===HiveSqlParser.T_CONSTRAINT) {
            this.state = 1228;
            this.match(HiveSqlParser.T_CONSTRAINT);
            this.state = 1229;
            this.ident();
        }

        this.state = 1232;
        this.alter_table_add_constraint_item();
    } 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 Alter_table_add_constraint_itemContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_alter_table_add_constraint_item;
    return this;
}

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

Alter_table_add_constraint_itemContext.prototype.T_PRIMARY = function() {
    return this.getToken(HiveSqlParser.T_PRIMARY, 0);
};

Alter_table_add_constraint_itemContext.prototype.T_KEY = function() {
    return this.getToken(HiveSqlParser.T_KEY, 0);
};

Alter_table_add_constraint_itemContext.prototype.T_OPEN_P = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_OPEN_P);
    } else {
        return this.getToken(HiveSqlParser.T_OPEN_P, i);
    }
};


Alter_table_add_constraint_itemContext.prototype.ident = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(IdentContext);
    } else {
        return this.getTypedRuleContext(IdentContext,i);
    }
};

Alter_table_add_constraint_itemContext.prototype.T_CLOSE_P = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_CLOSE_P);
    } else {
        return this.getToken(HiveSqlParser.T_CLOSE_P, i);
    }
};


Alter_table_add_constraint_itemContext.prototype.T_CLUSTERED = function() {
    return this.getToken(HiveSqlParser.T_CLUSTERED, 0);
};

Alter_table_add_constraint_itemContext.prototype.T_COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_COMMA);
    } else {
        return this.getToken(HiveSqlParser.T_COMMA, i);
    }
};


Alter_table_add_constraint_itemContext.prototype.T_ENABLE = function() {
    return this.getToken(HiveSqlParser.T_ENABLE, 0);
};

Alter_table_add_constraint_itemContext.prototype.index_storage_clause = function() {
    return this.getTypedRuleContext(Index_storage_clauseContext,0);
};

Alter_table_add_constraint_itemContext.prototype.T_ASC = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_ASC);
    } else {
        return this.getToken(HiveSqlParser.T_ASC, i);
    }
};


Alter_table_add_constraint_itemContext.prototype.T_DESC = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_DESC);
    } else {
        return this.getToken(HiveSqlParser.T_DESC, i);
    }
};


Alter_table_add_constraint_itemContext.prototype.T_FOREIGN = function() {
    return this.getToken(HiveSqlParser.T_FOREIGN, 0);
};

Alter_table_add_constraint_itemContext.prototype.T_REFERENCES = function() {
    return this.getToken(HiveSqlParser.T_REFERENCES, 0);
};

Alter_table_add_constraint_itemContext.prototype.table_name = function() {
    return this.getTypedRuleContext(Table_nameContext,0);
};

Alter_table_add_constraint_itemContext.prototype.create_table_fk_action = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Create_table_fk_actionContext);
    } else {
        return this.getTypedRuleContext(Create_table_fk_actionContext,i);
    }
};

Alter_table_add_constraint_itemContext.prototype.T_DEFAULT = function() {
    return this.getToken(HiveSqlParser.T_DEFAULT, 0);
};

Alter_table_add_constraint_itemContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Alter_table_add_constraint_itemContext.prototype.T_FOR = function() {
    return this.getToken(HiveSqlParser.T_FOR, 0);
};

Alter_table_add_constraint_itemContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterAlter_table_add_constraint_item(this);
	}
};

Alter_table_add_constraint_itemContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitAlter_table_add_constraint_item(this);
	}
};

Alter_table_add_constraint_itemContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitAlter_table_add_constraint_item(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Alter_table_add_constraint_itemContext = Alter_table_add_constraint_itemContext;

HiveSqlParser.prototype.alter_table_add_constraint_item = function() {

    var localctx = new Alter_table_add_constraint_itemContext(this, this._ctx, this.state);
    this.enterRule(localctx, 116, HiveSqlParser.RULE_alter_table_add_constraint_item);
    var _la = 0; // Token type
    try {
        this.state = 1296;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case HiveSqlParser.T_PRIMARY:
            this.enterOuterAlt(localctx, 1);
            this.state = 1234;
            this.match(HiveSqlParser.T_PRIMARY);
            this.state = 1235;
            this.match(HiveSqlParser.T_KEY);
            this.state = 1237;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===HiveSqlParser.T_CLUSTERED) {
                this.state = 1236;
                this.match(HiveSqlParser.T_CLUSTERED);
            }

            this.state = 1239;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 1240;
            this.ident();
            this.state = 1242;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===HiveSqlParser.T_ASC || _la===HiveSqlParser.T_DESC) {
                this.state = 1241;
                _la = this._input.LA(1);
                if(!(_la===HiveSqlParser.T_ASC || _la===HiveSqlParser.T_DESC)) {
                this._errHandler.recoverInline(this);
                }
                else {
                	this._errHandler.reportMatch(this);
                    this.consume();
                }
            }

            this.state = 1251;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            while(_la===HiveSqlParser.T_COMMA) {
                this.state = 1244;
                this.match(HiveSqlParser.T_COMMA);
                this.state = 1245;
                this.ident();
                this.state = 1247;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
                if(_la===HiveSqlParser.T_ASC || _la===HiveSqlParser.T_DESC) {
                    this.state = 1246;
                    _la = this._input.LA(1);
                    if(!(_la===HiveSqlParser.T_ASC || _la===HiveSqlParser.T_DESC)) {
                    this._errHandler.recoverInline(this);
                    }
                    else {
                    	this._errHandler.reportMatch(this);
                        this.consume();
                    }
                }

                this.state = 1253;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
            }
            this.state = 1254;
            this.match(HiveSqlParser.T_CLOSE_P);
            this.state = 1256;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,113,this._ctx);
            if(la_===1) {
                this.state = 1255;
                this.match(HiveSqlParser.T_ENABLE);

            }
            this.state = 1259;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,114,this._ctx);
            if(la_===1) {
                this.state = 1258;
                this.index_storage_clause();

            }
            break;
        case HiveSqlParser.T_FOREIGN:
            this.enterOuterAlt(localctx, 2);
            this.state = 1261;
            this.match(HiveSqlParser.T_FOREIGN);
            this.state = 1262;
            this.match(HiveSqlParser.T_KEY);
            this.state = 1263;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 1264;
            this.ident();
            this.state = 1269;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            while(_la===HiveSqlParser.T_COMMA) {
                this.state = 1265;
                this.match(HiveSqlParser.T_COMMA);
                this.state = 1266;
                this.ident();
                this.state = 1271;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
            }
            this.state = 1272;
            this.match(HiveSqlParser.T_CLOSE_P);
            this.state = 1273;
            this.match(HiveSqlParser.T_REFERENCES);
            this.state = 1274;
            this.table_name();
            this.state = 1275;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 1276;
            this.ident();
            this.state = 1281;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            while(_la===HiveSqlParser.T_COMMA) {
                this.state = 1277;
                this.match(HiveSqlParser.T_COMMA);
                this.state = 1278;
                this.ident();
                this.state = 1283;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
            }
            this.state = 1284;
            this.match(HiveSqlParser.T_CLOSE_P);
            this.state = 1288;
            this._errHandler.sync(this);
            var _alt = this._interp.adaptivePredict(this._input,117,this._ctx)
            while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
                if(_alt===1) {
                    this.state = 1285;
                    this.create_table_fk_action(); 
                }
                this.state = 1290;
                this._errHandler.sync(this);
                _alt = this._interp.adaptivePredict(this._input,117,this._ctx);
            }

            break;
        case HiveSqlParser.T_DEFAULT:
            this.enterOuterAlt(localctx, 3);
            this.state = 1291;
            this.match(HiveSqlParser.T_DEFAULT);
            this.state = 1292;
            this.expr(0);
            this.state = 1293;
            this.match(HiveSqlParser.T_FOR);
            this.state = 1294;
            this.ident();
            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 DtypeContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_dtype;
    return this;
}

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

DtypeContext.prototype.T_CHAR = function() {
    return this.getToken(HiveSqlParser.T_CHAR, 0);
};

DtypeContext.prototype.T_CHARACTER = function() {
    return this.getToken(HiveSqlParser.T_CHARACTER, 0);
};

DtypeContext.prototype.T_BIGINT = function() {
    return this.getToken(HiveSqlParser.T_BIGINT, 0);
};

DtypeContext.prototype.T_BINARY_DOUBLE = function() {
    return this.getToken(HiveSqlParser.T_BINARY_DOUBLE, 0);
};

DtypeContext.prototype.T_BINARY_FLOAT = function() {
    return this.getToken(HiveSqlParser.T_BINARY_FLOAT, 0);
};

DtypeContext.prototype.T_BINARY_INTEGER = function() {
    return this.getToken(HiveSqlParser.T_BINARY_INTEGER, 0);
};

DtypeContext.prototype.T_BIT = function() {
    return this.getToken(HiveSqlParser.T_BIT, 0);
};

DtypeContext.prototype.T_DATE = function() {
    return this.getToken(HiveSqlParser.T_DATE, 0);
};

DtypeContext.prototype.T_DATETIME = function() {
    return this.getToken(HiveSqlParser.T_DATETIME, 0);
};

DtypeContext.prototype.T_DEC = function() {
    return this.getToken(HiveSqlParser.T_DEC, 0);
};

DtypeContext.prototype.T_DECIMAL = function() {
    return this.getToken(HiveSqlParser.T_DECIMAL, 0);
};

DtypeContext.prototype.T_DOUBLE = function() {
    return this.getToken(HiveSqlParser.T_DOUBLE, 0);
};

DtypeContext.prototype.T_PRECISION = function() {
    return this.getToken(HiveSqlParser.T_PRECISION, 0);
};

DtypeContext.prototype.T_FLOAT = function() {
    return this.getToken(HiveSqlParser.T_FLOAT, 0);
};

DtypeContext.prototype.T_INT = function() {
    return this.getToken(HiveSqlParser.T_INT, 0);
};

DtypeContext.prototype.T_INT2 = function() {
    return this.getToken(HiveSqlParser.T_INT2, 0);
};

DtypeContext.prototype.T_INT4 = function() {
    return this.getToken(HiveSqlParser.T_INT4, 0);
};

DtypeContext.prototype.T_INT8 = function() {
    return this.getToken(HiveSqlParser.T_INT8, 0);
};

DtypeContext.prototype.T_INTEGER = function() {
    return this.getToken(HiveSqlParser.T_INTEGER, 0);
};

DtypeContext.prototype.T_NCHAR = function() {
    return this.getToken(HiveSqlParser.T_NCHAR, 0);
};

DtypeContext.prototype.T_NVARCHAR = function() {
    return this.getToken(HiveSqlParser.T_NVARCHAR, 0);
};

DtypeContext.prototype.T_NUMBER = function() {
    return this.getToken(HiveSqlParser.T_NUMBER, 0);
};

DtypeContext.prototype.T_NUMERIC = function() {
    return this.getToken(HiveSqlParser.T_NUMERIC, 0);
};

DtypeContext.prototype.T_PLS_INTEGER = function() {
    return this.getToken(HiveSqlParser.T_PLS_INTEGER, 0);
};

DtypeContext.prototype.T_REAL = function() {
    return this.getToken(HiveSqlParser.T_REAL, 0);
};

DtypeContext.prototype.T_RESULT_SET_LOCATOR = function() {
    return this.getToken(HiveSqlParser.T_RESULT_SET_LOCATOR, 0);
};

DtypeContext.prototype.T_VARYING = function() {
    return this.getToken(HiveSqlParser.T_VARYING, 0);
};

DtypeContext.prototype.T_SIMPLE_FLOAT = function() {
    return this.getToken(HiveSqlParser.T_SIMPLE_FLOAT, 0);
};

DtypeContext.prototype.T_SIMPLE_DOUBLE = function() {
    return this.getToken(HiveSqlParser.T_SIMPLE_DOUBLE, 0);
};

DtypeContext.prototype.T_SIMPLE_INTEGER = function() {
    return this.getToken(HiveSqlParser.T_SIMPLE_INTEGER, 0);
};

DtypeContext.prototype.T_SMALLINT = function() {
    return this.getToken(HiveSqlParser.T_SMALLINT, 0);
};

DtypeContext.prototype.T_SMALLDATETIME = function() {
    return this.getToken(HiveSqlParser.T_SMALLDATETIME, 0);
};

DtypeContext.prototype.T_STRING = function() {
    return this.getToken(HiveSqlParser.T_STRING, 0);
};

DtypeContext.prototype.T_SYS_REFCURSOR = function() {
    return this.getToken(HiveSqlParser.T_SYS_REFCURSOR, 0);
};

DtypeContext.prototype.T_TIMESTAMP = function() {
    return this.getToken(HiveSqlParser.T_TIMESTAMP, 0);
};

DtypeContext.prototype.T_TINYINT = function() {
    return this.getToken(HiveSqlParser.T_TINYINT, 0);
};

DtypeContext.prototype.T_VARCHAR = function() {
    return this.getToken(HiveSqlParser.T_VARCHAR, 0);
};

DtypeContext.prototype.T_VARCHAR2 = function() {
    return this.getToken(HiveSqlParser.T_VARCHAR2, 0);
};

DtypeContext.prototype.T_XML = function() {
    return this.getToken(HiveSqlParser.T_XML, 0);
};

DtypeContext.prototype.ident = function() {
    return this.getTypedRuleContext(IdentContext,0);
};

DtypeContext.prototype.T_TYPE = function() {
    return this.getToken(HiveSqlParser.T_TYPE, 0);
};

DtypeContext.prototype.T_ROWTYPE = function() {
    return this.getToken(HiveSqlParser.T_ROWTYPE, 0);
};

DtypeContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterDtype(this);
	}
};

DtypeContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitDtype(this);
	}
};

DtypeContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitDtype(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.DtypeContext = DtypeContext;

HiveSqlParser.prototype.dtype = function() {

    var localctx = new DtypeContext(this, this._ctx, this.state);
    this.enterRule(localctx, 118, HiveSqlParser.RULE_dtype);
    var _la = 0; // Token type
    try {
        this.state = 1344;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,121,this._ctx);
        switch(la_) {
        case 1:
            this.enterOuterAlt(localctx, 1);
            this.state = 1298;
            this.match(HiveSqlParser.T_CHAR);
            break;

        case 2:
            this.enterOuterAlt(localctx, 2);
            this.state = 1299;
            this.match(HiveSqlParser.T_CHARACTER);
            break;

        case 3:
            this.enterOuterAlt(localctx, 3);
            this.state = 1300;
            this.match(HiveSqlParser.T_BIGINT);
            break;

        case 4:
            this.enterOuterAlt(localctx, 4);
            this.state = 1301;
            this.match(HiveSqlParser.T_BINARY_DOUBLE);
            break;

        case 5:
            this.enterOuterAlt(localctx, 5);
            this.state = 1302;
            this.match(HiveSqlParser.T_BINARY_FLOAT);
            break;

        case 6:
            this.enterOuterAlt(localctx, 6);
            this.state = 1303;
            this.match(HiveSqlParser.T_BINARY_INTEGER);
            break;

        case 7:
            this.enterOuterAlt(localctx, 7);
            this.state = 1304;
            this.match(HiveSqlParser.T_BIT);
            break;

        case 8:
            this.enterOuterAlt(localctx, 8);
            this.state = 1305;
            this.match(HiveSqlParser.T_DATE);
            break;

        case 9:
            this.enterOuterAlt(localctx, 9);
            this.state = 1306;
            this.match(HiveSqlParser.T_DATETIME);
            break;

        case 10:
            this.enterOuterAlt(localctx, 10);
            this.state = 1307;
            this.match(HiveSqlParser.T_DEC);
            break;

        case 11:
            this.enterOuterAlt(localctx, 11);
            this.state = 1308;
            this.match(HiveSqlParser.T_DECIMAL);
            break;

        case 12:
            this.enterOuterAlt(localctx, 12);
            this.state = 1309;
            this.match(HiveSqlParser.T_DOUBLE);
            this.state = 1311;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,119,this._ctx);
            if(la_===1) {
                this.state = 1310;
                this.match(HiveSqlParser.T_PRECISION);

            }
            break;

        case 13:
            this.enterOuterAlt(localctx, 13);
            this.state = 1313;
            this.match(HiveSqlParser.T_FLOAT);
            break;

        case 14:
            this.enterOuterAlt(localctx, 14);
            this.state = 1314;
            this.match(HiveSqlParser.T_INT);
            break;

        case 15:
            this.enterOuterAlt(localctx, 15);
            this.state = 1315;
            this.match(HiveSqlParser.T_INT2);
            break;

        case 16:
            this.enterOuterAlt(localctx, 16);
            this.state = 1316;
            this.match(HiveSqlParser.T_INT4);
            break;

        case 17:
            this.enterOuterAlt(localctx, 17);
            this.state = 1317;
            this.match(HiveSqlParser.T_INT8);
            break;

        case 18:
            this.enterOuterAlt(localctx, 18);
            this.state = 1318;
            this.match(HiveSqlParser.T_INTEGER);
            break;

        case 19:
            this.enterOuterAlt(localctx, 19);
            this.state = 1319;
            this.match(HiveSqlParser.T_NCHAR);
            break;

        case 20:
            this.enterOuterAlt(localctx, 20);
            this.state = 1320;
            this.match(HiveSqlParser.T_NVARCHAR);
            break;

        case 21:
            this.enterOuterAlt(localctx, 21);
            this.state = 1321;
            this.match(HiveSqlParser.T_NUMBER);
            break;

        case 22:
            this.enterOuterAlt(localctx, 22);
            this.state = 1322;
            this.match(HiveSqlParser.T_NUMERIC);
            break;

        case 23:
            this.enterOuterAlt(localctx, 23);
            this.state = 1323;
            this.match(HiveSqlParser.T_PLS_INTEGER);
            break;

        case 24:
            this.enterOuterAlt(localctx, 24);
            this.state = 1324;
            this.match(HiveSqlParser.T_REAL);
            break;

        case 25:
            this.enterOuterAlt(localctx, 25);
            this.state = 1325;
            this.match(HiveSqlParser.T_RESULT_SET_LOCATOR);
            this.state = 1326;
            this.match(HiveSqlParser.T_VARYING);
            break;

        case 26:
            this.enterOuterAlt(localctx, 26);
            this.state = 1327;
            this.match(HiveSqlParser.T_SIMPLE_FLOAT);
            break;

        case 27:
            this.enterOuterAlt(localctx, 27);
            this.state = 1328;
            this.match(HiveSqlParser.T_SIMPLE_DOUBLE);
            break;

        case 28:
            this.enterOuterAlt(localctx, 28);
            this.state = 1329;
            this.match(HiveSqlParser.T_SIMPLE_INTEGER);
            break;

        case 29:
            this.enterOuterAlt(localctx, 29);
            this.state = 1330;
            this.match(HiveSqlParser.T_SMALLINT);
            break;

        case 30:
            this.enterOuterAlt(localctx, 30);
            this.state = 1331;
            this.match(HiveSqlParser.T_SMALLDATETIME);
            break;

        case 31:
            this.enterOuterAlt(localctx, 31);
            this.state = 1332;
            this.match(HiveSqlParser.T_STRING);
            break;

        case 32:
            this.enterOuterAlt(localctx, 32);
            this.state = 1333;
            this.match(HiveSqlParser.T_SYS_REFCURSOR);
            break;

        case 33:
            this.enterOuterAlt(localctx, 33);
            this.state = 1334;
            this.match(HiveSqlParser.T_TIMESTAMP);
            break;

        case 34:
            this.enterOuterAlt(localctx, 34);
            this.state = 1335;
            this.match(HiveSqlParser.T_TINYINT);
            break;

        case 35:
            this.enterOuterAlt(localctx, 35);
            this.state = 1336;
            this.match(HiveSqlParser.T_VARCHAR);
            break;

        case 36:
            this.enterOuterAlt(localctx, 36);
            this.state = 1337;
            this.match(HiveSqlParser.T_VARCHAR2);
            break;

        case 37:
            this.enterOuterAlt(localctx, 37);
            this.state = 1338;
            this.match(HiveSqlParser.T_XML);
            break;

        case 38:
            this.enterOuterAlt(localctx, 38);
            this.state = 1339;
            this.ident();
            this.state = 1342;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,120,this._ctx);
            if(la_===1) {
                this.state = 1340;
                this.match(HiveSqlParser.T__3);
                this.state = 1341;
                _la = this._input.LA(1);
                if(!(_la===HiveSqlParser.T_TYPE || _la===HiveSqlParser.T_ROWTYPE)) {
                this._errHandler.recoverInline(this);
                }
                else {
                	this._errHandler.reportMatch(this);
                    this.consume();
                }

            }
            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 Dtype_lenContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_dtype_len;
    return this;
}

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

Dtype_lenContext.prototype.T_OPEN_P = function() {
    return this.getToken(HiveSqlParser.T_OPEN_P, 0);
};

Dtype_lenContext.prototype.T_CLOSE_P = function() {
    return this.getToken(HiveSqlParser.T_CLOSE_P, 0);
};

Dtype_lenContext.prototype.L_INT = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.L_INT);
    } else {
        return this.getToken(HiveSqlParser.L_INT, i);
    }
};


Dtype_lenContext.prototype.T_MAX = function() {
    return this.getToken(HiveSqlParser.T_MAX, 0);
};

Dtype_lenContext.prototype.T_COMMA = function() {
    return this.getToken(HiveSqlParser.T_COMMA, 0);
};

Dtype_lenContext.prototype.T_CHAR = function() {
    return this.getToken(HiveSqlParser.T_CHAR, 0);
};

Dtype_lenContext.prototype.T_BYTE = function() {
    return this.getToken(HiveSqlParser.T_BYTE, 0);
};

Dtype_lenContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterDtype_len(this);
	}
};

Dtype_lenContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitDtype_len(this);
	}
};

Dtype_lenContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitDtype_len(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Dtype_lenContext = Dtype_lenContext;

HiveSqlParser.prototype.dtype_len = function() {

    var localctx = new Dtype_lenContext(this, this._ctx, this.state);
    this.enterRule(localctx, 120, HiveSqlParser.RULE_dtype_len);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1346;
        this.match(HiveSqlParser.T_OPEN_P);
        this.state = 1347;
        _la = this._input.LA(1);
        if(!(_la===HiveSqlParser.L_INT || _la===HiveSqlParser.T_MAX)) {
        this._errHandler.recoverInline(this);
        }
        else {
        	this._errHandler.reportMatch(this);
            this.consume();
        }
        this.state = 1349;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===HiveSqlParser.T_CHAR || _la===HiveSqlParser.T_BYTE) {
            this.state = 1348;
            _la = this._input.LA(1);
            if(!(_la===HiveSqlParser.T_CHAR || _la===HiveSqlParser.T_BYTE)) {
            this._errHandler.recoverInline(this);
            }
            else {
            	this._errHandler.reportMatch(this);
                this.consume();
            }
        }

        this.state = 1353;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===HiveSqlParser.T_COMMA) {
            this.state = 1351;
            this.match(HiveSqlParser.T_COMMA);
            this.state = 1352;
            this.match(HiveSqlParser.L_INT);
        }

        this.state = 1355;
        this.match(HiveSqlParser.T_CLOSE_P);
    } 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 Dtype_attrContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_dtype_attr;
    return this;
}

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

Dtype_attrContext.prototype.T_NULL = function() {
    return this.getToken(HiveSqlParser.T_NULL, 0);
};

Dtype_attrContext.prototype.T_NOT = function() {
    return this.getToken(HiveSqlParser.T_NOT, 0);
};

Dtype_attrContext.prototype.T_CHARACTER = function() {
    return this.getToken(HiveSqlParser.T_CHARACTER, 0);
};

Dtype_attrContext.prototype.T_SET = function() {
    return this.getToken(HiveSqlParser.T_SET, 0);
};

Dtype_attrContext.prototype.ident = function() {
    return this.getTypedRuleContext(IdentContext,0);
};

Dtype_attrContext.prototype.T_CASESPECIFIC = function() {
    return this.getToken(HiveSqlParser.T_CASESPECIFIC, 0);
};

Dtype_attrContext.prototype.T_CS = function() {
    return this.getToken(HiveSqlParser.T_CS, 0);
};

Dtype_attrContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterDtype_attr(this);
	}
};

Dtype_attrContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitDtype_attr(this);
	}
};

Dtype_attrContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitDtype_attr(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Dtype_attrContext = Dtype_attrContext;

HiveSqlParser.prototype.dtype_attr = function() {

    var localctx = new Dtype_attrContext(this, this._ctx, this.state);
    this.enterRule(localctx, 122, HiveSqlParser.RULE_dtype_attr);
    var _la = 0; // Token type
    try {
        this.state = 1368;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,126,this._ctx);
        switch(la_) {
        case 1:
            this.enterOuterAlt(localctx, 1);
            this.state = 1358;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===HiveSqlParser.T_NOT) {
                this.state = 1357;
                this.match(HiveSqlParser.T_NOT);
            }

            this.state = 1360;
            this.match(HiveSqlParser.T_NULL);
            break;

        case 2:
            this.enterOuterAlt(localctx, 2);
            this.state = 1361;
            this.match(HiveSqlParser.T_CHARACTER);
            this.state = 1362;
            this.match(HiveSqlParser.T_SET);
            this.state = 1363;
            this.ident();
            break;

        case 3:
            this.enterOuterAlt(localctx, 3);
            this.state = 1365;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===HiveSqlParser.T_NOT) {
                this.state = 1364;
                this.match(HiveSqlParser.T_NOT);
            }

            this.state = 1367;
            _la = this._input.LA(1);
            if(!(_la===HiveSqlParser.T_CASESPECIFIC || _la===HiveSqlParser.T_CS)) {
            this._errHandler.recoverInline(this);
            }
            else {
            	this._errHandler.reportMatch(this);
                this.consume();
            }
            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 Dtype_defaultContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_dtype_default;
    return this;
}

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

Dtype_defaultContext.prototype.T_EQUAL = function() {
    return this.getToken(HiveSqlParser.T_EQUAL, 0);
};

Dtype_defaultContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Dtype_defaultContext.prototype.T_COLON = function() {
    return this.getToken(HiveSqlParser.T_COLON, 0);
};

Dtype_defaultContext.prototype.T_DEFAULT = function() {
    return this.getToken(HiveSqlParser.T_DEFAULT, 0);
};

Dtype_defaultContext.prototype.T_WITH = function() {
    return this.getToken(HiveSqlParser.T_WITH, 0);
};

Dtype_defaultContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterDtype_default(this);
	}
};

Dtype_defaultContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitDtype_default(this);
	}
};

Dtype_defaultContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitDtype_default(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Dtype_defaultContext = Dtype_defaultContext;

HiveSqlParser.prototype.dtype_default = function() {

    var localctx = new Dtype_defaultContext(this, this._ctx, this.state);
    this.enterRule(localctx, 124, HiveSqlParser.RULE_dtype_default);
    var _la = 0; // Token type
    try {
        this.state = 1382;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case HiveSqlParser.T_COLON:
        case HiveSqlParser.T_EQUAL:
            this.enterOuterAlt(localctx, 1);
            this.state = 1371;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===HiveSqlParser.T_COLON) {
                this.state = 1370;
                this.match(HiveSqlParser.T_COLON);
            }

            this.state = 1373;
            this.match(HiveSqlParser.T_EQUAL);
            this.state = 1374;
            this.expr(0);
            break;
        case HiveSqlParser.T_WITH:
        case HiveSqlParser.T_DEFAULT:
            this.enterOuterAlt(localctx, 2);
            this.state = 1376;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===HiveSqlParser.T_WITH) {
                this.state = 1375;
                this.match(HiveSqlParser.T_WITH);
            }

            this.state = 1378;
            this.match(HiveSqlParser.T_DEFAULT);
            this.state = 1380;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,129,this._ctx);
            if(la_===1) {
                this.state = 1379;
                this.expr(0);

            }
            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 Create_database_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_create_database_stmt;
    return this;
}

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

Create_database_stmtContext.prototype.T_CREATE = function() {
    return this.getToken(HiveSqlParser.T_CREATE, 0);
};

Create_database_stmtContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Create_database_stmtContext.prototype.T_DATABASE = function() {
    return this.getToken(HiveSqlParser.T_DATABASE, 0);
};

Create_database_stmtContext.prototype.T_SCHEMA = function() {
    return this.getToken(HiveSqlParser.T_SCHEMA, 0);
};

Create_database_stmtContext.prototype.T_IF = function() {
    return this.getToken(HiveSqlParser.T_IF, 0);
};

Create_database_stmtContext.prototype.T_NOT = function() {
    return this.getToken(HiveSqlParser.T_NOT, 0);
};

Create_database_stmtContext.prototype.T_EXISTS = function() {
    return this.getToken(HiveSqlParser.T_EXISTS, 0);
};

Create_database_stmtContext.prototype.create_database_option = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Create_database_optionContext);
    } else {
        return this.getTypedRuleContext(Create_database_optionContext,i);
    }
};

Create_database_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterCreate_database_stmt(this);
	}
};

Create_database_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitCreate_database_stmt(this);
	}
};

Create_database_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitCreate_database_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Create_database_stmtContext = Create_database_stmtContext;

HiveSqlParser.prototype.create_database_stmt = function() {

    var localctx = new Create_database_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 126, HiveSqlParser.RULE_create_database_stmt);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1384;
        this.match(HiveSqlParser.T_CREATE);
        this.state = 1385;
        _la = this._input.LA(1);
        if(!(_la===HiveSqlParser.T_DATABASE || _la===HiveSqlParser.T_SCHEMA)) {
        this._errHandler.recoverInline(this);
        }
        else {
        	this._errHandler.reportMatch(this);
            this.consume();
        }
        this.state = 1389;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,131,this._ctx);
        if(la_===1) {
            this.state = 1386;
            this.match(HiveSqlParser.T_IF);
            this.state = 1387;
            this.match(HiveSqlParser.T_NOT);
            this.state = 1388;
            this.match(HiveSqlParser.T_EXISTS);

        }
        this.state = 1391;
        this.expr(0);
        this.state = 1395;
        this._errHandler.sync(this);
        var _alt = this._interp.adaptivePredict(this._input,132,this._ctx)
        while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
            if(_alt===1) {
                this.state = 1392;
                this.create_database_option(); 
            }
            this.state = 1397;
            this._errHandler.sync(this);
            _alt = this._interp.adaptivePredict(this._input,132,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 Create_database_optionContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_create_database_option;
    return this;
}

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

Create_database_optionContext.prototype.T_COMMENT = function() {
    return this.getToken(HiveSqlParser.T_COMMENT, 0);
};

Create_database_optionContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Create_database_optionContext.prototype.T_LOCATION = function() {
    return this.getToken(HiveSqlParser.T_LOCATION, 0);
};

Create_database_optionContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterCreate_database_option(this);
	}
};

Create_database_optionContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitCreate_database_option(this);
	}
};

Create_database_optionContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitCreate_database_option(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Create_database_optionContext = Create_database_optionContext;

HiveSqlParser.prototype.create_database_option = function() {

    var localctx = new Create_database_optionContext(this, this._ctx, this.state);
    this.enterRule(localctx, 128, HiveSqlParser.RULE_create_database_option);
    try {
        this.state = 1402;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case HiveSqlParser.T_COMMENT:
            this.enterOuterAlt(localctx, 1);
            this.state = 1398;
            this.match(HiveSqlParser.T_COMMENT);
            this.state = 1399;
            this.expr(0);
            break;
        case HiveSqlParser.T_LOCATION:
            this.enterOuterAlt(localctx, 2);
            this.state = 1400;
            this.match(HiveSqlParser.T_LOCATION);
            this.state = 1401;
            this.expr(0);
            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 Create_function_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_create_function_stmt;
    return this;
}

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

Create_function_stmtContext.prototype.T_FUNCTION = function() {
    return this.getToken(HiveSqlParser.T_FUNCTION, 0);
};

Create_function_stmtContext.prototype.ident = function() {
    return this.getTypedRuleContext(IdentContext,0);
};

Create_function_stmtContext.prototype.create_function_return = function() {
    return this.getTypedRuleContext(Create_function_returnContext,0);
};

Create_function_stmtContext.prototype.single_block_stmt = function() {
    return this.getTypedRuleContext(Single_block_stmtContext,0);
};

Create_function_stmtContext.prototype.T_ALTER = function() {
    return this.getToken(HiveSqlParser.T_ALTER, 0);
};

Create_function_stmtContext.prototype.T_CREATE = function() {
    return this.getToken(HiveSqlParser.T_CREATE, 0);
};

Create_function_stmtContext.prototype.T_REPLACE = function() {
    return this.getToken(HiveSqlParser.T_REPLACE, 0);
};

Create_function_stmtContext.prototype.create_routine_params = function() {
    return this.getTypedRuleContext(Create_routine_paramsContext,0);
};

Create_function_stmtContext.prototype.declare_block_inplace = function() {
    return this.getTypedRuleContext(Declare_block_inplaceContext,0);
};

Create_function_stmtContext.prototype.T_AS = function() {
    return this.getToken(HiveSqlParser.T_AS, 0);
};

Create_function_stmtContext.prototype.T_IS = function() {
    return this.getToken(HiveSqlParser.T_IS, 0);
};

Create_function_stmtContext.prototype.T_OR = function() {
    return this.getToken(HiveSqlParser.T_OR, 0);
};

Create_function_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterCreate_function_stmt(this);
	}
};

Create_function_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitCreate_function_stmt(this);
	}
};

Create_function_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitCreate_function_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Create_function_stmtContext = Create_function_stmtContext;

HiveSqlParser.prototype.create_function_stmt = function() {

    var localctx = new Create_function_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 130, HiveSqlParser.RULE_create_function_stmt);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1411;
        this._errHandler.sync(this);
        switch (this._input.LA(1)) {
        case HiveSqlParser.T_ALTER:
        	this.state = 1404;
        	this.match(HiveSqlParser.T_ALTER);
        	break;
        case HiveSqlParser.T_CREATE:
        	this.state = 1405;
        	this.match(HiveSqlParser.T_CREATE);
        	this.state = 1408;
        	this._errHandler.sync(this);
        	_la = this._input.LA(1);
        	if(_la===HiveSqlParser.T_OR) {
        	    this.state = 1406;
        	    this.match(HiveSqlParser.T_OR);
        	    this.state = 1407;
        	    this.match(HiveSqlParser.T_REPLACE);
        	}

        	break;
        case HiveSqlParser.T_REPLACE:
        	this.state = 1410;
        	this.match(HiveSqlParser.T_REPLACE);
        	break;
        case HiveSqlParser.T_FUNCTION:
        	break;
        default:
        	break;
        }
        this.state = 1413;
        this.match(HiveSqlParser.T_FUNCTION);
        this.state = 1414;
        this.ident();
        this.state = 1416;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,136,this._ctx);
        if(la_===1) {
            this.state = 1415;
            this.create_routine_params();

        }
        this.state = 1418;
        this.create_function_return();
        this.state = 1420;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,137,this._ctx);
        if(la_===1) {
            this.state = 1419;
            _la = this._input.LA(1);
            if(!(_la===HiveSqlParser.T_AS || _la===HiveSqlParser.T_IS)) {
            this._errHandler.recoverInline(this);
            }
            else {
            	this._errHandler.reportMatch(this);
                this.consume();
            }

        }
        this.state = 1423;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,138,this._ctx);
        if(la_===1) {
            this.state = 1422;
            this.declare_block_inplace();

        }
        this.state = 1425;
        this.single_block_stmt();
    } 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 Create_function_returnContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_create_function_return;
    return this;
}

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

Create_function_returnContext.prototype.dtype = function() {
    return this.getTypedRuleContext(DtypeContext,0);
};

Create_function_returnContext.prototype.T_RETURN = function() {
    return this.getToken(HiveSqlParser.T_RETURN, 0);
};

Create_function_returnContext.prototype.T_RETURNS = function() {
    return this.getToken(HiveSqlParser.T_RETURNS, 0);
};

Create_function_returnContext.prototype.dtype_len = function() {
    return this.getTypedRuleContext(Dtype_lenContext,0);
};

Create_function_returnContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterCreate_function_return(this);
	}
};

Create_function_returnContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitCreate_function_return(this);
	}
};

Create_function_returnContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitCreate_function_return(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Create_function_returnContext = Create_function_returnContext;

HiveSqlParser.prototype.create_function_return = function() {

    var localctx = new Create_function_returnContext(this, this._ctx, this.state);
    this.enterRule(localctx, 132, HiveSqlParser.RULE_create_function_return);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1427;
        _la = this._input.LA(1);
        if(!(_la===HiveSqlParser.T_RETURN || _la===HiveSqlParser.T_RETURNS)) {
        this._errHandler.recoverInline(this);
        }
        else {
        	this._errHandler.reportMatch(this);
            this.consume();
        }
        this.state = 1428;
        this.dtype();
        this.state = 1430;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,139,this._ctx);
        if(la_===1) {
            this.state = 1429;
            this.dtype_len();

        }
    } 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 Create_package_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_create_package_stmt;
    return this;
}

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

Create_package_stmtContext.prototype.T_PACKAGE = function() {
    return this.getToken(HiveSqlParser.T_PACKAGE, 0);
};

Create_package_stmtContext.prototype.ident = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(IdentContext);
    } else {
        return this.getTypedRuleContext(IdentContext,i);
    }
};

Create_package_stmtContext.prototype.package_spec = function() {
    return this.getTypedRuleContext(Package_specContext,0);
};

Create_package_stmtContext.prototype.T_END = function() {
    return this.getToken(HiveSqlParser.T_END, 0);
};

Create_package_stmtContext.prototype.T_AS = function() {
    return this.getToken(HiveSqlParser.T_AS, 0);
};

Create_package_stmtContext.prototype.T_IS = function() {
    return this.getToken(HiveSqlParser.T_IS, 0);
};

Create_package_stmtContext.prototype.T_ALTER = function() {
    return this.getToken(HiveSqlParser.T_ALTER, 0);
};

Create_package_stmtContext.prototype.T_CREATE = function() {
    return this.getToken(HiveSqlParser.T_CREATE, 0);
};

Create_package_stmtContext.prototype.T_REPLACE = function() {
    return this.getToken(HiveSqlParser.T_REPLACE, 0);
};

Create_package_stmtContext.prototype.T_SEMICOLON = function() {
    return this.getToken(HiveSqlParser.T_SEMICOLON, 0);
};

Create_package_stmtContext.prototype.T_OR = function() {
    return this.getToken(HiveSqlParser.T_OR, 0);
};

Create_package_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterCreate_package_stmt(this);
	}
};

Create_package_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitCreate_package_stmt(this);
	}
};

Create_package_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitCreate_package_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Create_package_stmtContext = Create_package_stmtContext;

HiveSqlParser.prototype.create_package_stmt = function() {

    var localctx = new Create_package_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 134, HiveSqlParser.RULE_create_package_stmt);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1439;
        this._errHandler.sync(this);
        switch (this._input.LA(1)) {
        case HiveSqlParser.T_ALTER:
        	this.state = 1432;
        	this.match(HiveSqlParser.T_ALTER);
        	break;
        case HiveSqlParser.T_CREATE:
        	this.state = 1433;
        	this.match(HiveSqlParser.T_CREATE);
        	this.state = 1436;
        	this._errHandler.sync(this);
        	_la = this._input.LA(1);
        	if(_la===HiveSqlParser.T_OR) {
        	    this.state = 1434;
        	    this.match(HiveSqlParser.T_OR);
        	    this.state = 1435;
        	    this.match(HiveSqlParser.T_REPLACE);
        	}

        	break;
        case HiveSqlParser.T_REPLACE:
        	this.state = 1438;
        	this.match(HiveSqlParser.T_REPLACE);
        	break;
        case HiveSqlParser.T_PACKAGE:
        	break;
        default:
        	break;
        }
        this.state = 1441;
        this.match(HiveSqlParser.T_PACKAGE);
        this.state = 1442;
        this.ident();
        this.state = 1443;
        _la = this._input.LA(1);
        if(!(_la===HiveSqlParser.T_AS || _la===HiveSqlParser.T_IS)) {
        this._errHandler.recoverInline(this);
        }
        else {
        	this._errHandler.reportMatch(this);
            this.consume();
        }
        this.state = 1444;
        this.package_spec();
        this.state = 1445;
        this.match(HiveSqlParser.T_END);
        this.state = 1449;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,142,this._ctx);
        if(la_===1) {
            this.state = 1446;
            this.ident();
            this.state = 1447;
            this.match(HiveSqlParser.T_SEMICOLON);

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


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

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

Package_specContext.prototype.package_spec_item = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Package_spec_itemContext);
    } else {
        return this.getTypedRuleContext(Package_spec_itemContext,i);
    }
};

Package_specContext.prototype.T_SEMICOLON = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_SEMICOLON);
    } else {
        return this.getToken(HiveSqlParser.T_SEMICOLON, i);
    }
};


Package_specContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterPackage_spec(this);
	}
};

Package_specContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitPackage_spec(this);
	}
};

Package_specContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitPackage_spec(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Package_specContext = Package_specContext;

HiveSqlParser.prototype.package_spec = function() {

    var localctx = new Package_specContext(this, this._ctx, this.state);
    this.enterRule(localctx, 136, HiveSqlParser.RULE_package_spec);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1451;
        this.package_spec_item();
        this.state = 1452;
        this.match(HiveSqlParser.T_SEMICOLON);
        this.state = 1458;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << HiveSqlParser.T__8) | (1 << HiveSqlParser.T_GO) | (1 << HiveSqlParser.T_BEGIN) | (1 << HiveSqlParser.T_EXCEPTION) | (1 << HiveSqlParser.L_ID) | (1 << HiveSqlParser.T_THEN) | (1 << HiveSqlParser.T_SET) | (1 << HiveSqlParser.T_ALLOCATE) | (1 << HiveSqlParser.T_CURSOR) | (1 << HiveSqlParser.T_FOR) | (1 << HiveSqlParser.T_RESULT) | (1 << HiveSqlParser.T_PROCEDURE) | (1 << HiveSqlParser.T_ASSOCIATE))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (HiveSqlParser.T_LOCATOR - 32)) | (1 << (HiveSqlParser.T_LOCATORS - 32)) | (1 << (HiveSqlParser.T_WITH - 32)) | (1 << (HiveSqlParser.T_TRANSACTION - 32)) | (1 << (HiveSqlParser.T_BREAK - 32)) | (1 << (HiveSqlParser.T_CALL - 32)) | (1 << (HiveSqlParser.T_DECLARE - 32)) | (1 << (HiveSqlParser.T_AS - 32)) | (1 << (HiveSqlParser.T_CONSTANT - 32)) | (1 << (HiveSqlParser.T_CONDITION - 32)) | (1 << (HiveSqlParser.T_IS - 32)) | (1 << (HiveSqlParser.T_RETURN - 32)) | (1 << (HiveSqlParser.T_ONLY - 32)) | (1 << (HiveSqlParser.T_TO - 32)) | (1 << (HiveSqlParser.T_CALLER - 32)) | (1 << (HiveSqlParser.T_CLIENT - 32)) | (1 << (HiveSqlParser.T_WITHOUT - 32)) | (1 << (HiveSqlParser.T_CONTINUE - 32)) | (1 << (HiveSqlParser.T_EXIT - 32)) | (1 << (HiveSqlParser.T_HANDLER - 32)) | (1 << (HiveSqlParser.T_SQLEXCEPTION - 32)) | (1 << (HiveSqlParser.T_SQLWARNING - 32)) | (1 << (HiveSqlParser.T_NOT - 32)) | (1 << (HiveSqlParser.T_FOUND - 32)) | (1 << (HiveSqlParser.T_GLOBAL - 32)) | (1 << (HiveSqlParser.T_TEMPORARY - 32)) | (1 << (HiveSqlParser.T_TABLE - 32)) | (1 << (HiveSqlParser.T_CREATE - 32)) | (1 << (HiveSqlParser.T_IF - 32)) | (1 << (HiveSqlParser.T_EXISTS - 32)) | (1 << (HiveSqlParser.T_LOCAL - 32)) | (1 << (HiveSqlParser.T_MULTISET - 32)))) !== 0) || ((((_la - 64)) & ~0x1f) == 0 && ((1 << (_la - 64)) & ((1 << (HiveSqlParser.T_VOLATILE - 64)) | (1 << (HiveSqlParser.T_LIKE - 64)) | (1 << (HiveSqlParser.T_CONSTRAINT - 64)) | (1 << (HiveSqlParser.T_PRIMARY - 64)) | (1 << (HiveSqlParser.T_KEY - 64)) | (1 << (HiveSqlParser.T_UNIQUE - 64)) | (1 << (HiveSqlParser.T_REFERENCES - 64)) | (1 << (HiveSqlParser.T_IDENTITY - 64)) | (1 << (HiveSqlParser.T_AUTO_INCREMENT - 64)) | (1 << (HiveSqlParser.T_ENABLE - 64)) | (1 << (HiveSqlParser.T_CLUSTERED - 64)) | (1 << (HiveSqlParser.T_ASC - 64)) | (1 << (HiveSqlParser.T_DESC - 64)) | (1 << (HiveSqlParser.T_FOREIGN - 64)) | (1 << (HiveSqlParser.T_ON - 64)) | (1 << (HiveSqlParser.T_UPDATE - 64)) | (1 << (HiveSqlParser.T_DELETE - 64)) | (1 << (HiveSqlParser.T_NO - 64)) | (1 << (HiveSqlParser.T_ACTION - 64)) | (1 << (HiveSqlParser.T_RESTRICT - 64)) | (1 << (HiveSqlParser.T_DEFAULT - 64)) | (1 << (HiveSqlParser.T_CASCADE - 64)) | (1 << (HiveSqlParser.T_LOG - 64)) | (1 << (HiveSqlParser.T_FALLBACK - 64)) | (1 << (HiveSqlParser.T_COMMIT - 64)) | (1 << (HiveSqlParser.T_PRESERVE - 64)) | (1 << (HiveSqlParser.T_ROWS - 64)) | (1 << (HiveSqlParser.T_SEGMENT - 64)) | (1 << (HiveSqlParser.T_CREATION - 64)) | (1 << (HiveSqlParser.T_IMMEDIATE - 64)) | (1 << (HiveSqlParser.T_DEFERRED - 64)))) !== 0) || ((((_la - 96)) & ~0x1f) == 0 && ((1 << (_la - 96)) & ((1 << (HiveSqlParser.T_PCTFREE - 96)) | (1 << (HiveSqlParser.T_PCTUSED - 96)) | (1 << (HiveSqlParser.T_INITRANS - 96)) | (1 << (HiveSqlParser.T_MAXTRANS - 96)) | (1 << (HiveSqlParser.T_NOCOMPRESS - 96)) | (1 << (HiveSqlParser.T_LOGGING - 96)) | (1 << (HiveSqlParser.T_NOLOGGING - 96)) | (1 << (HiveSqlParser.T_STORAGE - 96)) | (1 << (HiveSqlParser.T_TABLESPACE - 96)) | (1 << (HiveSqlParser.T_INDEX - 96)) | (1 << (HiveSqlParser.T_IN - 96)) | (1 << (HiveSqlParser.T_REPLACE - 96)) | (1 << (HiveSqlParser.T_DISTRIBUTE - 96)) | (1 << (HiveSqlParser.T_BY - 96)) | (1 << (HiveSqlParser.T_HASH - 96)) | (1 << (HiveSqlParser.T_LOGGED - 96)) | (1 << (HiveSqlParser.T_COMPRESS - 96)) | (1 << (HiveSqlParser.T_YES - 96)) | (1 << (HiveSqlParser.T_DEFINITION - 96)) | (1 << (HiveSqlParser.T_DROP - 96)) | (1 << (HiveSqlParser.T_DATA - 96)) | (1 << (HiveSqlParser.T_STORED - 96)) | (1 << (HiveSqlParser.T_ROW - 96)) | (1 << (HiveSqlParser.T_FORMAT - 96)) | (1 << (HiveSqlParser.T_DELIMITED - 96)) | (1 << (HiveSqlParser.T_FIELDS - 96)) | (1 << (HiveSqlParser.T_TERMINATED - 96)) | (1 << (HiveSqlParser.T_ESCAPED - 96)) | (1 << (HiveSqlParser.T_COLLECTION - 96)) | (1 << (HiveSqlParser.T_ITEMS - 96)) | (1 << (HiveSqlParser.T_MAP - 96)) | (1 << (HiveSqlParser.T_KEYS - 96)))) !== 0) || ((((_la - 128)) & ~0x1f) == 0 && ((1 << (_la - 128)) & ((1 << (HiveSqlParser.T_LINES - 128)) | (1 << (HiveSqlParser.T_DEFINED - 128)) | (1 << (HiveSqlParser.T_TEXTIMAGE_ON - 128)) | (1 << (HiveSqlParser.T_COMMENT - 128)) | (1 << (HiveSqlParser.T_CHARACTER - 128)) | (1 << (HiveSqlParser.T_CHARSET - 128)) | (1 << (HiveSqlParser.T_ENGINE - 128)) | (1 << (HiveSqlParser.T_ALTER - 128)) | (1 << (HiveSqlParser.T_ADD2 - 128)) | (1 << (HiveSqlParser.T_CHAR - 128)) | (1 << (HiveSqlParser.T_BIGINT - 128)) | (1 << (HiveSqlParser.T_BINARY_DOUBLE - 128)) | (1 << (HiveSqlParser.T_BINARY_FLOAT - 128)) | (1 << (HiveSqlParser.T_BIT - 128)) | (1 << (HiveSqlParser.T_DATE - 128)) | (1 << (HiveSqlParser.T_DATETIME - 128)) | (1 << (HiveSqlParser.T_DEC - 128)) | (1 << (HiveSqlParser.T_DECIMAL - 128)) | (1 << (HiveSqlParser.T_DOUBLE - 128)) | (1 << (HiveSqlParser.T_PRECISION - 128)) | (1 << (HiveSqlParser.T_FLOAT - 128)) | (1 << (HiveSqlParser.T_INT - 128)) | (1 << (HiveSqlParser.T_INT2 - 128)) | (1 << (HiveSqlParser.T_INT4 - 128)) | (1 << (HiveSqlParser.T_INT8 - 128)) | (1 << (HiveSqlParser.T_INTEGER - 128)) | (1 << (HiveSqlParser.T_NCHAR - 128)) | (1 << (HiveSqlParser.T_NVARCHAR - 128)) | (1 << (HiveSqlParser.T_NUMBER - 128)) | (1 << (HiveSqlParser.T_NUMERIC - 128)))) !== 0) || ((((_la - 160)) & ~0x1f) == 0 && ((1 << (_la - 160)) & ((1 << (HiveSqlParser.T_REAL - 160)) | (1 << (HiveSqlParser.T_RESULT_SET_LOCATOR - 160)) | (1 << (HiveSqlParser.T_VARYING - 160)) | (1 << (HiveSqlParser.T_SIMPLE_FLOAT - 160)) | (1 << (HiveSqlParser.T_SIMPLE_DOUBLE - 160)) | (1 << (HiveSqlParser.T_SMALLINT - 160)) | (1 << (HiveSqlParser.T_SMALLDATETIME - 160)) | (1 << (HiveSqlParser.T_STRING - 160)) | (1 << (HiveSqlParser.T_SYS_REFCURSOR - 160)) | (1 << (HiveSqlParser.T_TIMESTAMP - 160)) | (1 << (HiveSqlParser.T_VARCHAR - 160)) | (1 << (HiveSqlParser.T_VARCHAR2 - 160)) | (1 << (HiveSqlParser.T_XML - 160)) | (1 << (HiveSqlParser.T_MAX - 160)) | (1 << (HiveSqlParser.T_BYTE - 160)) | (1 << (HiveSqlParser.T_CASESPECIFIC - 160)) | (1 << (HiveSqlParser.T_CS - 160)) | (1 << (HiveSqlParser.T_DATABASE - 160)) | (1 << (HiveSqlParser.T_SCHEMA - 160)) | (1 << (HiveSqlParser.T_LOCATION - 160)) | (1 << (HiveSqlParser.T_OR - 160)) | (1 << (HiveSqlParser.T_FUNCTION - 160)) | (1 << (HiveSqlParser.T_RETURNS - 160)) | (1 << (HiveSqlParser.T_PACKAGE - 160)) | (1 << (HiveSqlParser.T_PROC - 160)) | (1 << (HiveSqlParser.T_BODY - 160)) | (1 << (HiveSqlParser.T_OUT - 160)) | (1 << (HiveSqlParser.T_INOUT - 160)))) !== 0) || ((((_la - 192)) & ~0x1f) == 0 && ((1 << (_la - 192)) & ((1 << (HiveSqlParser.T_LANGUAGE - 192)) | (1 << (HiveSqlParser.T_SQL - 192)) | (1 << (HiveSqlParser.T_SECURITY - 192)) | (1 << (HiveSqlParser.T_CREATOR - 192)) | (1 << (HiveSqlParser.T_DEFINER - 192)) | (1 << (HiveSqlParser.T_INVOKER - 192)) | (1 << (HiveSqlParser.T_OWNER - 192)) | (1 << (HiveSqlParser.T_DYNAMIC - 192)) | (1 << (HiveSqlParser.T_SETS - 192)) | (1 << (HiveSqlParser.T_EXEC - 192)) | (1 << (HiveSqlParser.T_EXECUTE - 192)) | (1 << (HiveSqlParser.T_INTO - 192)) | (1 << (HiveSqlParser.T_INCLUDE - 192)) | (1 << (HiveSqlParser.T_INSERT - 192)) | (1 << (HiveSqlParser.T_OVERWRITE - 192)) | (1 << (HiveSqlParser.T_VALUES - 192)) | (1 << (HiveSqlParser.T_DIRECTORY - 192)) | (1 << (HiveSqlParser.T_GET - 192)) | (1 << (HiveSqlParser.T_DIAGNOSTICS - 192)) | (1 << (HiveSqlParser.T_MESSAGE_TEXT - 192)) | (1 << (HiveSqlParser.T_ROW_COUNT - 192)) | (1 << (HiveSqlParser.T_GRANT - 192)) | (1 << (HiveSqlParser.T_ROLE - 192)) | (1 << (HiveSqlParser.T_LEAVE - 192)) | (1 << (HiveSqlParser.T_OBJECT - 192)) | (1 << (HiveSqlParser.T_AT - 192)) | (1 << (HiveSqlParser.T_OPEN - 192)) | (1 << (HiveSqlParser.T_FETCH - 192)) | (1 << (HiveSqlParser.T_FROM - 192)))) !== 0) || ((((_la - 224)) & ~0x1f) == 0 && ((1 << (_la - 224)) & ((1 << (HiveSqlParser.T_COLLECT - 224)) | (1 << (HiveSqlParser.T_STATISTICS - 224)) | (1 << (HiveSqlParser.T_STATS - 224)) | (1 << (HiveSqlParser.T_COLUMN - 224)) | (1 << (HiveSqlParser.T_CLOSE - 224)) | (1 << (HiveSqlParser.T_CMP - 224)) | (1 << (HiveSqlParser.T_SUM - 224)) | (1 << (HiveSqlParser.T_COPY - 224)) | (1 << (HiveSqlParser.T_HDFS - 224)) | (1 << (HiveSqlParser.T_BATCHSIZE - 224)) | (1 << (HiveSqlParser.T_DELIMITER - 224)) | (1 << (HiveSqlParser.T_SQLINSERT - 224)) | (1 << (HiveSqlParser.T_IGNORE - 224)) | (1 << (HiveSqlParser.T_WORK - 224)) | (1 << (HiveSqlParser.T_PRINT - 224)) | (1 << (HiveSqlParser.T_QUIT - 224)) | (1 << (HiveSqlParser.T_RAISE - 224)) | (1 << (HiveSqlParser.T_RESIGNAL - 224)) | (1 << (HiveSqlParser.T_SQLSTATE - 224)) | (1 << (HiveSqlParser.T_VALUE - 224)) | (1 << (HiveSqlParser.T_ROLLBACK - 224)) | (1 << (HiveSqlParser.T_CURRENT - 224)) | (1 << (HiveSqlParser.T_CURRENT_SCHEMA - 224)) | (1 << (HiveSqlParser.T_ANSI_NULLS - 224)) | (1 << (HiveSqlParser.T_ANSI_PADDING - 224)) | (1 << (HiveSqlParser.T_NOCOUNT - 224)) | (1 << (HiveSqlParser.T_QUOTED_IDENTIFIER - 224)) | (1 << (HiveSqlParser.T_XACT_ABORT - 224)) | (1 << (HiveSqlParser.T_OFF - 224)) | (1 << (HiveSqlParser.T_QUERY_BAND - 224)) | (1 << (HiveSqlParser.T_NONE - 224)) | (1 << (HiveSqlParser.T_SESSION - 224)))) !== 0) || ((((_la - 256)) & ~0x1f) == 0 && ((1 << (_la - 256)) & ((1 << (HiveSqlParser.T_SIGNAL - 256)) | (1 << (HiveSqlParser.T_SUMMARY - 256)) | (1 << (HiveSqlParser.T_TOP - 256)) | (1 << (HiveSqlParser.T_LIMIT - 256)) | (1 << (HiveSqlParser.T_TRUNCATE - 256)) | (1 << (HiveSqlParser.T_USE - 256)) | (1 << (HiveSqlParser.T_WHILE - 256)) | (1 << (HiveSqlParser.T_DO - 256)) | (1 << (HiveSqlParser.T_LOOP - 256)) | (1 << (HiveSqlParser.T_REVERSE - 256)) | (1 << (HiveSqlParser.T_STEP - 256)) | (1 << (HiveSqlParser.T_USING - 256)) | (1 << (HiveSqlParser.T_ALL - 256)) | (1 << (HiveSqlParser.T_EXCEPT - 256)) | (1 << (HiveSqlParser.T_INTERSECT - 256)) | (1 << (HiveSqlParser.T_SELECT - 256)) | (1 << (HiveSqlParser.T_SEL - 256)) | (1 << (HiveSqlParser.T_DISTINCT - 256)) | (1 << (HiveSqlParser.T_TITLE - 256)) | (1 << (HiveSqlParser.T_INNER - 256)) | (1 << (HiveSqlParser.T_JOIN - 256)) | (1 << (HiveSqlParser.T_LEFT - 256)) | (1 << (HiveSqlParser.T_RIGHT - 256)) | (1 << (HiveSqlParser.T_FULL - 256)) | (1 << (HiveSqlParser.T_OUTER - 256)))) !== 0) || ((((_la - 288)) & ~0x1f) == 0 && ((1 << (_la - 288)) & ((1 << (HiveSqlParser.T_GROUP - 288)) | (1 << (HiveSqlParser.T_HAVING - 288)) | (1 << (HiveSqlParser.T_QUALIFY - 288)) | (1 << (HiveSqlParser.T_ORDER - 288)) | (1 << (HiveSqlParser.T_RR - 288)) | (1 << (HiveSqlParser.T_RS - 288)) | (1 << (HiveSqlParser.T_UR - 288)) | (1 << (HiveSqlParser.T_AND - 288)) | (1 << (HiveSqlParser.T_KEEP - 288)) | (1 << (HiveSqlParser.T_EXCLUSIVE - 288)) | (1 << (HiveSqlParser.T_SHARE - 288)) | (1 << (HiveSqlParser.T_LOCKS - 288)) | (1 << (HiveSqlParser.T_MERGE - 288)) | (1 << (HiveSqlParser.T_MATCHED - 288)) | (1 << (HiveSqlParser.T_DESCRIBE - 288)) | (1 << (HiveSqlParser.T_BETWEEN - 288)) | (1 << (HiveSqlParser.T_RLIKE - 288)) | (1 << (HiveSqlParser.T_REGEXP - 288)) | (1 << (HiveSqlParser.T_INTERVAL - 288)) | (1 << (HiveSqlParser.T_DAY - 288)) | (1 << (HiveSqlParser.T_DAYS - 288)) | (1 << (HiveSqlParser.T_MICROSECOND - 288)) | (1 << (HiveSqlParser.T_MICROSECONDS - 288)))) !== 0) || ((((_la - 320)) & ~0x1f) == 0 && ((1 << (_la - 320)) & ((1 << (HiveSqlParser.T_SECOND - 320)) | (1 << (HiveSqlParser.T_SECONDS - 320)) | (1 << (HiveSqlParser.T_CONCAT - 320)) | (1 << (HiveSqlParser.T_CASE - 320)) | (1 << (HiveSqlParser.T_ISOPEN - 320)) | (1 << (HiveSqlParser.T_NOTFOUND - 320)) | (1 << (HiveSqlParser.T_AVG - 320)) | (1 << (HiveSqlParser.T_COUNT - 320)) | (1 << (HiveSqlParser.T_COUNT_BIG - 320)) | (1 << (HiveSqlParser.T_CUME_DIST - 320)) | (1 << (HiveSqlParser.T_DENSE_RANK - 320)) | (1 << (HiveSqlParser.T_FIRST_VALUE - 320)) | (1 << (HiveSqlParser.T_LAG - 320)) | (1 << (HiveSqlParser.T_LAST_VALUE - 320)) | (1 << (HiveSqlParser.T_LEAD - 320)) | (1 << (HiveSqlParser.T_MIN - 320)) | (1 << (HiveSqlParser.T_RANK - 320)) | (1 << (HiveSqlParser.T_ROW_NUMBER - 320)) | (1 << (HiveSqlParser.T_STDEV - 320)) | (1 << (HiveSqlParser.T_VAR - 320)) | (1 << (HiveSqlParser.T_VARIANCE - 320)) | (1 << (HiveSqlParser.T_OVER - 320)) | (1 << (HiveSqlParser.T_PARTITION - 320)) | (1 << (HiveSqlParser.T_ACTIVITY_COUNT - 320)) | (1 << (HiveSqlParser.T_CAST - 320)) | (1 << (HiveSqlParser.T_CURRENT_DATE - 320)) | (1 << (HiveSqlParser.T_CURRENT_TIMESTAMP - 320)) | (1 << (HiveSqlParser.T_CURRENT_USER - 320)) | (1 << (HiveSqlParser.T_USER - 320)))) !== 0) || ((((_la - 356)) & ~0x1f) == 0 && ((1 << (_la - 356)) & ((1 << (HiveSqlParser.T_PART_COUNT - 356)) | (1 << (HiveSqlParser.T_PART_LOC - 356)) | (1 << (HiveSqlParser.T_TRIM - 356)) | (1 << (HiveSqlParser.T_SUBSTRING - 356)) | (1 << (HiveSqlParser.T_SYSDATE - 356)) | (1 << (HiveSqlParser.T_HIVE - 356)) | (1 << (HiveSqlParser.T_HOST - 356)) | (1 << (HiveSqlParser.T_TRUE - 356)) | (1 << (HiveSqlParser.T_FALSE - 356)) | (1 << (HiveSqlParser.T_DIR - 356)) | (1 << (HiveSqlParser.T_FILE - 356)) | (1 << (HiveSqlParser.T_FILES - 356)) | (1 << (HiveSqlParser.T_NEW - 356)) | (1 << (HiveSqlParser.T_PWD - 356)) | (1 << (HiveSqlParser.T_SESSIONS - 356)) | (1 << (HiveSqlParser.T_SUBDIR - 356)))) !== 0)) {
            this.state = 1453;
            this.package_spec_item();
            this.state = 1454;
            this.match(HiveSqlParser.T_SEMICOLON);
            this.state = 1460;
            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 Package_spec_itemContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_package_spec_item;
    return this;
}

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

Package_spec_itemContext.prototype.declare_stmt_item = function() {
    return this.getTypedRuleContext(Declare_stmt_itemContext,0);
};

Package_spec_itemContext.prototype.T_FUNCTION = function() {
    return this.getToken(HiveSqlParser.T_FUNCTION, 0);
};

Package_spec_itemContext.prototype.ident = function() {
    return this.getTypedRuleContext(IdentContext,0);
};

Package_spec_itemContext.prototype.create_function_return = function() {
    return this.getTypedRuleContext(Create_function_returnContext,0);
};

Package_spec_itemContext.prototype.create_routine_params = function() {
    return this.getTypedRuleContext(Create_routine_paramsContext,0);
};

Package_spec_itemContext.prototype.T_PROCEDURE = function() {
    return this.getToken(HiveSqlParser.T_PROCEDURE, 0);
};

Package_spec_itemContext.prototype.T_PROC = function() {
    return this.getToken(HiveSqlParser.T_PROC, 0);
};

Package_spec_itemContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterPackage_spec_item(this);
	}
};

Package_spec_itemContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitPackage_spec_item(this);
	}
};

Package_spec_itemContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitPackage_spec_item(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Package_spec_itemContext = Package_spec_itemContext;

HiveSqlParser.prototype.package_spec_item = function() {

    var localctx = new Package_spec_itemContext(this, this._ctx, this.state);
    this.enterRule(localctx, 138, HiveSqlParser.RULE_package_spec_item);
    var _la = 0; // Token type
    try {
        this.state = 1474;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,146,this._ctx);
        switch(la_) {
        case 1:
            this.enterOuterAlt(localctx, 1);
            this.state = 1461;
            this.declare_stmt_item();
            break;

        case 2:
            this.enterOuterAlt(localctx, 2);
            this.state = 1462;
            this.match(HiveSqlParser.T_FUNCTION);
            this.state = 1463;
            this.ident();
            this.state = 1465;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,144,this._ctx);
            if(la_===1) {
                this.state = 1464;
                this.create_routine_params();

            }
            this.state = 1467;
            this.create_function_return();
            break;

        case 3:
            this.enterOuterAlt(localctx, 3);
            this.state = 1469;
            _la = this._input.LA(1);
            if(!(_la===HiveSqlParser.T_PROCEDURE || _la===HiveSqlParser.T_PROC)) {
            this._errHandler.recoverInline(this);
            }
            else {
            	this._errHandler.reportMatch(this);
                this.consume();
            }
            this.state = 1470;
            this.ident();
            this.state = 1472;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,145,this._ctx);
            if(la_===1) {
                this.state = 1471;
                this.create_routine_params();

            }
            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 Create_package_body_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_create_package_body_stmt;
    return this;
}

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

Create_package_body_stmtContext.prototype.T_PACKAGE = function() {
    return this.getToken(HiveSqlParser.T_PACKAGE, 0);
};

Create_package_body_stmtContext.prototype.T_BODY = function() {
    return this.getToken(HiveSqlParser.T_BODY, 0);
};

Create_package_body_stmtContext.prototype.ident = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(IdentContext);
    } else {
        return this.getTypedRuleContext(IdentContext,i);
    }
};

Create_package_body_stmtContext.prototype.package_body = function() {
    return this.getTypedRuleContext(Package_bodyContext,0);
};

Create_package_body_stmtContext.prototype.T_END = function() {
    return this.getToken(HiveSqlParser.T_END, 0);
};

Create_package_body_stmtContext.prototype.T_AS = function() {
    return this.getToken(HiveSqlParser.T_AS, 0);
};

Create_package_body_stmtContext.prototype.T_IS = function() {
    return this.getToken(HiveSqlParser.T_IS, 0);
};

Create_package_body_stmtContext.prototype.T_ALTER = function() {
    return this.getToken(HiveSqlParser.T_ALTER, 0);
};

Create_package_body_stmtContext.prototype.T_CREATE = function() {
    return this.getToken(HiveSqlParser.T_CREATE, 0);
};

Create_package_body_stmtContext.prototype.T_REPLACE = function() {
    return this.getToken(HiveSqlParser.T_REPLACE, 0);
};

Create_package_body_stmtContext.prototype.T_SEMICOLON = function() {
    return this.getToken(HiveSqlParser.T_SEMICOLON, 0);
};

Create_package_body_stmtContext.prototype.T_OR = function() {
    return this.getToken(HiveSqlParser.T_OR, 0);
};

Create_package_body_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterCreate_package_body_stmt(this);
	}
};

Create_package_body_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitCreate_package_body_stmt(this);
	}
};

Create_package_body_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitCreate_package_body_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Create_package_body_stmtContext = Create_package_body_stmtContext;

HiveSqlParser.prototype.create_package_body_stmt = function() {

    var localctx = new Create_package_body_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 140, HiveSqlParser.RULE_create_package_body_stmt);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1483;
        this._errHandler.sync(this);
        switch (this._input.LA(1)) {
        case HiveSqlParser.T_ALTER:
        	this.state = 1476;
        	this.match(HiveSqlParser.T_ALTER);
        	break;
        case HiveSqlParser.T_CREATE:
        	this.state = 1477;
        	this.match(HiveSqlParser.T_CREATE);
        	this.state = 1480;
        	this._errHandler.sync(this);
        	_la = this._input.LA(1);
        	if(_la===HiveSqlParser.T_OR) {
        	    this.state = 1478;
        	    this.match(HiveSqlParser.T_OR);
        	    this.state = 1479;
        	    this.match(HiveSqlParser.T_REPLACE);
        	}

        	break;
        case HiveSqlParser.T_REPLACE:
        	this.state = 1482;
        	this.match(HiveSqlParser.T_REPLACE);
        	break;
        case HiveSqlParser.T_PACKAGE:
        	break;
        default:
        	break;
        }
        this.state = 1485;
        this.match(HiveSqlParser.T_PACKAGE);
        this.state = 1486;
        this.match(HiveSqlParser.T_BODY);
        this.state = 1487;
        this.ident();
        this.state = 1488;
        _la = this._input.LA(1);
        if(!(_la===HiveSqlParser.T_AS || _la===HiveSqlParser.T_IS)) {
        this._errHandler.recoverInline(this);
        }
        else {
        	this._errHandler.reportMatch(this);
            this.consume();
        }
        this.state = 1489;
        this.package_body();
        this.state = 1490;
        this.match(HiveSqlParser.T_END);
        this.state = 1494;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,149,this._ctx);
        if(la_===1) {
            this.state = 1491;
            this.ident();
            this.state = 1492;
            this.match(HiveSqlParser.T_SEMICOLON);

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


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

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

Package_bodyContext.prototype.package_body_item = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Package_body_itemContext);
    } else {
        return this.getTypedRuleContext(Package_body_itemContext,i);
    }
};

Package_bodyContext.prototype.T_SEMICOLON = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_SEMICOLON);
    } else {
        return this.getToken(HiveSqlParser.T_SEMICOLON, i);
    }
};


Package_bodyContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterPackage_body(this);
	}
};

Package_bodyContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitPackage_body(this);
	}
};

Package_bodyContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitPackage_body(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Package_bodyContext = Package_bodyContext;

HiveSqlParser.prototype.package_body = function() {

    var localctx = new Package_bodyContext(this, this._ctx, this.state);
    this.enterRule(localctx, 142, HiveSqlParser.RULE_package_body);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1496;
        this.package_body_item();
        this.state = 1497;
        this.match(HiveSqlParser.T_SEMICOLON);
        this.state = 1503;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << HiveSqlParser.T__8) | (1 << HiveSqlParser.T_GO) | (1 << HiveSqlParser.T_BEGIN) | (1 << HiveSqlParser.T_EXCEPTION) | (1 << HiveSqlParser.L_ID) | (1 << HiveSqlParser.T_THEN) | (1 << HiveSqlParser.T_SET) | (1 << HiveSqlParser.T_ALLOCATE) | (1 << HiveSqlParser.T_CURSOR) | (1 << HiveSqlParser.T_FOR) | (1 << HiveSqlParser.T_RESULT) | (1 << HiveSqlParser.T_PROCEDURE) | (1 << HiveSqlParser.T_ASSOCIATE))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (HiveSqlParser.T_LOCATOR - 32)) | (1 << (HiveSqlParser.T_LOCATORS - 32)) | (1 << (HiveSqlParser.T_WITH - 32)) | (1 << (HiveSqlParser.T_TRANSACTION - 32)) | (1 << (HiveSqlParser.T_BREAK - 32)) | (1 << (HiveSqlParser.T_CALL - 32)) | (1 << (HiveSqlParser.T_DECLARE - 32)) | (1 << (HiveSqlParser.T_AS - 32)) | (1 << (HiveSqlParser.T_CONSTANT - 32)) | (1 << (HiveSqlParser.T_CONDITION - 32)) | (1 << (HiveSqlParser.T_IS - 32)) | (1 << (HiveSqlParser.T_RETURN - 32)) | (1 << (HiveSqlParser.T_ONLY - 32)) | (1 << (HiveSqlParser.T_TO - 32)) | (1 << (HiveSqlParser.T_CALLER - 32)) | (1 << (HiveSqlParser.T_CLIENT - 32)) | (1 << (HiveSqlParser.T_WITHOUT - 32)) | (1 << (HiveSqlParser.T_CONTINUE - 32)) | (1 << (HiveSqlParser.T_EXIT - 32)) | (1 << (HiveSqlParser.T_HANDLER - 32)) | (1 << (HiveSqlParser.T_SQLEXCEPTION - 32)) | (1 << (HiveSqlParser.T_SQLWARNING - 32)) | (1 << (HiveSqlParser.T_NOT - 32)) | (1 << (HiveSqlParser.T_FOUND - 32)) | (1 << (HiveSqlParser.T_GLOBAL - 32)) | (1 << (HiveSqlParser.T_TEMPORARY - 32)) | (1 << (HiveSqlParser.T_TABLE - 32)) | (1 << (HiveSqlParser.T_CREATE - 32)) | (1 << (HiveSqlParser.T_IF - 32)) | (1 << (HiveSqlParser.T_EXISTS - 32)) | (1 << (HiveSqlParser.T_LOCAL - 32)) | (1 << (HiveSqlParser.T_MULTISET - 32)))) !== 0) || ((((_la - 64)) & ~0x1f) == 0 && ((1 << (_la - 64)) & ((1 << (HiveSqlParser.T_VOLATILE - 64)) | (1 << (HiveSqlParser.T_LIKE - 64)) | (1 << (HiveSqlParser.T_CONSTRAINT - 64)) | (1 << (HiveSqlParser.T_PRIMARY - 64)) | (1 << (HiveSqlParser.T_KEY - 64)) | (1 << (HiveSqlParser.T_UNIQUE - 64)) | (1 << (HiveSqlParser.T_REFERENCES - 64)) | (1 << (HiveSqlParser.T_IDENTITY - 64)) | (1 << (HiveSqlParser.T_AUTO_INCREMENT - 64)) | (1 << (HiveSqlParser.T_ENABLE - 64)) | (1 << (HiveSqlParser.T_CLUSTERED - 64)) | (1 << (HiveSqlParser.T_ASC - 64)) | (1 << (HiveSqlParser.T_DESC - 64)) | (1 << (HiveSqlParser.T_FOREIGN - 64)) | (1 << (HiveSqlParser.T_ON - 64)) | (1 << (HiveSqlParser.T_UPDATE - 64)) | (1 << (HiveSqlParser.T_DELETE - 64)) | (1 << (HiveSqlParser.T_NO - 64)) | (1 << (HiveSqlParser.T_ACTION - 64)) | (1 << (HiveSqlParser.T_RESTRICT - 64)) | (1 << (HiveSqlParser.T_DEFAULT - 64)) | (1 << (HiveSqlParser.T_CASCADE - 64)) | (1 << (HiveSqlParser.T_LOG - 64)) | (1 << (HiveSqlParser.T_FALLBACK - 64)) | (1 << (HiveSqlParser.T_COMMIT - 64)) | (1 << (HiveSqlParser.T_PRESERVE - 64)) | (1 << (HiveSqlParser.T_ROWS - 64)) | (1 << (HiveSqlParser.T_SEGMENT - 64)) | (1 << (HiveSqlParser.T_CREATION - 64)) | (1 << (HiveSqlParser.T_IMMEDIATE - 64)) | (1 << (HiveSqlParser.T_DEFERRED - 64)))) !== 0) || ((((_la - 96)) & ~0x1f) == 0 && ((1 << (_la - 96)) & ((1 << (HiveSqlParser.T_PCTFREE - 96)) | (1 << (HiveSqlParser.T_PCTUSED - 96)) | (1 << (HiveSqlParser.T_INITRANS - 96)) | (1 << (HiveSqlParser.T_MAXTRANS - 96)) | (1 << (HiveSqlParser.T_NOCOMPRESS - 96)) | (1 << (HiveSqlParser.T_LOGGING - 96)) | (1 << (HiveSqlParser.T_NOLOGGING - 96)) | (1 << (HiveSqlParser.T_STORAGE - 96)) | (1 << (HiveSqlParser.T_TABLESPACE - 96)) | (1 << (HiveSqlParser.T_INDEX - 96)) | (1 << (HiveSqlParser.T_IN - 96)) | (1 << (HiveSqlParser.T_REPLACE - 96)) | (1 << (HiveSqlParser.T_DISTRIBUTE - 96)) | (1 << (HiveSqlParser.T_BY - 96)) | (1 << (HiveSqlParser.T_HASH - 96)) | (1 << (HiveSqlParser.T_LOGGED - 96)) | (1 << (HiveSqlParser.T_COMPRESS - 96)) | (1 << (HiveSqlParser.T_YES - 96)) | (1 << (HiveSqlParser.T_DEFINITION - 96)) | (1 << (HiveSqlParser.T_DROP - 96)) | (1 << (HiveSqlParser.T_DATA - 96)) | (1 << (HiveSqlParser.T_STORED - 96)) | (1 << (HiveSqlParser.T_ROW - 96)) | (1 << (HiveSqlParser.T_FORMAT - 96)) | (1 << (HiveSqlParser.T_DELIMITED - 96)) | (1 << (HiveSqlParser.T_FIELDS - 96)) | (1 << (HiveSqlParser.T_TERMINATED - 96)) | (1 << (HiveSqlParser.T_ESCAPED - 96)) | (1 << (HiveSqlParser.T_COLLECTION - 96)) | (1 << (HiveSqlParser.T_ITEMS - 96)) | (1 << (HiveSqlParser.T_MAP - 96)) | (1 << (HiveSqlParser.T_KEYS - 96)))) !== 0) || ((((_la - 128)) & ~0x1f) == 0 && ((1 << (_la - 128)) & ((1 << (HiveSqlParser.T_LINES - 128)) | (1 << (HiveSqlParser.T_DEFINED - 128)) | (1 << (HiveSqlParser.T_TEXTIMAGE_ON - 128)) | (1 << (HiveSqlParser.T_COMMENT - 128)) | (1 << (HiveSqlParser.T_CHARACTER - 128)) | (1 << (HiveSqlParser.T_CHARSET - 128)) | (1 << (HiveSqlParser.T_ENGINE - 128)) | (1 << (HiveSqlParser.T_ALTER - 128)) | (1 << (HiveSqlParser.T_ADD2 - 128)) | (1 << (HiveSqlParser.T_CHAR - 128)) | (1 << (HiveSqlParser.T_BIGINT - 128)) | (1 << (HiveSqlParser.T_BINARY_DOUBLE - 128)) | (1 << (HiveSqlParser.T_BINARY_FLOAT - 128)) | (1 << (HiveSqlParser.T_BIT - 128)) | (1 << (HiveSqlParser.T_DATE - 128)) | (1 << (HiveSqlParser.T_DATETIME - 128)) | (1 << (HiveSqlParser.T_DEC - 128)) | (1 << (HiveSqlParser.T_DECIMAL - 128)) | (1 << (HiveSqlParser.T_DOUBLE - 128)) | (1 << (HiveSqlParser.T_PRECISION - 128)) | (1 << (HiveSqlParser.T_FLOAT - 128)) | (1 << (HiveSqlParser.T_INT - 128)) | (1 << (HiveSqlParser.T_INT2 - 128)) | (1 << (HiveSqlParser.T_INT4 - 128)) | (1 << (HiveSqlParser.T_INT8 - 128)) | (1 << (HiveSqlParser.T_INTEGER - 128)) | (1 << (HiveSqlParser.T_NCHAR - 128)) | (1 << (HiveSqlParser.T_NVARCHAR - 128)) | (1 << (HiveSqlParser.T_NUMBER - 128)) | (1 << (HiveSqlParser.T_NUMERIC - 128)))) !== 0) || ((((_la - 160)) & ~0x1f) == 0 && ((1 << (_la - 160)) & ((1 << (HiveSqlParser.T_REAL - 160)) | (1 << (HiveSqlParser.T_RESULT_SET_LOCATOR - 160)) | (1 << (HiveSqlParser.T_VARYING - 160)) | (1 << (HiveSqlParser.T_SIMPLE_FLOAT - 160)) | (1 << (HiveSqlParser.T_SIMPLE_DOUBLE - 160)) | (1 << (HiveSqlParser.T_SMALLINT - 160)) | (1 << (HiveSqlParser.T_SMALLDATETIME - 160)) | (1 << (HiveSqlParser.T_STRING - 160)) | (1 << (HiveSqlParser.T_SYS_REFCURSOR - 160)) | (1 << (HiveSqlParser.T_TIMESTAMP - 160)) | (1 << (HiveSqlParser.T_VARCHAR - 160)) | (1 << (HiveSqlParser.T_VARCHAR2 - 160)) | (1 << (HiveSqlParser.T_XML - 160)) | (1 << (HiveSqlParser.T_MAX - 160)) | (1 << (HiveSqlParser.T_BYTE - 160)) | (1 << (HiveSqlParser.T_CASESPECIFIC - 160)) | (1 << (HiveSqlParser.T_CS - 160)) | (1 << (HiveSqlParser.T_DATABASE - 160)) | (1 << (HiveSqlParser.T_SCHEMA - 160)) | (1 << (HiveSqlParser.T_LOCATION - 160)) | (1 << (HiveSqlParser.T_OR - 160)) | (1 << (HiveSqlParser.T_FUNCTION - 160)) | (1 << (HiveSqlParser.T_RETURNS - 160)) | (1 << (HiveSqlParser.T_PACKAGE - 160)) | (1 << (HiveSqlParser.T_PROC - 160)) | (1 << (HiveSqlParser.T_BODY - 160)) | (1 << (HiveSqlParser.T_OUT - 160)) | (1 << (HiveSqlParser.T_INOUT - 160)))) !== 0) || ((((_la - 192)) & ~0x1f) == 0 && ((1 << (_la - 192)) & ((1 << (HiveSqlParser.T_LANGUAGE - 192)) | (1 << (HiveSqlParser.T_SQL - 192)) | (1 << (HiveSqlParser.T_SECURITY - 192)) | (1 << (HiveSqlParser.T_CREATOR - 192)) | (1 << (HiveSqlParser.T_DEFINER - 192)) | (1 << (HiveSqlParser.T_INVOKER - 192)) | (1 << (HiveSqlParser.T_OWNER - 192)) | (1 << (HiveSqlParser.T_DYNAMIC - 192)) | (1 << (HiveSqlParser.T_SETS - 192)) | (1 << (HiveSqlParser.T_EXEC - 192)) | (1 << (HiveSqlParser.T_EXECUTE - 192)) | (1 << (HiveSqlParser.T_INTO - 192)) | (1 << (HiveSqlParser.T_INCLUDE - 192)) | (1 << (HiveSqlParser.T_INSERT - 192)) | (1 << (HiveSqlParser.T_OVERWRITE - 192)) | (1 << (HiveSqlParser.T_VALUES - 192)) | (1 << (HiveSqlParser.T_DIRECTORY - 192)) | (1 << (HiveSqlParser.T_GET - 192)) | (1 << (HiveSqlParser.T_DIAGNOSTICS - 192)) | (1 << (HiveSqlParser.T_MESSAGE_TEXT - 192)) | (1 << (HiveSqlParser.T_ROW_COUNT - 192)) | (1 << (HiveSqlParser.T_GRANT - 192)) | (1 << (HiveSqlParser.T_ROLE - 192)) | (1 << (HiveSqlParser.T_LEAVE - 192)) | (1 << (HiveSqlParser.T_OBJECT - 192)) | (1 << (HiveSqlParser.T_AT - 192)) | (1 << (HiveSqlParser.T_OPEN - 192)) | (1 << (HiveSqlParser.T_FETCH - 192)) | (1 << (HiveSqlParser.T_FROM - 192)))) !== 0) || ((((_la - 224)) & ~0x1f) == 0 && ((1 << (_la - 224)) & ((1 << (HiveSqlParser.T_COLLECT - 224)) | (1 << (HiveSqlParser.T_STATISTICS - 224)) | (1 << (HiveSqlParser.T_STATS - 224)) | (1 << (HiveSqlParser.T_COLUMN - 224)) | (1 << (HiveSqlParser.T_CLOSE - 224)) | (1 << (HiveSqlParser.T_CMP - 224)) | (1 << (HiveSqlParser.T_SUM - 224)) | (1 << (HiveSqlParser.T_COPY - 224)) | (1 << (HiveSqlParser.T_HDFS - 224)) | (1 << (HiveSqlParser.T_BATCHSIZE - 224)) | (1 << (HiveSqlParser.T_DELIMITER - 224)) | (1 << (HiveSqlParser.T_SQLINSERT - 224)) | (1 << (HiveSqlParser.T_IGNORE - 224)) | (1 << (HiveSqlParser.T_WORK - 224)) | (1 << (HiveSqlParser.T_PRINT - 224)) | (1 << (HiveSqlParser.T_QUIT - 224)) | (1 << (HiveSqlParser.T_RAISE - 224)) | (1 << (HiveSqlParser.T_RESIGNAL - 224)) | (1 << (HiveSqlParser.T_SQLSTATE - 224)) | (1 << (HiveSqlParser.T_VALUE - 224)) | (1 << (HiveSqlParser.T_ROLLBACK - 224)) | (1 << (HiveSqlParser.T_CURRENT - 224)) | (1 << (HiveSqlParser.T_CURRENT_SCHEMA - 224)) | (1 << (HiveSqlParser.T_ANSI_NULLS - 224)) | (1 << (HiveSqlParser.T_ANSI_PADDING - 224)) | (1 << (HiveSqlParser.T_NOCOUNT - 224)) | (1 << (HiveSqlParser.T_QUOTED_IDENTIFIER - 224)) | (1 << (HiveSqlParser.T_XACT_ABORT - 224)) | (1 << (HiveSqlParser.T_OFF - 224)) | (1 << (HiveSqlParser.T_QUERY_BAND - 224)) | (1 << (HiveSqlParser.T_NONE - 224)) | (1 << (HiveSqlParser.T_SESSION - 224)))) !== 0) || ((((_la - 256)) & ~0x1f) == 0 && ((1 << (_la - 256)) & ((1 << (HiveSqlParser.T_SIGNAL - 256)) | (1 << (HiveSqlParser.T_SUMMARY - 256)) | (1 << (HiveSqlParser.T_TOP - 256)) | (1 << (HiveSqlParser.T_LIMIT - 256)) | (1 << (HiveSqlParser.T_TRUNCATE - 256)) | (1 << (HiveSqlParser.T_USE - 256)) | (1 << (HiveSqlParser.T_WHILE - 256)) | (1 << (HiveSqlParser.T_DO - 256)) | (1 << (HiveSqlParser.T_LOOP - 256)) | (1 << (HiveSqlParser.T_REVERSE - 256)) | (1 << (HiveSqlParser.T_STEP - 256)) | (1 << (HiveSqlParser.T_USING - 256)) | (1 << (HiveSqlParser.T_ALL - 256)) | (1 << (HiveSqlParser.T_EXCEPT - 256)) | (1 << (HiveSqlParser.T_INTERSECT - 256)) | (1 << (HiveSqlParser.T_SELECT - 256)) | (1 << (HiveSqlParser.T_SEL - 256)) | (1 << (HiveSqlParser.T_DISTINCT - 256)) | (1 << (HiveSqlParser.T_TITLE - 256)) | (1 << (HiveSqlParser.T_INNER - 256)) | (1 << (HiveSqlParser.T_JOIN - 256)) | (1 << (HiveSqlParser.T_LEFT - 256)) | (1 << (HiveSqlParser.T_RIGHT - 256)) | (1 << (HiveSqlParser.T_FULL - 256)) | (1 << (HiveSqlParser.T_OUTER - 256)))) !== 0) || ((((_la - 288)) & ~0x1f) == 0 && ((1 << (_la - 288)) & ((1 << (HiveSqlParser.T_GROUP - 288)) | (1 << (HiveSqlParser.T_HAVING - 288)) | (1 << (HiveSqlParser.T_QUALIFY - 288)) | (1 << (HiveSqlParser.T_ORDER - 288)) | (1 << (HiveSqlParser.T_RR - 288)) | (1 << (HiveSqlParser.T_RS - 288)) | (1 << (HiveSqlParser.T_UR - 288)) | (1 << (HiveSqlParser.T_AND - 288)) | (1 << (HiveSqlParser.T_KEEP - 288)) | (1 << (HiveSqlParser.T_EXCLUSIVE - 288)) | (1 << (HiveSqlParser.T_SHARE - 288)) | (1 << (HiveSqlParser.T_LOCKS - 288)) | (1 << (HiveSqlParser.T_MERGE - 288)) | (1 << (HiveSqlParser.T_MATCHED - 288)) | (1 << (HiveSqlParser.T_DESCRIBE - 288)) | (1 << (HiveSqlParser.T_BETWEEN - 288)) | (1 << (HiveSqlParser.T_RLIKE - 288)) | (1 << (HiveSqlParser.T_REGEXP - 288)) | (1 << (HiveSqlParser.T_INTERVAL - 288)) | (1 << (HiveSqlParser.T_DAY - 288)) | (1 << (HiveSqlParser.T_DAYS - 288)) | (1 << (HiveSqlParser.T_MICROSECOND - 288)) | (1 << (HiveSqlParser.T_MICROSECONDS - 288)))) !== 0) || ((((_la - 320)) & ~0x1f) == 0 && ((1 << (_la - 320)) & ((1 << (HiveSqlParser.T_SECOND - 320)) | (1 << (HiveSqlParser.T_SECONDS - 320)) | (1 << (HiveSqlParser.T_CONCAT - 320)) | (1 << (HiveSqlParser.T_CASE - 320)) | (1 << (HiveSqlParser.T_ISOPEN - 320)) | (1 << (HiveSqlParser.T_NOTFOUND - 320)) | (1 << (HiveSqlParser.T_AVG - 320)) | (1 << (HiveSqlParser.T_COUNT - 320)) | (1 << (HiveSqlParser.T_COUNT_BIG - 320)) | (1 << (HiveSqlParser.T_CUME_DIST - 320)) | (1 << (HiveSqlParser.T_DENSE_RANK - 320)) | (1 << (HiveSqlParser.T_FIRST_VALUE - 320)) | (1 << (HiveSqlParser.T_LAG - 320)) | (1 << (HiveSqlParser.T_LAST_VALUE - 320)) | (1 << (HiveSqlParser.T_LEAD - 320)) | (1 << (HiveSqlParser.T_MIN - 320)) | (1 << (HiveSqlParser.T_RANK - 320)) | (1 << (HiveSqlParser.T_ROW_NUMBER - 320)) | (1 << (HiveSqlParser.T_STDEV - 320)) | (1 << (HiveSqlParser.T_VAR - 320)) | (1 << (HiveSqlParser.T_VARIANCE - 320)) | (1 << (HiveSqlParser.T_OVER - 320)) | (1 << (HiveSqlParser.T_PARTITION - 320)) | (1 << (HiveSqlParser.T_ACTIVITY_COUNT - 320)) | (1 << (HiveSqlParser.T_CAST - 320)) | (1 << (HiveSqlParser.T_CURRENT_DATE - 320)) | (1 << (HiveSqlParser.T_CURRENT_TIMESTAMP - 320)) | (1 << (HiveSqlParser.T_CURRENT_USER - 320)) | (1 << (HiveSqlParser.T_USER - 320)))) !== 0) || ((((_la - 356)) & ~0x1f) == 0 && ((1 << (_la - 356)) & ((1 << (HiveSqlParser.T_PART_COUNT - 356)) | (1 << (HiveSqlParser.T_PART_LOC - 356)) | (1 << (HiveSqlParser.T_TRIM - 356)) | (1 << (HiveSqlParser.T_SUBSTRING - 356)) | (1 << (HiveSqlParser.T_SYSDATE - 356)) | (1 << (HiveSqlParser.T_HIVE - 356)) | (1 << (HiveSqlParser.T_HOST - 356)) | (1 << (HiveSqlParser.T_TRUE - 356)) | (1 << (HiveSqlParser.T_FALSE - 356)) | (1 << (HiveSqlParser.T_DIR - 356)) | (1 << (HiveSqlParser.T_FILE - 356)) | (1 << (HiveSqlParser.T_FILES - 356)) | (1 << (HiveSqlParser.T_NEW - 356)) | (1 << (HiveSqlParser.T_PWD - 356)) | (1 << (HiveSqlParser.T_SESSIONS - 356)) | (1 << (HiveSqlParser.T_SUBDIR - 356)))) !== 0)) {
            this.state = 1498;
            this.package_body_item();
            this.state = 1499;
            this.match(HiveSqlParser.T_SEMICOLON);
            this.state = 1505;
            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 Package_body_itemContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_package_body_item;
    return this;
}

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

Package_body_itemContext.prototype.declare_stmt_item = function() {
    return this.getTypedRuleContext(Declare_stmt_itemContext,0);
};

Package_body_itemContext.prototype.create_function_stmt = function() {
    return this.getTypedRuleContext(Create_function_stmtContext,0);
};

Package_body_itemContext.prototype.create_procedure_stmt = function() {
    return this.getTypedRuleContext(Create_procedure_stmtContext,0);
};

Package_body_itemContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterPackage_body_item(this);
	}
};

Package_body_itemContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitPackage_body_item(this);
	}
};

Package_body_itemContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitPackage_body_item(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Package_body_itemContext = Package_body_itemContext;

HiveSqlParser.prototype.package_body_item = function() {

    var localctx = new Package_body_itemContext(this, this._ctx, this.state);
    this.enterRule(localctx, 144, HiveSqlParser.RULE_package_body_item);
    try {
        this.state = 1509;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,151,this._ctx);
        switch(la_) {
        case 1:
            this.enterOuterAlt(localctx, 1);
            this.state = 1506;
            this.declare_stmt_item();
            break;

        case 2:
            this.enterOuterAlt(localctx, 2);
            this.state = 1507;
            this.create_function_stmt();
            break;

        case 3:
            this.enterOuterAlt(localctx, 3);
            this.state = 1508;
            this.create_procedure_stmt();
            break;

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


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

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

Create_procedure_stmtContext.prototype.ident = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(IdentContext);
    } else {
        return this.getTypedRuleContext(IdentContext,i);
    }
};

Create_procedure_stmtContext.prototype.proc_block = function() {
    return this.getTypedRuleContext(Proc_blockContext,0);
};

Create_procedure_stmtContext.prototype.T_PROCEDURE = function() {
    return this.getToken(HiveSqlParser.T_PROCEDURE, 0);
};

Create_procedure_stmtContext.prototype.T_PROC = function() {
    return this.getToken(HiveSqlParser.T_PROC, 0);
};

Create_procedure_stmtContext.prototype.T_ALTER = function() {
    return this.getToken(HiveSqlParser.T_ALTER, 0);
};

Create_procedure_stmtContext.prototype.T_CREATE = function() {
    return this.getToken(HiveSqlParser.T_CREATE, 0);
};

Create_procedure_stmtContext.prototype.T_REPLACE = function() {
    return this.getToken(HiveSqlParser.T_REPLACE, 0);
};

Create_procedure_stmtContext.prototype.create_routine_params = function() {
    return this.getTypedRuleContext(Create_routine_paramsContext,0);
};

Create_procedure_stmtContext.prototype.create_routine_options = function() {
    return this.getTypedRuleContext(Create_routine_optionsContext,0);
};

Create_procedure_stmtContext.prototype.declare_block_inplace = function() {
    return this.getTypedRuleContext(Declare_block_inplaceContext,0);
};

Create_procedure_stmtContext.prototype.label = function() {
    return this.getTypedRuleContext(LabelContext,0);
};

Create_procedure_stmtContext.prototype.T_SEMICOLON = function() {
    return this.getToken(HiveSqlParser.T_SEMICOLON, 0);
};

Create_procedure_stmtContext.prototype.T_AS = function() {
    return this.getToken(HiveSqlParser.T_AS, 0);
};

Create_procedure_stmtContext.prototype.T_IS = function() {
    return this.getToken(HiveSqlParser.T_IS, 0);
};

Create_procedure_stmtContext.prototype.T_OR = function() {
    return this.getToken(HiveSqlParser.T_OR, 0);
};

Create_procedure_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterCreate_procedure_stmt(this);
	}
};

Create_procedure_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitCreate_procedure_stmt(this);
	}
};

Create_procedure_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitCreate_procedure_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Create_procedure_stmtContext = Create_procedure_stmtContext;

HiveSqlParser.prototype.create_procedure_stmt = function() {

    var localctx = new Create_procedure_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 146, HiveSqlParser.RULE_create_procedure_stmt);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1518;
        this._errHandler.sync(this);
        switch (this._input.LA(1)) {
        case HiveSqlParser.T_ALTER:
        	this.state = 1511;
        	this.match(HiveSqlParser.T_ALTER);
        	break;
        case HiveSqlParser.T_CREATE:
        	this.state = 1512;
        	this.match(HiveSqlParser.T_CREATE);
        	this.state = 1515;
        	this._errHandler.sync(this);
        	_la = this._input.LA(1);
        	if(_la===HiveSqlParser.T_OR) {
        	    this.state = 1513;
        	    this.match(HiveSqlParser.T_OR);
        	    this.state = 1514;
        	    this.match(HiveSqlParser.T_REPLACE);
        	}

        	break;
        case HiveSqlParser.T_REPLACE:
        	this.state = 1517;
        	this.match(HiveSqlParser.T_REPLACE);
        	break;
        case HiveSqlParser.T_PROCEDURE:
        case HiveSqlParser.T_PROC:
        	break;
        default:
        	break;
        }
        this.state = 1520;
        _la = this._input.LA(1);
        if(!(_la===HiveSqlParser.T_PROCEDURE || _la===HiveSqlParser.T_PROC)) {
        this._errHandler.recoverInline(this);
        }
        else {
        	this._errHandler.reportMatch(this);
            this.consume();
        }
        this.state = 1521;
        this.ident();
        this.state = 1523;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,154,this._ctx);
        if(la_===1) {
            this.state = 1522;
            this.create_routine_params();

        }
        this.state = 1526;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,155,this._ctx);
        if(la_===1) {
            this.state = 1525;
            this.create_routine_options();

        }
        this.state = 1529;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,156,this._ctx);
        if(la_===1) {
            this.state = 1528;
            _la = this._input.LA(1);
            if(!(_la===HiveSqlParser.T_AS || _la===HiveSqlParser.T_IS)) {
            this._errHandler.recoverInline(this);
            }
            else {
            	this._errHandler.reportMatch(this);
                this.consume();
            }

        }
        this.state = 1532;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,157,this._ctx);
        if(la_===1) {
            this.state = 1531;
            this.declare_block_inplace();

        }
        this.state = 1535;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,158,this._ctx);
        if(la_===1) {
            this.state = 1534;
            this.label();

        }
        this.state = 1537;
        this.proc_block();
        this.state = 1541;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,159,this._ctx);
        if(la_===1) {
            this.state = 1538;
            this.ident();
            this.state = 1539;
            this.match(HiveSqlParser.T_SEMICOLON);

        }
    } 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 Create_routine_paramsContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_create_routine_params;
    return this;
}

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

Create_routine_paramsContext.prototype.T_OPEN_P = function() {
    return this.getToken(HiveSqlParser.T_OPEN_P, 0);
};

Create_routine_paramsContext.prototype.T_CLOSE_P = function() {
    return this.getToken(HiveSqlParser.T_CLOSE_P, 0);
};

Create_routine_paramsContext.prototype.create_routine_param_item = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Create_routine_param_itemContext);
    } else {
        return this.getTypedRuleContext(Create_routine_param_itemContext,i);
    }
};

Create_routine_paramsContext.prototype.T_COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_COMMA);
    } else {
        return this.getToken(HiveSqlParser.T_COMMA, i);
    }
};


Create_routine_paramsContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterCreate_routine_params(this);
	}
};

Create_routine_paramsContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitCreate_routine_params(this);
	}
};

Create_routine_paramsContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitCreate_routine_params(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Create_routine_paramsContext = Create_routine_paramsContext;

HiveSqlParser.prototype.create_routine_params = function() {

    var localctx = new Create_routine_paramsContext(this, this._ctx, this.state);
    this.enterRule(localctx, 148, HiveSqlParser.RULE_create_routine_params);
    var _la = 0; // Token type
    try {
        this.state = 1565;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,162,this._ctx);
        switch(la_) {
        case 1:
            this.enterOuterAlt(localctx, 1);
            this.state = 1543;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 1544;
            this.match(HiveSqlParser.T_CLOSE_P);
            break;

        case 2:
            this.enterOuterAlt(localctx, 2);
            this.state = 1545;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 1546;
            this.create_routine_param_item();
            this.state = 1551;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            while(_la===HiveSqlParser.T_COMMA) {
                this.state = 1547;
                this.match(HiveSqlParser.T_COMMA);
                this.state = 1548;
                this.create_routine_param_item();
                this.state = 1553;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
            }
            this.state = 1554;
            this.match(HiveSqlParser.T_CLOSE_P);
            break;

        case 3:
            this.enterOuterAlt(localctx, 3);
            this.state = 1556;
            if (!( !this._input.LT(1).getText().equalsIgnoreCase("IS") &&
                    !this._input.LT(1).getText().equalsIgnoreCase("AS") &&
                    !(this._input.LT(1).getText().equalsIgnoreCase("DYNAMIC") && this._input.LT(2).getText().equalsIgnoreCase("RESULT"))
                    )) {
                throw new antlr4.error.FailedPredicateException(this, "!this._input.LT(1).getText().equalsIgnoreCase(\"IS\") &&\n        !this._input.LT(1).getText().equalsIgnoreCase(\"AS\") &&\n        !(this._input.LT(1).getText().equalsIgnoreCase(\"DYNAMIC\") && this._input.LT(2).getText().equalsIgnoreCase(\"RESULT\"))\n        ");
            }
            this.state = 1557;
            this.create_routine_param_item();
            this.state = 1562;
            this._errHandler.sync(this);
            var _alt = this._interp.adaptivePredict(this._input,161,this._ctx)
            while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
                if(_alt===1) {
                    this.state = 1558;
                    this.match(HiveSqlParser.T_COMMA);
                    this.state = 1559;
                    this.create_routine_param_item(); 
                }
                this.state = 1564;
                this._errHandler.sync(this);
                _alt = this._interp.adaptivePredict(this._input,161,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 Create_routine_param_itemContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_create_routine_param_item;
    return this;
}

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

Create_routine_param_itemContext.prototype.ident = function() {
    return this.getTypedRuleContext(IdentContext,0);
};

Create_routine_param_itemContext.prototype.dtype = function() {
    return this.getTypedRuleContext(DtypeContext,0);
};

Create_routine_param_itemContext.prototype.T_IN = function() {
    return this.getToken(HiveSqlParser.T_IN, 0);
};

Create_routine_param_itemContext.prototype.T_OUT = function() {
    return this.getToken(HiveSqlParser.T_OUT, 0);
};

Create_routine_param_itemContext.prototype.T_INOUT = function() {
    return this.getToken(HiveSqlParser.T_INOUT, 0);
};

Create_routine_param_itemContext.prototype.dtype_len = function() {
    return this.getTypedRuleContext(Dtype_lenContext,0);
};

Create_routine_param_itemContext.prototype.dtype_attr = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Dtype_attrContext);
    } else {
        return this.getTypedRuleContext(Dtype_attrContext,i);
    }
};

Create_routine_param_itemContext.prototype.dtype_default = function() {
    return this.getTypedRuleContext(Dtype_defaultContext,0);
};

Create_routine_param_itemContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterCreate_routine_param_item(this);
	}
};

Create_routine_param_itemContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitCreate_routine_param_item(this);
	}
};

Create_routine_param_itemContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitCreate_routine_param_item(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Create_routine_param_itemContext = Create_routine_param_itemContext;

HiveSqlParser.prototype.create_routine_param_item = function() {

    var localctx = new Create_routine_param_itemContext(this, this._ctx, this.state);
    this.enterRule(localctx, 150, HiveSqlParser.RULE_create_routine_param_item);
    try {
        this.state = 1609;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,171,this._ctx);
        switch(la_) {
        case 1:
            this.enterOuterAlt(localctx, 1);
            this.state = 1572;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,163,this._ctx);
            if(la_===1) {
                this.state = 1567;
                this.match(HiveSqlParser.T_IN);

            } else if(la_===2) {
                this.state = 1568;
                this.match(HiveSqlParser.T_OUT);

            } else if(la_===3) {
                this.state = 1569;
                this.match(HiveSqlParser.T_INOUT);

            } else if(la_===4) {
                this.state = 1570;
                this.match(HiveSqlParser.T_IN);
                this.state = 1571;
                this.match(HiveSqlParser.T_OUT);

            }
            this.state = 1574;
            this.ident();
            this.state = 1575;
            this.dtype();
            this.state = 1577;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,164,this._ctx);
            if(la_===1) {
                this.state = 1576;
                this.dtype_len();

            }
            this.state = 1582;
            this._errHandler.sync(this);
            var _alt = this._interp.adaptivePredict(this._input,165,this._ctx)
            while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
                if(_alt===1) {
                    this.state = 1579;
                    this.dtype_attr(); 
                }
                this.state = 1584;
                this._errHandler.sync(this);
                _alt = this._interp.adaptivePredict(this._input,165,this._ctx);
            }

            this.state = 1586;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,166,this._ctx);
            if(la_===1) {
                this.state = 1585;
                this.dtype_default();

            }
            break;

        case 2:
            this.enterOuterAlt(localctx, 2);
            this.state = 1588;
            this.ident();
            this.state = 1594;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,167,this._ctx);
            if(la_===1) {
                this.state = 1589;
                this.match(HiveSqlParser.T_IN);

            } else if(la_===2) {
                this.state = 1590;
                this.match(HiveSqlParser.T_OUT);

            } else if(la_===3) {
                this.state = 1591;
                this.match(HiveSqlParser.T_INOUT);

            } else if(la_===4) {
                this.state = 1592;
                this.match(HiveSqlParser.T_IN);
                this.state = 1593;
                this.match(HiveSqlParser.T_OUT);

            }
            this.state = 1596;
            this.dtype();
            this.state = 1598;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,168,this._ctx);
            if(la_===1) {
                this.state = 1597;
                this.dtype_len();

            }
            this.state = 1603;
            this._errHandler.sync(this);
            var _alt = this._interp.adaptivePredict(this._input,169,this._ctx)
            while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
                if(_alt===1) {
                    this.state = 1600;
                    this.dtype_attr(); 
                }
                this.state = 1605;
                this._errHandler.sync(this);
                _alt = this._interp.adaptivePredict(this._input,169,this._ctx);
            }

            this.state = 1607;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,170,this._ctx);
            if(la_===1) {
                this.state = 1606;
                this.dtype_default();

            }
            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 Create_routine_optionsContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_create_routine_options;
    return this;
}

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

Create_routine_optionsContext.prototype.create_routine_option = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Create_routine_optionContext);
    } else {
        return this.getTypedRuleContext(Create_routine_optionContext,i);
    }
};

Create_routine_optionsContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterCreate_routine_options(this);
	}
};

Create_routine_optionsContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitCreate_routine_options(this);
	}
};

Create_routine_optionsContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitCreate_routine_options(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Create_routine_optionsContext = Create_routine_optionsContext;

HiveSqlParser.prototype.create_routine_options = function() {

    var localctx = new Create_routine_optionsContext(this, this._ctx, this.state);
    this.enterRule(localctx, 152, HiveSqlParser.RULE_create_routine_options);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1612; 
        this._errHandler.sync(this);
        var _alt = 1;
        do {
        	switch (_alt) {
        	case 1:
        		this.state = 1611;
        		this.create_routine_option();
        		break;
        	default:
        		throw new antlr4.error.NoViableAltException(this);
        	}
        	this.state = 1614; 
        	this._errHandler.sync(this);
        	_alt = this._interp.adaptivePredict(this._input,172, 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 Create_routine_optionContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_create_routine_option;
    return this;
}

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

Create_routine_optionContext.prototype.T_LANGUAGE = function() {
    return this.getToken(HiveSqlParser.T_LANGUAGE, 0);
};

Create_routine_optionContext.prototype.T_SQL = function() {
    return this.getToken(HiveSqlParser.T_SQL, 0);
};

Create_routine_optionContext.prototype.T_SECURITY = function() {
    return this.getToken(HiveSqlParser.T_SECURITY, 0);
};

Create_routine_optionContext.prototype.T_CREATOR = function() {
    return this.getToken(HiveSqlParser.T_CREATOR, 0);
};

Create_routine_optionContext.prototype.T_DEFINER = function() {
    return this.getToken(HiveSqlParser.T_DEFINER, 0);
};

Create_routine_optionContext.prototype.T_INVOKER = function() {
    return this.getToken(HiveSqlParser.T_INVOKER, 0);
};

Create_routine_optionContext.prototype.T_OWNER = function() {
    return this.getToken(HiveSqlParser.T_OWNER, 0);
};

Create_routine_optionContext.prototype.T_RESULT = function() {
    return this.getToken(HiveSqlParser.T_RESULT, 0);
};

Create_routine_optionContext.prototype.T_SETS = function() {
    return this.getToken(HiveSqlParser.T_SETS, 0);
};

Create_routine_optionContext.prototype.L_INT = function() {
    return this.getToken(HiveSqlParser.L_INT, 0);
};

Create_routine_optionContext.prototype.T_DYNAMIC = function() {
    return this.getToken(HiveSqlParser.T_DYNAMIC, 0);
};

Create_routine_optionContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterCreate_routine_option(this);
	}
};

Create_routine_optionContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitCreate_routine_option(this);
	}
};

Create_routine_optionContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitCreate_routine_option(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Create_routine_optionContext = Create_routine_optionContext;

HiveSqlParser.prototype.create_routine_option = function() {

    var localctx = new Create_routine_optionContext(this, this._ctx, this.state);
    this.enterRule(localctx, 154, HiveSqlParser.RULE_create_routine_option);
    var _la = 0; // Token type
    try {
        this.state = 1627;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case HiveSqlParser.T_LANGUAGE:
            this.enterOuterAlt(localctx, 1);
            this.state = 1616;
            this.match(HiveSqlParser.T_LANGUAGE);
            this.state = 1617;
            this.match(HiveSqlParser.T_SQL);
            break;
        case HiveSqlParser.T_SQL:
            this.enterOuterAlt(localctx, 2);
            this.state = 1618;
            this.match(HiveSqlParser.T_SQL);
            this.state = 1619;
            this.match(HiveSqlParser.T_SECURITY);
            this.state = 1620;
            _la = this._input.LA(1);
            if(!(((((_la - 195)) & ~0x1f) == 0 && ((1 << (_la - 195)) & ((1 << (HiveSqlParser.T_CREATOR - 195)) | (1 << (HiveSqlParser.T_DEFINER - 195)) | (1 << (HiveSqlParser.T_INVOKER - 195)) | (1 << (HiveSqlParser.T_OWNER - 195)))) !== 0))) {
            this._errHandler.recoverInline(this);
            }
            else {
            	this._errHandler.reportMatch(this);
                this.consume();
            }
            break;
        case HiveSqlParser.T_RESULT:
        case HiveSqlParser.T_DYNAMIC:
            this.enterOuterAlt(localctx, 3);
            this.state = 1622;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===HiveSqlParser.T_DYNAMIC) {
                this.state = 1621;
                this.match(HiveSqlParser.T_DYNAMIC);
            }

            this.state = 1624;
            this.match(HiveSqlParser.T_RESULT);
            this.state = 1625;
            this.match(HiveSqlParser.T_SETS);
            this.state = 1626;
            this.match(HiveSqlParser.L_INT);
            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 Drop_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_drop_stmt;
    return this;
}

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

Drop_stmtContext.prototype.T_DROP = function() {
    return this.getToken(HiveSqlParser.T_DROP, 0);
};

Drop_stmtContext.prototype.T_TABLE = function() {
    return this.getToken(HiveSqlParser.T_TABLE, 0);
};

Drop_stmtContext.prototype.table_name = function() {
    return this.getTypedRuleContext(Table_nameContext,0);
};

Drop_stmtContext.prototype.T_IF = function() {
    return this.getToken(HiveSqlParser.T_IF, 0);
};

Drop_stmtContext.prototype.T_EXISTS = function() {
    return this.getToken(HiveSqlParser.T_EXISTS, 0);
};

Drop_stmtContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Drop_stmtContext.prototype.T_DATABASE = function() {
    return this.getToken(HiveSqlParser.T_DATABASE, 0);
};

Drop_stmtContext.prototype.T_SCHEMA = function() {
    return this.getToken(HiveSqlParser.T_SCHEMA, 0);
};

Drop_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterDrop_stmt(this);
	}
};

Drop_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitDrop_stmt(this);
	}
};

Drop_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitDrop_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Drop_stmtContext = Drop_stmtContext;

HiveSqlParser.prototype.drop_stmt = function() {

    var localctx = new Drop_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 156, HiveSqlParser.RULE_drop_stmt);
    var _la = 0; // Token type
    try {
        this.state = 1643;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,177,this._ctx);
        switch(la_) {
        case 1:
            this.enterOuterAlt(localctx, 1);
            this.state = 1629;
            this.match(HiveSqlParser.T_DROP);
            this.state = 1630;
            this.match(HiveSqlParser.T_TABLE);
            this.state = 1633;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,175,this._ctx);
            if(la_===1) {
                this.state = 1631;
                this.match(HiveSqlParser.T_IF);
                this.state = 1632;
                this.match(HiveSqlParser.T_EXISTS);

            }
            this.state = 1635;
            this.table_name();
            break;

        case 2:
            this.enterOuterAlt(localctx, 2);
            this.state = 1636;
            this.match(HiveSqlParser.T_DROP);
            this.state = 1637;
            _la = this._input.LA(1);
            if(!(_la===HiveSqlParser.T_DATABASE || _la===HiveSqlParser.T_SCHEMA)) {
            this._errHandler.recoverInline(this);
            }
            else {
            	this._errHandler.reportMatch(this);
                this.consume();
            }
            this.state = 1640;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,176,this._ctx);
            if(la_===1) {
                this.state = 1638;
                this.match(HiveSqlParser.T_IF);
                this.state = 1639;
                this.match(HiveSqlParser.T_EXISTS);

            }
            this.state = 1642;
            this.expr(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 End_transaction_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_end_transaction_stmt;
    return this;
}

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

End_transaction_stmtContext.prototype.T_END = function() {
    return this.getToken(HiveSqlParser.T_END, 0);
};

End_transaction_stmtContext.prototype.T_TRANSACTION = function() {
    return this.getToken(HiveSqlParser.T_TRANSACTION, 0);
};

End_transaction_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterEnd_transaction_stmt(this);
	}
};

End_transaction_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitEnd_transaction_stmt(this);
	}
};

End_transaction_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitEnd_transaction_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.End_transaction_stmtContext = End_transaction_stmtContext;

HiveSqlParser.prototype.end_transaction_stmt = function() {

    var localctx = new End_transaction_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 158, HiveSqlParser.RULE_end_transaction_stmt);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1645;
        this.match(HiveSqlParser.T_END);
        this.state = 1646;
        this.match(HiveSqlParser.T_TRANSACTION);
    } 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 Exec_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_exec_stmt;
    return this;
}

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

Exec_stmtContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Exec_stmtContext.prototype.T_EXEC = function() {
    return this.getToken(HiveSqlParser.T_EXEC, 0);
};

Exec_stmtContext.prototype.T_EXECUTE = function() {
    return this.getToken(HiveSqlParser.T_EXECUTE, 0);
};

Exec_stmtContext.prototype.T_IMMEDIATE = function() {
    return this.getToken(HiveSqlParser.T_IMMEDIATE, 0);
};

Exec_stmtContext.prototype.T_OPEN_P = function() {
    return this.getToken(HiveSqlParser.T_OPEN_P, 0);
};

Exec_stmtContext.prototype.expr_func_params = function() {
    return this.getTypedRuleContext(Expr_func_paramsContext,0);
};

Exec_stmtContext.prototype.T_CLOSE_P = function() {
    return this.getToken(HiveSqlParser.T_CLOSE_P, 0);
};

Exec_stmtContext.prototype.T_INTO = function() {
    return this.getToken(HiveSqlParser.T_INTO, 0);
};

Exec_stmtContext.prototype.L_ID = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.L_ID);
    } else {
        return this.getToken(HiveSqlParser.L_ID, i);
    }
};


Exec_stmtContext.prototype.using_clause = function() {
    return this.getTypedRuleContext(Using_clauseContext,0);
};

Exec_stmtContext.prototype.T_COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_COMMA);
    } else {
        return this.getToken(HiveSqlParser.T_COMMA, i);
    }
};


Exec_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterExec_stmt(this);
	}
};

Exec_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitExec_stmt(this);
	}
};

Exec_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitExec_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Exec_stmtContext = Exec_stmtContext;

HiveSqlParser.prototype.exec_stmt = function() {

    var localctx = new Exec_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 160, HiveSqlParser.RULE_exec_stmt);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1648;
        _la = this._input.LA(1);
        if(!(_la===HiveSqlParser.T_EXEC || _la===HiveSqlParser.T_EXECUTE)) {
        this._errHandler.recoverInline(this);
        }
        else {
        	this._errHandler.reportMatch(this);
            this.consume();
        }
        this.state = 1650;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,178,this._ctx);
        if(la_===1) {
            this.state = 1649;
            this.match(HiveSqlParser.T_IMMEDIATE);

        }
        this.state = 1652;
        this.expr(0);
        this.state = 1658;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,179,this._ctx);
        if(la_===1) {
            this.state = 1653;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 1654;
            this.expr_func_params();
            this.state = 1655;
            this.match(HiveSqlParser.T_CLOSE_P);

        } else if(la_===2) {
            this.state = 1657;
            this.expr_func_params();

        }
        this.state = 1669;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,181,this._ctx);
        if(la_===1) {
            this.state = 1660;
            this.match(HiveSqlParser.T_INTO);
            this.state = 1661;
            this.match(HiveSqlParser.L_ID);
            this.state = 1666;
            this._errHandler.sync(this);
            var _alt = this._interp.adaptivePredict(this._input,180,this._ctx)
            while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
                if(_alt===1) {
                    this.state = 1662;
                    this.match(HiveSqlParser.T_COMMA);
                    this.state = 1663;
                    this.match(HiveSqlParser.L_ID); 
                }
                this.state = 1668;
                this._errHandler.sync(this);
                _alt = this._interp.adaptivePredict(this._input,180,this._ctx);
            }


        }
        this.state = 1672;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,182,this._ctx);
        if(la_===1) {
            this.state = 1671;
            this.using_clause();

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


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

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

If_stmtContext.prototype.if_plsql_stmt = function() {
    return this.getTypedRuleContext(If_plsql_stmtContext,0);
};

If_stmtContext.prototype.if_tsql_stmt = function() {
    return this.getTypedRuleContext(If_tsql_stmtContext,0);
};

If_stmtContext.prototype.if_bteq_stmt = function() {
    return this.getTypedRuleContext(If_bteq_stmtContext,0);
};

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

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

If_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitIf_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.If_stmtContext = If_stmtContext;

HiveSqlParser.prototype.if_stmt = function() {

    var localctx = new If_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 162, HiveSqlParser.RULE_if_stmt);
    try {
        this.state = 1677;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,183,this._ctx);
        switch(la_) {
        case 1:
            this.enterOuterAlt(localctx, 1);
            this.state = 1674;
            this.if_plsql_stmt();
            break;

        case 2:
            this.enterOuterAlt(localctx, 2);
            this.state = 1675;
            this.if_tsql_stmt();
            break;

        case 3:
            this.enterOuterAlt(localctx, 3);
            this.state = 1676;
            this.if_bteq_stmt();
            break;

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


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

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

If_plsql_stmtContext.prototype.T_IF = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_IF);
    } else {
        return this.getToken(HiveSqlParser.T_IF, i);
    }
};


If_plsql_stmtContext.prototype.bool_expr = function() {
    return this.getTypedRuleContext(Bool_exprContext,0);
};

If_plsql_stmtContext.prototype.T_THEN = function() {
    return this.getToken(HiveSqlParser.T_THEN, 0);
};

If_plsql_stmtContext.prototype.block = function() {
    return this.getTypedRuleContext(BlockContext,0);
};

If_plsql_stmtContext.prototype.T_END = function() {
    return this.getToken(HiveSqlParser.T_END, 0);
};

If_plsql_stmtContext.prototype.elseif_block = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Elseif_blockContext);
    } else {
        return this.getTypedRuleContext(Elseif_blockContext,i);
    }
};

If_plsql_stmtContext.prototype.else_block = function() {
    return this.getTypedRuleContext(Else_blockContext,0);
};

If_plsql_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterIf_plsql_stmt(this);
	}
};

If_plsql_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitIf_plsql_stmt(this);
	}
};

If_plsql_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitIf_plsql_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.If_plsql_stmtContext = If_plsql_stmtContext;

HiveSqlParser.prototype.if_plsql_stmt = function() {

    var localctx = new If_plsql_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 164, HiveSqlParser.RULE_if_plsql_stmt);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1679;
        this.match(HiveSqlParser.T_IF);
        this.state = 1680;
        this.bool_expr(0);
        this.state = 1681;
        this.match(HiveSqlParser.T_THEN);
        this.state = 1682;
        this.block();
        this.state = 1686;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===HiveSqlParser.T_ELSIF || _la===HiveSqlParser.T_ELSEIF) {
            this.state = 1683;
            this.elseif_block();
            this.state = 1688;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
        this.state = 1690;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===HiveSqlParser.T_ELSE) {
            this.state = 1689;
            this.else_block();
        }

        this.state = 1692;
        this.match(HiveSqlParser.T_END);
        this.state = 1693;
        this.match(HiveSqlParser.T_IF);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


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

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

If_tsql_stmtContext.prototype.T_IF = function() {
    return this.getToken(HiveSqlParser.T_IF, 0);
};

If_tsql_stmtContext.prototype.bool_expr = function() {
    return this.getTypedRuleContext(Bool_exprContext,0);
};

If_tsql_stmtContext.prototype.single_block_stmt = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Single_block_stmtContext);
    } else {
        return this.getTypedRuleContext(Single_block_stmtContext,i);
    }
};

If_tsql_stmtContext.prototype.T_ELSE = function() {
    return this.getToken(HiveSqlParser.T_ELSE, 0);
};

If_tsql_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterIf_tsql_stmt(this);
	}
};

If_tsql_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitIf_tsql_stmt(this);
	}
};

If_tsql_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitIf_tsql_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.If_tsql_stmtContext = If_tsql_stmtContext;

HiveSqlParser.prototype.if_tsql_stmt = function() {

    var localctx = new If_tsql_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 166, HiveSqlParser.RULE_if_tsql_stmt);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1695;
        this.match(HiveSqlParser.T_IF);
        this.state = 1696;
        this.bool_expr(0);
        this.state = 1697;
        this.single_block_stmt();
        this.state = 1700;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,186,this._ctx);
        if(la_===1) {
            this.state = 1698;
            this.match(HiveSqlParser.T_ELSE);
            this.state = 1699;
            this.single_block_stmt();

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


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

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

If_bteq_stmtContext.prototype.T_IF = function() {
    return this.getToken(HiveSqlParser.T_IF, 0);
};

If_bteq_stmtContext.prototype.bool_expr = function() {
    return this.getTypedRuleContext(Bool_exprContext,0);
};

If_bteq_stmtContext.prototype.T_THEN = function() {
    return this.getToken(HiveSqlParser.T_THEN, 0);
};

If_bteq_stmtContext.prototype.single_block_stmt = function() {
    return this.getTypedRuleContext(Single_block_stmtContext,0);
};

If_bteq_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterIf_bteq_stmt(this);
	}
};

If_bteq_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitIf_bteq_stmt(this);
	}
};

If_bteq_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitIf_bteq_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.If_bteq_stmtContext = If_bteq_stmtContext;

HiveSqlParser.prototype.if_bteq_stmt = function() {

    var localctx = new If_bteq_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 168, HiveSqlParser.RULE_if_bteq_stmt);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1702;
        this.match(HiveSqlParser.T__4);
        this.state = 1703;
        this.match(HiveSqlParser.T_IF);
        this.state = 1704;
        this.bool_expr(0);
        this.state = 1705;
        this.match(HiveSqlParser.T_THEN);
        this.state = 1706;
        this.single_block_stmt();
    } 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 Elseif_blockContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_elseif_block;
    return this;
}

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

Elseif_blockContext.prototype.bool_expr = function() {
    return this.getTypedRuleContext(Bool_exprContext,0);
};

Elseif_blockContext.prototype.T_THEN = function() {
    return this.getToken(HiveSqlParser.T_THEN, 0);
};

Elseif_blockContext.prototype.block = function() {
    return this.getTypedRuleContext(BlockContext,0);
};

Elseif_blockContext.prototype.T_ELSIF = function() {
    return this.getToken(HiveSqlParser.T_ELSIF, 0);
};

Elseif_blockContext.prototype.T_ELSEIF = function() {
    return this.getToken(HiveSqlParser.T_ELSEIF, 0);
};

Elseif_blockContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterElseif_block(this);
	}
};

Elseif_blockContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitElseif_block(this);
	}
};

Elseif_blockContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitElseif_block(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Elseif_blockContext = Elseif_blockContext;

HiveSqlParser.prototype.elseif_block = function() {

    var localctx = new Elseif_blockContext(this, this._ctx, this.state);
    this.enterRule(localctx, 170, HiveSqlParser.RULE_elseif_block);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1708;
        _la = this._input.LA(1);
        if(!(_la===HiveSqlParser.T_ELSIF || _la===HiveSqlParser.T_ELSEIF)) {
        this._errHandler.recoverInline(this);
        }
        else {
        	this._errHandler.reportMatch(this);
            this.consume();
        }
        this.state = 1709;
        this.bool_expr(0);
        this.state = 1710;
        this.match(HiveSqlParser.T_THEN);
        this.state = 1711;
        this.block();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


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

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

Else_blockContext.prototype.T_ELSE = function() {
    return this.getToken(HiveSqlParser.T_ELSE, 0);
};

Else_blockContext.prototype.block = function() {
    return this.getTypedRuleContext(BlockContext,0);
};

Else_blockContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterElse_block(this);
	}
};

Else_blockContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitElse_block(this);
	}
};

Else_blockContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitElse_block(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Else_blockContext = Else_blockContext;

HiveSqlParser.prototype.else_block = function() {

    var localctx = new Else_blockContext(this, this._ctx, this.state);
    this.enterRule(localctx, 172, HiveSqlParser.RULE_else_block);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1713;
        this.match(HiveSqlParser.T_ELSE);
        this.state = 1714;
        this.block();
    } 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 Include_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_include_stmt;
    return this;
}

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

Include_stmtContext.prototype.T_INCLUDE = function() {
    return this.getToken(HiveSqlParser.T_INCLUDE, 0);
};

Include_stmtContext.prototype.file_name = function() {
    return this.getTypedRuleContext(File_nameContext,0);
};

Include_stmtContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Include_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterInclude_stmt(this);
	}
};

Include_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitInclude_stmt(this);
	}
};

Include_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitInclude_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Include_stmtContext = Include_stmtContext;

HiveSqlParser.prototype.include_stmt = function() {

    var localctx = new Include_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 174, HiveSqlParser.RULE_include_stmt);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1716;
        this.match(HiveSqlParser.T_INCLUDE);
        this.state = 1719;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,187,this._ctx);
        switch(la_) {
        case 1:
            this.state = 1717;
            this.file_name();
            break;

        case 2:
            this.state = 1718;
            this.expr(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 Insert_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_insert_stmt;
    return this;
}

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

Insert_stmtContext.prototype.T_INSERT = function() {
    return this.getToken(HiveSqlParser.T_INSERT, 0);
};

Insert_stmtContext.prototype.table_name = function() {
    return this.getTypedRuleContext(Table_nameContext,0);
};

Insert_stmtContext.prototype.T_OVERWRITE = function() {
    return this.getToken(HiveSqlParser.T_OVERWRITE, 0);
};

Insert_stmtContext.prototype.T_TABLE = function() {
    return this.getToken(HiveSqlParser.T_TABLE, 0);
};

Insert_stmtContext.prototype.T_INTO = function() {
    return this.getToken(HiveSqlParser.T_INTO, 0);
};

Insert_stmtContext.prototype.select_stmt = function() {
    return this.getTypedRuleContext(Select_stmtContext,0);
};

Insert_stmtContext.prototype.insert_stmt_rows = function() {
    return this.getTypedRuleContext(Insert_stmt_rowsContext,0);
};

Insert_stmtContext.prototype.insert_stmt_cols = function() {
    return this.getTypedRuleContext(Insert_stmt_colsContext,0);
};

Insert_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterInsert_stmt(this);
	}
};

Insert_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitInsert_stmt(this);
	}
};

Insert_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitInsert_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Insert_stmtContext = Insert_stmtContext;

HiveSqlParser.prototype.insert_stmt = function() {

    var localctx = new Insert_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 176, HiveSqlParser.RULE_insert_stmt);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1721;
        this.match(HiveSqlParser.T_INSERT);
        this.state = 1728;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case HiveSqlParser.T_OVERWRITE:
            this.state = 1722;
            this.match(HiveSqlParser.T_OVERWRITE);
            this.state = 1723;
            this.match(HiveSqlParser.T_TABLE);
            break;
        case HiveSqlParser.T_INTO:
            this.state = 1724;
            this.match(HiveSqlParser.T_INTO);
            this.state = 1726;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,188,this._ctx);
            if(la_===1) {
                this.state = 1725;
                this.match(HiveSqlParser.T_TABLE);

            }
            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
        this.state = 1730;
        this.table_name();
        this.state = 1732;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,190,this._ctx);
        if(la_===1) {
            this.state = 1731;
            this.insert_stmt_cols();

        }
        this.state = 1736;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case HiveSqlParser.T_OPEN_P:
        case HiveSqlParser.T_WITH:
        case HiveSqlParser.T_SELECT:
        case HiveSqlParser.T_SEL:
            this.state = 1734;
            this.select_stmt();
            break;
        case HiveSqlParser.T_VALUES:
            this.state = 1735;
            this.insert_stmt_rows();
            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 Insert_stmt_colsContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_insert_stmt_cols;
    return this;
}

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

Insert_stmt_colsContext.prototype.T_OPEN_P = function() {
    return this.getToken(HiveSqlParser.T_OPEN_P, 0);
};

Insert_stmt_colsContext.prototype.ident = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(IdentContext);
    } else {
        return this.getTypedRuleContext(IdentContext,i);
    }
};

Insert_stmt_colsContext.prototype.T_CLOSE_P = function() {
    return this.getToken(HiveSqlParser.T_CLOSE_P, 0);
};

Insert_stmt_colsContext.prototype.T_COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_COMMA);
    } else {
        return this.getToken(HiveSqlParser.T_COMMA, i);
    }
};


Insert_stmt_colsContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterInsert_stmt_cols(this);
	}
};

Insert_stmt_colsContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitInsert_stmt_cols(this);
	}
};

Insert_stmt_colsContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitInsert_stmt_cols(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Insert_stmt_colsContext = Insert_stmt_colsContext;

HiveSqlParser.prototype.insert_stmt_cols = function() {

    var localctx = new Insert_stmt_colsContext(this, this._ctx, this.state);
    this.enterRule(localctx, 178, HiveSqlParser.RULE_insert_stmt_cols);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1738;
        this.match(HiveSqlParser.T_OPEN_P);
        this.state = 1739;
        this.ident();
        this.state = 1744;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===HiveSqlParser.T_COMMA) {
            this.state = 1740;
            this.match(HiveSqlParser.T_COMMA);
            this.state = 1741;
            this.ident();
            this.state = 1746;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
        this.state = 1747;
        this.match(HiveSqlParser.T_CLOSE_P);
    } 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 Insert_stmt_rowsContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_insert_stmt_rows;
    return this;
}

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

Insert_stmt_rowsContext.prototype.T_VALUES = function() {
    return this.getToken(HiveSqlParser.T_VALUES, 0);
};

Insert_stmt_rowsContext.prototype.insert_stmt_row = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Insert_stmt_rowContext);
    } else {
        return this.getTypedRuleContext(Insert_stmt_rowContext,i);
    }
};

Insert_stmt_rowsContext.prototype.T_COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_COMMA);
    } else {
        return this.getToken(HiveSqlParser.T_COMMA, i);
    }
};


Insert_stmt_rowsContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterInsert_stmt_rows(this);
	}
};

Insert_stmt_rowsContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitInsert_stmt_rows(this);
	}
};

Insert_stmt_rowsContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitInsert_stmt_rows(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Insert_stmt_rowsContext = Insert_stmt_rowsContext;

HiveSqlParser.prototype.insert_stmt_rows = function() {

    var localctx = new Insert_stmt_rowsContext(this, this._ctx, this.state);
    this.enterRule(localctx, 180, HiveSqlParser.RULE_insert_stmt_rows);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1749;
        this.match(HiveSqlParser.T_VALUES);
        this.state = 1750;
        this.insert_stmt_row();
        this.state = 1755;
        this._errHandler.sync(this);
        var _alt = this._interp.adaptivePredict(this._input,193,this._ctx)
        while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
            if(_alt===1) {
                this.state = 1751;
                this.match(HiveSqlParser.T_COMMA);
                this.state = 1752;
                this.insert_stmt_row(); 
            }
            this.state = 1757;
            this._errHandler.sync(this);
            _alt = this._interp.adaptivePredict(this._input,193,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 Insert_stmt_rowContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_insert_stmt_row;
    return this;
}

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

Insert_stmt_rowContext.prototype.T_OPEN_P = function() {
    return this.getToken(HiveSqlParser.T_OPEN_P, 0);
};

Insert_stmt_rowContext.prototype.expr = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(ExprContext);
    } else {
        return this.getTypedRuleContext(ExprContext,i);
    }
};

Insert_stmt_rowContext.prototype.T_CLOSE_P = function() {
    return this.getToken(HiveSqlParser.T_CLOSE_P, 0);
};

Insert_stmt_rowContext.prototype.T_COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_COMMA);
    } else {
        return this.getToken(HiveSqlParser.T_COMMA, i);
    }
};


Insert_stmt_rowContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterInsert_stmt_row(this);
	}
};

Insert_stmt_rowContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitInsert_stmt_row(this);
	}
};

Insert_stmt_rowContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitInsert_stmt_row(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Insert_stmt_rowContext = Insert_stmt_rowContext;

HiveSqlParser.prototype.insert_stmt_row = function() {

    var localctx = new Insert_stmt_rowContext(this, this._ctx, this.state);
    this.enterRule(localctx, 182, HiveSqlParser.RULE_insert_stmt_row);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1758;
        this.match(HiveSqlParser.T_OPEN_P);
        this.state = 1759;
        this.expr(0);
        this.state = 1764;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===HiveSqlParser.T_COMMA) {
            this.state = 1760;
            this.match(HiveSqlParser.T_COMMA);
            this.state = 1761;
            this.expr(0);
            this.state = 1766;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
        this.state = 1767;
        this.match(HiveSqlParser.T_CLOSE_P);
    } 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 Insert_directory_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_insert_directory_stmt;
    return this;
}

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

Insert_directory_stmtContext.prototype.T_INSERT = function() {
    return this.getToken(HiveSqlParser.T_INSERT, 0);
};

Insert_directory_stmtContext.prototype.T_OVERWRITE = function() {
    return this.getToken(HiveSqlParser.T_OVERWRITE, 0);
};

Insert_directory_stmtContext.prototype.T_DIRECTORY = function() {
    return this.getToken(HiveSqlParser.T_DIRECTORY, 0);
};

Insert_directory_stmtContext.prototype.expr_file = function() {
    return this.getTypedRuleContext(Expr_fileContext,0);
};

Insert_directory_stmtContext.prototype.expr_select = function() {
    return this.getTypedRuleContext(Expr_selectContext,0);
};

Insert_directory_stmtContext.prototype.T_LOCAL = function() {
    return this.getToken(HiveSqlParser.T_LOCAL, 0);
};

Insert_directory_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterInsert_directory_stmt(this);
	}
};

Insert_directory_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitInsert_directory_stmt(this);
	}
};

Insert_directory_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitInsert_directory_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Insert_directory_stmtContext = Insert_directory_stmtContext;

HiveSqlParser.prototype.insert_directory_stmt = function() {

    var localctx = new Insert_directory_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 184, HiveSqlParser.RULE_insert_directory_stmt);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1769;
        this.match(HiveSqlParser.T_INSERT);
        this.state = 1770;
        this.match(HiveSqlParser.T_OVERWRITE);
        this.state = 1772;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===HiveSqlParser.T_LOCAL) {
            this.state = 1771;
            this.match(HiveSqlParser.T_LOCAL);
        }

        this.state = 1774;
        this.match(HiveSqlParser.T_DIRECTORY);
        this.state = 1775;
        this.expr_file();
        this.state = 1776;
        this.expr_select();
    } 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 Exit_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_exit_stmt;
    return this;
}

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

Exit_stmtContext.prototype.T_EXIT = function() {
    return this.getToken(HiveSqlParser.T_EXIT, 0);
};

Exit_stmtContext.prototype.L_ID = function() {
    return this.getToken(HiveSqlParser.L_ID, 0);
};

Exit_stmtContext.prototype.T_WHEN = function() {
    return this.getToken(HiveSqlParser.T_WHEN, 0);
};

Exit_stmtContext.prototype.bool_expr = function() {
    return this.getTypedRuleContext(Bool_exprContext,0);
};

Exit_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterExit_stmt(this);
	}
};

Exit_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitExit_stmt(this);
	}
};

Exit_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitExit_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Exit_stmtContext = Exit_stmtContext;

HiveSqlParser.prototype.exit_stmt = function() {

    var localctx = new Exit_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 186, HiveSqlParser.RULE_exit_stmt);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1778;
        this.match(HiveSqlParser.T_EXIT);
        this.state = 1780;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,196,this._ctx);
        if(la_===1) {
            this.state = 1779;
            this.match(HiveSqlParser.L_ID);

        }
        this.state = 1784;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,197,this._ctx);
        if(la_===1) {
            this.state = 1782;
            this.match(HiveSqlParser.T_WHEN);
            this.state = 1783;
            this.bool_expr(0);

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


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

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

Get_diag_stmtContext.prototype.T_GET = function() {
    return this.getToken(HiveSqlParser.T_GET, 0);
};

Get_diag_stmtContext.prototype.T_DIAGNOSTICS = function() {
    return this.getToken(HiveSqlParser.T_DIAGNOSTICS, 0);
};

Get_diag_stmtContext.prototype.get_diag_stmt_item = function() {
    return this.getTypedRuleContext(Get_diag_stmt_itemContext,0);
};

Get_diag_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterGet_diag_stmt(this);
	}
};

Get_diag_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitGet_diag_stmt(this);
	}
};

Get_diag_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitGet_diag_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Get_diag_stmtContext = Get_diag_stmtContext;

HiveSqlParser.prototype.get_diag_stmt = function() {

    var localctx = new Get_diag_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 188, HiveSqlParser.RULE_get_diag_stmt);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1786;
        this.match(HiveSqlParser.T_GET);
        this.state = 1787;
        this.match(HiveSqlParser.T_DIAGNOSTICS);
        this.state = 1788;
        this.get_diag_stmt_item();
    } 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 Get_diag_stmt_itemContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_get_diag_stmt_item;
    return this;
}

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

Get_diag_stmt_itemContext.prototype.get_diag_stmt_exception_item = function() {
    return this.getTypedRuleContext(Get_diag_stmt_exception_itemContext,0);
};

Get_diag_stmt_itemContext.prototype.get_diag_stmt_rowcount_item = function() {
    return this.getTypedRuleContext(Get_diag_stmt_rowcount_itemContext,0);
};

Get_diag_stmt_itemContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterGet_diag_stmt_item(this);
	}
};

Get_diag_stmt_itemContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitGet_diag_stmt_item(this);
	}
};

Get_diag_stmt_itemContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitGet_diag_stmt_item(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Get_diag_stmt_itemContext = Get_diag_stmt_itemContext;

HiveSqlParser.prototype.get_diag_stmt_item = function() {

    var localctx = new Get_diag_stmt_itemContext(this, this._ctx, this.state);
    this.enterRule(localctx, 190, HiveSqlParser.RULE_get_diag_stmt_item);
    try {
        this.state = 1792;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,198,this._ctx);
        switch(la_) {
        case 1:
            this.enterOuterAlt(localctx, 1);
            this.state = 1790;
            this.get_diag_stmt_exception_item();
            break;

        case 2:
            this.enterOuterAlt(localctx, 2);
            this.state = 1791;
            this.get_diag_stmt_rowcount_item();
            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 Get_diag_stmt_exception_itemContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_get_diag_stmt_exception_item;
    return this;
}

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

Get_diag_stmt_exception_itemContext.prototype.T_EXCEPTION = function() {
    return this.getToken(HiveSqlParser.T_EXCEPTION, 0);
};

Get_diag_stmt_exception_itemContext.prototype.L_INT = function() {
    return this.getToken(HiveSqlParser.L_INT, 0);
};

Get_diag_stmt_exception_itemContext.prototype.ident = function() {
    return this.getTypedRuleContext(IdentContext,0);
};

Get_diag_stmt_exception_itemContext.prototype.T_EQUAL = function() {
    return this.getToken(HiveSqlParser.T_EQUAL, 0);
};

Get_diag_stmt_exception_itemContext.prototype.T_MESSAGE_TEXT = function() {
    return this.getToken(HiveSqlParser.T_MESSAGE_TEXT, 0);
};

Get_diag_stmt_exception_itemContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterGet_diag_stmt_exception_item(this);
	}
};

Get_diag_stmt_exception_itemContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitGet_diag_stmt_exception_item(this);
	}
};

Get_diag_stmt_exception_itemContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitGet_diag_stmt_exception_item(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Get_diag_stmt_exception_itemContext = Get_diag_stmt_exception_itemContext;

HiveSqlParser.prototype.get_diag_stmt_exception_item = function() {

    var localctx = new Get_diag_stmt_exception_itemContext(this, this._ctx, this.state);
    this.enterRule(localctx, 192, HiveSqlParser.RULE_get_diag_stmt_exception_item);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1794;
        this.match(HiveSqlParser.T_EXCEPTION);
        this.state = 1795;
        this.match(HiveSqlParser.L_INT);
        this.state = 1796;
        this.ident();
        this.state = 1797;
        this.match(HiveSqlParser.T_EQUAL);
        this.state = 1798;
        this.match(HiveSqlParser.T_MESSAGE_TEXT);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


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

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

Get_diag_stmt_rowcount_itemContext.prototype.ident = function() {
    return this.getTypedRuleContext(IdentContext,0);
};

Get_diag_stmt_rowcount_itemContext.prototype.T_EQUAL = function() {
    return this.getToken(HiveSqlParser.T_EQUAL, 0);
};

Get_diag_stmt_rowcount_itemContext.prototype.T_ROW_COUNT = function() {
    return this.getToken(HiveSqlParser.T_ROW_COUNT, 0);
};

Get_diag_stmt_rowcount_itemContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterGet_diag_stmt_rowcount_item(this);
	}
};

Get_diag_stmt_rowcount_itemContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitGet_diag_stmt_rowcount_item(this);
	}
};

Get_diag_stmt_rowcount_itemContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitGet_diag_stmt_rowcount_item(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Get_diag_stmt_rowcount_itemContext = Get_diag_stmt_rowcount_itemContext;

HiveSqlParser.prototype.get_diag_stmt_rowcount_item = function() {

    var localctx = new Get_diag_stmt_rowcount_itemContext(this, this._ctx, this.state);
    this.enterRule(localctx, 194, HiveSqlParser.RULE_get_diag_stmt_rowcount_item);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1800;
        this.ident();
        this.state = 1801;
        this.match(HiveSqlParser.T_EQUAL);
        this.state = 1802;
        this.match(HiveSqlParser.T_ROW_COUNT);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


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

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

Grant_stmtContext.prototype.T_GRANT = function() {
    return this.getToken(HiveSqlParser.T_GRANT, 0);
};

Grant_stmtContext.prototype.grant_stmt_item = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Grant_stmt_itemContext);
    } else {
        return this.getTypedRuleContext(Grant_stmt_itemContext,i);
    }
};

Grant_stmtContext.prototype.T_TO = function() {
    return this.getToken(HiveSqlParser.T_TO, 0);
};

Grant_stmtContext.prototype.T_ROLE = function() {
    return this.getToken(HiveSqlParser.T_ROLE, 0);
};

Grant_stmtContext.prototype.ident = function() {
    return this.getTypedRuleContext(IdentContext,0);
};

Grant_stmtContext.prototype.T_COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_COMMA);
    } else {
        return this.getToken(HiveSqlParser.T_COMMA, i);
    }
};


Grant_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterGrant_stmt(this);
	}
};

Grant_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitGrant_stmt(this);
	}
};

Grant_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitGrant_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Grant_stmtContext = Grant_stmtContext;

HiveSqlParser.prototype.grant_stmt = function() {

    var localctx = new Grant_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 196, HiveSqlParser.RULE_grant_stmt);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1804;
        this.match(HiveSqlParser.T_GRANT);
        this.state = 1805;
        this.grant_stmt_item();
        this.state = 1810;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===HiveSqlParser.T_COMMA) {
            this.state = 1806;
            this.match(HiveSqlParser.T_COMMA);
            this.state = 1807;
            this.grant_stmt_item();
            this.state = 1812;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
        this.state = 1813;
        this.match(HiveSqlParser.T_TO);
        this.state = 1814;
        this.match(HiveSqlParser.T_ROLE);
        this.state = 1815;
        this.ident();
    } 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 Grant_stmt_itemContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_grant_stmt_item;
    return this;
}

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

Grant_stmt_itemContext.prototype.T_EXECUTE = function() {
    return this.getToken(HiveSqlParser.T_EXECUTE, 0);
};

Grant_stmt_itemContext.prototype.T_ON = function() {
    return this.getToken(HiveSqlParser.T_ON, 0);
};

Grant_stmt_itemContext.prototype.T_PROCEDURE = function() {
    return this.getToken(HiveSqlParser.T_PROCEDURE, 0);
};

Grant_stmt_itemContext.prototype.ident = function() {
    return this.getTypedRuleContext(IdentContext,0);
};

Grant_stmt_itemContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterGrant_stmt_item(this);
	}
};

Grant_stmt_itemContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitGrant_stmt_item(this);
	}
};

Grant_stmt_itemContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitGrant_stmt_item(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Grant_stmt_itemContext = Grant_stmt_itemContext;

HiveSqlParser.prototype.grant_stmt_item = function() {

    var localctx = new Grant_stmt_itemContext(this, this._ctx, this.state);
    this.enterRule(localctx, 198, HiveSqlParser.RULE_grant_stmt_item);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1817;
        this.match(HiveSqlParser.T_EXECUTE);
        this.state = 1818;
        this.match(HiveSqlParser.T_ON);
        this.state = 1819;
        this.match(HiveSqlParser.T_PROCEDURE);
        this.state = 1820;
        this.ident();
    } 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 Leave_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_leave_stmt;
    return this;
}

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

Leave_stmtContext.prototype.T_LEAVE = function() {
    return this.getToken(HiveSqlParser.T_LEAVE, 0);
};

Leave_stmtContext.prototype.L_ID = function() {
    return this.getToken(HiveSqlParser.L_ID, 0);
};

Leave_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterLeave_stmt(this);
	}
};

Leave_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitLeave_stmt(this);
	}
};

Leave_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitLeave_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Leave_stmtContext = Leave_stmtContext;

HiveSqlParser.prototype.leave_stmt = function() {

    var localctx = new Leave_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 200, HiveSqlParser.RULE_leave_stmt);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1822;
        this.match(HiveSqlParser.T_LEAVE);
        this.state = 1824;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,200,this._ctx);
        if(la_===1) {
            this.state = 1823;
            this.match(HiveSqlParser.L_ID);

        }
    } 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 Map_object_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_map_object_stmt;
    return this;
}

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

Map_object_stmtContext.prototype.T_MAP = function() {
    return this.getToken(HiveSqlParser.T_MAP, 0);
};

Map_object_stmtContext.prototype.T_OBJECT = function() {
    return this.getToken(HiveSqlParser.T_OBJECT, 0);
};

Map_object_stmtContext.prototype.expr = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(ExprContext);
    } else {
        return this.getTypedRuleContext(ExprContext,i);
    }
};

Map_object_stmtContext.prototype.T_TO = function() {
    return this.getToken(HiveSqlParser.T_TO, 0);
};

Map_object_stmtContext.prototype.T_AT = function() {
    return this.getToken(HiveSqlParser.T_AT, 0);
};

Map_object_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterMap_object_stmt(this);
	}
};

Map_object_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitMap_object_stmt(this);
	}
};

Map_object_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitMap_object_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Map_object_stmtContext = Map_object_stmtContext;

HiveSqlParser.prototype.map_object_stmt = function() {

    var localctx = new Map_object_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 202, HiveSqlParser.RULE_map_object_stmt);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1826;
        this.match(HiveSqlParser.T_MAP);
        this.state = 1827;
        this.match(HiveSqlParser.T_OBJECT);
        this.state = 1828;
        this.expr(0);
        this.state = 1831;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,201,this._ctx);
        if(la_===1) {
            this.state = 1829;
            this.match(HiveSqlParser.T_TO);
            this.state = 1830;
            this.expr(0);

        }
        this.state = 1835;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,202,this._ctx);
        if(la_===1) {
            this.state = 1833;
            this.match(HiveSqlParser.T_AT);
            this.state = 1834;
            this.expr(0);

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


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

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

Open_stmtContext.prototype.T_OPEN = function() {
    return this.getToken(HiveSqlParser.T_OPEN, 0);
};

Open_stmtContext.prototype.L_ID = function() {
    return this.getToken(HiveSqlParser.L_ID, 0);
};

Open_stmtContext.prototype.T_FOR = function() {
    return this.getToken(HiveSqlParser.T_FOR, 0);
};

Open_stmtContext.prototype.select_stmt = function() {
    return this.getTypedRuleContext(Select_stmtContext,0);
};

Open_stmtContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Open_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterOpen_stmt(this);
	}
};

Open_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitOpen_stmt(this);
	}
};

Open_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitOpen_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Open_stmtContext = Open_stmtContext;

HiveSqlParser.prototype.open_stmt = function() {

    var localctx = new Open_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 204, HiveSqlParser.RULE_open_stmt);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1837;
        this.match(HiveSqlParser.T_OPEN);
        this.state = 1838;
        this.match(HiveSqlParser.L_ID);
        this.state = 1844;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,204,this._ctx);
        if(la_===1) {
            this.state = 1839;
            this.match(HiveSqlParser.T_FOR);
            this.state = 1842;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,203,this._ctx);
            switch(la_) {
            case 1:
                this.state = 1840;
                this.select_stmt();
                break;

            case 2:
                this.state = 1841;
                this.expr(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 Fetch_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_fetch_stmt;
    return this;
}

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

Fetch_stmtContext.prototype.T_FETCH = function() {
    return this.getToken(HiveSqlParser.T_FETCH, 0);
};

Fetch_stmtContext.prototype.L_ID = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.L_ID);
    } else {
        return this.getToken(HiveSqlParser.L_ID, i);
    }
};


Fetch_stmtContext.prototype.T_INTO = function() {
    return this.getToken(HiveSqlParser.T_INTO, 0);
};

Fetch_stmtContext.prototype.T_FROM = function() {
    return this.getToken(HiveSqlParser.T_FROM, 0);
};

Fetch_stmtContext.prototype.T_COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_COMMA);
    } else {
        return this.getToken(HiveSqlParser.T_COMMA, i);
    }
};


Fetch_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterFetch_stmt(this);
	}
};

Fetch_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitFetch_stmt(this);
	}
};

Fetch_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitFetch_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Fetch_stmtContext = Fetch_stmtContext;

HiveSqlParser.prototype.fetch_stmt = function() {

    var localctx = new Fetch_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 206, HiveSqlParser.RULE_fetch_stmt);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1846;
        this.match(HiveSqlParser.T_FETCH);
        this.state = 1848;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===HiveSqlParser.T_FROM) {
            this.state = 1847;
            this.match(HiveSqlParser.T_FROM);
        }

        this.state = 1850;
        this.match(HiveSqlParser.L_ID);
        this.state = 1851;
        this.match(HiveSqlParser.T_INTO);
        this.state = 1852;
        this.match(HiveSqlParser.L_ID);
        this.state = 1857;
        this._errHandler.sync(this);
        var _alt = this._interp.adaptivePredict(this._input,206,this._ctx)
        while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
            if(_alt===1) {
                this.state = 1853;
                this.match(HiveSqlParser.T_COMMA);
                this.state = 1854;
                this.match(HiveSqlParser.L_ID); 
            }
            this.state = 1859;
            this._errHandler.sync(this);
            _alt = this._interp.adaptivePredict(this._input,206,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 Collect_stats_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_collect_stats_stmt;
    return this;
}

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

Collect_stats_stmtContext.prototype.T_COLLECT = function() {
    return this.getToken(HiveSqlParser.T_COLLECT, 0);
};

Collect_stats_stmtContext.prototype.T_ON = function() {
    return this.getToken(HiveSqlParser.T_ON, 0);
};

Collect_stats_stmtContext.prototype.table_name = function() {
    return this.getTypedRuleContext(Table_nameContext,0);
};

Collect_stats_stmtContext.prototype.T_STATISTICS = function() {
    return this.getToken(HiveSqlParser.T_STATISTICS, 0);
};

Collect_stats_stmtContext.prototype.T_STATS = function() {
    return this.getToken(HiveSqlParser.T_STATS, 0);
};

Collect_stats_stmtContext.prototype.collect_stats_clause = function() {
    return this.getTypedRuleContext(Collect_stats_clauseContext,0);
};

Collect_stats_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterCollect_stats_stmt(this);
	}
};

Collect_stats_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitCollect_stats_stmt(this);
	}
};

Collect_stats_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitCollect_stats_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Collect_stats_stmtContext = Collect_stats_stmtContext;

HiveSqlParser.prototype.collect_stats_stmt = function() {

    var localctx = new Collect_stats_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 208, HiveSqlParser.RULE_collect_stats_stmt);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1860;
        this.match(HiveSqlParser.T_COLLECT);
        this.state = 1861;
        _la = this._input.LA(1);
        if(!(_la===HiveSqlParser.T_STATISTICS || _la===HiveSqlParser.T_STATS)) {
        this._errHandler.recoverInline(this);
        }
        else {
        	this._errHandler.reportMatch(this);
            this.consume();
        }
        this.state = 1862;
        this.match(HiveSqlParser.T_ON);
        this.state = 1863;
        this.table_name();
        this.state = 1865;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,207,this._ctx);
        if(la_===1) {
            this.state = 1864;
            this.collect_stats_clause();

        }
    } 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 Collect_stats_clauseContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_collect_stats_clause;
    return this;
}

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

Collect_stats_clauseContext.prototype.T_COLUMN = function() {
    return this.getToken(HiveSqlParser.T_COLUMN, 0);
};

Collect_stats_clauseContext.prototype.T_OPEN_P = function() {
    return this.getToken(HiveSqlParser.T_OPEN_P, 0);
};

Collect_stats_clauseContext.prototype.ident = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(IdentContext);
    } else {
        return this.getTypedRuleContext(IdentContext,i);
    }
};

Collect_stats_clauseContext.prototype.T_CLOSE_P = function() {
    return this.getToken(HiveSqlParser.T_CLOSE_P, 0);
};

Collect_stats_clauseContext.prototype.T_COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_COMMA);
    } else {
        return this.getToken(HiveSqlParser.T_COMMA, i);
    }
};


Collect_stats_clauseContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterCollect_stats_clause(this);
	}
};

Collect_stats_clauseContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitCollect_stats_clause(this);
	}
};

Collect_stats_clauseContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitCollect_stats_clause(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Collect_stats_clauseContext = Collect_stats_clauseContext;

HiveSqlParser.prototype.collect_stats_clause = function() {

    var localctx = new Collect_stats_clauseContext(this, this._ctx, this.state);
    this.enterRule(localctx, 210, HiveSqlParser.RULE_collect_stats_clause);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1867;
        this.match(HiveSqlParser.T_COLUMN);
        this.state = 1868;
        this.match(HiveSqlParser.T_OPEN_P);
        this.state = 1869;
        this.ident();
        this.state = 1874;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===HiveSqlParser.T_COMMA) {
            this.state = 1870;
            this.match(HiveSqlParser.T_COMMA);
            this.state = 1871;
            this.ident();
            this.state = 1876;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
        this.state = 1877;
        this.match(HiveSqlParser.T_CLOSE_P);
    } 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 Close_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_close_stmt;
    return this;
}

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

Close_stmtContext.prototype.T_CLOSE = function() {
    return this.getToken(HiveSqlParser.T_CLOSE, 0);
};

Close_stmtContext.prototype.L_ID = function() {
    return this.getToken(HiveSqlParser.L_ID, 0);
};

Close_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterClose_stmt(this);
	}
};

Close_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitClose_stmt(this);
	}
};

Close_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitClose_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Close_stmtContext = Close_stmtContext;

HiveSqlParser.prototype.close_stmt = function() {

    var localctx = new Close_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 212, HiveSqlParser.RULE_close_stmt);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1879;
        this.match(HiveSqlParser.T_CLOSE);
        this.state = 1880;
        this.match(HiveSqlParser.L_ID);
    } 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 Cmp_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_cmp_stmt;
    return this;
}

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

Cmp_stmtContext.prototype.T_CMP = function() {
    return this.getToken(HiveSqlParser.T_CMP, 0);
};

Cmp_stmtContext.prototype.cmp_source = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Cmp_sourceContext);
    } else {
        return this.getTypedRuleContext(Cmp_sourceContext,i);
    }
};

Cmp_stmtContext.prototype.T_COMMA = function() {
    return this.getToken(HiveSqlParser.T_COMMA, 0);
};

Cmp_stmtContext.prototype.T_ROW_COUNT = function() {
    return this.getToken(HiveSqlParser.T_ROW_COUNT, 0);
};

Cmp_stmtContext.prototype.T_SUM = function() {
    return this.getToken(HiveSqlParser.T_SUM, 0);
};

Cmp_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterCmp_stmt(this);
	}
};

Cmp_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitCmp_stmt(this);
	}
};

Cmp_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitCmp_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Cmp_stmtContext = Cmp_stmtContext;

HiveSqlParser.prototype.cmp_stmt = function() {

    var localctx = new Cmp_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 214, HiveSqlParser.RULE_cmp_stmt);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1882;
        this.match(HiveSqlParser.T_CMP);
        this.state = 1883;
        _la = this._input.LA(1);
        if(!(_la===HiveSqlParser.T_ROW_COUNT || _la===HiveSqlParser.T_SUM)) {
        this._errHandler.recoverInline(this);
        }
        else {
        	this._errHandler.reportMatch(this);
            this.consume();
        }
        this.state = 1884;
        this.cmp_source();
        this.state = 1885;
        this.match(HiveSqlParser.T_COMMA);
        this.state = 1886;
        this.cmp_source();
    } 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 Cmp_sourceContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_cmp_source;
    return this;
}

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

Cmp_sourceContext.prototype.table_name = function() {
    return this.getTypedRuleContext(Table_nameContext,0);
};

Cmp_sourceContext.prototype.T_OPEN_P = function() {
    return this.getToken(HiveSqlParser.T_OPEN_P, 0);
};

Cmp_sourceContext.prototype.select_stmt = function() {
    return this.getTypedRuleContext(Select_stmtContext,0);
};

Cmp_sourceContext.prototype.T_CLOSE_P = function() {
    return this.getToken(HiveSqlParser.T_CLOSE_P, 0);
};

Cmp_sourceContext.prototype.T_AT = function() {
    return this.getToken(HiveSqlParser.T_AT, 0);
};

Cmp_sourceContext.prototype.ident = function() {
    return this.getTypedRuleContext(IdentContext,0);
};

Cmp_sourceContext.prototype.where_clause = function() {
    return this.getTypedRuleContext(Where_clauseContext,0);
};

Cmp_sourceContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterCmp_source(this);
	}
};

Cmp_sourceContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitCmp_source(this);
	}
};

Cmp_sourceContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitCmp_source(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Cmp_sourceContext = Cmp_sourceContext;

HiveSqlParser.prototype.cmp_source = function() {

    var localctx = new Cmp_sourceContext(this, this._ctx, this.state);
    this.enterRule(localctx, 216, HiveSqlParser.RULE_cmp_source);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1896;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case HiveSqlParser.T__8:
        case HiveSqlParser.T_GO:
        case HiveSqlParser.T_BEGIN:
        case HiveSqlParser.T_EXCEPTION:
        case HiveSqlParser.L_ID:
        case HiveSqlParser.T_THEN:
        case HiveSqlParser.T_SET:
        case HiveSqlParser.T_ALLOCATE:
        case HiveSqlParser.T_CURSOR:
        case HiveSqlParser.T_FOR:
        case HiveSqlParser.T_RESULT:
        case HiveSqlParser.T_PROCEDURE:
        case HiveSqlParser.T_ASSOCIATE:
        case HiveSqlParser.T_LOCATOR:
        case HiveSqlParser.T_LOCATORS:
        case HiveSqlParser.T_WITH:
        case HiveSqlParser.T_TRANSACTION:
        case HiveSqlParser.T_BREAK:
        case HiveSqlParser.T_CALL:
        case HiveSqlParser.T_DECLARE:
        case HiveSqlParser.T_AS:
        case HiveSqlParser.T_CONSTANT:
        case HiveSqlParser.T_CONDITION:
        case HiveSqlParser.T_IS:
        case HiveSqlParser.T_RETURN:
        case HiveSqlParser.T_ONLY:
        case HiveSqlParser.T_TO:
        case HiveSqlParser.T_CALLER:
        case HiveSqlParser.T_CLIENT:
        case HiveSqlParser.T_WITHOUT:
        case HiveSqlParser.T_CONTINUE:
        case HiveSqlParser.T_EXIT:
        case HiveSqlParser.T_HANDLER:
        case HiveSqlParser.T_SQLEXCEPTION:
        case HiveSqlParser.T_SQLWARNING:
        case HiveSqlParser.T_NOT:
        case HiveSqlParser.T_FOUND:
        case HiveSqlParser.T_GLOBAL:
        case HiveSqlParser.T_TEMPORARY:
        case HiveSqlParser.T_TABLE:
        case HiveSqlParser.T_CREATE:
        case HiveSqlParser.T_IF:
        case HiveSqlParser.T_EXISTS:
        case HiveSqlParser.T_LOCAL:
        case HiveSqlParser.T_MULTISET:
        case HiveSqlParser.T_VOLATILE:
        case HiveSqlParser.T_LIKE:
        case HiveSqlParser.T_CONSTRAINT:
        case HiveSqlParser.T_PRIMARY:
        case HiveSqlParser.T_KEY:
        case HiveSqlParser.T_UNIQUE:
        case HiveSqlParser.T_REFERENCES:
        case HiveSqlParser.T_IDENTITY:
        case HiveSqlParser.T_AUTO_INCREMENT:
        case HiveSqlParser.T_ENABLE:
        case HiveSqlParser.T_CLUSTERED:
        case HiveSqlParser.T_ASC:
        case HiveSqlParser.T_DESC:
        case HiveSqlParser.T_FOREIGN:
        case HiveSqlParser.T_ON:
        case HiveSqlParser.T_UPDATE:
        case HiveSqlParser.T_DELETE:
        case HiveSqlParser.T_NO:
        case HiveSqlParser.T_ACTION:
        case HiveSqlParser.T_RESTRICT:
        case HiveSqlParser.T_DEFAULT:
        case HiveSqlParser.T_CASCADE:
        case HiveSqlParser.T_LOG:
        case HiveSqlParser.T_FALLBACK:
        case HiveSqlParser.T_COMMIT:
        case HiveSqlParser.T_PRESERVE:
        case HiveSqlParser.T_ROWS:
        case HiveSqlParser.T_SEGMENT:
        case HiveSqlParser.T_CREATION:
        case HiveSqlParser.T_IMMEDIATE:
        case HiveSqlParser.T_DEFERRED:
        case HiveSqlParser.T_PCTFREE:
        case HiveSqlParser.T_PCTUSED:
        case HiveSqlParser.T_INITRANS:
        case HiveSqlParser.T_MAXTRANS:
        case HiveSqlParser.T_NOCOMPRESS:
        case HiveSqlParser.T_LOGGING:
        case HiveSqlParser.T_NOLOGGING:
        case HiveSqlParser.T_STORAGE:
        case HiveSqlParser.T_TABLESPACE:
        case HiveSqlParser.T_INDEX:
        case HiveSqlParser.T_IN:
        case HiveSqlParser.T_REPLACE:
        case HiveSqlParser.T_DISTRIBUTE:
        case HiveSqlParser.T_BY:
        case HiveSqlParser.T_HASH:
        case HiveSqlParser.T_LOGGED:
        case HiveSqlParser.T_COMPRESS:
        case HiveSqlParser.T_YES:
        case HiveSqlParser.T_DEFINITION:
        case HiveSqlParser.T_DROP:
        case HiveSqlParser.T_DATA:
        case HiveSqlParser.T_STORED:
        case HiveSqlParser.T_ROW:
        case HiveSqlParser.T_FORMAT:
        case HiveSqlParser.T_DELIMITED:
        case HiveSqlParser.T_FIELDS:
        case HiveSqlParser.T_TERMINATED:
        case HiveSqlParser.T_ESCAPED:
        case HiveSqlParser.T_COLLECTION:
        case HiveSqlParser.T_ITEMS:
        case HiveSqlParser.T_MAP:
        case HiveSqlParser.T_KEYS:
        case HiveSqlParser.T_LINES:
        case HiveSqlParser.T_DEFINED:
        case HiveSqlParser.T_TEXTIMAGE_ON:
        case HiveSqlParser.T_COMMENT:
        case HiveSqlParser.T_CHARACTER:
        case HiveSqlParser.T_CHARSET:
        case HiveSqlParser.T_ENGINE:
        case HiveSqlParser.T_ALTER:
        case HiveSqlParser.T_ADD2:
        case HiveSqlParser.T_CHAR:
        case HiveSqlParser.T_BIGINT:
        case HiveSqlParser.T_BINARY_DOUBLE:
        case HiveSqlParser.T_BINARY_FLOAT:
        case HiveSqlParser.T_BIT:
        case HiveSqlParser.T_DATE:
        case HiveSqlParser.T_DATETIME:
        case HiveSqlParser.T_DEC:
        case HiveSqlParser.T_DECIMAL:
        case HiveSqlParser.T_DOUBLE:
        case HiveSqlParser.T_PRECISION:
        case HiveSqlParser.T_FLOAT:
        case HiveSqlParser.T_INT:
        case HiveSqlParser.T_INT2:
        case HiveSqlParser.T_INT4:
        case HiveSqlParser.T_INT8:
        case HiveSqlParser.T_INTEGER:
        case HiveSqlParser.T_NCHAR:
        case HiveSqlParser.T_NVARCHAR:
        case HiveSqlParser.T_NUMBER:
        case HiveSqlParser.T_NUMERIC:
        case HiveSqlParser.T_REAL:
        case HiveSqlParser.T_RESULT_SET_LOCATOR:
        case HiveSqlParser.T_VARYING:
        case HiveSqlParser.T_SIMPLE_FLOAT:
        case HiveSqlParser.T_SIMPLE_DOUBLE:
        case HiveSqlParser.T_SMALLINT:
        case HiveSqlParser.T_SMALLDATETIME:
        case HiveSqlParser.T_STRING:
        case HiveSqlParser.T_SYS_REFCURSOR:
        case HiveSqlParser.T_TIMESTAMP:
        case HiveSqlParser.T_VARCHAR:
        case HiveSqlParser.T_VARCHAR2:
        case HiveSqlParser.T_XML:
        case HiveSqlParser.T_MAX:
        case HiveSqlParser.T_BYTE:
        case HiveSqlParser.T_CASESPECIFIC:
        case HiveSqlParser.T_CS:
        case HiveSqlParser.T_DATABASE:
        case HiveSqlParser.T_SCHEMA:
        case HiveSqlParser.T_LOCATION:
        case HiveSqlParser.T_OR:
        case HiveSqlParser.T_FUNCTION:
        case HiveSqlParser.T_RETURNS:
        case HiveSqlParser.T_PACKAGE:
        case HiveSqlParser.T_PROC:
        case HiveSqlParser.T_BODY:
        case HiveSqlParser.T_OUT:
        case HiveSqlParser.T_INOUT:
        case HiveSqlParser.T_LANGUAGE:
        case HiveSqlParser.T_SQL:
        case HiveSqlParser.T_SECURITY:
        case HiveSqlParser.T_CREATOR:
        case HiveSqlParser.T_DEFINER:
        case HiveSqlParser.T_INVOKER:
        case HiveSqlParser.T_OWNER:
        case HiveSqlParser.T_DYNAMIC:
        case HiveSqlParser.T_SETS:
        case HiveSqlParser.T_EXEC:
        case HiveSqlParser.T_EXECUTE:
        case HiveSqlParser.T_INTO:
        case HiveSqlParser.T_INCLUDE:
        case HiveSqlParser.T_INSERT:
        case HiveSqlParser.T_OVERWRITE:
        case HiveSqlParser.T_VALUES:
        case HiveSqlParser.T_DIRECTORY:
        case HiveSqlParser.T_GET:
        case HiveSqlParser.T_DIAGNOSTICS:
        case HiveSqlParser.T_MESSAGE_TEXT:
        case HiveSqlParser.T_ROW_COUNT:
        case HiveSqlParser.T_GRANT:
        case HiveSqlParser.T_ROLE:
        case HiveSqlParser.T_LEAVE:
        case HiveSqlParser.T_OBJECT:
        case HiveSqlParser.T_AT:
        case HiveSqlParser.T_OPEN:
        case HiveSqlParser.T_FETCH:
        case HiveSqlParser.T_FROM:
        case HiveSqlParser.T_COLLECT:
        case HiveSqlParser.T_STATISTICS:
        case HiveSqlParser.T_STATS:
        case HiveSqlParser.T_COLUMN:
        case HiveSqlParser.T_CLOSE:
        case HiveSqlParser.T_CMP:
        case HiveSqlParser.T_SUM:
        case HiveSqlParser.T_COPY:
        case HiveSqlParser.T_HDFS:
        case HiveSqlParser.T_BATCHSIZE:
        case HiveSqlParser.T_DELIMITER:
        case HiveSqlParser.T_SQLINSERT:
        case HiveSqlParser.T_IGNORE:
        case HiveSqlParser.T_WORK:
        case HiveSqlParser.T_PRINT:
        case HiveSqlParser.T_QUIT:
        case HiveSqlParser.T_RAISE:
        case HiveSqlParser.T_RESIGNAL:
        case HiveSqlParser.T_SQLSTATE:
        case HiveSqlParser.T_VALUE:
        case HiveSqlParser.T_ROLLBACK:
        case HiveSqlParser.T_CURRENT:
        case HiveSqlParser.T_CURRENT_SCHEMA:
        case HiveSqlParser.T_ANSI_NULLS:
        case HiveSqlParser.T_ANSI_PADDING:
        case HiveSqlParser.T_NOCOUNT:
        case HiveSqlParser.T_QUOTED_IDENTIFIER:
        case HiveSqlParser.T_XACT_ABORT:
        case HiveSqlParser.T_OFF:
        case HiveSqlParser.T_QUERY_BAND:
        case HiveSqlParser.T_NONE:
        case HiveSqlParser.T_SESSION:
        case HiveSqlParser.T_SIGNAL:
        case HiveSqlParser.T_SUMMARY:
        case HiveSqlParser.T_TOP:
        case HiveSqlParser.T_LIMIT:
        case HiveSqlParser.T_TRUNCATE:
        case HiveSqlParser.T_USE:
        case HiveSqlParser.T_WHILE:
        case HiveSqlParser.T_DO:
        case HiveSqlParser.T_LOOP:
        case HiveSqlParser.T_REVERSE:
        case HiveSqlParser.T_STEP:
        case HiveSqlParser.T_USING:
        case HiveSqlParser.T_ALL:
        case HiveSqlParser.T_EXCEPT:
        case HiveSqlParser.T_INTERSECT:
        case HiveSqlParser.T_SELECT:
        case HiveSqlParser.T_SEL:
        case HiveSqlParser.T_DISTINCT:
        case HiveSqlParser.T_TITLE:
        case HiveSqlParser.T_INNER:
        case HiveSqlParser.T_JOIN:
        case HiveSqlParser.T_LEFT:
        case HiveSqlParser.T_RIGHT:
        case HiveSqlParser.T_FULL:
        case HiveSqlParser.T_OUTER:
        case HiveSqlParser.T_GROUP:
        case HiveSqlParser.T_HAVING:
        case HiveSqlParser.T_QUALIFY:
        case HiveSqlParser.T_ORDER:
        case HiveSqlParser.T_RR:
        case HiveSqlParser.T_RS:
        case HiveSqlParser.T_UR:
        case HiveSqlParser.T_AND:
        case HiveSqlParser.T_KEEP:
        case HiveSqlParser.T_EXCLUSIVE:
        case HiveSqlParser.T_SHARE:
        case HiveSqlParser.T_LOCKS:
        case HiveSqlParser.T_MERGE:
        case HiveSqlParser.T_MATCHED:
        case HiveSqlParser.T_DESCRIBE:
        case HiveSqlParser.T_BETWEEN:
        case HiveSqlParser.T_RLIKE:
        case HiveSqlParser.T_REGEXP:
        case HiveSqlParser.T_INTERVAL:
        case HiveSqlParser.T_DAY:
        case HiveSqlParser.T_DAYS:
        case HiveSqlParser.T_MICROSECOND:
        case HiveSqlParser.T_MICROSECONDS:
        case HiveSqlParser.T_SECOND:
        case HiveSqlParser.T_SECONDS:
        case HiveSqlParser.T_CONCAT:
        case HiveSqlParser.T_CASE:
        case HiveSqlParser.T_ISOPEN:
        case HiveSqlParser.T_NOTFOUND:
        case HiveSqlParser.T_AVG:
        case HiveSqlParser.T_COUNT:
        case HiveSqlParser.T_COUNT_BIG:
        case HiveSqlParser.T_CUME_DIST:
        case HiveSqlParser.T_DENSE_RANK:
        case HiveSqlParser.T_FIRST_VALUE:
        case HiveSqlParser.T_LAG:
        case HiveSqlParser.T_LAST_VALUE:
        case HiveSqlParser.T_LEAD:
        case HiveSqlParser.T_MIN:
        case HiveSqlParser.T_RANK:
        case HiveSqlParser.T_ROW_NUMBER:
        case HiveSqlParser.T_STDEV:
        case HiveSqlParser.T_VAR:
        case HiveSqlParser.T_VARIANCE:
        case HiveSqlParser.T_OVER:
        case HiveSqlParser.T_PARTITION:
        case HiveSqlParser.T_ACTIVITY_COUNT:
        case HiveSqlParser.T_CAST:
        case HiveSqlParser.T_CURRENT_DATE:
        case HiveSqlParser.T_CURRENT_TIMESTAMP:
        case HiveSqlParser.T_CURRENT_USER:
        case HiveSqlParser.T_USER:
        case HiveSqlParser.T_PART_COUNT:
        case HiveSqlParser.T_PART_LOC:
        case HiveSqlParser.T_TRIM:
        case HiveSqlParser.T_SUBSTRING:
        case HiveSqlParser.T_SYSDATE:
        case HiveSqlParser.T_HIVE:
        case HiveSqlParser.T_HOST:
        case HiveSqlParser.T_TRUE:
        case HiveSqlParser.T_FALSE:
        case HiveSqlParser.T_DIR:
        case HiveSqlParser.T_FILE:
        case HiveSqlParser.T_FILES:
        case HiveSqlParser.T_NEW:
        case HiveSqlParser.T_PWD:
        case HiveSqlParser.T_SESSIONS:
        case HiveSqlParser.T_SUBDIR:
            this.state = 1888;
            this.table_name();
            this.state = 1890;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,209,this._ctx);
            if(la_===1) {
                this.state = 1889;
                this.where_clause();

            }
            break;
        case HiveSqlParser.T_OPEN_P:
            this.state = 1892;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 1893;
            this.select_stmt();
            this.state = 1894;
            this.match(HiveSqlParser.T_CLOSE_P);
            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
        this.state = 1900;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,211,this._ctx);
        if(la_===1) {
            this.state = 1898;
            this.match(HiveSqlParser.T_AT);
            this.state = 1899;
            this.ident();

        }
    } 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 Copy_from_local_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_copy_from_local_stmt;
    return this;
}

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

Copy_from_local_stmtContext.prototype.T_COPY = function() {
    return this.getToken(HiveSqlParser.T_COPY, 0);
};

Copy_from_local_stmtContext.prototype.T_FROM = function() {
    return this.getToken(HiveSqlParser.T_FROM, 0);
};

Copy_from_local_stmtContext.prototype.T_LOCAL = function() {
    return this.getToken(HiveSqlParser.T_LOCAL, 0);
};

Copy_from_local_stmtContext.prototype.copy_source = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Copy_sourceContext);
    } else {
        return this.getTypedRuleContext(Copy_sourceContext,i);
    }
};

Copy_from_local_stmtContext.prototype.T_TO = function() {
    return this.getToken(HiveSqlParser.T_TO, 0);
};

Copy_from_local_stmtContext.prototype.copy_target = function() {
    return this.getTypedRuleContext(Copy_targetContext,0);
};

Copy_from_local_stmtContext.prototype.T_COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_COMMA);
    } else {
        return this.getToken(HiveSqlParser.T_COMMA, i);
    }
};


Copy_from_local_stmtContext.prototype.copy_file_option = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Copy_file_optionContext);
    } else {
        return this.getTypedRuleContext(Copy_file_optionContext,i);
    }
};

Copy_from_local_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterCopy_from_local_stmt(this);
	}
};

Copy_from_local_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitCopy_from_local_stmt(this);
	}
};

Copy_from_local_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitCopy_from_local_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Copy_from_local_stmtContext = Copy_from_local_stmtContext;

HiveSqlParser.prototype.copy_from_local_stmt = function() {

    var localctx = new Copy_from_local_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 218, HiveSqlParser.RULE_copy_from_local_stmt);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1902;
        this.match(HiveSqlParser.T_COPY);
        this.state = 1903;
        this.match(HiveSqlParser.T_FROM);
        this.state = 1904;
        this.match(HiveSqlParser.T_LOCAL);
        this.state = 1905;
        this.copy_source();
        this.state = 1910;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===HiveSqlParser.T_COMMA) {
            this.state = 1906;
            this.match(HiveSqlParser.T_COMMA);
            this.state = 1907;
            this.copy_source();
            this.state = 1912;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
        this.state = 1913;
        this.match(HiveSqlParser.T_TO);
        this.state = 1914;
        this.copy_target();
        this.state = 1918;
        this._errHandler.sync(this);
        var _alt = this._interp.adaptivePredict(this._input,213,this._ctx)
        while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
            if(_alt===1) {
                this.state = 1915;
                this.copy_file_option(); 
            }
            this.state = 1920;
            this._errHandler.sync(this);
            _alt = this._interp.adaptivePredict(this._input,213,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 Copy_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_copy_stmt;
    return this;
}

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

Copy_stmtContext.prototype.T_COPY = function() {
    return this.getToken(HiveSqlParser.T_COPY, 0);
};

Copy_stmtContext.prototype.T_TO = function() {
    return this.getToken(HiveSqlParser.T_TO, 0);
};

Copy_stmtContext.prototype.copy_target = function() {
    return this.getTypedRuleContext(Copy_targetContext,0);
};

Copy_stmtContext.prototype.table_name = function() {
    return this.getTypedRuleContext(Table_nameContext,0);
};

Copy_stmtContext.prototype.T_OPEN_P = function() {
    return this.getToken(HiveSqlParser.T_OPEN_P, 0);
};

Copy_stmtContext.prototype.select_stmt = function() {
    return this.getTypedRuleContext(Select_stmtContext,0);
};

Copy_stmtContext.prototype.T_CLOSE_P = function() {
    return this.getToken(HiveSqlParser.T_CLOSE_P, 0);
};

Copy_stmtContext.prototype.T_HDFS = function() {
    return this.getToken(HiveSqlParser.T_HDFS, 0);
};

Copy_stmtContext.prototype.copy_option = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Copy_optionContext);
    } else {
        return this.getTypedRuleContext(Copy_optionContext,i);
    }
};

Copy_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterCopy_stmt(this);
	}
};

Copy_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitCopy_stmt(this);
	}
};

Copy_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitCopy_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Copy_stmtContext = Copy_stmtContext;

HiveSqlParser.prototype.copy_stmt = function() {

    var localctx = new Copy_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 220, HiveSqlParser.RULE_copy_stmt);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1921;
        this.match(HiveSqlParser.T_COPY);
        this.state = 1927;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case HiveSqlParser.T__8:
        case HiveSqlParser.T_GO:
        case HiveSqlParser.T_BEGIN:
        case HiveSqlParser.T_EXCEPTION:
        case HiveSqlParser.L_ID:
        case HiveSqlParser.T_THEN:
        case HiveSqlParser.T_SET:
        case HiveSqlParser.T_ALLOCATE:
        case HiveSqlParser.T_CURSOR:
        case HiveSqlParser.T_FOR:
        case HiveSqlParser.T_RESULT:
        case HiveSqlParser.T_PROCEDURE:
        case HiveSqlParser.T_ASSOCIATE:
        case HiveSqlParser.T_LOCATOR:
        case HiveSqlParser.T_LOCATORS:
        case HiveSqlParser.T_WITH:
        case HiveSqlParser.T_TRANSACTION:
        case HiveSqlParser.T_BREAK:
        case HiveSqlParser.T_CALL:
        case HiveSqlParser.T_DECLARE:
        case HiveSqlParser.T_AS:
        case HiveSqlParser.T_CONSTANT:
        case HiveSqlParser.T_CONDITION:
        case HiveSqlParser.T_IS:
        case HiveSqlParser.T_RETURN:
        case HiveSqlParser.T_ONLY:
        case HiveSqlParser.T_TO:
        case HiveSqlParser.T_CALLER:
        case HiveSqlParser.T_CLIENT:
        case HiveSqlParser.T_WITHOUT:
        case HiveSqlParser.T_CONTINUE:
        case HiveSqlParser.T_EXIT:
        case HiveSqlParser.T_HANDLER:
        case HiveSqlParser.T_SQLEXCEPTION:
        case HiveSqlParser.T_SQLWARNING:
        case HiveSqlParser.T_NOT:
        case HiveSqlParser.T_FOUND:
        case HiveSqlParser.T_GLOBAL:
        case HiveSqlParser.T_TEMPORARY:
        case HiveSqlParser.T_TABLE:
        case HiveSqlParser.T_CREATE:
        case HiveSqlParser.T_IF:
        case HiveSqlParser.T_EXISTS:
        case HiveSqlParser.T_LOCAL:
        case HiveSqlParser.T_MULTISET:
        case HiveSqlParser.T_VOLATILE:
        case HiveSqlParser.T_LIKE:
        case HiveSqlParser.T_CONSTRAINT:
        case HiveSqlParser.T_PRIMARY:
        case HiveSqlParser.T_KEY:
        case HiveSqlParser.T_UNIQUE:
        case HiveSqlParser.T_REFERENCES:
        case HiveSqlParser.T_IDENTITY:
        case HiveSqlParser.T_AUTO_INCREMENT:
        case HiveSqlParser.T_ENABLE:
        case HiveSqlParser.T_CLUSTERED:
        case HiveSqlParser.T_ASC:
        case HiveSqlParser.T_DESC:
        case HiveSqlParser.T_FOREIGN:
        case HiveSqlParser.T_ON:
        case HiveSqlParser.T_UPDATE:
        case HiveSqlParser.T_DELETE:
        case HiveSqlParser.T_NO:
        case HiveSqlParser.T_ACTION:
        case HiveSqlParser.T_RESTRICT:
        case HiveSqlParser.T_DEFAULT:
        case HiveSqlParser.T_CASCADE:
        case HiveSqlParser.T_LOG:
        case HiveSqlParser.T_FALLBACK:
        case HiveSqlParser.T_COMMIT:
        case HiveSqlParser.T_PRESERVE:
        case HiveSqlParser.T_ROWS:
        case HiveSqlParser.T_SEGMENT:
        case HiveSqlParser.T_CREATION:
        case HiveSqlParser.T_IMMEDIATE:
        case HiveSqlParser.T_DEFERRED:
        case HiveSqlParser.T_PCTFREE:
        case HiveSqlParser.T_PCTUSED:
        case HiveSqlParser.T_INITRANS:
        case HiveSqlParser.T_MAXTRANS:
        case HiveSqlParser.T_NOCOMPRESS:
        case HiveSqlParser.T_LOGGING:
        case HiveSqlParser.T_NOLOGGING:
        case HiveSqlParser.T_STORAGE:
        case HiveSqlParser.T_TABLESPACE:
        case HiveSqlParser.T_INDEX:
        case HiveSqlParser.T_IN:
        case HiveSqlParser.T_REPLACE:
        case HiveSqlParser.T_DISTRIBUTE:
        case HiveSqlParser.T_BY:
        case HiveSqlParser.T_HASH:
        case HiveSqlParser.T_LOGGED:
        case HiveSqlParser.T_COMPRESS:
        case HiveSqlParser.T_YES:
        case HiveSqlParser.T_DEFINITION:
        case HiveSqlParser.T_DROP:
        case HiveSqlParser.T_DATA:
        case HiveSqlParser.T_STORED:
        case HiveSqlParser.T_ROW:
        case HiveSqlParser.T_FORMAT:
        case HiveSqlParser.T_DELIMITED:
        case HiveSqlParser.T_FIELDS:
        case HiveSqlParser.T_TERMINATED:
        case HiveSqlParser.T_ESCAPED:
        case HiveSqlParser.T_COLLECTION:
        case HiveSqlParser.T_ITEMS:
        case HiveSqlParser.T_MAP:
        case HiveSqlParser.T_KEYS:
        case HiveSqlParser.T_LINES:
        case HiveSqlParser.T_DEFINED:
        case HiveSqlParser.T_TEXTIMAGE_ON:
        case HiveSqlParser.T_COMMENT:
        case HiveSqlParser.T_CHARACTER:
        case HiveSqlParser.T_CHARSET:
        case HiveSqlParser.T_ENGINE:
        case HiveSqlParser.T_ALTER:
        case HiveSqlParser.T_ADD2:
        case HiveSqlParser.T_CHAR:
        case HiveSqlParser.T_BIGINT:
        case HiveSqlParser.T_BINARY_DOUBLE:
        case HiveSqlParser.T_BINARY_FLOAT:
        case HiveSqlParser.T_BIT:
        case HiveSqlParser.T_DATE:
        case HiveSqlParser.T_DATETIME:
        case HiveSqlParser.T_DEC:
        case HiveSqlParser.T_DECIMAL:
        case HiveSqlParser.T_DOUBLE:
        case HiveSqlParser.T_PRECISION:
        case HiveSqlParser.T_FLOAT:
        case HiveSqlParser.T_INT:
        case HiveSqlParser.T_INT2:
        case HiveSqlParser.T_INT4:
        case HiveSqlParser.T_INT8:
        case HiveSqlParser.T_INTEGER:
        case HiveSqlParser.T_NCHAR:
        case HiveSqlParser.T_NVARCHAR:
        case HiveSqlParser.T_NUMBER:
        case HiveSqlParser.T_NUMERIC:
        case HiveSqlParser.T_REAL:
        case HiveSqlParser.T_RESULT_SET_LOCATOR:
        case HiveSqlParser.T_VARYING:
        case HiveSqlParser.T_SIMPLE_FLOAT:
        case HiveSqlParser.T_SIMPLE_DOUBLE:
        case HiveSqlParser.T_SMALLINT:
        case HiveSqlParser.T_SMALLDATETIME:
        case HiveSqlParser.T_STRING:
        case HiveSqlParser.T_SYS_REFCURSOR:
        case HiveSqlParser.T_TIMESTAMP:
        case HiveSqlParser.T_VARCHAR:
        case HiveSqlParser.T_VARCHAR2:
        case HiveSqlParser.T_XML:
        case HiveSqlParser.T_MAX:
        case HiveSqlParser.T_BYTE:
        case HiveSqlParser.T_CASESPECIFIC:
        case HiveSqlParser.T_CS:
        case HiveSqlParser.T_DATABASE:
        case HiveSqlParser.T_SCHEMA:
        case HiveSqlParser.T_LOCATION:
        case HiveSqlParser.T_OR:
        case HiveSqlParser.T_FUNCTION:
        case HiveSqlParser.T_RETURNS:
        case HiveSqlParser.T_PACKAGE:
        case HiveSqlParser.T_PROC:
        case HiveSqlParser.T_BODY:
        case HiveSqlParser.T_OUT:
        case HiveSqlParser.T_INOUT:
        case HiveSqlParser.T_LANGUAGE:
        case HiveSqlParser.T_SQL:
        case HiveSqlParser.T_SECURITY:
        case HiveSqlParser.T_CREATOR:
        case HiveSqlParser.T_DEFINER:
        case HiveSqlParser.T_INVOKER:
        case HiveSqlParser.T_OWNER:
        case HiveSqlParser.T_DYNAMIC:
        case HiveSqlParser.T_SETS:
        case HiveSqlParser.T_EXEC:
        case HiveSqlParser.T_EXECUTE:
        case HiveSqlParser.T_INTO:
        case HiveSqlParser.T_INCLUDE:
        case HiveSqlParser.T_INSERT:
        case HiveSqlParser.T_OVERWRITE:
        case HiveSqlParser.T_VALUES:
        case HiveSqlParser.T_DIRECTORY:
        case HiveSqlParser.T_GET:
        case HiveSqlParser.T_DIAGNOSTICS:
        case HiveSqlParser.T_MESSAGE_TEXT:
        case HiveSqlParser.T_ROW_COUNT:
        case HiveSqlParser.T_GRANT:
        case HiveSqlParser.T_ROLE:
        case HiveSqlParser.T_LEAVE:
        case HiveSqlParser.T_OBJECT:
        case HiveSqlParser.T_AT:
        case HiveSqlParser.T_OPEN:
        case HiveSqlParser.T_FETCH:
        case HiveSqlParser.T_FROM:
        case HiveSqlParser.T_COLLECT:
        case HiveSqlParser.T_STATISTICS:
        case HiveSqlParser.T_STATS:
        case HiveSqlParser.T_COLUMN:
        case HiveSqlParser.T_CLOSE:
        case HiveSqlParser.T_CMP:
        case HiveSqlParser.T_SUM:
        case HiveSqlParser.T_COPY:
        case HiveSqlParser.T_HDFS:
        case HiveSqlParser.T_BATCHSIZE:
        case HiveSqlParser.T_DELIMITER:
        case HiveSqlParser.T_SQLINSERT:
        case HiveSqlParser.T_IGNORE:
        case HiveSqlParser.T_WORK:
        case HiveSqlParser.T_PRINT:
        case HiveSqlParser.T_QUIT:
        case HiveSqlParser.T_RAISE:
        case HiveSqlParser.T_RESIGNAL:
        case HiveSqlParser.T_SQLSTATE:
        case HiveSqlParser.T_VALUE:
        case HiveSqlParser.T_ROLLBACK:
        case HiveSqlParser.T_CURRENT:
        case HiveSqlParser.T_CURRENT_SCHEMA:
        case HiveSqlParser.T_ANSI_NULLS:
        case HiveSqlParser.T_ANSI_PADDING:
        case HiveSqlParser.T_NOCOUNT:
        case HiveSqlParser.T_QUOTED_IDENTIFIER:
        case HiveSqlParser.T_XACT_ABORT:
        case HiveSqlParser.T_OFF:
        case HiveSqlParser.T_QUERY_BAND:
        case HiveSqlParser.T_NONE:
        case HiveSqlParser.T_SESSION:
        case HiveSqlParser.T_SIGNAL:
        case HiveSqlParser.T_SUMMARY:
        case HiveSqlParser.T_TOP:
        case HiveSqlParser.T_LIMIT:
        case HiveSqlParser.T_TRUNCATE:
        case HiveSqlParser.T_USE:
        case HiveSqlParser.T_WHILE:
        case HiveSqlParser.T_DO:
        case HiveSqlParser.T_LOOP:
        case HiveSqlParser.T_REVERSE:
        case HiveSqlParser.T_STEP:
        case HiveSqlParser.T_USING:
        case HiveSqlParser.T_ALL:
        case HiveSqlParser.T_EXCEPT:
        case HiveSqlParser.T_INTERSECT:
        case HiveSqlParser.T_SELECT:
        case HiveSqlParser.T_SEL:
        case HiveSqlParser.T_DISTINCT:
        case HiveSqlParser.T_TITLE:
        case HiveSqlParser.T_INNER:
        case HiveSqlParser.T_JOIN:
        case HiveSqlParser.T_LEFT:
        case HiveSqlParser.T_RIGHT:
        case HiveSqlParser.T_FULL:
        case HiveSqlParser.T_OUTER:
        case HiveSqlParser.T_GROUP:
        case HiveSqlParser.T_HAVING:
        case HiveSqlParser.T_QUALIFY:
        case HiveSqlParser.T_ORDER:
        case HiveSqlParser.T_RR:
        case HiveSqlParser.T_RS:
        case HiveSqlParser.T_UR:
        case HiveSqlParser.T_AND:
        case HiveSqlParser.T_KEEP:
        case HiveSqlParser.T_EXCLUSIVE:
        case HiveSqlParser.T_SHARE:
        case HiveSqlParser.T_LOCKS:
        case HiveSqlParser.T_MERGE:
        case HiveSqlParser.T_MATCHED:
        case HiveSqlParser.T_DESCRIBE:
        case HiveSqlParser.T_BETWEEN:
        case HiveSqlParser.T_RLIKE:
        case HiveSqlParser.T_REGEXP:
        case HiveSqlParser.T_INTERVAL:
        case HiveSqlParser.T_DAY:
        case HiveSqlParser.T_DAYS:
        case HiveSqlParser.T_MICROSECOND:
        case HiveSqlParser.T_MICROSECONDS:
        case HiveSqlParser.T_SECOND:
        case HiveSqlParser.T_SECONDS:
        case HiveSqlParser.T_CONCAT:
        case HiveSqlParser.T_CASE:
        case HiveSqlParser.T_ISOPEN:
        case HiveSqlParser.T_NOTFOUND:
        case HiveSqlParser.T_AVG:
        case HiveSqlParser.T_COUNT:
        case HiveSqlParser.T_COUNT_BIG:
        case HiveSqlParser.T_CUME_DIST:
        case HiveSqlParser.T_DENSE_RANK:
        case HiveSqlParser.T_FIRST_VALUE:
        case HiveSqlParser.T_LAG:
        case HiveSqlParser.T_LAST_VALUE:
        case HiveSqlParser.T_LEAD:
        case HiveSqlParser.T_MIN:
        case HiveSqlParser.T_RANK:
        case HiveSqlParser.T_ROW_NUMBER:
        case HiveSqlParser.T_STDEV:
        case HiveSqlParser.T_VAR:
        case HiveSqlParser.T_VARIANCE:
        case HiveSqlParser.T_OVER:
        case HiveSqlParser.T_PARTITION:
        case HiveSqlParser.T_ACTIVITY_COUNT:
        case HiveSqlParser.T_CAST:
        case HiveSqlParser.T_CURRENT_DATE:
        case HiveSqlParser.T_CURRENT_TIMESTAMP:
        case HiveSqlParser.T_CURRENT_USER:
        case HiveSqlParser.T_USER:
        case HiveSqlParser.T_PART_COUNT:
        case HiveSqlParser.T_PART_LOC:
        case HiveSqlParser.T_TRIM:
        case HiveSqlParser.T_SUBSTRING:
        case HiveSqlParser.T_SYSDATE:
        case HiveSqlParser.T_HIVE:
        case HiveSqlParser.T_HOST:
        case HiveSqlParser.T_TRUE:
        case HiveSqlParser.T_FALSE:
        case HiveSqlParser.T_DIR:
        case HiveSqlParser.T_FILE:
        case HiveSqlParser.T_FILES:
        case HiveSqlParser.T_NEW:
        case HiveSqlParser.T_PWD:
        case HiveSqlParser.T_SESSIONS:
        case HiveSqlParser.T_SUBDIR:
            this.state = 1922;
            this.table_name();
            break;
        case HiveSqlParser.T_OPEN_P:
            this.state = 1923;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 1924;
            this.select_stmt();
            this.state = 1925;
            this.match(HiveSqlParser.T_CLOSE_P);
            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
        this.state = 1929;
        this.match(HiveSqlParser.T_TO);
        this.state = 1931;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,215,this._ctx);
        if(la_===1) {
            this.state = 1930;
            this.match(HiveSqlParser.T_HDFS);

        }
        this.state = 1933;
        this.copy_target();
        this.state = 1937;
        this._errHandler.sync(this);
        var _alt = this._interp.adaptivePredict(this._input,216,this._ctx)
        while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
            if(_alt===1) {
                this.state = 1934;
                this.copy_option(); 
            }
            this.state = 1939;
            this._errHandler.sync(this);
            _alt = this._interp.adaptivePredict(this._input,216,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 Copy_sourceContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_copy_source;
    return this;
}

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

Copy_sourceContext.prototype.file_name = function() {
    return this.getTypedRuleContext(File_nameContext,0);
};

Copy_sourceContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Copy_sourceContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterCopy_source(this);
	}
};

Copy_sourceContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitCopy_source(this);
	}
};

Copy_sourceContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitCopy_source(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Copy_sourceContext = Copy_sourceContext;

HiveSqlParser.prototype.copy_source = function() {

    var localctx = new Copy_sourceContext(this, this._ctx, this.state);
    this.enterRule(localctx, 222, HiveSqlParser.RULE_copy_source);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1942;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,217,this._ctx);
        switch(la_) {
        case 1:
            this.state = 1940;
            this.file_name();
            break;

        case 2:
            this.state = 1941;
            this.expr(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 Copy_targetContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_copy_target;
    return this;
}

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

Copy_targetContext.prototype.file_name = function() {
    return this.getTypedRuleContext(File_nameContext,0);
};

Copy_targetContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Copy_targetContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterCopy_target(this);
	}
};

Copy_targetContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitCopy_target(this);
	}
};

Copy_targetContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitCopy_target(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Copy_targetContext = Copy_targetContext;

HiveSqlParser.prototype.copy_target = function() {

    var localctx = new Copy_targetContext(this, this._ctx, this.state);
    this.enterRule(localctx, 224, HiveSqlParser.RULE_copy_target);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1946;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,218,this._ctx);
        switch(la_) {
        case 1:
            this.state = 1944;
            this.file_name();
            break;

        case 2:
            this.state = 1945;
            this.expr(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 Copy_optionContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_copy_option;
    return this;
}

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

Copy_optionContext.prototype.T_AT = function() {
    return this.getToken(HiveSqlParser.T_AT, 0);
};

Copy_optionContext.prototype.ident = function() {
    return this.getTypedRuleContext(IdentContext,0);
};

Copy_optionContext.prototype.T_BATCHSIZE = function() {
    return this.getToken(HiveSqlParser.T_BATCHSIZE, 0);
};

Copy_optionContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Copy_optionContext.prototype.T_DELIMITER = function() {
    return this.getToken(HiveSqlParser.T_DELIMITER, 0);
};

Copy_optionContext.prototype.T_SQLINSERT = function() {
    return this.getToken(HiveSqlParser.T_SQLINSERT, 0);
};

Copy_optionContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterCopy_option(this);
	}
};

Copy_optionContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitCopy_option(this);
	}
};

Copy_optionContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitCopy_option(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Copy_optionContext = Copy_optionContext;

HiveSqlParser.prototype.copy_option = function() {

    var localctx = new Copy_optionContext(this, this._ctx, this.state);
    this.enterRule(localctx, 226, HiveSqlParser.RULE_copy_option);
    try {
        this.state = 1956;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case HiveSqlParser.T_AT:
            this.enterOuterAlt(localctx, 1);
            this.state = 1948;
            this.match(HiveSqlParser.T_AT);
            this.state = 1949;
            this.ident();
            break;
        case HiveSqlParser.T_BATCHSIZE:
            this.enterOuterAlt(localctx, 2);
            this.state = 1950;
            this.match(HiveSqlParser.T_BATCHSIZE);
            this.state = 1951;
            this.expr(0);
            break;
        case HiveSqlParser.T_DELIMITER:
            this.enterOuterAlt(localctx, 3);
            this.state = 1952;
            this.match(HiveSqlParser.T_DELIMITER);
            this.state = 1953;
            this.expr(0);
            break;
        case HiveSqlParser.T_SQLINSERT:
            this.enterOuterAlt(localctx, 4);
            this.state = 1954;
            this.match(HiveSqlParser.T_SQLINSERT);
            this.state = 1955;
            this.ident();
            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 Copy_file_optionContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_copy_file_option;
    return this;
}

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

Copy_file_optionContext.prototype.T_DELETE = function() {
    return this.getToken(HiveSqlParser.T_DELETE, 0);
};

Copy_file_optionContext.prototype.T_IGNORE = function() {
    return this.getToken(HiveSqlParser.T_IGNORE, 0);
};

Copy_file_optionContext.prototype.T_OVERWRITE = function() {
    return this.getToken(HiveSqlParser.T_OVERWRITE, 0);
};

Copy_file_optionContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterCopy_file_option(this);
	}
};

Copy_file_optionContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitCopy_file_option(this);
	}
};

Copy_file_optionContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitCopy_file_option(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Copy_file_optionContext = Copy_file_optionContext;

HiveSqlParser.prototype.copy_file_option = function() {

    var localctx = new Copy_file_optionContext(this, this._ctx, this.state);
    this.enterRule(localctx, 228, HiveSqlParser.RULE_copy_file_option);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1958;
        _la = this._input.LA(1);
        if(!(_la===HiveSqlParser.T_DELETE || _la===HiveSqlParser.T_OVERWRITE || _la===HiveSqlParser.T_IGNORE)) {
        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 Commit_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_commit_stmt;
    return this;
}

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

Commit_stmtContext.prototype.T_COMMIT = function() {
    return this.getToken(HiveSqlParser.T_COMMIT, 0);
};

Commit_stmtContext.prototype.T_WORK = function() {
    return this.getToken(HiveSqlParser.T_WORK, 0);
};

Commit_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterCommit_stmt(this);
	}
};

Commit_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitCommit_stmt(this);
	}
};

Commit_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitCommit_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Commit_stmtContext = Commit_stmtContext;

HiveSqlParser.prototype.commit_stmt = function() {

    var localctx = new Commit_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 230, HiveSqlParser.RULE_commit_stmt);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1960;
        this.match(HiveSqlParser.T_COMMIT);
        this.state = 1962;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,220,this._ctx);
        if(la_===1) {
            this.state = 1961;
            this.match(HiveSqlParser.T_WORK);

        }
    } 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 Create_index_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_create_index_stmt;
    return this;
}

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

Create_index_stmtContext.prototype.T_CREATE = function() {
    return this.getToken(HiveSqlParser.T_CREATE, 0);
};

Create_index_stmtContext.prototype.T_INDEX = function() {
    return this.getToken(HiveSqlParser.T_INDEX, 0);
};

Create_index_stmtContext.prototype.ident = function() {
    return this.getTypedRuleContext(IdentContext,0);
};

Create_index_stmtContext.prototype.T_ON = function() {
    return this.getToken(HiveSqlParser.T_ON, 0);
};

Create_index_stmtContext.prototype.table_name = function() {
    return this.getTypedRuleContext(Table_nameContext,0);
};

Create_index_stmtContext.prototype.T_OPEN_P = function() {
    return this.getToken(HiveSqlParser.T_OPEN_P, 0);
};

Create_index_stmtContext.prototype.create_index_col = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Create_index_colContext);
    } else {
        return this.getTypedRuleContext(Create_index_colContext,i);
    }
};

Create_index_stmtContext.prototype.T_CLOSE_P = function() {
    return this.getToken(HiveSqlParser.T_CLOSE_P, 0);
};

Create_index_stmtContext.prototype.T_UNIQUE = function() {
    return this.getToken(HiveSqlParser.T_UNIQUE, 0);
};

Create_index_stmtContext.prototype.T_COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_COMMA);
    } else {
        return this.getToken(HiveSqlParser.T_COMMA, i);
    }
};


Create_index_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterCreate_index_stmt(this);
	}
};

Create_index_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitCreate_index_stmt(this);
	}
};

Create_index_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitCreate_index_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Create_index_stmtContext = Create_index_stmtContext;

HiveSqlParser.prototype.create_index_stmt = function() {

    var localctx = new Create_index_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 232, HiveSqlParser.RULE_create_index_stmt);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1964;
        this.match(HiveSqlParser.T_CREATE);
        this.state = 1966;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===HiveSqlParser.T_UNIQUE) {
            this.state = 1965;
            this.match(HiveSqlParser.T_UNIQUE);
        }

        this.state = 1968;
        this.match(HiveSqlParser.T_INDEX);
        this.state = 1969;
        this.ident();
        this.state = 1970;
        this.match(HiveSqlParser.T_ON);
        this.state = 1971;
        this.table_name();
        this.state = 1972;
        this.match(HiveSqlParser.T_OPEN_P);
        this.state = 1973;
        this.create_index_col();
        this.state = 1978;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===HiveSqlParser.T_COMMA) {
            this.state = 1974;
            this.match(HiveSqlParser.T_COMMA);
            this.state = 1975;
            this.create_index_col();
            this.state = 1980;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
        this.state = 1981;
        this.match(HiveSqlParser.T_CLOSE_P);
    } 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 Create_index_colContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_create_index_col;
    return this;
}

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

Create_index_colContext.prototype.ident = function() {
    return this.getTypedRuleContext(IdentContext,0);
};

Create_index_colContext.prototype.T_ASC = function() {
    return this.getToken(HiveSqlParser.T_ASC, 0);
};

Create_index_colContext.prototype.T_DESC = function() {
    return this.getToken(HiveSqlParser.T_DESC, 0);
};

Create_index_colContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterCreate_index_col(this);
	}
};

Create_index_colContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitCreate_index_col(this);
	}
};

Create_index_colContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitCreate_index_col(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Create_index_colContext = Create_index_colContext;

HiveSqlParser.prototype.create_index_col = function() {

    var localctx = new Create_index_colContext(this, this._ctx, this.state);
    this.enterRule(localctx, 234, HiveSqlParser.RULE_create_index_col);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1983;
        this.ident();
        this.state = 1985;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===HiveSqlParser.T_ASC || _la===HiveSqlParser.T_DESC) {
            this.state = 1984;
            _la = this._input.LA(1);
            if(!(_la===HiveSqlParser.T_ASC || _la===HiveSqlParser.T_DESC)) {
            this._errHandler.recoverInline(this);
            }
            else {
            	this._errHandler.reportMatch(this);
                this.consume();
            }
        }

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


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

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

Index_storage_clauseContext.prototype.index_mssql_storage_clause = function() {
    return this.getTypedRuleContext(Index_mssql_storage_clauseContext,0);
};

Index_storage_clauseContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterIndex_storage_clause(this);
	}
};

Index_storage_clauseContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitIndex_storage_clause(this);
	}
};

Index_storage_clauseContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitIndex_storage_clause(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Index_storage_clauseContext = Index_storage_clauseContext;

HiveSqlParser.prototype.index_storage_clause = function() {

    var localctx = new Index_storage_clauseContext(this, this._ctx, this.state);
    this.enterRule(localctx, 236, HiveSqlParser.RULE_index_storage_clause);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1987;
        this.index_mssql_storage_clause();
    } 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 Index_mssql_storage_clauseContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_index_mssql_storage_clause;
    return this;
}

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

Index_mssql_storage_clauseContext.prototype.T_WITH = function() {
    return this.getToken(HiveSqlParser.T_WITH, 0);
};

Index_mssql_storage_clauseContext.prototype.T_OPEN_P = function() {
    return this.getToken(HiveSqlParser.T_OPEN_P, 0);
};

Index_mssql_storage_clauseContext.prototype.ident = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(IdentContext);
    } else {
        return this.getTypedRuleContext(IdentContext,i);
    }
};

Index_mssql_storage_clauseContext.prototype.T_EQUAL = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_EQUAL);
    } else {
        return this.getToken(HiveSqlParser.T_EQUAL, i);
    }
};


Index_mssql_storage_clauseContext.prototype.T_CLOSE_P = function() {
    return this.getToken(HiveSqlParser.T_CLOSE_P, 0);
};

Index_mssql_storage_clauseContext.prototype.T_COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_COMMA);
    } else {
        return this.getToken(HiveSqlParser.T_COMMA, i);
    }
};


Index_mssql_storage_clauseContext.prototype.create_table_options_mssql_item = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Create_table_options_mssql_itemContext);
    } else {
        return this.getTypedRuleContext(Create_table_options_mssql_itemContext,i);
    }
};

Index_mssql_storage_clauseContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterIndex_mssql_storage_clause(this);
	}
};

Index_mssql_storage_clauseContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitIndex_mssql_storage_clause(this);
	}
};

Index_mssql_storage_clauseContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitIndex_mssql_storage_clause(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Index_mssql_storage_clauseContext = Index_mssql_storage_clauseContext;

HiveSqlParser.prototype.index_mssql_storage_clause = function() {

    var localctx = new Index_mssql_storage_clauseContext(this, this._ctx, this.state);
    this.enterRule(localctx, 238, HiveSqlParser.RULE_index_mssql_storage_clause);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1989;
        this.match(HiveSqlParser.T_WITH);
        this.state = 1990;
        this.match(HiveSqlParser.T_OPEN_P);
        this.state = 1991;
        this.ident();
        this.state = 1992;
        this.match(HiveSqlParser.T_EQUAL);
        this.state = 1993;
        this.ident();
        this.state = 2001;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===HiveSqlParser.T_COMMA) {
            this.state = 1994;
            this.match(HiveSqlParser.T_COMMA);
            this.state = 1995;
            this.ident();
            this.state = 1996;
            this.match(HiveSqlParser.T_EQUAL);
            this.state = 1997;
            this.ident();
            this.state = 2003;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
        this.state = 2004;
        this.match(HiveSqlParser.T_CLOSE_P);
        this.state = 2008;
        this._errHandler.sync(this);
        var _alt = this._interp.adaptivePredict(this._input,225,this._ctx)
        while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
            if(_alt===1) {
                this.state = 2005;
                this.create_table_options_mssql_item(); 
            }
            this.state = 2010;
            this._errHandler.sync(this);
            _alt = this._interp.adaptivePredict(this._input,225,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 Print_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_print_stmt;
    return this;
}

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

Print_stmtContext.prototype.T_PRINT = function() {
    return this.getToken(HiveSqlParser.T_PRINT, 0);
};

Print_stmtContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Print_stmtContext.prototype.T_OPEN_P = function() {
    return this.getToken(HiveSqlParser.T_OPEN_P, 0);
};

Print_stmtContext.prototype.T_CLOSE_P = function() {
    return this.getToken(HiveSqlParser.T_CLOSE_P, 0);
};

Print_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterPrint_stmt(this);
	}
};

Print_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitPrint_stmt(this);
	}
};

Print_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitPrint_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Print_stmtContext = Print_stmtContext;

HiveSqlParser.prototype.print_stmt = function() {

    var localctx = new Print_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 240, HiveSqlParser.RULE_print_stmt);
    try {
        this.state = 2018;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,226,this._ctx);
        switch(la_) {
        case 1:
            this.enterOuterAlt(localctx, 1);
            this.state = 2011;
            this.match(HiveSqlParser.T_PRINT);
            this.state = 2012;
            this.expr(0);
            break;

        case 2:
            this.enterOuterAlt(localctx, 2);
            this.state = 2013;
            this.match(HiveSqlParser.T_PRINT);
            this.state = 2014;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 2015;
            this.expr(0);
            this.state = 2016;
            this.match(HiveSqlParser.T_CLOSE_P);
            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 Quit_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_quit_stmt;
    return this;
}

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

Quit_stmtContext.prototype.T_QUIT = function() {
    return this.getToken(HiveSqlParser.T_QUIT, 0);
};

Quit_stmtContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Quit_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterQuit_stmt(this);
	}
};

Quit_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitQuit_stmt(this);
	}
};

Quit_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitQuit_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Quit_stmtContext = Quit_stmtContext;

HiveSqlParser.prototype.quit_stmt = function() {

    var localctx = new Quit_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 242, HiveSqlParser.RULE_quit_stmt);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2021;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===HiveSqlParser.T__4) {
            this.state = 2020;
            this.match(HiveSqlParser.T__4);
        }

        this.state = 2023;
        this.match(HiveSqlParser.T_QUIT);
        this.state = 2025;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,228,this._ctx);
        if(la_===1) {
            this.state = 2024;
            this.expr(0);

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


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

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

Raise_stmtContext.prototype.T_RAISE = function() {
    return this.getToken(HiveSqlParser.T_RAISE, 0);
};

Raise_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterRaise_stmt(this);
	}
};

Raise_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitRaise_stmt(this);
	}
};

Raise_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitRaise_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Raise_stmtContext = Raise_stmtContext;

HiveSqlParser.prototype.raise_stmt = function() {

    var localctx = new Raise_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 244, HiveSqlParser.RULE_raise_stmt);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2027;
        this.match(HiveSqlParser.T_RAISE);
    } 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 Resignal_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_resignal_stmt;
    return this;
}

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

Resignal_stmtContext.prototype.T_RESIGNAL = function() {
    return this.getToken(HiveSqlParser.T_RESIGNAL, 0);
};

Resignal_stmtContext.prototype.T_SQLSTATE = function() {
    return this.getToken(HiveSqlParser.T_SQLSTATE, 0);
};

Resignal_stmtContext.prototype.expr = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(ExprContext);
    } else {
        return this.getTypedRuleContext(ExprContext,i);
    }
};

Resignal_stmtContext.prototype.T_VALUE = function() {
    return this.getToken(HiveSqlParser.T_VALUE, 0);
};

Resignal_stmtContext.prototype.T_SET = function() {
    return this.getToken(HiveSqlParser.T_SET, 0);
};

Resignal_stmtContext.prototype.T_MESSAGE_TEXT = function() {
    return this.getToken(HiveSqlParser.T_MESSAGE_TEXT, 0);
};

Resignal_stmtContext.prototype.T_EQUAL = function() {
    return this.getToken(HiveSqlParser.T_EQUAL, 0);
};

Resignal_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterResignal_stmt(this);
	}
};

Resignal_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitResignal_stmt(this);
	}
};

Resignal_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitResignal_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Resignal_stmtContext = Resignal_stmtContext;

HiveSqlParser.prototype.resignal_stmt = function() {

    var localctx = new Resignal_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 246, HiveSqlParser.RULE_resignal_stmt);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2029;
        this.match(HiveSqlParser.T_RESIGNAL);
        this.state = 2041;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,231,this._ctx);
        if(la_===1) {
            this.state = 2030;
            this.match(HiveSqlParser.T_SQLSTATE);
            this.state = 2032;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,229,this._ctx);
            if(la_===1) {
                this.state = 2031;
                this.match(HiveSqlParser.T_VALUE);

            }
            this.state = 2034;
            this.expr(0);
            this.state = 2039;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,230,this._ctx);
            if(la_===1) {
                this.state = 2035;
                this.match(HiveSqlParser.T_SET);
                this.state = 2036;
                this.match(HiveSqlParser.T_MESSAGE_TEXT);
                this.state = 2037;
                this.match(HiveSqlParser.T_EQUAL);
                this.state = 2038;
                this.expr(0);

            }

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


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

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

Return_stmtContext.prototype.T_RETURN = function() {
    return this.getToken(HiveSqlParser.T_RETURN, 0);
};

Return_stmtContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Return_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterReturn_stmt(this);
	}
};

Return_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitReturn_stmt(this);
	}
};

Return_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitReturn_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Return_stmtContext = Return_stmtContext;

HiveSqlParser.prototype.return_stmt = function() {

    var localctx = new Return_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 248, HiveSqlParser.RULE_return_stmt);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2043;
        this.match(HiveSqlParser.T_RETURN);
        this.state = 2045;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,232,this._ctx);
        if(la_===1) {
            this.state = 2044;
            this.expr(0);

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


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

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

Rollback_stmtContext.prototype.T_ROLLBACK = function() {
    return this.getToken(HiveSqlParser.T_ROLLBACK, 0);
};

Rollback_stmtContext.prototype.T_WORK = function() {
    return this.getToken(HiveSqlParser.T_WORK, 0);
};

Rollback_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterRollback_stmt(this);
	}
};

Rollback_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitRollback_stmt(this);
	}
};

Rollback_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitRollback_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Rollback_stmtContext = Rollback_stmtContext;

HiveSqlParser.prototype.rollback_stmt = function() {

    var localctx = new Rollback_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 250, HiveSqlParser.RULE_rollback_stmt);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2047;
        this.match(HiveSqlParser.T_ROLLBACK);
        this.state = 2049;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,233,this._ctx);
        if(la_===1) {
            this.state = 2048;
            this.match(HiveSqlParser.T_WORK);

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


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

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

Set_session_optionContext.prototype.set_current_schema_option = function() {
    return this.getTypedRuleContext(Set_current_schema_optionContext,0);
};

Set_session_optionContext.prototype.set_mssql_session_option = function() {
    return this.getTypedRuleContext(Set_mssql_session_optionContext,0);
};

Set_session_optionContext.prototype.set_teradata_session_option = function() {
    return this.getTypedRuleContext(Set_teradata_session_optionContext,0);
};

Set_session_optionContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterSet_session_option(this);
	}
};

Set_session_optionContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitSet_session_option(this);
	}
};

Set_session_optionContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitSet_session_option(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Set_session_optionContext = Set_session_optionContext;

HiveSqlParser.prototype.set_session_option = function() {

    var localctx = new Set_session_optionContext(this, this._ctx, this.state);
    this.enterRule(localctx, 252, HiveSqlParser.RULE_set_session_option);
    try {
        this.state = 2054;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case HiveSqlParser.T_SCHEMA:
        case HiveSqlParser.T_CURRENT:
        case HiveSqlParser.T_CURRENT_SCHEMA:
            this.enterOuterAlt(localctx, 1);
            this.state = 2051;
            this.set_current_schema_option();
            break;
        case HiveSqlParser.T_ANSI_NULLS:
        case HiveSqlParser.T_ANSI_PADDING:
        case HiveSqlParser.T_NOCOUNT:
        case HiveSqlParser.T_QUOTED_IDENTIFIER:
        case HiveSqlParser.T_XACT_ABORT:
            this.enterOuterAlt(localctx, 2);
            this.state = 2052;
            this.set_mssql_session_option();
            break;
        case HiveSqlParser.T_QUERY_BAND:
            this.enterOuterAlt(localctx, 3);
            this.state = 2053;
            this.set_teradata_session_option();
            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


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

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

Set_current_schema_optionContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Set_current_schema_optionContext.prototype.T_CURRENT_SCHEMA = function() {
    return this.getToken(HiveSqlParser.T_CURRENT_SCHEMA, 0);
};

Set_current_schema_optionContext.prototype.T_EQUAL = function() {
    return this.getToken(HiveSqlParser.T_EQUAL, 0);
};

Set_current_schema_optionContext.prototype.T_SCHEMA = function() {
    return this.getToken(HiveSqlParser.T_SCHEMA, 0);
};

Set_current_schema_optionContext.prototype.T_CURRENT = function() {
    return this.getToken(HiveSqlParser.T_CURRENT, 0);
};

Set_current_schema_optionContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterSet_current_schema_option(this);
	}
};

Set_current_schema_optionContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitSet_current_schema_option(this);
	}
};

Set_current_schema_optionContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitSet_current_schema_option(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Set_current_schema_optionContext = Set_current_schema_optionContext;

HiveSqlParser.prototype.set_current_schema_option = function() {

    var localctx = new Set_current_schema_optionContext(this, this._ctx, this.state);
    this.enterRule(localctx, 254, HiveSqlParser.RULE_set_current_schema_option);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2061;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case HiveSqlParser.T_SCHEMA:
        case HiveSqlParser.T_CURRENT:
            this.state = 2057;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===HiveSqlParser.T_CURRENT) {
                this.state = 2056;
                this.match(HiveSqlParser.T_CURRENT);
            }

            this.state = 2059;
            this.match(HiveSqlParser.T_SCHEMA);
            break;
        case HiveSqlParser.T_CURRENT_SCHEMA:
            this.state = 2060;
            this.match(HiveSqlParser.T_CURRENT_SCHEMA);
            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
        this.state = 2064;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===HiveSqlParser.T_EQUAL) {
            this.state = 2063;
            this.match(HiveSqlParser.T_EQUAL);
        }

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


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

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

Set_mssql_session_optionContext.prototype.T_ANSI_NULLS = function() {
    return this.getToken(HiveSqlParser.T_ANSI_NULLS, 0);
};

Set_mssql_session_optionContext.prototype.T_ANSI_PADDING = function() {
    return this.getToken(HiveSqlParser.T_ANSI_PADDING, 0);
};

Set_mssql_session_optionContext.prototype.T_NOCOUNT = function() {
    return this.getToken(HiveSqlParser.T_NOCOUNT, 0);
};

Set_mssql_session_optionContext.prototype.T_QUOTED_IDENTIFIER = function() {
    return this.getToken(HiveSqlParser.T_QUOTED_IDENTIFIER, 0);
};

Set_mssql_session_optionContext.prototype.T_XACT_ABORT = function() {
    return this.getToken(HiveSqlParser.T_XACT_ABORT, 0);
};

Set_mssql_session_optionContext.prototype.T_ON = function() {
    return this.getToken(HiveSqlParser.T_ON, 0);
};

Set_mssql_session_optionContext.prototype.T_OFF = function() {
    return this.getToken(HiveSqlParser.T_OFF, 0);
};

Set_mssql_session_optionContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterSet_mssql_session_option(this);
	}
};

Set_mssql_session_optionContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitSet_mssql_session_option(this);
	}
};

Set_mssql_session_optionContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitSet_mssql_session_option(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Set_mssql_session_optionContext = Set_mssql_session_optionContext;

HiveSqlParser.prototype.set_mssql_session_option = function() {

    var localctx = new Set_mssql_session_optionContext(this, this._ctx, this.state);
    this.enterRule(localctx, 256, HiveSqlParser.RULE_set_mssql_session_option);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2068;
        _la = this._input.LA(1);
        if(!(((((_la - 247)) & ~0x1f) == 0 && ((1 << (_la - 247)) & ((1 << (HiveSqlParser.T_ANSI_NULLS - 247)) | (1 << (HiveSqlParser.T_ANSI_PADDING - 247)) | (1 << (HiveSqlParser.T_NOCOUNT - 247)) | (1 << (HiveSqlParser.T_QUOTED_IDENTIFIER - 247)) | (1 << (HiveSqlParser.T_XACT_ABORT - 247)))) !== 0))) {
        this._errHandler.recoverInline(this);
        }
        else {
        	this._errHandler.reportMatch(this);
            this.consume();
        }
        this.state = 2069;
        _la = this._input.LA(1);
        if(!(_la===HiveSqlParser.T_ON || _la===HiveSqlParser.T_OFF)) {
        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 Set_teradata_session_optionContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_set_teradata_session_option;
    return this;
}

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

Set_teradata_session_optionContext.prototype.T_QUERY_BAND = function() {
    return this.getToken(HiveSqlParser.T_QUERY_BAND, 0);
};

Set_teradata_session_optionContext.prototype.T_EQUAL = function() {
    return this.getToken(HiveSqlParser.T_EQUAL, 0);
};

Set_teradata_session_optionContext.prototype.T_FOR = function() {
    return this.getToken(HiveSqlParser.T_FOR, 0);
};

Set_teradata_session_optionContext.prototype.T_TRANSACTION = function() {
    return this.getToken(HiveSqlParser.T_TRANSACTION, 0);
};

Set_teradata_session_optionContext.prototype.T_SESSION = function() {
    return this.getToken(HiveSqlParser.T_SESSION, 0);
};

Set_teradata_session_optionContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Set_teradata_session_optionContext.prototype.T_NONE = function() {
    return this.getToken(HiveSqlParser.T_NONE, 0);
};

Set_teradata_session_optionContext.prototype.T_UPDATE = function() {
    return this.getToken(HiveSqlParser.T_UPDATE, 0);
};

Set_teradata_session_optionContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterSet_teradata_session_option(this);
	}
};

Set_teradata_session_optionContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitSet_teradata_session_option(this);
	}
};

Set_teradata_session_optionContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitSet_teradata_session_option(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Set_teradata_session_optionContext = Set_teradata_session_optionContext;

HiveSqlParser.prototype.set_teradata_session_option = function() {

    var localctx = new Set_teradata_session_optionContext(this, this._ctx, this.state);
    this.enterRule(localctx, 258, HiveSqlParser.RULE_set_teradata_session_option);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2071;
        this.match(HiveSqlParser.T_QUERY_BAND);
        this.state = 2072;
        this.match(HiveSqlParser.T_EQUAL);
        this.state = 2075;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,238,this._ctx);
        switch(la_) {
        case 1:
            this.state = 2073;
            this.expr(0);
            break;

        case 2:
            this.state = 2074;
            this.match(HiveSqlParser.T_NONE);
            break;

        }
        this.state = 2078;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===HiveSqlParser.T_UPDATE) {
            this.state = 2077;
            this.match(HiveSqlParser.T_UPDATE);
        }

        this.state = 2080;
        this.match(HiveSqlParser.T_FOR);
        this.state = 2081;
        _la = this._input.LA(1);
        if(!(_la===HiveSqlParser.T_TRANSACTION || _la===HiveSqlParser.T_SESSION)) {
        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 Signal_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_signal_stmt;
    return this;
}

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

Signal_stmtContext.prototype.T_SIGNAL = function() {
    return this.getToken(HiveSqlParser.T_SIGNAL, 0);
};

Signal_stmtContext.prototype.ident = function() {
    return this.getTypedRuleContext(IdentContext,0);
};

Signal_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterSignal_stmt(this);
	}
};

Signal_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitSignal_stmt(this);
	}
};

Signal_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitSignal_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Signal_stmtContext = Signal_stmtContext;

HiveSqlParser.prototype.signal_stmt = function() {

    var localctx = new Signal_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 260, HiveSqlParser.RULE_signal_stmt);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2083;
        this.match(HiveSqlParser.T_SIGNAL);
        this.state = 2084;
        this.ident();
    } 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 Summary_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_summary_stmt;
    return this;
}

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

Summary_stmtContext.prototype.T_SUMMARY = function() {
    return this.getToken(HiveSqlParser.T_SUMMARY, 0);
};

Summary_stmtContext.prototype.T_FOR = function() {
    return this.getToken(HiveSqlParser.T_FOR, 0);
};

Summary_stmtContext.prototype.select_stmt = function() {
    return this.getTypedRuleContext(Select_stmtContext,0);
};

Summary_stmtContext.prototype.table_name = function() {
    return this.getTypedRuleContext(Table_nameContext,0);
};

Summary_stmtContext.prototype.T_TOP = function() {
    return this.getToken(HiveSqlParser.T_TOP, 0);
};

Summary_stmtContext.prototype.expr = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(ExprContext);
    } else {
        return this.getTypedRuleContext(ExprContext,i);
    }
};

Summary_stmtContext.prototype.where_clause = function() {
    return this.getTypedRuleContext(Where_clauseContext,0);
};

Summary_stmtContext.prototype.T_LIMIT = function() {
    return this.getToken(HiveSqlParser.T_LIMIT, 0);
};

Summary_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterSummary_stmt(this);
	}
};

Summary_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitSummary_stmt(this);
	}
};

Summary_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitSummary_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Summary_stmtContext = Summary_stmtContext;

HiveSqlParser.prototype.summary_stmt = function() {

    var localctx = new Summary_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 262, HiveSqlParser.RULE_summary_stmt);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2086;
        this.match(HiveSqlParser.T_SUMMARY);
        this.state = 2089;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===HiveSqlParser.T_TOP) {
            this.state = 2087;
            this.match(HiveSqlParser.T_TOP);
            this.state = 2088;
            this.expr(0);
        }

        this.state = 2091;
        this.match(HiveSqlParser.T_FOR);
        this.state = 2101;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,243,this._ctx);
        switch(la_) {
        case 1:
            this.state = 2092;
            this.select_stmt();
            break;

        case 2:
            this.state = 2093;
            this.table_name();
            this.state = 2095;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,241,this._ctx);
            if(la_===1) {
                this.state = 2094;
                this.where_clause();

            }
            this.state = 2099;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,242,this._ctx);
            if(la_===1) {
                this.state = 2097;
                this.match(HiveSqlParser.T_LIMIT);
                this.state = 2098;
                this.expr(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 Truncate_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_truncate_stmt;
    return this;
}

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

Truncate_stmtContext.prototype.T_TRUNCATE = function() {
    return this.getToken(HiveSqlParser.T_TRUNCATE, 0);
};

Truncate_stmtContext.prototype.table_name = function() {
    return this.getTypedRuleContext(Table_nameContext,0);
};

Truncate_stmtContext.prototype.T_TABLE = function() {
    return this.getToken(HiveSqlParser.T_TABLE, 0);
};

Truncate_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterTruncate_stmt(this);
	}
};

Truncate_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitTruncate_stmt(this);
	}
};

Truncate_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitTruncate_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Truncate_stmtContext = Truncate_stmtContext;

HiveSqlParser.prototype.truncate_stmt = function() {

    var localctx = new Truncate_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 264, HiveSqlParser.RULE_truncate_stmt);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2103;
        this.match(HiveSqlParser.T_TRUNCATE);
        this.state = 2105;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,244,this._ctx);
        if(la_===1) {
            this.state = 2104;
            this.match(HiveSqlParser.T_TABLE);

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


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

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

Use_stmtContext.prototype.T_USE = function() {
    return this.getToken(HiveSqlParser.T_USE, 0);
};

Use_stmtContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Use_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterUse_stmt(this);
	}
};

Use_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitUse_stmt(this);
	}
};

Use_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitUse_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Use_stmtContext = Use_stmtContext;

HiveSqlParser.prototype.use_stmt = function() {

    var localctx = new Use_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 266, HiveSqlParser.RULE_use_stmt);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2109;
        this.match(HiveSqlParser.T_USE);
        this.state = 2110;
        this.expr(0);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


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

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

Values_into_stmtContext.prototype.T_VALUES = function() {
    return this.getToken(HiveSqlParser.T_VALUES, 0);
};

Values_into_stmtContext.prototype.expr = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(ExprContext);
    } else {
        return this.getTypedRuleContext(ExprContext,i);
    }
};

Values_into_stmtContext.prototype.T_INTO = function() {
    return this.getToken(HiveSqlParser.T_INTO, 0);
};

Values_into_stmtContext.prototype.ident = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(IdentContext);
    } else {
        return this.getTypedRuleContext(IdentContext,i);
    }
};

Values_into_stmtContext.prototype.T_OPEN_P = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_OPEN_P);
    } else {
        return this.getToken(HiveSqlParser.T_OPEN_P, i);
    }
};


Values_into_stmtContext.prototype.T_COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_COMMA);
    } else {
        return this.getToken(HiveSqlParser.T_COMMA, i);
    }
};


Values_into_stmtContext.prototype.T_CLOSE_P = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_CLOSE_P);
    } else {
        return this.getToken(HiveSqlParser.T_CLOSE_P, i);
    }
};


Values_into_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterValues_into_stmt(this);
	}
};

Values_into_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitValues_into_stmt(this);
	}
};

Values_into_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitValues_into_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Values_into_stmtContext = Values_into_stmtContext;

HiveSqlParser.prototype.values_into_stmt = function() {

    var localctx = new Values_into_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 268, HiveSqlParser.RULE_values_into_stmt);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2112;
        this.match(HiveSqlParser.T_VALUES);
        this.state = 2114;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,245,this._ctx);
        if(la_===1) {
            this.state = 2113;
            this.match(HiveSqlParser.T_OPEN_P);

        }
        this.state = 2116;
        this.expr(0);
        this.state = 2121;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===HiveSqlParser.T_COMMA) {
            this.state = 2117;
            this.match(HiveSqlParser.T_COMMA);
            this.state = 2118;
            this.expr(0);
            this.state = 2123;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
        this.state = 2125;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===HiveSqlParser.T_CLOSE_P) {
            this.state = 2124;
            this.match(HiveSqlParser.T_CLOSE_P);
        }

        this.state = 2127;
        this.match(HiveSqlParser.T_INTO);
        this.state = 2129;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===HiveSqlParser.T_OPEN_P) {
            this.state = 2128;
            this.match(HiveSqlParser.T_OPEN_P);
        }

        this.state = 2131;
        this.ident();
        this.state = 2136;
        this._errHandler.sync(this);
        var _alt = this._interp.adaptivePredict(this._input,249,this._ctx)
        while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
            if(_alt===1) {
                this.state = 2132;
                this.match(HiveSqlParser.T_COMMA);
                this.state = 2133;
                this.ident(); 
            }
            this.state = 2138;
            this._errHandler.sync(this);
            _alt = this._interp.adaptivePredict(this._input,249,this._ctx);
        }

        this.state = 2140;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,250,this._ctx);
        if(la_===1) {
            this.state = 2139;
            this.match(HiveSqlParser.T_CLOSE_P);

        }
    } 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 While_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_while_stmt;
    return this;
}

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

While_stmtContext.prototype.T_WHILE = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_WHILE);
    } else {
        return this.getToken(HiveSqlParser.T_WHILE, i);
    }
};


While_stmtContext.prototype.bool_expr = function() {
    return this.getTypedRuleContext(Bool_exprContext,0);
};

While_stmtContext.prototype.block = function() {
    return this.getTypedRuleContext(BlockContext,0);
};

While_stmtContext.prototype.T_END = function() {
    return this.getToken(HiveSqlParser.T_END, 0);
};

While_stmtContext.prototype.T_DO = function() {
    return this.getToken(HiveSqlParser.T_DO, 0);
};

While_stmtContext.prototype.T_LOOP = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_LOOP);
    } else {
        return this.getToken(HiveSqlParser.T_LOOP, i);
    }
};


While_stmtContext.prototype.T_THEN = function() {
    return this.getToken(HiveSqlParser.T_THEN, 0);
};

While_stmtContext.prototype.T_BEGIN = function() {
    return this.getToken(HiveSqlParser.T_BEGIN, 0);
};

While_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterWhile_stmt(this);
	}
};

While_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitWhile_stmt(this);
	}
};

While_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitWhile_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.While_stmtContext = While_stmtContext;

HiveSqlParser.prototype.while_stmt = function() {

    var localctx = new While_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 270, HiveSqlParser.RULE_while_stmt);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2142;
        this.match(HiveSqlParser.T_WHILE);
        this.state = 2143;
        this.bool_expr(0);
        this.state = 2144;
        _la = this._input.LA(1);
        if(!(_la===HiveSqlParser.T_BEGIN || _la===HiveSqlParser.T_THEN || _la===HiveSqlParser.T_DO || _la===HiveSqlParser.T_LOOP)) {
        this._errHandler.recoverInline(this);
        }
        else {
        	this._errHandler.reportMatch(this);
            this.consume();
        }
        this.state = 2145;
        this.block();
        this.state = 2146;
        this.match(HiveSqlParser.T_END);
        this.state = 2148;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,251,this._ctx);
        if(la_===1) {
            this.state = 2147;
            _la = this._input.LA(1);
            if(!(_la===HiveSqlParser.T_WHILE || _la===HiveSqlParser.T_LOOP)) {
            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 For_cursor_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_for_cursor_stmt;
    return this;
}

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

For_cursor_stmtContext.prototype.T_FOR = function() {
    return this.getToken(HiveSqlParser.T_FOR, 0);
};

For_cursor_stmtContext.prototype.L_ID = function() {
    return this.getToken(HiveSqlParser.L_ID, 0);
};

For_cursor_stmtContext.prototype.T_IN = function() {
    return this.getToken(HiveSqlParser.T_IN, 0);
};

For_cursor_stmtContext.prototype.select_stmt = function() {
    return this.getTypedRuleContext(Select_stmtContext,0);
};

For_cursor_stmtContext.prototype.T_LOOP = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_LOOP);
    } else {
        return this.getToken(HiveSqlParser.T_LOOP, i);
    }
};


For_cursor_stmtContext.prototype.block = function() {
    return this.getTypedRuleContext(BlockContext,0);
};

For_cursor_stmtContext.prototype.T_END = function() {
    return this.getToken(HiveSqlParser.T_END, 0);
};

For_cursor_stmtContext.prototype.T_OPEN_P = function() {
    return this.getToken(HiveSqlParser.T_OPEN_P, 0);
};

For_cursor_stmtContext.prototype.T_CLOSE_P = function() {
    return this.getToken(HiveSqlParser.T_CLOSE_P, 0);
};

For_cursor_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterFor_cursor_stmt(this);
	}
};

For_cursor_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitFor_cursor_stmt(this);
	}
};

For_cursor_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitFor_cursor_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.For_cursor_stmtContext = For_cursor_stmtContext;

HiveSqlParser.prototype.for_cursor_stmt = function() {

    var localctx = new For_cursor_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 272, HiveSqlParser.RULE_for_cursor_stmt);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2150;
        this.match(HiveSqlParser.T_FOR);
        this.state = 2151;
        this.match(HiveSqlParser.L_ID);
        this.state = 2152;
        this.match(HiveSqlParser.T_IN);
        this.state = 2154;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,252,this._ctx);
        if(la_===1) {
            this.state = 2153;
            this.match(HiveSqlParser.T_OPEN_P);

        }
        this.state = 2156;
        this.select_stmt();
        this.state = 2158;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===HiveSqlParser.T_CLOSE_P) {
            this.state = 2157;
            this.match(HiveSqlParser.T_CLOSE_P);
        }

        this.state = 2160;
        this.match(HiveSqlParser.T_LOOP);
        this.state = 2161;
        this.block();
        this.state = 2162;
        this.match(HiveSqlParser.T_END);
        this.state = 2163;
        this.match(HiveSqlParser.T_LOOP);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


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

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

For_range_stmtContext.prototype.T_FOR = function() {
    return this.getToken(HiveSqlParser.T_FOR, 0);
};

For_range_stmtContext.prototype.L_ID = function() {
    return this.getToken(HiveSqlParser.L_ID, 0);
};

For_range_stmtContext.prototype.T_IN = function() {
    return this.getToken(HiveSqlParser.T_IN, 0);
};

For_range_stmtContext.prototype.expr = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(ExprContext);
    } else {
        return this.getTypedRuleContext(ExprContext,i);
    }
};

For_range_stmtContext.prototype.T_DOT2 = function() {
    return this.getToken(HiveSqlParser.T_DOT2, 0);
};

For_range_stmtContext.prototype.T_LOOP = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_LOOP);
    } else {
        return this.getToken(HiveSqlParser.T_LOOP, i);
    }
};


For_range_stmtContext.prototype.block = function() {
    return this.getTypedRuleContext(BlockContext,0);
};

For_range_stmtContext.prototype.T_END = function() {
    return this.getToken(HiveSqlParser.T_END, 0);
};

For_range_stmtContext.prototype.T_REVERSE = function() {
    return this.getToken(HiveSqlParser.T_REVERSE, 0);
};

For_range_stmtContext.prototype.T_BY = function() {
    return this.getToken(HiveSqlParser.T_BY, 0);
};

For_range_stmtContext.prototype.T_STEP = function() {
    return this.getToken(HiveSqlParser.T_STEP, 0);
};

For_range_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterFor_range_stmt(this);
	}
};

For_range_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitFor_range_stmt(this);
	}
};

For_range_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitFor_range_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.For_range_stmtContext = For_range_stmtContext;

HiveSqlParser.prototype.for_range_stmt = function() {

    var localctx = new For_range_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 274, HiveSqlParser.RULE_for_range_stmt);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2165;
        this.match(HiveSqlParser.T_FOR);
        this.state = 2166;
        this.match(HiveSqlParser.L_ID);
        this.state = 2167;
        this.match(HiveSqlParser.T_IN);
        this.state = 2169;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,254,this._ctx);
        if(la_===1) {
            this.state = 2168;
            this.match(HiveSqlParser.T_REVERSE);

        }
        this.state = 2171;
        this.expr(0);
        this.state = 2172;
        this.match(HiveSqlParser.T_DOT2);
        this.state = 2173;
        this.expr(0);
        this.state = 2176;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===HiveSqlParser.T_BY || _la===HiveSqlParser.T_STEP) {
            this.state = 2174;
            _la = this._input.LA(1);
            if(!(_la===HiveSqlParser.T_BY || _la===HiveSqlParser.T_STEP)) {
            this._errHandler.recoverInline(this);
            }
            else {
            	this._errHandler.reportMatch(this);
                this.consume();
            }
            this.state = 2175;
            this.expr(0);
        }

        this.state = 2178;
        this.match(HiveSqlParser.T_LOOP);
        this.state = 2179;
        this.block();
        this.state = 2180;
        this.match(HiveSqlParser.T_END);
        this.state = 2181;
        this.match(HiveSqlParser.T_LOOP);
    } 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 LabelContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_label;
    return this;
}

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

LabelContext.prototype.L_LABEL = function() {
    return this.getToken(HiveSqlParser.L_LABEL, 0);
};

LabelContext.prototype.T_LESS = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_LESS);
    } else {
        return this.getToken(HiveSqlParser.T_LESS, i);
    }
};


LabelContext.prototype.L_ID = function() {
    return this.getToken(HiveSqlParser.L_ID, 0);
};

LabelContext.prototype.T_GREATER = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_GREATER);
    } else {
        return this.getToken(HiveSqlParser.T_GREATER, i);
    }
};


LabelContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterLabel(this);
	}
};

LabelContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitLabel(this);
	}
};

LabelContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitLabel(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.LabelContext = LabelContext;

HiveSqlParser.prototype.label = function() {

    var localctx = new LabelContext(this, this._ctx, this.state);
    this.enterRule(localctx, 276, HiveSqlParser.RULE_label);
    try {
        this.state = 2189;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case HiveSqlParser.L_LABEL:
            this.enterOuterAlt(localctx, 1);
            this.state = 2183;
            this.match(HiveSqlParser.L_LABEL);
            break;
        case HiveSqlParser.T_LESS:
            this.enterOuterAlt(localctx, 2);
            this.state = 2184;
            this.match(HiveSqlParser.T_LESS);
            this.state = 2185;
            this.match(HiveSqlParser.T_LESS);
            this.state = 2186;
            this.match(HiveSqlParser.L_ID);
            this.state = 2187;
            this.match(HiveSqlParser.T_GREATER);
            this.state = 2188;
            this.match(HiveSqlParser.T_GREATER);
            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 Using_clauseContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_using_clause;
    return this;
}

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

Using_clauseContext.prototype.T_USING = function() {
    return this.getToken(HiveSqlParser.T_USING, 0);
};

Using_clauseContext.prototype.expr = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(ExprContext);
    } else {
        return this.getTypedRuleContext(ExprContext,i);
    }
};

Using_clauseContext.prototype.T_COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_COMMA);
    } else {
        return this.getToken(HiveSqlParser.T_COMMA, i);
    }
};


Using_clauseContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterUsing_clause(this);
	}
};

Using_clauseContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitUsing_clause(this);
	}
};

Using_clauseContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitUsing_clause(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Using_clauseContext = Using_clauseContext;

HiveSqlParser.prototype.using_clause = function() {

    var localctx = new Using_clauseContext(this, this._ctx, this.state);
    this.enterRule(localctx, 278, HiveSqlParser.RULE_using_clause);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2191;
        this.match(HiveSqlParser.T_USING);
        this.state = 2192;
        this.expr(0);
        this.state = 2197;
        this._errHandler.sync(this);
        var _alt = this._interp.adaptivePredict(this._input,257,this._ctx)
        while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
            if(_alt===1) {
                this.state = 2193;
                this.match(HiveSqlParser.T_COMMA);
                this.state = 2194;
                this.expr(0); 
            }
            this.state = 2199;
            this._errHandler.sync(this);
            _alt = this._interp.adaptivePredict(this._input,257,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 Select_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_select_stmt;
    return this;
}

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

Select_stmtContext.prototype.fullselect_stmt = function() {
    return this.getTypedRuleContext(Fullselect_stmtContext,0);
};

Select_stmtContext.prototype.cte_select_stmt = function() {
    return this.getTypedRuleContext(Cte_select_stmtContext,0);
};

Select_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterSelect_stmt(this);
	}
};

Select_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitSelect_stmt(this);
	}
};

Select_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitSelect_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Select_stmtContext = Select_stmtContext;

HiveSqlParser.prototype.select_stmt = function() {

    var localctx = new Select_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 280, HiveSqlParser.RULE_select_stmt);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2201;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===HiveSqlParser.T_WITH) {
            this.state = 2200;
            this.cte_select_stmt();
        }

        this.state = 2203;
        this.fullselect_stmt();
    } 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 Cte_select_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_cte_select_stmt;
    return this;
}

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

Cte_select_stmtContext.prototype.T_WITH = function() {
    return this.getToken(HiveSqlParser.T_WITH, 0);
};

Cte_select_stmtContext.prototype.cte_select_stmt_item = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Cte_select_stmt_itemContext);
    } else {
        return this.getTypedRuleContext(Cte_select_stmt_itemContext,i);
    }
};

Cte_select_stmtContext.prototype.T_COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_COMMA);
    } else {
        return this.getToken(HiveSqlParser.T_COMMA, i);
    }
};


Cte_select_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterCte_select_stmt(this);
	}
};

Cte_select_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitCte_select_stmt(this);
	}
};

Cte_select_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitCte_select_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Cte_select_stmtContext = Cte_select_stmtContext;

HiveSqlParser.prototype.cte_select_stmt = function() {

    var localctx = new Cte_select_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 282, HiveSqlParser.RULE_cte_select_stmt);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2205;
        this.match(HiveSqlParser.T_WITH);
        this.state = 2206;
        this.cte_select_stmt_item();
        this.state = 2211;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===HiveSqlParser.T_COMMA) {
            this.state = 2207;
            this.match(HiveSqlParser.T_COMMA);
            this.state = 2208;
            this.cte_select_stmt_item();
            this.state = 2213;
            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 Cte_select_stmt_itemContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_cte_select_stmt_item;
    return this;
}

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

Cte_select_stmt_itemContext.prototype.ident = function() {
    return this.getTypedRuleContext(IdentContext,0);
};

Cte_select_stmt_itemContext.prototype.T_AS = function() {
    return this.getToken(HiveSqlParser.T_AS, 0);
};

Cte_select_stmt_itemContext.prototype.T_OPEN_P = function() {
    return this.getToken(HiveSqlParser.T_OPEN_P, 0);
};

Cte_select_stmt_itemContext.prototype.fullselect_stmt = function() {
    return this.getTypedRuleContext(Fullselect_stmtContext,0);
};

Cte_select_stmt_itemContext.prototype.T_CLOSE_P = function() {
    return this.getToken(HiveSqlParser.T_CLOSE_P, 0);
};

Cte_select_stmt_itemContext.prototype.cte_select_cols = function() {
    return this.getTypedRuleContext(Cte_select_colsContext,0);
};

Cte_select_stmt_itemContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterCte_select_stmt_item(this);
	}
};

Cte_select_stmt_itemContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitCte_select_stmt_item(this);
	}
};

Cte_select_stmt_itemContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitCte_select_stmt_item(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Cte_select_stmt_itemContext = Cte_select_stmt_itemContext;

HiveSqlParser.prototype.cte_select_stmt_item = function() {

    var localctx = new Cte_select_stmt_itemContext(this, this._ctx, this.state);
    this.enterRule(localctx, 284, HiveSqlParser.RULE_cte_select_stmt_item);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2214;
        this.ident();
        this.state = 2216;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===HiveSqlParser.T_OPEN_P) {
            this.state = 2215;
            this.cte_select_cols();
        }

        this.state = 2218;
        this.match(HiveSqlParser.T_AS);
        this.state = 2219;
        this.match(HiveSqlParser.T_OPEN_P);
        this.state = 2220;
        this.fullselect_stmt();
        this.state = 2221;
        this.match(HiveSqlParser.T_CLOSE_P);
    } 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 Cte_select_colsContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_cte_select_cols;
    return this;
}

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

Cte_select_colsContext.prototype.T_OPEN_P = function() {
    return this.getToken(HiveSqlParser.T_OPEN_P, 0);
};

Cte_select_colsContext.prototype.ident = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(IdentContext);
    } else {
        return this.getTypedRuleContext(IdentContext,i);
    }
};

Cte_select_colsContext.prototype.T_CLOSE_P = function() {
    return this.getToken(HiveSqlParser.T_CLOSE_P, 0);
};

Cte_select_colsContext.prototype.T_COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_COMMA);
    } else {
        return this.getToken(HiveSqlParser.T_COMMA, i);
    }
};


Cte_select_colsContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterCte_select_cols(this);
	}
};

Cte_select_colsContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitCte_select_cols(this);
	}
};

Cte_select_colsContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitCte_select_cols(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Cte_select_colsContext = Cte_select_colsContext;

HiveSqlParser.prototype.cte_select_cols = function() {

    var localctx = new Cte_select_colsContext(this, this._ctx, this.state);
    this.enterRule(localctx, 286, HiveSqlParser.RULE_cte_select_cols);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2223;
        this.match(HiveSqlParser.T_OPEN_P);
        this.state = 2224;
        this.ident();
        this.state = 2229;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===HiveSqlParser.T_COMMA) {
            this.state = 2225;
            this.match(HiveSqlParser.T_COMMA);
            this.state = 2226;
            this.ident();
            this.state = 2231;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
        this.state = 2232;
        this.match(HiveSqlParser.T_CLOSE_P);
    } 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 Fullselect_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_fullselect_stmt;
    return this;
}

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

Fullselect_stmtContext.prototype.fullselect_stmt_item = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Fullselect_stmt_itemContext);
    } else {
        return this.getTypedRuleContext(Fullselect_stmt_itemContext,i);
    }
};

Fullselect_stmtContext.prototype.fullselect_set_clause = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Fullselect_set_clauseContext);
    } else {
        return this.getTypedRuleContext(Fullselect_set_clauseContext,i);
    }
};

Fullselect_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterFullselect_stmt(this);
	}
};

Fullselect_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitFullselect_stmt(this);
	}
};

Fullselect_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitFullselect_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Fullselect_stmtContext = Fullselect_stmtContext;

HiveSqlParser.prototype.fullselect_stmt = function() {

    var localctx = new Fullselect_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 288, HiveSqlParser.RULE_fullselect_stmt);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2234;
        this.fullselect_stmt_item();
        this.state = 2240;
        this._errHandler.sync(this);
        var _alt = this._interp.adaptivePredict(this._input,262,this._ctx)
        while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
            if(_alt===1) {
                this.state = 2235;
                this.fullselect_set_clause();
                this.state = 2236;
                this.fullselect_stmt_item(); 
            }
            this.state = 2242;
            this._errHandler.sync(this);
            _alt = this._interp.adaptivePredict(this._input,262,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 Fullselect_stmt_itemContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_fullselect_stmt_item;
    return this;
}

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

Fullselect_stmt_itemContext.prototype.subselect_stmt = function() {
    return this.getTypedRuleContext(Subselect_stmtContext,0);
};

Fullselect_stmt_itemContext.prototype.T_OPEN_P = function() {
    return this.getToken(HiveSqlParser.T_OPEN_P, 0);
};

Fullselect_stmt_itemContext.prototype.fullselect_stmt = function() {
    return this.getTypedRuleContext(Fullselect_stmtContext,0);
};

Fullselect_stmt_itemContext.prototype.T_CLOSE_P = function() {
    return this.getToken(HiveSqlParser.T_CLOSE_P, 0);
};

Fullselect_stmt_itemContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterFullselect_stmt_item(this);
	}
};

Fullselect_stmt_itemContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitFullselect_stmt_item(this);
	}
};

Fullselect_stmt_itemContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitFullselect_stmt_item(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Fullselect_stmt_itemContext = Fullselect_stmt_itemContext;

HiveSqlParser.prototype.fullselect_stmt_item = function() {

    var localctx = new Fullselect_stmt_itemContext(this, this._ctx, this.state);
    this.enterRule(localctx, 290, HiveSqlParser.RULE_fullselect_stmt_item);
    try {
        this.state = 2248;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case HiveSqlParser.T_SELECT:
        case HiveSqlParser.T_SEL:
            this.enterOuterAlt(localctx, 1);
            this.state = 2243;
            this.subselect_stmt();
            break;
        case HiveSqlParser.T_OPEN_P:
            this.enterOuterAlt(localctx, 2);
            this.state = 2244;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 2245;
            this.fullselect_stmt();
            this.state = 2246;
            this.match(HiveSqlParser.T_CLOSE_P);
            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 Fullselect_set_clauseContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_fullselect_set_clause;
    return this;
}

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

Fullselect_set_clauseContext.prototype.T_UNION = function() {
    return this.getToken(HiveSqlParser.T_UNION, 0);
};

Fullselect_set_clauseContext.prototype.T_ALL = function() {
    return this.getToken(HiveSqlParser.T_ALL, 0);
};

Fullselect_set_clauseContext.prototype.T_EXCEPT = function() {
    return this.getToken(HiveSqlParser.T_EXCEPT, 0);
};

Fullselect_set_clauseContext.prototype.T_INTERSECT = function() {
    return this.getToken(HiveSqlParser.T_INTERSECT, 0);
};

Fullselect_set_clauseContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterFullselect_set_clause(this);
	}
};

Fullselect_set_clauseContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitFullselect_set_clause(this);
	}
};

Fullselect_set_clauseContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitFullselect_set_clause(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Fullselect_set_clauseContext = Fullselect_set_clauseContext;

HiveSqlParser.prototype.fullselect_set_clause = function() {

    var localctx = new Fullselect_set_clauseContext(this, this._ctx, this.state);
    this.enterRule(localctx, 292, HiveSqlParser.RULE_fullselect_set_clause);
    var _la = 0; // Token type
    try {
        this.state = 2262;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case HiveSqlParser.T_UNION:
            this.enterOuterAlt(localctx, 1);
            this.state = 2250;
            this.match(HiveSqlParser.T_UNION);
            this.state = 2252;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===HiveSqlParser.T_ALL) {
                this.state = 2251;
                this.match(HiveSqlParser.T_ALL);
            }

            break;
        case HiveSqlParser.T_EXCEPT:
            this.enterOuterAlt(localctx, 2);
            this.state = 2254;
            this.match(HiveSqlParser.T_EXCEPT);
            this.state = 2256;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===HiveSqlParser.T_ALL) {
                this.state = 2255;
                this.match(HiveSqlParser.T_ALL);
            }

            break;
        case HiveSqlParser.T_INTERSECT:
            this.enterOuterAlt(localctx, 3);
            this.state = 2258;
            this.match(HiveSqlParser.T_INTERSECT);
            this.state = 2260;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===HiveSqlParser.T_ALL) {
                this.state = 2259;
                this.match(HiveSqlParser.T_ALL);
            }

            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 Subselect_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_subselect_stmt;
    return this;
}

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

Subselect_stmtContext.prototype.select_list = function() {
    return this.getTypedRuleContext(Select_listContext,0);
};

Subselect_stmtContext.prototype.T_SELECT = function() {
    return this.getToken(HiveSqlParser.T_SELECT, 0);
};

Subselect_stmtContext.prototype.T_SEL = function() {
    return this.getToken(HiveSqlParser.T_SEL, 0);
};

Subselect_stmtContext.prototype.into_clause = function() {
    return this.getTypedRuleContext(Into_clauseContext,0);
};

Subselect_stmtContext.prototype.from_clause = function() {
    return this.getTypedRuleContext(From_clauseContext,0);
};

Subselect_stmtContext.prototype.where_clause = function() {
    return this.getTypedRuleContext(Where_clauseContext,0);
};

Subselect_stmtContext.prototype.group_by_clause = function() {
    return this.getTypedRuleContext(Group_by_clauseContext,0);
};

Subselect_stmtContext.prototype.having_clause = function() {
    return this.getTypedRuleContext(Having_clauseContext,0);
};

Subselect_stmtContext.prototype.qualify_clause = function() {
    return this.getTypedRuleContext(Qualify_clauseContext,0);
};

Subselect_stmtContext.prototype.order_by_clause = function() {
    return this.getTypedRuleContext(Order_by_clauseContext,0);
};

Subselect_stmtContext.prototype.select_options = function() {
    return this.getTypedRuleContext(Select_optionsContext,0);
};

Subselect_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterSubselect_stmt(this);
	}
};

Subselect_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitSubselect_stmt(this);
	}
};

Subselect_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitSubselect_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Subselect_stmtContext = Subselect_stmtContext;

HiveSqlParser.prototype.subselect_stmt = function() {

    var localctx = new Subselect_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 294, HiveSqlParser.RULE_subselect_stmt);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2264;
        _la = this._input.LA(1);
        if(!(_la===HiveSqlParser.T_SELECT || _la===HiveSqlParser.T_SEL)) {
        this._errHandler.recoverInline(this);
        }
        else {
        	this._errHandler.reportMatch(this);
            this.consume();
        }
        this.state = 2265;
        this.select_list();
        this.state = 2267;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,268,this._ctx);
        if(la_===1) {
            this.state = 2266;
            this.into_clause();

        }
        this.state = 2270;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,269,this._ctx);
        if(la_===1) {
            this.state = 2269;
            this.from_clause();

        }
        this.state = 2273;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,270,this._ctx);
        if(la_===1) {
            this.state = 2272;
            this.where_clause();

        }
        this.state = 2276;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,271,this._ctx);
        if(la_===1) {
            this.state = 2275;
            this.group_by_clause();

        }
        this.state = 2280;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,272,this._ctx);
        if(la_===1) {
            this.state = 2278;
            this.having_clause();

        } else if(la_===2) {
            this.state = 2279;
            this.qualify_clause();

        }
        this.state = 2283;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,273,this._ctx);
        if(la_===1) {
            this.state = 2282;
            this.order_by_clause();

        }
        this.state = 2286;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,274,this._ctx);
        if(la_===1) {
            this.state = 2285;
            this.select_options();

        }
    } 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 Select_listContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_select_list;
    return this;
}

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

Select_listContext.prototype.select_list_item = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Select_list_itemContext);
    } else {
        return this.getTypedRuleContext(Select_list_itemContext,i);
    }
};

Select_listContext.prototype.select_list_set = function() {
    return this.getTypedRuleContext(Select_list_setContext,0);
};

Select_listContext.prototype.select_list_limit = function() {
    return this.getTypedRuleContext(Select_list_limitContext,0);
};

Select_listContext.prototype.T_COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_COMMA);
    } else {
        return this.getToken(HiveSqlParser.T_COMMA, i);
    }
};


Select_listContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterSelect_list(this);
	}
};

Select_listContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitSelect_list(this);
	}
};

Select_listContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitSelect_list(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Select_listContext = Select_listContext;

HiveSqlParser.prototype.select_list = function() {

    var localctx = new Select_listContext(this, this._ctx, this.state);
    this.enterRule(localctx, 296, HiveSqlParser.RULE_select_list);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2289;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,275,this._ctx);
        if(la_===1) {
            this.state = 2288;
            this.select_list_set();

        }
        this.state = 2292;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,276,this._ctx);
        if(la_===1) {
            this.state = 2291;
            this.select_list_limit();

        }
        this.state = 2294;
        this.select_list_item();
        this.state = 2299;
        this._errHandler.sync(this);
        var _alt = this._interp.adaptivePredict(this._input,277,this._ctx)
        while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
            if(_alt===1) {
                this.state = 2295;
                this.match(HiveSqlParser.T_COMMA);
                this.state = 2296;
                this.select_list_item(); 
            }
            this.state = 2301;
            this._errHandler.sync(this);
            _alt = this._interp.adaptivePredict(this._input,277,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 Select_list_setContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_select_list_set;
    return this;
}

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

Select_list_setContext.prototype.T_ALL = function() {
    return this.getToken(HiveSqlParser.T_ALL, 0);
};

Select_list_setContext.prototype.T_DISTINCT = function() {
    return this.getToken(HiveSqlParser.T_DISTINCT, 0);
};

Select_list_setContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterSelect_list_set(this);
	}
};

Select_list_setContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitSelect_list_set(this);
	}
};

Select_list_setContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitSelect_list_set(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Select_list_setContext = Select_list_setContext;

HiveSqlParser.prototype.select_list_set = function() {

    var localctx = new Select_list_setContext(this, this._ctx, this.state);
    this.enterRule(localctx, 298, HiveSqlParser.RULE_select_list_set);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2302;
        _la = this._input.LA(1);
        if(!(_la===HiveSqlParser.T_ALL || _la===HiveSqlParser.T_DISTINCT)) {
        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 Select_list_limitContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_select_list_limit;
    return this;
}

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

Select_list_limitContext.prototype.T_TOP = function() {
    return this.getToken(HiveSqlParser.T_TOP, 0);
};

Select_list_limitContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Select_list_limitContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterSelect_list_limit(this);
	}
};

Select_list_limitContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitSelect_list_limit(this);
	}
};

Select_list_limitContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitSelect_list_limit(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Select_list_limitContext = Select_list_limitContext;

HiveSqlParser.prototype.select_list_limit = function() {

    var localctx = new Select_list_limitContext(this, this._ctx, this.state);
    this.enterRule(localctx, 300, HiveSqlParser.RULE_select_list_limit);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2304;
        this.match(HiveSqlParser.T_TOP);
        this.state = 2305;
        this.expr(0);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


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

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

Select_list_itemContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Select_list_itemContext.prototype.select_list_asterisk = function() {
    return this.getTypedRuleContext(Select_list_asteriskContext,0);
};

Select_list_itemContext.prototype.ident = function() {
    return this.getTypedRuleContext(IdentContext,0);
};

Select_list_itemContext.prototype.T_EQUAL = function() {
    return this.getToken(HiveSqlParser.T_EQUAL, 0);
};

Select_list_itemContext.prototype.select_list_alias = function() {
    return this.getTypedRuleContext(Select_list_aliasContext,0);
};

Select_list_itemContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterSelect_list_item(this);
	}
};

Select_list_itemContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitSelect_list_item(this);
	}
};

Select_list_itemContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitSelect_list_item(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Select_list_itemContext = Select_list_itemContext;

HiveSqlParser.prototype.select_list_item = function() {

    var localctx = new Select_list_itemContext(this, this._ctx, this.state);
    this.enterRule(localctx, 302, HiveSqlParser.RULE_select_list_item);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2317;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,280,this._ctx);
        switch(la_) {
        case 1:
            this.state = 2310;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,278,this._ctx);
            if(la_===1) {
                this.state = 2307;
                this.ident();
                this.state = 2308;
                this.match(HiveSqlParser.T_EQUAL);

            }
            this.state = 2312;
            this.expr(0);
            this.state = 2314;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,279,this._ctx);
            if(la_===1) {
                this.state = 2313;
                this.select_list_alias();

            }
            break;

        case 2:
            this.state = 2316;
            this.select_list_asterisk();
            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 Select_list_aliasContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_select_list_alias;
    return this;
}

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

Select_list_aliasContext.prototype.ident = function() {
    return this.getTypedRuleContext(IdentContext,0);
};

Select_list_aliasContext.prototype.T_AS = function() {
    return this.getToken(HiveSqlParser.T_AS, 0);
};

Select_list_aliasContext.prototype.T_OPEN_P = function() {
    return this.getToken(HiveSqlParser.T_OPEN_P, 0);
};

Select_list_aliasContext.prototype.T_TITLE = function() {
    return this.getToken(HiveSqlParser.T_TITLE, 0);
};

Select_list_aliasContext.prototype.L_S_STRING = function() {
    return this.getToken(HiveSqlParser.L_S_STRING, 0);
};

Select_list_aliasContext.prototype.T_CLOSE_P = function() {
    return this.getToken(HiveSqlParser.T_CLOSE_P, 0);
};

Select_list_aliasContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterSelect_list_alias(this);
	}
};

Select_list_aliasContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitSelect_list_alias(this);
	}
};

Select_list_aliasContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitSelect_list_alias(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Select_list_aliasContext = Select_list_aliasContext;

HiveSqlParser.prototype.select_list_alias = function() {

    var localctx = new Select_list_aliasContext(this, this._ctx, this.state);
    this.enterRule(localctx, 304, HiveSqlParser.RULE_select_list_alias);
    try {
        this.state = 2328;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,282,this._ctx);
        switch(la_) {
        case 1:
            this.enterOuterAlt(localctx, 1);
            this.state = 2319;
            if (!( !this._input.LT(1).getText().equalsIgnoreCase("INTO") && !this._input.LT(1).getText().equalsIgnoreCase("FROM"))) {
                throw new antlr4.error.FailedPredicateException(this, "!this._input.LT(1).getText().equalsIgnoreCase(\"INTO\") && !this._input.LT(1).getText().equalsIgnoreCase(\"FROM\")");
            }
            this.state = 2321;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,281,this._ctx);
            if(la_===1) {
                this.state = 2320;
                this.match(HiveSqlParser.T_AS);

            }
            this.state = 2323;
            this.ident();
            break;

        case 2:
            this.enterOuterAlt(localctx, 2);
            this.state = 2324;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 2325;
            this.match(HiveSqlParser.T_TITLE);
            this.state = 2326;
            this.match(HiveSqlParser.L_S_STRING);
            this.state = 2327;
            this.match(HiveSqlParser.T_CLOSE_P);
            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 Select_list_asteriskContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_select_list_asterisk;
    return this;
}

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

Select_list_asteriskContext.prototype.L_ID = function() {
    return this.getToken(HiveSqlParser.L_ID, 0);
};

Select_list_asteriskContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterSelect_list_asterisk(this);
	}
};

Select_list_asteriskContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitSelect_list_asterisk(this);
	}
};

Select_list_asteriskContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitSelect_list_asterisk(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Select_list_asteriskContext = Select_list_asteriskContext;

HiveSqlParser.prototype.select_list_asterisk = function() {

    var localctx = new Select_list_asteriskContext(this, this._ctx, this.state);
    this.enterRule(localctx, 306, HiveSqlParser.RULE_select_list_asterisk);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2332;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===HiveSqlParser.L_ID) {
            this.state = 2330;
            this.match(HiveSqlParser.L_ID);
            this.state = 2331;
            this.match(HiveSqlParser.T__4);
        }

        this.state = 2334;
        this.match(HiveSqlParser.T__5);
    } 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 Into_clauseContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_into_clause;
    return this;
}

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

Into_clauseContext.prototype.T_INTO = function() {
    return this.getToken(HiveSqlParser.T_INTO, 0);
};

Into_clauseContext.prototype.ident = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(IdentContext);
    } else {
        return this.getTypedRuleContext(IdentContext,i);
    }
};

Into_clauseContext.prototype.T_COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_COMMA);
    } else {
        return this.getToken(HiveSqlParser.T_COMMA, i);
    }
};


Into_clauseContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterInto_clause(this);
	}
};

Into_clauseContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitInto_clause(this);
	}
};

Into_clauseContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitInto_clause(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Into_clauseContext = Into_clauseContext;

HiveSqlParser.prototype.into_clause = function() {

    var localctx = new Into_clauseContext(this, this._ctx, this.state);
    this.enterRule(localctx, 308, HiveSqlParser.RULE_into_clause);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2336;
        this.match(HiveSqlParser.T_INTO);
        this.state = 2337;
        this.ident();
        this.state = 2342;
        this._errHandler.sync(this);
        var _alt = this._interp.adaptivePredict(this._input,284,this._ctx)
        while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
            if(_alt===1) {
                this.state = 2338;
                this.match(HiveSqlParser.T_COMMA);
                this.state = 2339;
                this.ident(); 
            }
            this.state = 2344;
            this._errHandler.sync(this);
            _alt = this._interp.adaptivePredict(this._input,284,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 From_clauseContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_from_clause;
    return this;
}

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

From_clauseContext.prototype.T_FROM = function() {
    return this.getToken(HiveSqlParser.T_FROM, 0);
};

From_clauseContext.prototype.from_table_clause = function() {
    return this.getTypedRuleContext(From_table_clauseContext,0);
};

From_clauseContext.prototype.from_join_clause = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(From_join_clauseContext);
    } else {
        return this.getTypedRuleContext(From_join_clauseContext,i);
    }
};

From_clauseContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterFrom_clause(this);
	}
};

From_clauseContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitFrom_clause(this);
	}
};

From_clauseContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitFrom_clause(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.From_clauseContext = From_clauseContext;

HiveSqlParser.prototype.from_clause = function() {

    var localctx = new From_clauseContext(this, this._ctx, this.state);
    this.enterRule(localctx, 310, HiveSqlParser.RULE_from_clause);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2345;
        this.match(HiveSqlParser.T_FROM);
        this.state = 2346;
        this.from_table_clause();
        this.state = 2350;
        this._errHandler.sync(this);
        var _alt = this._interp.adaptivePredict(this._input,285,this._ctx)
        while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
            if(_alt===1) {
                this.state = 2347;
                this.from_join_clause(); 
            }
            this.state = 2352;
            this._errHandler.sync(this);
            _alt = this._interp.adaptivePredict(this._input,285,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 From_table_clauseContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_from_table_clause;
    return this;
}

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

From_table_clauseContext.prototype.from_table_name_clause = function() {
    return this.getTypedRuleContext(From_table_name_clauseContext,0);
};

From_table_clauseContext.prototype.from_subselect_clause = function() {
    return this.getTypedRuleContext(From_subselect_clauseContext,0);
};

From_table_clauseContext.prototype.from_table_values_clause = function() {
    return this.getTypedRuleContext(From_table_values_clauseContext,0);
};

From_table_clauseContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterFrom_table_clause(this);
	}
};

From_table_clauseContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitFrom_table_clause(this);
	}
};

From_table_clauseContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitFrom_table_clause(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.From_table_clauseContext = From_table_clauseContext;

HiveSqlParser.prototype.from_table_clause = function() {

    var localctx = new From_table_clauseContext(this, this._ctx, this.state);
    this.enterRule(localctx, 312, HiveSqlParser.RULE_from_table_clause);
    try {
        this.state = 2356;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,286,this._ctx);
        switch(la_) {
        case 1:
            this.enterOuterAlt(localctx, 1);
            this.state = 2353;
            this.from_table_name_clause();
            break;

        case 2:
            this.enterOuterAlt(localctx, 2);
            this.state = 2354;
            this.from_subselect_clause();
            break;

        case 3:
            this.enterOuterAlt(localctx, 3);
            this.state = 2355;
            this.from_table_values_clause();
            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 From_table_name_clauseContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_from_table_name_clause;
    return this;
}

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

From_table_name_clauseContext.prototype.table_name = function() {
    return this.getTypedRuleContext(Table_nameContext,0);
};

From_table_name_clauseContext.prototype.from_alias_clause = function() {
    return this.getTypedRuleContext(From_alias_clauseContext,0);
};

From_table_name_clauseContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterFrom_table_name_clause(this);
	}
};

From_table_name_clauseContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitFrom_table_name_clause(this);
	}
};

From_table_name_clauseContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitFrom_table_name_clause(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.From_table_name_clauseContext = From_table_name_clauseContext;

HiveSqlParser.prototype.from_table_name_clause = function() {

    var localctx = new From_table_name_clauseContext(this, this._ctx, this.state);
    this.enterRule(localctx, 314, HiveSqlParser.RULE_from_table_name_clause);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2358;
        this.table_name();
        this.state = 2360;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,287,this._ctx);
        if(la_===1) {
            this.state = 2359;
            this.from_alias_clause();

        }
    } 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 From_subselect_clauseContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_from_subselect_clause;
    return this;
}

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

From_subselect_clauseContext.prototype.T_OPEN_P = function() {
    return this.getToken(HiveSqlParser.T_OPEN_P, 0);
};

From_subselect_clauseContext.prototype.select_stmt = function() {
    return this.getTypedRuleContext(Select_stmtContext,0);
};

From_subselect_clauseContext.prototype.T_CLOSE_P = function() {
    return this.getToken(HiveSqlParser.T_CLOSE_P, 0);
};

From_subselect_clauseContext.prototype.from_alias_clause = function() {
    return this.getTypedRuleContext(From_alias_clauseContext,0);
};

From_subselect_clauseContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterFrom_subselect_clause(this);
	}
};

From_subselect_clauseContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitFrom_subselect_clause(this);
	}
};

From_subselect_clauseContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitFrom_subselect_clause(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.From_subselect_clauseContext = From_subselect_clauseContext;

HiveSqlParser.prototype.from_subselect_clause = function() {

    var localctx = new From_subselect_clauseContext(this, this._ctx, this.state);
    this.enterRule(localctx, 316, HiveSqlParser.RULE_from_subselect_clause);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2362;
        this.match(HiveSqlParser.T_OPEN_P);
        this.state = 2363;
        this.select_stmt();
        this.state = 2364;
        this.match(HiveSqlParser.T_CLOSE_P);
        this.state = 2366;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,288,this._ctx);
        if(la_===1) {
            this.state = 2365;
            this.from_alias_clause();

        }
    } 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 From_join_clauseContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_from_join_clause;
    return this;
}

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

From_join_clauseContext.prototype.T_COMMA = function() {
    return this.getToken(HiveSqlParser.T_COMMA, 0);
};

From_join_clauseContext.prototype.from_table_clause = function() {
    return this.getTypedRuleContext(From_table_clauseContext,0);
};

From_join_clauseContext.prototype.from_join_type_clause = function() {
    return this.getTypedRuleContext(From_join_type_clauseContext,0);
};

From_join_clauseContext.prototype.T_ON = function() {
    return this.getToken(HiveSqlParser.T_ON, 0);
};

From_join_clauseContext.prototype.bool_expr = function() {
    return this.getTypedRuleContext(Bool_exprContext,0);
};

From_join_clauseContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterFrom_join_clause(this);
	}
};

From_join_clauseContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitFrom_join_clause(this);
	}
};

From_join_clauseContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitFrom_join_clause(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.From_join_clauseContext = From_join_clauseContext;

HiveSqlParser.prototype.from_join_clause = function() {

    var localctx = new From_join_clauseContext(this, this._ctx, this.state);
    this.enterRule(localctx, 318, HiveSqlParser.RULE_from_join_clause);
    try {
        this.state = 2375;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case HiveSqlParser.T_COMMA:
            this.enterOuterAlt(localctx, 1);
            this.state = 2368;
            this.match(HiveSqlParser.T_COMMA);
            this.state = 2369;
            this.from_table_clause();
            break;
        case HiveSqlParser.T_INNER:
        case HiveSqlParser.T_JOIN:
        case HiveSqlParser.T_LEFT:
        case HiveSqlParser.T_RIGHT:
        case HiveSqlParser.T_FULL:
            this.enterOuterAlt(localctx, 2);
            this.state = 2370;
            this.from_join_type_clause();
            this.state = 2371;
            this.from_table_clause();
            this.state = 2372;
            this.match(HiveSqlParser.T_ON);
            this.state = 2373;
            this.bool_expr(0);
            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 From_join_type_clauseContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_from_join_type_clause;
    return this;
}

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

From_join_type_clauseContext.prototype.T_JOIN = function() {
    return this.getToken(HiveSqlParser.T_JOIN, 0);
};

From_join_type_clauseContext.prototype.T_INNER = function() {
    return this.getToken(HiveSqlParser.T_INNER, 0);
};

From_join_type_clauseContext.prototype.T_LEFT = function() {
    return this.getToken(HiveSqlParser.T_LEFT, 0);
};

From_join_type_clauseContext.prototype.T_RIGHT = function() {
    return this.getToken(HiveSqlParser.T_RIGHT, 0);
};

From_join_type_clauseContext.prototype.T_FULL = function() {
    return this.getToken(HiveSqlParser.T_FULL, 0);
};

From_join_type_clauseContext.prototype.T_OUTER = function() {
    return this.getToken(HiveSqlParser.T_OUTER, 0);
};

From_join_type_clauseContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterFrom_join_type_clause(this);
	}
};

From_join_type_clauseContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitFrom_join_type_clause(this);
	}
};

From_join_type_clauseContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitFrom_join_type_clause(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.From_join_type_clauseContext = From_join_type_clauseContext;

HiveSqlParser.prototype.from_join_type_clause = function() {

    var localctx = new From_join_type_clauseContext(this, this._ctx, this.state);
    this.enterRule(localctx, 320, HiveSqlParser.RULE_from_join_type_clause);
    var _la = 0; // Token type
    try {
        this.state = 2386;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case HiveSqlParser.T_INNER:
        case HiveSqlParser.T_JOIN:
            this.enterOuterAlt(localctx, 1);
            this.state = 2378;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===HiveSqlParser.T_INNER) {
                this.state = 2377;
                this.match(HiveSqlParser.T_INNER);
            }

            this.state = 2380;
            this.match(HiveSqlParser.T_JOIN);
            break;
        case HiveSqlParser.T_LEFT:
        case HiveSqlParser.T_RIGHT:
        case HiveSqlParser.T_FULL:
            this.enterOuterAlt(localctx, 2);
            this.state = 2381;
            _la = this._input.LA(1);
            if(!(((((_la - 283)) & ~0x1f) == 0 && ((1 << (_la - 283)) & ((1 << (HiveSqlParser.T_LEFT - 283)) | (1 << (HiveSqlParser.T_RIGHT - 283)) | (1 << (HiveSqlParser.T_FULL - 283)))) !== 0))) {
            this._errHandler.recoverInline(this);
            }
            else {
            	this._errHandler.reportMatch(this);
                this.consume();
            }
            this.state = 2383;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===HiveSqlParser.T_OUTER) {
                this.state = 2382;
                this.match(HiveSqlParser.T_OUTER);
            }

            this.state = 2385;
            this.match(HiveSqlParser.T_JOIN);
            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 From_table_values_clauseContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_from_table_values_clause;
    return this;
}

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

From_table_values_clauseContext.prototype.T_TABLE = function() {
    return this.getToken(HiveSqlParser.T_TABLE, 0);
};

From_table_values_clauseContext.prototype.T_OPEN_P = function() {
    return this.getToken(HiveSqlParser.T_OPEN_P, 0);
};

From_table_values_clauseContext.prototype.T_VALUES = function() {
    return this.getToken(HiveSqlParser.T_VALUES, 0);
};

From_table_values_clauseContext.prototype.from_table_values_row = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(From_table_values_rowContext);
    } else {
        return this.getTypedRuleContext(From_table_values_rowContext,i);
    }
};

From_table_values_clauseContext.prototype.T_CLOSE_P = function() {
    return this.getToken(HiveSqlParser.T_CLOSE_P, 0);
};

From_table_values_clauseContext.prototype.T_COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_COMMA);
    } else {
        return this.getToken(HiveSqlParser.T_COMMA, i);
    }
};


From_table_values_clauseContext.prototype.from_alias_clause = function() {
    return this.getTypedRuleContext(From_alias_clauseContext,0);
};

From_table_values_clauseContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterFrom_table_values_clause(this);
	}
};

From_table_values_clauseContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitFrom_table_values_clause(this);
	}
};

From_table_values_clauseContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitFrom_table_values_clause(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.From_table_values_clauseContext = From_table_values_clauseContext;

HiveSqlParser.prototype.from_table_values_clause = function() {

    var localctx = new From_table_values_clauseContext(this, this._ctx, this.state);
    this.enterRule(localctx, 322, HiveSqlParser.RULE_from_table_values_clause);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2388;
        this.match(HiveSqlParser.T_TABLE);
        this.state = 2389;
        this.match(HiveSqlParser.T_OPEN_P);
        this.state = 2390;
        this.match(HiveSqlParser.T_VALUES);
        this.state = 2391;
        this.from_table_values_row();
        this.state = 2396;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===HiveSqlParser.T_COMMA) {
            this.state = 2392;
            this.match(HiveSqlParser.T_COMMA);
            this.state = 2393;
            this.from_table_values_row();
            this.state = 2398;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
        this.state = 2399;
        this.match(HiveSqlParser.T_CLOSE_P);
        this.state = 2401;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,294,this._ctx);
        if(la_===1) {
            this.state = 2400;
            this.from_alias_clause();

        }
    } 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 From_table_values_rowContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_from_table_values_row;
    return this;
}

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

From_table_values_rowContext.prototype.expr = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(ExprContext);
    } else {
        return this.getTypedRuleContext(ExprContext,i);
    }
};

From_table_values_rowContext.prototype.T_OPEN_P = function() {
    return this.getToken(HiveSqlParser.T_OPEN_P, 0);
};

From_table_values_rowContext.prototype.T_CLOSE_P = function() {
    return this.getToken(HiveSqlParser.T_CLOSE_P, 0);
};

From_table_values_rowContext.prototype.T_COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_COMMA);
    } else {
        return this.getToken(HiveSqlParser.T_COMMA, i);
    }
};


From_table_values_rowContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterFrom_table_values_row(this);
	}
};

From_table_values_rowContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitFrom_table_values_row(this);
	}
};

From_table_values_rowContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitFrom_table_values_row(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.From_table_values_rowContext = From_table_values_rowContext;

HiveSqlParser.prototype.from_table_values_row = function() {

    var localctx = new From_table_values_rowContext(this, this._ctx, this.state);
    this.enterRule(localctx, 324, HiveSqlParser.RULE_from_table_values_row);
    var _la = 0; // Token type
    try {
        this.state = 2415;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,296,this._ctx);
        switch(la_) {
        case 1:
            this.enterOuterAlt(localctx, 1);
            this.state = 2403;
            this.expr(0);
            break;

        case 2:
            this.enterOuterAlt(localctx, 2);
            this.state = 2404;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 2405;
            this.expr(0);
            this.state = 2410;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            while(_la===HiveSqlParser.T_COMMA) {
                this.state = 2406;
                this.match(HiveSqlParser.T_COMMA);
                this.state = 2407;
                this.expr(0);
                this.state = 2412;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
            }
            this.state = 2413;
            this.match(HiveSqlParser.T_CLOSE_P);
            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 From_alias_clauseContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_from_alias_clause;
    return this;
}

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

From_alias_clauseContext.prototype.ident = function() {
    return this.getTypedRuleContext(IdentContext,0);
};

From_alias_clauseContext.prototype.T_AS = function() {
    return this.getToken(HiveSqlParser.T_AS, 0);
};

From_alias_clauseContext.prototype.T_OPEN_P = function() {
    return this.getToken(HiveSqlParser.T_OPEN_P, 0);
};

From_alias_clauseContext.prototype.L_ID = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.L_ID);
    } else {
        return this.getToken(HiveSqlParser.L_ID, i);
    }
};


From_alias_clauseContext.prototype.T_CLOSE_P = function() {
    return this.getToken(HiveSqlParser.T_CLOSE_P, 0);
};

From_alias_clauseContext.prototype.T_COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_COMMA);
    } else {
        return this.getToken(HiveSqlParser.T_COMMA, i);
    }
};


From_alias_clauseContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterFrom_alias_clause(this);
	}
};

From_alias_clauseContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitFrom_alias_clause(this);
	}
};

From_alias_clauseContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitFrom_alias_clause(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.From_alias_clauseContext = From_alias_clauseContext;

HiveSqlParser.prototype.from_alias_clause = function() {

    var localctx = new From_alias_clauseContext(this, this._ctx, this.state);
    this.enterRule(localctx, 326, HiveSqlParser.RULE_from_alias_clause);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2417;
        if (!( !this._input.LT(1).getText().equalsIgnoreCase("EXEC") &&
                !this._input.LT(1).getText().equalsIgnoreCase("EXECUTE") && 
                !this._input.LT(1).getText().equalsIgnoreCase("INNER") &&
                !this._input.LT(1).getText().equalsIgnoreCase("LEFT") &&
                !this._input.LT(1).getText().equalsIgnoreCase("GROUP") &&
                !this._input.LT(1).getText().equalsIgnoreCase("ORDER") &&
                !this._input.LT(1).getText().equalsIgnoreCase("LIMIT") &&
                !this._input.LT(1).getText().equalsIgnoreCase("WITH"))) {
            throw new antlr4.error.FailedPredicateException(this, "!this._input.LT(1).getText().equalsIgnoreCase(\"EXEC\") &&\n        !this._input.LT(1).getText().equalsIgnoreCase(\"EXECUTE\") && \n        !this._input.LT(1).getText().equalsIgnoreCase(\"INNER\") &&\n        !this._input.LT(1).getText().equalsIgnoreCase(\"LEFT\") &&\n        !this._input.LT(1).getText().equalsIgnoreCase(\"GROUP\") &&\n        !this._input.LT(1).getText().equalsIgnoreCase(\"ORDER\") &&\n        !this._input.LT(1).getText().equalsIgnoreCase(\"LIMIT\") &&\n        !this._input.LT(1).getText().equalsIgnoreCase(\"WITH\")");
        }
        this.state = 2419;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,297,this._ctx);
        if(la_===1) {
            this.state = 2418;
            this.match(HiveSqlParser.T_AS);

        }
        this.state = 2421;
        this.ident();
        this.state = 2432;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,299,this._ctx);
        if(la_===1) {
            this.state = 2422;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 2423;
            this.match(HiveSqlParser.L_ID);
            this.state = 2428;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            while(_la===HiveSqlParser.T_COMMA) {
                this.state = 2424;
                this.match(HiveSqlParser.T_COMMA);
                this.state = 2425;
                this.match(HiveSqlParser.L_ID);
                this.state = 2430;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
            }
            this.state = 2431;
            this.match(HiveSqlParser.T_CLOSE_P);

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


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

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

Table_nameContext.prototype.ident = function() {
    return this.getTypedRuleContext(IdentContext,0);
};

Table_nameContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterTable_name(this);
	}
};

Table_nameContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitTable_name(this);
	}
};

Table_nameContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitTable_name(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Table_nameContext = Table_nameContext;

HiveSqlParser.prototype.table_name = function() {

    var localctx = new Table_nameContext(this, this._ctx, this.state);
    this.enterRule(localctx, 328, HiveSqlParser.RULE_table_name);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2434;
        this.ident();
    } 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 Where_clauseContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_where_clause;
    return this;
}

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

Where_clauseContext.prototype.T_WHERE = function() {
    return this.getToken(HiveSqlParser.T_WHERE, 0);
};

Where_clauseContext.prototype.bool_expr = function() {
    return this.getTypedRuleContext(Bool_exprContext,0);
};

Where_clauseContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterWhere_clause(this);
	}
};

Where_clauseContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitWhere_clause(this);
	}
};

Where_clauseContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitWhere_clause(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Where_clauseContext = Where_clauseContext;

HiveSqlParser.prototype.where_clause = function() {

    var localctx = new Where_clauseContext(this, this._ctx, this.state);
    this.enterRule(localctx, 330, HiveSqlParser.RULE_where_clause);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2436;
        this.match(HiveSqlParser.T_WHERE);
        this.state = 2437;
        this.bool_expr(0);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


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

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

Group_by_clauseContext.prototype.T_GROUP = function() {
    return this.getToken(HiveSqlParser.T_GROUP, 0);
};

Group_by_clauseContext.prototype.T_BY = function() {
    return this.getToken(HiveSqlParser.T_BY, 0);
};

Group_by_clauseContext.prototype.expr = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(ExprContext);
    } else {
        return this.getTypedRuleContext(ExprContext,i);
    }
};

Group_by_clauseContext.prototype.T_COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_COMMA);
    } else {
        return this.getToken(HiveSqlParser.T_COMMA, i);
    }
};


Group_by_clauseContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterGroup_by_clause(this);
	}
};

Group_by_clauseContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitGroup_by_clause(this);
	}
};

Group_by_clauseContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitGroup_by_clause(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Group_by_clauseContext = Group_by_clauseContext;

HiveSqlParser.prototype.group_by_clause = function() {

    var localctx = new Group_by_clauseContext(this, this._ctx, this.state);
    this.enterRule(localctx, 332, HiveSqlParser.RULE_group_by_clause);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2439;
        this.match(HiveSqlParser.T_GROUP);
        this.state = 2440;
        this.match(HiveSqlParser.T_BY);
        this.state = 2441;
        this.expr(0);
        this.state = 2446;
        this._errHandler.sync(this);
        var _alt = this._interp.adaptivePredict(this._input,300,this._ctx)
        while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
            if(_alt===1) {
                this.state = 2442;
                this.match(HiveSqlParser.T_COMMA);
                this.state = 2443;
                this.expr(0); 
            }
            this.state = 2448;
            this._errHandler.sync(this);
            _alt = this._interp.adaptivePredict(this._input,300,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 Having_clauseContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_having_clause;
    return this;
}

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

Having_clauseContext.prototype.T_HAVING = function() {
    return this.getToken(HiveSqlParser.T_HAVING, 0);
};

Having_clauseContext.prototype.bool_expr = function() {
    return this.getTypedRuleContext(Bool_exprContext,0);
};

Having_clauseContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterHaving_clause(this);
	}
};

Having_clauseContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitHaving_clause(this);
	}
};

Having_clauseContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitHaving_clause(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Having_clauseContext = Having_clauseContext;

HiveSqlParser.prototype.having_clause = function() {

    var localctx = new Having_clauseContext(this, this._ctx, this.state);
    this.enterRule(localctx, 334, HiveSqlParser.RULE_having_clause);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2449;
        this.match(HiveSqlParser.T_HAVING);
        this.state = 2450;
        this.bool_expr(0);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


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

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

Qualify_clauseContext.prototype.T_QUALIFY = function() {
    return this.getToken(HiveSqlParser.T_QUALIFY, 0);
};

Qualify_clauseContext.prototype.bool_expr = function() {
    return this.getTypedRuleContext(Bool_exprContext,0);
};

Qualify_clauseContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterQualify_clause(this);
	}
};

Qualify_clauseContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitQualify_clause(this);
	}
};

Qualify_clauseContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitQualify_clause(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Qualify_clauseContext = Qualify_clauseContext;

HiveSqlParser.prototype.qualify_clause = function() {

    var localctx = new Qualify_clauseContext(this, this._ctx, this.state);
    this.enterRule(localctx, 336, HiveSqlParser.RULE_qualify_clause);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2452;
        this.match(HiveSqlParser.T_QUALIFY);
        this.state = 2453;
        this.bool_expr(0);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


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

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

Order_by_clauseContext.prototype.T_ORDER = function() {
    return this.getToken(HiveSqlParser.T_ORDER, 0);
};

Order_by_clauseContext.prototype.T_BY = function() {
    return this.getToken(HiveSqlParser.T_BY, 0);
};

Order_by_clauseContext.prototype.expr = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(ExprContext);
    } else {
        return this.getTypedRuleContext(ExprContext,i);
    }
};

Order_by_clauseContext.prototype.T_COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_COMMA);
    } else {
        return this.getToken(HiveSqlParser.T_COMMA, i);
    }
};


Order_by_clauseContext.prototype.T_ASC = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_ASC);
    } else {
        return this.getToken(HiveSqlParser.T_ASC, i);
    }
};


Order_by_clauseContext.prototype.T_DESC = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_DESC);
    } else {
        return this.getToken(HiveSqlParser.T_DESC, i);
    }
};


Order_by_clauseContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterOrder_by_clause(this);
	}
};

Order_by_clauseContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitOrder_by_clause(this);
	}
};

Order_by_clauseContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitOrder_by_clause(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Order_by_clauseContext = Order_by_clauseContext;

HiveSqlParser.prototype.order_by_clause = function() {

    var localctx = new Order_by_clauseContext(this, this._ctx, this.state);
    this.enterRule(localctx, 338, HiveSqlParser.RULE_order_by_clause);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2455;
        this.match(HiveSqlParser.T_ORDER);
        this.state = 2456;
        this.match(HiveSqlParser.T_BY);
        this.state = 2457;
        this.expr(0);
        this.state = 2459;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,301,this._ctx);
        if(la_===1) {
            this.state = 2458;
            _la = this._input.LA(1);
            if(!(_la===HiveSqlParser.T_ASC || _la===HiveSqlParser.T_DESC)) {
            this._errHandler.recoverInline(this);
            }
            else {
            	this._errHandler.reportMatch(this);
                this.consume();
            }

        }
        this.state = 2468;
        this._errHandler.sync(this);
        var _alt = this._interp.adaptivePredict(this._input,303,this._ctx)
        while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
            if(_alt===1) {
                this.state = 2461;
                this.match(HiveSqlParser.T_COMMA);
                this.state = 2462;
                this.expr(0);
                this.state = 2464;
                this._errHandler.sync(this);
                var la_ = this._interp.adaptivePredict(this._input,302,this._ctx);
                if(la_===1) {
                    this.state = 2463;
                    _la = this._input.LA(1);
                    if(!(_la===HiveSqlParser.T_ASC || _la===HiveSqlParser.T_DESC)) {
                    this._errHandler.recoverInline(this);
                    }
                    else {
                    	this._errHandler.reportMatch(this);
                        this.consume();
                    }

                } 
            }
            this.state = 2470;
            this._errHandler.sync(this);
            _alt = this._interp.adaptivePredict(this._input,303,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 Select_optionsContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_select_options;
    return this;
}

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

Select_optionsContext.prototype.select_options_item = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Select_options_itemContext);
    } else {
        return this.getTypedRuleContext(Select_options_itemContext,i);
    }
};

Select_optionsContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterSelect_options(this);
	}
};

Select_optionsContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitSelect_options(this);
	}
};

Select_optionsContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitSelect_options(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Select_optionsContext = Select_optionsContext;

HiveSqlParser.prototype.select_options = function() {

    var localctx = new Select_optionsContext(this, this._ctx, this.state);
    this.enterRule(localctx, 340, HiveSqlParser.RULE_select_options);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2472; 
        this._errHandler.sync(this);
        var _alt = 1;
        do {
        	switch (_alt) {
        	case 1:
        		this.state = 2471;
        		this.select_options_item();
        		break;
        	default:
        		throw new antlr4.error.NoViableAltException(this);
        	}
        	this.state = 2474; 
        	this._errHandler.sync(this);
        	_alt = this._interp.adaptivePredict(this._input,304, 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 Select_options_itemContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_select_options_item;
    return this;
}

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

Select_options_itemContext.prototype.T_LIMIT = function() {
    return this.getToken(HiveSqlParser.T_LIMIT, 0);
};

Select_options_itemContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Select_options_itemContext.prototype.T_WITH = function() {
    return this.getToken(HiveSqlParser.T_WITH, 0);
};

Select_options_itemContext.prototype.T_RR = function() {
    return this.getToken(HiveSqlParser.T_RR, 0);
};

Select_options_itemContext.prototype.T_RS = function() {
    return this.getToken(HiveSqlParser.T_RS, 0);
};

Select_options_itemContext.prototype.T_CS = function() {
    return this.getToken(HiveSqlParser.T_CS, 0);
};

Select_options_itemContext.prototype.T_UR = function() {
    return this.getToken(HiveSqlParser.T_UR, 0);
};

Select_options_itemContext.prototype.T_USE = function() {
    return this.getToken(HiveSqlParser.T_USE, 0);
};

Select_options_itemContext.prototype.T_AND = function() {
    return this.getToken(HiveSqlParser.T_AND, 0);
};

Select_options_itemContext.prototype.T_KEEP = function() {
    return this.getToken(HiveSqlParser.T_KEEP, 0);
};

Select_options_itemContext.prototype.T_LOCKS = function() {
    return this.getToken(HiveSqlParser.T_LOCKS, 0);
};

Select_options_itemContext.prototype.T_EXCLUSIVE = function() {
    return this.getToken(HiveSqlParser.T_EXCLUSIVE, 0);
};

Select_options_itemContext.prototype.T_UPDATE = function() {
    return this.getToken(HiveSqlParser.T_UPDATE, 0);
};

Select_options_itemContext.prototype.T_SHARE = function() {
    return this.getToken(HiveSqlParser.T_SHARE, 0);
};

Select_options_itemContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterSelect_options_item(this);
	}
};

Select_options_itemContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitSelect_options_item(this);
	}
};

Select_options_itemContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitSelect_options_item(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Select_options_itemContext = Select_options_itemContext;

HiveSqlParser.prototype.select_options_item = function() {

    var localctx = new Select_options_itemContext(this, this._ctx, this.state);
    this.enterRule(localctx, 342, HiveSqlParser.RULE_select_options_item);
    var _la = 0; // Token type
    try {
        this.state = 2487;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case HiveSqlParser.T_LIMIT:
            this.enterOuterAlt(localctx, 1);
            this.state = 2476;
            this.match(HiveSqlParser.T_LIMIT);
            this.state = 2477;
            this.expr(0);
            break;
        case HiveSqlParser.T_WITH:
            this.enterOuterAlt(localctx, 2);
            this.state = 2478;
            this.match(HiveSqlParser.T_WITH);
            this.state = 2479;
            _la = this._input.LA(1);
            if(!(_la===HiveSqlParser.T_CS || ((((_la - 292)) & ~0x1f) == 0 && ((1 << (_la - 292)) & ((1 << (HiveSqlParser.T_RR - 292)) | (1 << (HiveSqlParser.T_RS - 292)) | (1 << (HiveSqlParser.T_UR - 292)))) !== 0))) {
            this._errHandler.recoverInline(this);
            }
            else {
            	this._errHandler.reportMatch(this);
                this.consume();
            }
            this.state = 2485;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,305,this._ctx);
            if(la_===1) {
                this.state = 2480;
                this.match(HiveSqlParser.T_USE);
                this.state = 2481;
                this.match(HiveSqlParser.T_AND);
                this.state = 2482;
                this.match(HiveSqlParser.T_KEEP);
                this.state = 2483;
                _la = this._input.LA(1);
                if(!(_la===HiveSqlParser.T_UPDATE || _la===HiveSqlParser.T_EXCLUSIVE || _la===HiveSqlParser.T_SHARE)) {
                this._errHandler.recoverInline(this);
                }
                else {
                	this._errHandler.reportMatch(this);
                    this.consume();
                }
                this.state = 2484;
                this.match(HiveSqlParser.T_LOCKS);

            }
            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 Update_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_update_stmt;
    return this;
}

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

Update_stmtContext.prototype.T_UPDATE = function() {
    return this.getToken(HiveSqlParser.T_UPDATE, 0);
};

Update_stmtContext.prototype.update_table = function() {
    return this.getTypedRuleContext(Update_tableContext,0);
};

Update_stmtContext.prototype.T_SET = function() {
    return this.getToken(HiveSqlParser.T_SET, 0);
};

Update_stmtContext.prototype.update_assignment = function() {
    return this.getTypedRuleContext(Update_assignmentContext,0);
};

Update_stmtContext.prototype.where_clause = function() {
    return this.getTypedRuleContext(Where_clauseContext,0);
};

Update_stmtContext.prototype.update_upsert = function() {
    return this.getTypedRuleContext(Update_upsertContext,0);
};

Update_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterUpdate_stmt(this);
	}
};

Update_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitUpdate_stmt(this);
	}
};

Update_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitUpdate_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Update_stmtContext = Update_stmtContext;

HiveSqlParser.prototype.update_stmt = function() {

    var localctx = new Update_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 344, HiveSqlParser.RULE_update_stmt);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2489;
        this.match(HiveSqlParser.T_UPDATE);
        this.state = 2490;
        this.update_table();
        this.state = 2491;
        this.match(HiveSqlParser.T_SET);
        this.state = 2492;
        this.update_assignment();
        this.state = 2494;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,307,this._ctx);
        if(la_===1) {
            this.state = 2493;
            this.where_clause();

        }
        this.state = 2497;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,308,this._ctx);
        if(la_===1) {
            this.state = 2496;
            this.update_upsert();

        }
    } 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 Update_assignmentContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_update_assignment;
    return this;
}

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

Update_assignmentContext.prototype.assignment_stmt_item = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Assignment_stmt_itemContext);
    } else {
        return this.getTypedRuleContext(Assignment_stmt_itemContext,i);
    }
};

Update_assignmentContext.prototype.T_COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_COMMA);
    } else {
        return this.getToken(HiveSqlParser.T_COMMA, i);
    }
};


Update_assignmentContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterUpdate_assignment(this);
	}
};

Update_assignmentContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitUpdate_assignment(this);
	}
};

Update_assignmentContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitUpdate_assignment(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Update_assignmentContext = Update_assignmentContext;

HiveSqlParser.prototype.update_assignment = function() {

    var localctx = new Update_assignmentContext(this, this._ctx, this.state);
    this.enterRule(localctx, 346, HiveSqlParser.RULE_update_assignment);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2499;
        this.assignment_stmt_item();
        this.state = 2504;
        this._errHandler.sync(this);
        var _alt = this._interp.adaptivePredict(this._input,309,this._ctx)
        while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
            if(_alt===1) {
                this.state = 2500;
                this.match(HiveSqlParser.T_COMMA);
                this.state = 2501;
                this.assignment_stmt_item(); 
            }
            this.state = 2506;
            this._errHandler.sync(this);
            _alt = this._interp.adaptivePredict(this._input,309,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 Update_tableContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_update_table;
    return this;
}

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

Update_tableContext.prototype.table_name = function() {
    return this.getTypedRuleContext(Table_nameContext,0);
};

Update_tableContext.prototype.T_OPEN_P = function() {
    return this.getToken(HiveSqlParser.T_OPEN_P, 0);
};

Update_tableContext.prototype.select_stmt = function() {
    return this.getTypedRuleContext(Select_stmtContext,0);
};

Update_tableContext.prototype.T_CLOSE_P = function() {
    return this.getToken(HiveSqlParser.T_CLOSE_P, 0);
};

Update_tableContext.prototype.ident = function() {
    return this.getTypedRuleContext(IdentContext,0);
};

Update_tableContext.prototype.from_clause = function() {
    return this.getTypedRuleContext(From_clauseContext,0);
};

Update_tableContext.prototype.T_AS = function() {
    return this.getToken(HiveSqlParser.T_AS, 0);
};

Update_tableContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterUpdate_table(this);
	}
};

Update_tableContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitUpdate_table(this);
	}
};

Update_tableContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitUpdate_table(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Update_tableContext = Update_tableContext;

HiveSqlParser.prototype.update_table = function() {

    var localctx = new Update_tableContext(this, this._ctx, this.state);
    this.enterRule(localctx, 348, HiveSqlParser.RULE_update_table);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2515;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case HiveSqlParser.T__8:
        case HiveSqlParser.T_GO:
        case HiveSqlParser.T_BEGIN:
        case HiveSqlParser.T_EXCEPTION:
        case HiveSqlParser.L_ID:
        case HiveSqlParser.T_THEN:
        case HiveSqlParser.T_SET:
        case HiveSqlParser.T_ALLOCATE:
        case HiveSqlParser.T_CURSOR:
        case HiveSqlParser.T_FOR:
        case HiveSqlParser.T_RESULT:
        case HiveSqlParser.T_PROCEDURE:
        case HiveSqlParser.T_ASSOCIATE:
        case HiveSqlParser.T_LOCATOR:
        case HiveSqlParser.T_LOCATORS:
        case HiveSqlParser.T_WITH:
        case HiveSqlParser.T_TRANSACTION:
        case HiveSqlParser.T_BREAK:
        case HiveSqlParser.T_CALL:
        case HiveSqlParser.T_DECLARE:
        case HiveSqlParser.T_AS:
        case HiveSqlParser.T_CONSTANT:
        case HiveSqlParser.T_CONDITION:
        case HiveSqlParser.T_IS:
        case HiveSqlParser.T_RETURN:
        case HiveSqlParser.T_ONLY:
        case HiveSqlParser.T_TO:
        case HiveSqlParser.T_CALLER:
        case HiveSqlParser.T_CLIENT:
        case HiveSqlParser.T_WITHOUT:
        case HiveSqlParser.T_CONTINUE:
        case HiveSqlParser.T_EXIT:
        case HiveSqlParser.T_HANDLER:
        case HiveSqlParser.T_SQLEXCEPTION:
        case HiveSqlParser.T_SQLWARNING:
        case HiveSqlParser.T_NOT:
        case HiveSqlParser.T_FOUND:
        case HiveSqlParser.T_GLOBAL:
        case HiveSqlParser.T_TEMPORARY:
        case HiveSqlParser.T_TABLE:
        case HiveSqlParser.T_CREATE:
        case HiveSqlParser.T_IF:
        case HiveSqlParser.T_EXISTS:
        case HiveSqlParser.T_LOCAL:
        case HiveSqlParser.T_MULTISET:
        case HiveSqlParser.T_VOLATILE:
        case HiveSqlParser.T_LIKE:
        case HiveSqlParser.T_CONSTRAINT:
        case HiveSqlParser.T_PRIMARY:
        case HiveSqlParser.T_KEY:
        case HiveSqlParser.T_UNIQUE:
        case HiveSqlParser.T_REFERENCES:
        case HiveSqlParser.T_IDENTITY:
        case HiveSqlParser.T_AUTO_INCREMENT:
        case HiveSqlParser.T_ENABLE:
        case HiveSqlParser.T_CLUSTERED:
        case HiveSqlParser.T_ASC:
        case HiveSqlParser.T_DESC:
        case HiveSqlParser.T_FOREIGN:
        case HiveSqlParser.T_ON:
        case HiveSqlParser.T_UPDATE:
        case HiveSqlParser.T_DELETE:
        case HiveSqlParser.T_NO:
        case HiveSqlParser.T_ACTION:
        case HiveSqlParser.T_RESTRICT:
        case HiveSqlParser.T_DEFAULT:
        case HiveSqlParser.T_CASCADE:
        case HiveSqlParser.T_LOG:
        case HiveSqlParser.T_FALLBACK:
        case HiveSqlParser.T_COMMIT:
        case HiveSqlParser.T_PRESERVE:
        case HiveSqlParser.T_ROWS:
        case HiveSqlParser.T_SEGMENT:
        case HiveSqlParser.T_CREATION:
        case HiveSqlParser.T_IMMEDIATE:
        case HiveSqlParser.T_DEFERRED:
        case HiveSqlParser.T_PCTFREE:
        case HiveSqlParser.T_PCTUSED:
        case HiveSqlParser.T_INITRANS:
        case HiveSqlParser.T_MAXTRANS:
        case HiveSqlParser.T_NOCOMPRESS:
        case HiveSqlParser.T_LOGGING:
        case HiveSqlParser.T_NOLOGGING:
        case HiveSqlParser.T_STORAGE:
        case HiveSqlParser.T_TABLESPACE:
        case HiveSqlParser.T_INDEX:
        case HiveSqlParser.T_IN:
        case HiveSqlParser.T_REPLACE:
        case HiveSqlParser.T_DISTRIBUTE:
        case HiveSqlParser.T_BY:
        case HiveSqlParser.T_HASH:
        case HiveSqlParser.T_LOGGED:
        case HiveSqlParser.T_COMPRESS:
        case HiveSqlParser.T_YES:
        case HiveSqlParser.T_DEFINITION:
        case HiveSqlParser.T_DROP:
        case HiveSqlParser.T_DATA:
        case HiveSqlParser.T_STORED:
        case HiveSqlParser.T_ROW:
        case HiveSqlParser.T_FORMAT:
        case HiveSqlParser.T_DELIMITED:
        case HiveSqlParser.T_FIELDS:
        case HiveSqlParser.T_TERMINATED:
        case HiveSqlParser.T_ESCAPED:
        case HiveSqlParser.T_COLLECTION:
        case HiveSqlParser.T_ITEMS:
        case HiveSqlParser.T_MAP:
        case HiveSqlParser.T_KEYS:
        case HiveSqlParser.T_LINES:
        case HiveSqlParser.T_DEFINED:
        case HiveSqlParser.T_TEXTIMAGE_ON:
        case HiveSqlParser.T_COMMENT:
        case HiveSqlParser.T_CHARACTER:
        case HiveSqlParser.T_CHARSET:
        case HiveSqlParser.T_ENGINE:
        case HiveSqlParser.T_ALTER:
        case HiveSqlParser.T_ADD2:
        case HiveSqlParser.T_CHAR:
        case HiveSqlParser.T_BIGINT:
        case HiveSqlParser.T_BINARY_DOUBLE:
        case HiveSqlParser.T_BINARY_FLOAT:
        case HiveSqlParser.T_BIT:
        case HiveSqlParser.T_DATE:
        case HiveSqlParser.T_DATETIME:
        case HiveSqlParser.T_DEC:
        case HiveSqlParser.T_DECIMAL:
        case HiveSqlParser.T_DOUBLE:
        case HiveSqlParser.T_PRECISION:
        case HiveSqlParser.T_FLOAT:
        case HiveSqlParser.T_INT:
        case HiveSqlParser.T_INT2:
        case HiveSqlParser.T_INT4:
        case HiveSqlParser.T_INT8:
        case HiveSqlParser.T_INTEGER:
        case HiveSqlParser.T_NCHAR:
        case HiveSqlParser.T_NVARCHAR:
        case HiveSqlParser.T_NUMBER:
        case HiveSqlParser.T_NUMERIC:
        case HiveSqlParser.T_REAL:
        case HiveSqlParser.T_RESULT_SET_LOCATOR:
        case HiveSqlParser.T_VARYING:
        case HiveSqlParser.T_SIMPLE_FLOAT:
        case HiveSqlParser.T_SIMPLE_DOUBLE:
        case HiveSqlParser.T_SMALLINT:
        case HiveSqlParser.T_SMALLDATETIME:
        case HiveSqlParser.T_STRING:
        case HiveSqlParser.T_SYS_REFCURSOR:
        case HiveSqlParser.T_TIMESTAMP:
        case HiveSqlParser.T_VARCHAR:
        case HiveSqlParser.T_VARCHAR2:
        case HiveSqlParser.T_XML:
        case HiveSqlParser.T_MAX:
        case HiveSqlParser.T_BYTE:
        case HiveSqlParser.T_CASESPECIFIC:
        case HiveSqlParser.T_CS:
        case HiveSqlParser.T_DATABASE:
        case HiveSqlParser.T_SCHEMA:
        case HiveSqlParser.T_LOCATION:
        case HiveSqlParser.T_OR:
        case HiveSqlParser.T_FUNCTION:
        case HiveSqlParser.T_RETURNS:
        case HiveSqlParser.T_PACKAGE:
        case HiveSqlParser.T_PROC:
        case HiveSqlParser.T_BODY:
        case HiveSqlParser.T_OUT:
        case HiveSqlParser.T_INOUT:
        case HiveSqlParser.T_LANGUAGE:
        case HiveSqlParser.T_SQL:
        case HiveSqlParser.T_SECURITY:
        case HiveSqlParser.T_CREATOR:
        case HiveSqlParser.T_DEFINER:
        case HiveSqlParser.T_INVOKER:
        case HiveSqlParser.T_OWNER:
        case HiveSqlParser.T_DYNAMIC:
        case HiveSqlParser.T_SETS:
        case HiveSqlParser.T_EXEC:
        case HiveSqlParser.T_EXECUTE:
        case HiveSqlParser.T_INTO:
        case HiveSqlParser.T_INCLUDE:
        case HiveSqlParser.T_INSERT:
        case HiveSqlParser.T_OVERWRITE:
        case HiveSqlParser.T_VALUES:
        case HiveSqlParser.T_DIRECTORY:
        case HiveSqlParser.T_GET:
        case HiveSqlParser.T_DIAGNOSTICS:
        case HiveSqlParser.T_MESSAGE_TEXT:
        case HiveSqlParser.T_ROW_COUNT:
        case HiveSqlParser.T_GRANT:
        case HiveSqlParser.T_ROLE:
        case HiveSqlParser.T_LEAVE:
        case HiveSqlParser.T_OBJECT:
        case HiveSqlParser.T_AT:
        case HiveSqlParser.T_OPEN:
        case HiveSqlParser.T_FETCH:
        case HiveSqlParser.T_FROM:
        case HiveSqlParser.T_COLLECT:
        case HiveSqlParser.T_STATISTICS:
        case HiveSqlParser.T_STATS:
        case HiveSqlParser.T_COLUMN:
        case HiveSqlParser.T_CLOSE:
        case HiveSqlParser.T_CMP:
        case HiveSqlParser.T_SUM:
        case HiveSqlParser.T_COPY:
        case HiveSqlParser.T_HDFS:
        case HiveSqlParser.T_BATCHSIZE:
        case HiveSqlParser.T_DELIMITER:
        case HiveSqlParser.T_SQLINSERT:
        case HiveSqlParser.T_IGNORE:
        case HiveSqlParser.T_WORK:
        case HiveSqlParser.T_PRINT:
        case HiveSqlParser.T_QUIT:
        case HiveSqlParser.T_RAISE:
        case HiveSqlParser.T_RESIGNAL:
        case HiveSqlParser.T_SQLSTATE:
        case HiveSqlParser.T_VALUE:
        case HiveSqlParser.T_ROLLBACK:
        case HiveSqlParser.T_CURRENT:
        case HiveSqlParser.T_CURRENT_SCHEMA:
        case HiveSqlParser.T_ANSI_NULLS:
        case HiveSqlParser.T_ANSI_PADDING:
        case HiveSqlParser.T_NOCOUNT:
        case HiveSqlParser.T_QUOTED_IDENTIFIER:
        case HiveSqlParser.T_XACT_ABORT:
        case HiveSqlParser.T_OFF:
        case HiveSqlParser.T_QUERY_BAND:
        case HiveSqlParser.T_NONE:
        case HiveSqlParser.T_SESSION:
        case HiveSqlParser.T_SIGNAL:
        case HiveSqlParser.T_SUMMARY:
        case HiveSqlParser.T_TOP:
        case HiveSqlParser.T_LIMIT:
        case HiveSqlParser.T_TRUNCATE:
        case HiveSqlParser.T_USE:
        case HiveSqlParser.T_WHILE:
        case HiveSqlParser.T_DO:
        case HiveSqlParser.T_LOOP:
        case HiveSqlParser.T_REVERSE:
        case HiveSqlParser.T_STEP:
        case HiveSqlParser.T_USING:
        case HiveSqlParser.T_ALL:
        case HiveSqlParser.T_EXCEPT:
        case HiveSqlParser.T_INTERSECT:
        case HiveSqlParser.T_SELECT:
        case HiveSqlParser.T_SEL:
        case HiveSqlParser.T_DISTINCT:
        case HiveSqlParser.T_TITLE:
        case HiveSqlParser.T_INNER:
        case HiveSqlParser.T_JOIN:
        case HiveSqlParser.T_LEFT:
        case HiveSqlParser.T_RIGHT:
        case HiveSqlParser.T_FULL:
        case HiveSqlParser.T_OUTER:
        case HiveSqlParser.T_GROUP:
        case HiveSqlParser.T_HAVING:
        case HiveSqlParser.T_QUALIFY:
        case HiveSqlParser.T_ORDER:
        case HiveSqlParser.T_RR:
        case HiveSqlParser.T_RS:
        case HiveSqlParser.T_UR:
        case HiveSqlParser.T_AND:
        case HiveSqlParser.T_KEEP:
        case HiveSqlParser.T_EXCLUSIVE:
        case HiveSqlParser.T_SHARE:
        case HiveSqlParser.T_LOCKS:
        case HiveSqlParser.T_MERGE:
        case HiveSqlParser.T_MATCHED:
        case HiveSqlParser.T_DESCRIBE:
        case HiveSqlParser.T_BETWEEN:
        case HiveSqlParser.T_RLIKE:
        case HiveSqlParser.T_REGEXP:
        case HiveSqlParser.T_INTERVAL:
        case HiveSqlParser.T_DAY:
        case HiveSqlParser.T_DAYS:
        case HiveSqlParser.T_MICROSECOND:
        case HiveSqlParser.T_MICROSECONDS:
        case HiveSqlParser.T_SECOND:
        case HiveSqlParser.T_SECONDS:
        case HiveSqlParser.T_CONCAT:
        case HiveSqlParser.T_CASE:
        case HiveSqlParser.T_ISOPEN:
        case HiveSqlParser.T_NOTFOUND:
        case HiveSqlParser.T_AVG:
        case HiveSqlParser.T_COUNT:
        case HiveSqlParser.T_COUNT_BIG:
        case HiveSqlParser.T_CUME_DIST:
        case HiveSqlParser.T_DENSE_RANK:
        case HiveSqlParser.T_FIRST_VALUE:
        case HiveSqlParser.T_LAG:
        case HiveSqlParser.T_LAST_VALUE:
        case HiveSqlParser.T_LEAD:
        case HiveSqlParser.T_MIN:
        case HiveSqlParser.T_RANK:
        case HiveSqlParser.T_ROW_NUMBER:
        case HiveSqlParser.T_STDEV:
        case HiveSqlParser.T_VAR:
        case HiveSqlParser.T_VARIANCE:
        case HiveSqlParser.T_OVER:
        case HiveSqlParser.T_PARTITION:
        case HiveSqlParser.T_ACTIVITY_COUNT:
        case HiveSqlParser.T_CAST:
        case HiveSqlParser.T_CURRENT_DATE:
        case HiveSqlParser.T_CURRENT_TIMESTAMP:
        case HiveSqlParser.T_CURRENT_USER:
        case HiveSqlParser.T_USER:
        case HiveSqlParser.T_PART_COUNT:
        case HiveSqlParser.T_PART_LOC:
        case HiveSqlParser.T_TRIM:
        case HiveSqlParser.T_SUBSTRING:
        case HiveSqlParser.T_SYSDATE:
        case HiveSqlParser.T_HIVE:
        case HiveSqlParser.T_HOST:
        case HiveSqlParser.T_TRUE:
        case HiveSqlParser.T_FALSE:
        case HiveSqlParser.T_DIR:
        case HiveSqlParser.T_FILE:
        case HiveSqlParser.T_FILES:
        case HiveSqlParser.T_NEW:
        case HiveSqlParser.T_PWD:
        case HiveSqlParser.T_SESSIONS:
        case HiveSqlParser.T_SUBDIR:
            this.state = 2507;
            this.table_name();
            this.state = 2509;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,310,this._ctx);
            if(la_===1) {
                this.state = 2508;
                this.from_clause();

            }
            break;
        case HiveSqlParser.T_OPEN_P:
            this.state = 2511;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 2512;
            this.select_stmt();
            this.state = 2513;
            this.match(HiveSqlParser.T_CLOSE_P);
            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
        this.state = 2521;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,313,this._ctx);
        if(la_===1) {
            this.state = 2518;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,312,this._ctx);
            if(la_===1) {
                this.state = 2517;
                this.match(HiveSqlParser.T_AS);

            }
            this.state = 2520;
            this.ident();

        }
    } 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 Update_upsertContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_update_upsert;
    return this;
}

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

Update_upsertContext.prototype.T_ELSE = function() {
    return this.getToken(HiveSqlParser.T_ELSE, 0);
};

Update_upsertContext.prototype.insert_stmt = function() {
    return this.getTypedRuleContext(Insert_stmtContext,0);
};

Update_upsertContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterUpdate_upsert(this);
	}
};

Update_upsertContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitUpdate_upsert(this);
	}
};

Update_upsertContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitUpdate_upsert(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Update_upsertContext = Update_upsertContext;

HiveSqlParser.prototype.update_upsert = function() {

    var localctx = new Update_upsertContext(this, this._ctx, this.state);
    this.enterRule(localctx, 350, HiveSqlParser.RULE_update_upsert);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2523;
        this.match(HiveSqlParser.T_ELSE);
        this.state = 2524;
        this.insert_stmt();
    } 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 Merge_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_merge_stmt;
    return this;
}

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

Merge_stmtContext.prototype.T_MERGE = function() {
    return this.getToken(HiveSqlParser.T_MERGE, 0);
};

Merge_stmtContext.prototype.T_INTO = function() {
    return this.getToken(HiveSqlParser.T_INTO, 0);
};

Merge_stmtContext.prototype.merge_table = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Merge_tableContext);
    } else {
        return this.getTypedRuleContext(Merge_tableContext,i);
    }
};

Merge_stmtContext.prototype.T_USING = function() {
    return this.getToken(HiveSqlParser.T_USING, 0);
};

Merge_stmtContext.prototype.T_ON = function() {
    return this.getToken(HiveSqlParser.T_ON, 0);
};

Merge_stmtContext.prototype.bool_expr = function() {
    return this.getTypedRuleContext(Bool_exprContext,0);
};

Merge_stmtContext.prototype.merge_condition = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Merge_conditionContext);
    } else {
        return this.getTypedRuleContext(Merge_conditionContext,i);
    }
};

Merge_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterMerge_stmt(this);
	}
};

Merge_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitMerge_stmt(this);
	}
};

Merge_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitMerge_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Merge_stmtContext = Merge_stmtContext;

HiveSqlParser.prototype.merge_stmt = function() {

    var localctx = new Merge_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 352, HiveSqlParser.RULE_merge_stmt);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2526;
        this.match(HiveSqlParser.T_MERGE);
        this.state = 2527;
        this.match(HiveSqlParser.T_INTO);
        this.state = 2528;
        this.merge_table();
        this.state = 2529;
        this.match(HiveSqlParser.T_USING);
        this.state = 2530;
        this.merge_table();
        this.state = 2531;
        this.match(HiveSqlParser.T_ON);
        this.state = 2532;
        this.bool_expr(0);
        this.state = 2534; 
        this._errHandler.sync(this);
        var _alt = 1;
        do {
        	switch (_alt) {
        	case 1:
        		this.state = 2533;
        		this.merge_condition();
        		break;
        	default:
        		throw new antlr4.error.NoViableAltException(this);
        	}
        	this.state = 2536; 
        	this._errHandler.sync(this);
        	_alt = this._interp.adaptivePredict(this._input,314, 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 Merge_tableContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_merge_table;
    return this;
}

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

Merge_tableContext.prototype.table_name = function() {
    return this.getTypedRuleContext(Table_nameContext,0);
};

Merge_tableContext.prototype.ident = function() {
    return this.getTypedRuleContext(IdentContext,0);
};

Merge_tableContext.prototype.T_OPEN_P = function() {
    return this.getToken(HiveSqlParser.T_OPEN_P, 0);
};

Merge_tableContext.prototype.select_stmt = function() {
    return this.getTypedRuleContext(Select_stmtContext,0);
};

Merge_tableContext.prototype.T_CLOSE_P = function() {
    return this.getToken(HiveSqlParser.T_CLOSE_P, 0);
};

Merge_tableContext.prototype.T_AS = function() {
    return this.getToken(HiveSqlParser.T_AS, 0);
};

Merge_tableContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterMerge_table(this);
	}
};

Merge_tableContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitMerge_table(this);
	}
};

Merge_tableContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitMerge_table(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Merge_tableContext = Merge_tableContext;

HiveSqlParser.prototype.merge_table = function() {

    var localctx = new Merge_tableContext(this, this._ctx, this.state);
    this.enterRule(localctx, 354, HiveSqlParser.RULE_merge_table);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2543;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case HiveSqlParser.T__8:
        case HiveSqlParser.T_GO:
        case HiveSqlParser.T_BEGIN:
        case HiveSqlParser.T_EXCEPTION:
        case HiveSqlParser.L_ID:
        case HiveSqlParser.T_THEN:
        case HiveSqlParser.T_SET:
        case HiveSqlParser.T_ALLOCATE:
        case HiveSqlParser.T_CURSOR:
        case HiveSqlParser.T_FOR:
        case HiveSqlParser.T_RESULT:
        case HiveSqlParser.T_PROCEDURE:
        case HiveSqlParser.T_ASSOCIATE:
        case HiveSqlParser.T_LOCATOR:
        case HiveSqlParser.T_LOCATORS:
        case HiveSqlParser.T_WITH:
        case HiveSqlParser.T_TRANSACTION:
        case HiveSqlParser.T_BREAK:
        case HiveSqlParser.T_CALL:
        case HiveSqlParser.T_DECLARE:
        case HiveSqlParser.T_AS:
        case HiveSqlParser.T_CONSTANT:
        case HiveSqlParser.T_CONDITION:
        case HiveSqlParser.T_IS:
        case HiveSqlParser.T_RETURN:
        case HiveSqlParser.T_ONLY:
        case HiveSqlParser.T_TO:
        case HiveSqlParser.T_CALLER:
        case HiveSqlParser.T_CLIENT:
        case HiveSqlParser.T_WITHOUT:
        case HiveSqlParser.T_CONTINUE:
        case HiveSqlParser.T_EXIT:
        case HiveSqlParser.T_HANDLER:
        case HiveSqlParser.T_SQLEXCEPTION:
        case HiveSqlParser.T_SQLWARNING:
        case HiveSqlParser.T_NOT:
        case HiveSqlParser.T_FOUND:
        case HiveSqlParser.T_GLOBAL:
        case HiveSqlParser.T_TEMPORARY:
        case HiveSqlParser.T_TABLE:
        case HiveSqlParser.T_CREATE:
        case HiveSqlParser.T_IF:
        case HiveSqlParser.T_EXISTS:
        case HiveSqlParser.T_LOCAL:
        case HiveSqlParser.T_MULTISET:
        case HiveSqlParser.T_VOLATILE:
        case HiveSqlParser.T_LIKE:
        case HiveSqlParser.T_CONSTRAINT:
        case HiveSqlParser.T_PRIMARY:
        case HiveSqlParser.T_KEY:
        case HiveSqlParser.T_UNIQUE:
        case HiveSqlParser.T_REFERENCES:
        case HiveSqlParser.T_IDENTITY:
        case HiveSqlParser.T_AUTO_INCREMENT:
        case HiveSqlParser.T_ENABLE:
        case HiveSqlParser.T_CLUSTERED:
        case HiveSqlParser.T_ASC:
        case HiveSqlParser.T_DESC:
        case HiveSqlParser.T_FOREIGN:
        case HiveSqlParser.T_ON:
        case HiveSqlParser.T_UPDATE:
        case HiveSqlParser.T_DELETE:
        case HiveSqlParser.T_NO:
        case HiveSqlParser.T_ACTION:
        case HiveSqlParser.T_RESTRICT:
        case HiveSqlParser.T_DEFAULT:
        case HiveSqlParser.T_CASCADE:
        case HiveSqlParser.T_LOG:
        case HiveSqlParser.T_FALLBACK:
        case HiveSqlParser.T_COMMIT:
        case HiveSqlParser.T_PRESERVE:
        case HiveSqlParser.T_ROWS:
        case HiveSqlParser.T_SEGMENT:
        case HiveSqlParser.T_CREATION:
        case HiveSqlParser.T_IMMEDIATE:
        case HiveSqlParser.T_DEFERRED:
        case HiveSqlParser.T_PCTFREE:
        case HiveSqlParser.T_PCTUSED:
        case HiveSqlParser.T_INITRANS:
        case HiveSqlParser.T_MAXTRANS:
        case HiveSqlParser.T_NOCOMPRESS:
        case HiveSqlParser.T_LOGGING:
        case HiveSqlParser.T_NOLOGGING:
        case HiveSqlParser.T_STORAGE:
        case HiveSqlParser.T_TABLESPACE:
        case HiveSqlParser.T_INDEX:
        case HiveSqlParser.T_IN:
        case HiveSqlParser.T_REPLACE:
        case HiveSqlParser.T_DISTRIBUTE:
        case HiveSqlParser.T_BY:
        case HiveSqlParser.T_HASH:
        case HiveSqlParser.T_LOGGED:
        case HiveSqlParser.T_COMPRESS:
        case HiveSqlParser.T_YES:
        case HiveSqlParser.T_DEFINITION:
        case HiveSqlParser.T_DROP:
        case HiveSqlParser.T_DATA:
        case HiveSqlParser.T_STORED:
        case HiveSqlParser.T_ROW:
        case HiveSqlParser.T_FORMAT:
        case HiveSqlParser.T_DELIMITED:
        case HiveSqlParser.T_FIELDS:
        case HiveSqlParser.T_TERMINATED:
        case HiveSqlParser.T_ESCAPED:
        case HiveSqlParser.T_COLLECTION:
        case HiveSqlParser.T_ITEMS:
        case HiveSqlParser.T_MAP:
        case HiveSqlParser.T_KEYS:
        case HiveSqlParser.T_LINES:
        case HiveSqlParser.T_DEFINED:
        case HiveSqlParser.T_TEXTIMAGE_ON:
        case HiveSqlParser.T_COMMENT:
        case HiveSqlParser.T_CHARACTER:
        case HiveSqlParser.T_CHARSET:
        case HiveSqlParser.T_ENGINE:
        case HiveSqlParser.T_ALTER:
        case HiveSqlParser.T_ADD2:
        case HiveSqlParser.T_CHAR:
        case HiveSqlParser.T_BIGINT:
        case HiveSqlParser.T_BINARY_DOUBLE:
        case HiveSqlParser.T_BINARY_FLOAT:
        case HiveSqlParser.T_BIT:
        case HiveSqlParser.T_DATE:
        case HiveSqlParser.T_DATETIME:
        case HiveSqlParser.T_DEC:
        case HiveSqlParser.T_DECIMAL:
        case HiveSqlParser.T_DOUBLE:
        case HiveSqlParser.T_PRECISION:
        case HiveSqlParser.T_FLOAT:
        case HiveSqlParser.T_INT:
        case HiveSqlParser.T_INT2:
        case HiveSqlParser.T_INT4:
        case HiveSqlParser.T_INT8:
        case HiveSqlParser.T_INTEGER:
        case HiveSqlParser.T_NCHAR:
        case HiveSqlParser.T_NVARCHAR:
        case HiveSqlParser.T_NUMBER:
        case HiveSqlParser.T_NUMERIC:
        case HiveSqlParser.T_REAL:
        case HiveSqlParser.T_RESULT_SET_LOCATOR:
        case HiveSqlParser.T_VARYING:
        case HiveSqlParser.T_SIMPLE_FLOAT:
        case HiveSqlParser.T_SIMPLE_DOUBLE:
        case HiveSqlParser.T_SMALLINT:
        case HiveSqlParser.T_SMALLDATETIME:
        case HiveSqlParser.T_STRING:
        case HiveSqlParser.T_SYS_REFCURSOR:
        case HiveSqlParser.T_TIMESTAMP:
        case HiveSqlParser.T_VARCHAR:
        case HiveSqlParser.T_VARCHAR2:
        case HiveSqlParser.T_XML:
        case HiveSqlParser.T_MAX:
        case HiveSqlParser.T_BYTE:
        case HiveSqlParser.T_CASESPECIFIC:
        case HiveSqlParser.T_CS:
        case HiveSqlParser.T_DATABASE:
        case HiveSqlParser.T_SCHEMA:
        case HiveSqlParser.T_LOCATION:
        case HiveSqlParser.T_OR:
        case HiveSqlParser.T_FUNCTION:
        case HiveSqlParser.T_RETURNS:
        case HiveSqlParser.T_PACKAGE:
        case HiveSqlParser.T_PROC:
        case HiveSqlParser.T_BODY:
        case HiveSqlParser.T_OUT:
        case HiveSqlParser.T_INOUT:
        case HiveSqlParser.T_LANGUAGE:
        case HiveSqlParser.T_SQL:
        case HiveSqlParser.T_SECURITY:
        case HiveSqlParser.T_CREATOR:
        case HiveSqlParser.T_DEFINER:
        case HiveSqlParser.T_INVOKER:
        case HiveSqlParser.T_OWNER:
        case HiveSqlParser.T_DYNAMIC:
        case HiveSqlParser.T_SETS:
        case HiveSqlParser.T_EXEC:
        case HiveSqlParser.T_EXECUTE:
        case HiveSqlParser.T_INTO:
        case HiveSqlParser.T_INCLUDE:
        case HiveSqlParser.T_INSERT:
        case HiveSqlParser.T_OVERWRITE:
        case HiveSqlParser.T_VALUES:
        case HiveSqlParser.T_DIRECTORY:
        case HiveSqlParser.T_GET:
        case HiveSqlParser.T_DIAGNOSTICS:
        case HiveSqlParser.T_MESSAGE_TEXT:
        case HiveSqlParser.T_ROW_COUNT:
        case HiveSqlParser.T_GRANT:
        case HiveSqlParser.T_ROLE:
        case HiveSqlParser.T_LEAVE:
        case HiveSqlParser.T_OBJECT:
        case HiveSqlParser.T_AT:
        case HiveSqlParser.T_OPEN:
        case HiveSqlParser.T_FETCH:
        case HiveSqlParser.T_FROM:
        case HiveSqlParser.T_COLLECT:
        case HiveSqlParser.T_STATISTICS:
        case HiveSqlParser.T_STATS:
        case HiveSqlParser.T_COLUMN:
        case HiveSqlParser.T_CLOSE:
        case HiveSqlParser.T_CMP:
        case HiveSqlParser.T_SUM:
        case HiveSqlParser.T_COPY:
        case HiveSqlParser.T_HDFS:
        case HiveSqlParser.T_BATCHSIZE:
        case HiveSqlParser.T_DELIMITER:
        case HiveSqlParser.T_SQLINSERT:
        case HiveSqlParser.T_IGNORE:
        case HiveSqlParser.T_WORK:
        case HiveSqlParser.T_PRINT:
        case HiveSqlParser.T_QUIT:
        case HiveSqlParser.T_RAISE:
        case HiveSqlParser.T_RESIGNAL:
        case HiveSqlParser.T_SQLSTATE:
        case HiveSqlParser.T_VALUE:
        case HiveSqlParser.T_ROLLBACK:
        case HiveSqlParser.T_CURRENT:
        case HiveSqlParser.T_CURRENT_SCHEMA:
        case HiveSqlParser.T_ANSI_NULLS:
        case HiveSqlParser.T_ANSI_PADDING:
        case HiveSqlParser.T_NOCOUNT:
        case HiveSqlParser.T_QUOTED_IDENTIFIER:
        case HiveSqlParser.T_XACT_ABORT:
        case HiveSqlParser.T_OFF:
        case HiveSqlParser.T_QUERY_BAND:
        case HiveSqlParser.T_NONE:
        case HiveSqlParser.T_SESSION:
        case HiveSqlParser.T_SIGNAL:
        case HiveSqlParser.T_SUMMARY:
        case HiveSqlParser.T_TOP:
        case HiveSqlParser.T_LIMIT:
        case HiveSqlParser.T_TRUNCATE:
        case HiveSqlParser.T_USE:
        case HiveSqlParser.T_WHILE:
        case HiveSqlParser.T_DO:
        case HiveSqlParser.T_LOOP:
        case HiveSqlParser.T_REVERSE:
        case HiveSqlParser.T_STEP:
        case HiveSqlParser.T_USING:
        case HiveSqlParser.T_ALL:
        case HiveSqlParser.T_EXCEPT:
        case HiveSqlParser.T_INTERSECT:
        case HiveSqlParser.T_SELECT:
        case HiveSqlParser.T_SEL:
        case HiveSqlParser.T_DISTINCT:
        case HiveSqlParser.T_TITLE:
        case HiveSqlParser.T_INNER:
        case HiveSqlParser.T_JOIN:
        case HiveSqlParser.T_LEFT:
        case HiveSqlParser.T_RIGHT:
        case HiveSqlParser.T_FULL:
        case HiveSqlParser.T_OUTER:
        case HiveSqlParser.T_GROUP:
        case HiveSqlParser.T_HAVING:
        case HiveSqlParser.T_QUALIFY:
        case HiveSqlParser.T_ORDER:
        case HiveSqlParser.T_RR:
        case HiveSqlParser.T_RS:
        case HiveSqlParser.T_UR:
        case HiveSqlParser.T_AND:
        case HiveSqlParser.T_KEEP:
        case HiveSqlParser.T_EXCLUSIVE:
        case HiveSqlParser.T_SHARE:
        case HiveSqlParser.T_LOCKS:
        case HiveSqlParser.T_MERGE:
        case HiveSqlParser.T_MATCHED:
        case HiveSqlParser.T_DESCRIBE:
        case HiveSqlParser.T_BETWEEN:
        case HiveSqlParser.T_RLIKE:
        case HiveSqlParser.T_REGEXP:
        case HiveSqlParser.T_INTERVAL:
        case HiveSqlParser.T_DAY:
        case HiveSqlParser.T_DAYS:
        case HiveSqlParser.T_MICROSECOND:
        case HiveSqlParser.T_MICROSECONDS:
        case HiveSqlParser.T_SECOND:
        case HiveSqlParser.T_SECONDS:
        case HiveSqlParser.T_CONCAT:
        case HiveSqlParser.T_CASE:
        case HiveSqlParser.T_ISOPEN:
        case HiveSqlParser.T_NOTFOUND:
        case HiveSqlParser.T_AVG:
        case HiveSqlParser.T_COUNT:
        case HiveSqlParser.T_COUNT_BIG:
        case HiveSqlParser.T_CUME_DIST:
        case HiveSqlParser.T_DENSE_RANK:
        case HiveSqlParser.T_FIRST_VALUE:
        case HiveSqlParser.T_LAG:
        case HiveSqlParser.T_LAST_VALUE:
        case HiveSqlParser.T_LEAD:
        case HiveSqlParser.T_MIN:
        case HiveSqlParser.T_RANK:
        case HiveSqlParser.T_ROW_NUMBER:
        case HiveSqlParser.T_STDEV:
        case HiveSqlParser.T_VAR:
        case HiveSqlParser.T_VARIANCE:
        case HiveSqlParser.T_OVER:
        case HiveSqlParser.T_PARTITION:
        case HiveSqlParser.T_ACTIVITY_COUNT:
        case HiveSqlParser.T_CAST:
        case HiveSqlParser.T_CURRENT_DATE:
        case HiveSqlParser.T_CURRENT_TIMESTAMP:
        case HiveSqlParser.T_CURRENT_USER:
        case HiveSqlParser.T_USER:
        case HiveSqlParser.T_PART_COUNT:
        case HiveSqlParser.T_PART_LOC:
        case HiveSqlParser.T_TRIM:
        case HiveSqlParser.T_SUBSTRING:
        case HiveSqlParser.T_SYSDATE:
        case HiveSqlParser.T_HIVE:
        case HiveSqlParser.T_HOST:
        case HiveSqlParser.T_TRUE:
        case HiveSqlParser.T_FALSE:
        case HiveSqlParser.T_DIR:
        case HiveSqlParser.T_FILE:
        case HiveSqlParser.T_FILES:
        case HiveSqlParser.T_NEW:
        case HiveSqlParser.T_PWD:
        case HiveSqlParser.T_SESSIONS:
        case HiveSqlParser.T_SUBDIR:
            this.state = 2538;
            this.table_name();
            break;
        case HiveSqlParser.T_OPEN_P:
            this.state = 2539;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 2540;
            this.select_stmt();
            this.state = 2541;
            this.match(HiveSqlParser.T_CLOSE_P);
            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
        this.state = 2549;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,317,this._ctx);
        if(la_===1) {
            this.state = 2546;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,316,this._ctx);
            if(la_===1) {
                this.state = 2545;
                this.match(HiveSqlParser.T_AS);

            }
            this.state = 2548;
            this.ident();

        }
    } 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 Merge_conditionContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_merge_condition;
    return this;
}

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

Merge_conditionContext.prototype.T_WHEN = function() {
    return this.getToken(HiveSqlParser.T_WHEN, 0);
};

Merge_conditionContext.prototype.T_MATCHED = function() {
    return this.getToken(HiveSqlParser.T_MATCHED, 0);
};

Merge_conditionContext.prototype.T_THEN = function() {
    return this.getToken(HiveSqlParser.T_THEN, 0);
};

Merge_conditionContext.prototype.merge_action = function() {
    return this.getTypedRuleContext(Merge_actionContext,0);
};

Merge_conditionContext.prototype.T_NOT = function() {
    return this.getToken(HiveSqlParser.T_NOT, 0);
};

Merge_conditionContext.prototype.T_AND = function() {
    return this.getToken(HiveSqlParser.T_AND, 0);
};

Merge_conditionContext.prototype.bool_expr = function() {
    return this.getTypedRuleContext(Bool_exprContext,0);
};

Merge_conditionContext.prototype.T_ELSE = function() {
    return this.getToken(HiveSqlParser.T_ELSE, 0);
};

Merge_conditionContext.prototype.T_IGNORE = function() {
    return this.getToken(HiveSqlParser.T_IGNORE, 0);
};

Merge_conditionContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterMerge_condition(this);
	}
};

Merge_conditionContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitMerge_condition(this);
	}
};

Merge_conditionContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitMerge_condition(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Merge_conditionContext = Merge_conditionContext;

HiveSqlParser.prototype.merge_condition = function() {

    var localctx = new Merge_conditionContext(this, this._ctx, this.state);
    this.enterRule(localctx, 356, HiveSqlParser.RULE_merge_condition);
    var _la = 0; // Token type
    try {
        this.state = 2564;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case HiveSqlParser.T_WHEN:
            this.enterOuterAlt(localctx, 1);
            this.state = 2551;
            this.match(HiveSqlParser.T_WHEN);
            this.state = 2553;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===HiveSqlParser.T_NOT) {
                this.state = 2552;
                this.match(HiveSqlParser.T_NOT);
            }

            this.state = 2555;
            this.match(HiveSqlParser.T_MATCHED);
            this.state = 2558;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===HiveSqlParser.T_AND) {
                this.state = 2556;
                this.match(HiveSqlParser.T_AND);
                this.state = 2557;
                this.bool_expr(0);
            }

            this.state = 2560;
            this.match(HiveSqlParser.T_THEN);
            this.state = 2561;
            this.merge_action();
            break;
        case HiveSqlParser.T_ELSE:
            this.enterOuterAlt(localctx, 2);
            this.state = 2562;
            this.match(HiveSqlParser.T_ELSE);
            this.state = 2563;
            this.match(HiveSqlParser.T_IGNORE);
            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 Merge_actionContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_merge_action;
    return this;
}

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

Merge_actionContext.prototype.T_INSERT = function() {
    return this.getToken(HiveSqlParser.T_INSERT, 0);
};

Merge_actionContext.prototype.T_VALUES = function() {
    return this.getToken(HiveSqlParser.T_VALUES, 0);
};

Merge_actionContext.prototype.insert_stmt_row = function() {
    return this.getTypedRuleContext(Insert_stmt_rowContext,0);
};

Merge_actionContext.prototype.insert_stmt_cols = function() {
    return this.getTypedRuleContext(Insert_stmt_colsContext,0);
};

Merge_actionContext.prototype.T_UPDATE = function() {
    return this.getToken(HiveSqlParser.T_UPDATE, 0);
};

Merge_actionContext.prototype.T_SET = function() {
    return this.getToken(HiveSqlParser.T_SET, 0);
};

Merge_actionContext.prototype.assignment_stmt_item = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Assignment_stmt_itemContext);
    } else {
        return this.getTypedRuleContext(Assignment_stmt_itemContext,i);
    }
};

Merge_actionContext.prototype.T_COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_COMMA);
    } else {
        return this.getToken(HiveSqlParser.T_COMMA, i);
    }
};


Merge_actionContext.prototype.where_clause = function() {
    return this.getTypedRuleContext(Where_clauseContext,0);
};

Merge_actionContext.prototype.T_DELETE = function() {
    return this.getToken(HiveSqlParser.T_DELETE, 0);
};

Merge_actionContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterMerge_action(this);
	}
};

Merge_actionContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitMerge_action(this);
	}
};

Merge_actionContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitMerge_action(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Merge_actionContext = Merge_actionContext;

HiveSqlParser.prototype.merge_action = function() {

    var localctx = new Merge_actionContext(this, this._ctx, this.state);
    this.enterRule(localctx, 358, HiveSqlParser.RULE_merge_action);
    var _la = 0; // Token type
    try {
        this.state = 2586;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case HiveSqlParser.T_INSERT:
            this.enterOuterAlt(localctx, 1);
            this.state = 2566;
            this.match(HiveSqlParser.T_INSERT);
            this.state = 2568;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===HiveSqlParser.T_OPEN_P) {
                this.state = 2567;
                this.insert_stmt_cols();
            }

            this.state = 2570;
            this.match(HiveSqlParser.T_VALUES);
            this.state = 2571;
            this.insert_stmt_row();
            break;
        case HiveSqlParser.T_UPDATE:
            this.enterOuterAlt(localctx, 2);
            this.state = 2572;
            this.match(HiveSqlParser.T_UPDATE);
            this.state = 2573;
            this.match(HiveSqlParser.T_SET);
            this.state = 2574;
            this.assignment_stmt_item();
            this.state = 2579;
            this._errHandler.sync(this);
            var _alt = this._interp.adaptivePredict(this._input,322,this._ctx)
            while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
                if(_alt===1) {
                    this.state = 2575;
                    this.match(HiveSqlParser.T_COMMA);
                    this.state = 2576;
                    this.assignment_stmt_item(); 
                }
                this.state = 2581;
                this._errHandler.sync(this);
                _alt = this._interp.adaptivePredict(this._input,322,this._ctx);
            }

            this.state = 2583;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,323,this._ctx);
            if(la_===1) {
                this.state = 2582;
                this.where_clause();

            }
            break;
        case HiveSqlParser.T_DELETE:
            this.enterOuterAlt(localctx, 3);
            this.state = 2585;
            this.match(HiveSqlParser.T_DELETE);
            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 Delete_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_delete_stmt;
    return this;
}

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

Delete_stmtContext.prototype.T_DELETE = function() {
    return this.getToken(HiveSqlParser.T_DELETE, 0);
};

Delete_stmtContext.prototype.table_name = function() {
    return this.getTypedRuleContext(Table_nameContext,0);
};

Delete_stmtContext.prototype.T_FROM = function() {
    return this.getToken(HiveSqlParser.T_FROM, 0);
};

Delete_stmtContext.prototype.delete_alias = function() {
    return this.getTypedRuleContext(Delete_aliasContext,0);
};

Delete_stmtContext.prototype.where_clause = function() {
    return this.getTypedRuleContext(Where_clauseContext,0);
};

Delete_stmtContext.prototype.T_ALL = function() {
    return this.getToken(HiveSqlParser.T_ALL, 0);
};

Delete_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterDelete_stmt(this);
	}
};

Delete_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitDelete_stmt(this);
	}
};

Delete_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitDelete_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Delete_stmtContext = Delete_stmtContext;

HiveSqlParser.prototype.delete_stmt = function() {

    var localctx = new Delete_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 360, HiveSqlParser.RULE_delete_stmt);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2588;
        this.match(HiveSqlParser.T_DELETE);
        this.state = 2590;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,325,this._ctx);
        if(la_===1) {
            this.state = 2589;
            this.match(HiveSqlParser.T_FROM);

        }
        this.state = 2592;
        this.table_name();
        this.state = 2594;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,326,this._ctx);
        if(la_===1) {
            this.state = 2593;
            this.delete_alias();

        }
        this.state = 2598;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,327,this._ctx);
        if(la_===1) {
            this.state = 2596;
            this.where_clause();

        } else if(la_===2) {
            this.state = 2597;
            this.match(HiveSqlParser.T_ALL);

        }
    } 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 Delete_aliasContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_delete_alias;
    return this;
}

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

Delete_aliasContext.prototype.ident = function() {
    return this.getTypedRuleContext(IdentContext,0);
};

Delete_aliasContext.prototype.T_AS = function() {
    return this.getToken(HiveSqlParser.T_AS, 0);
};

Delete_aliasContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterDelete_alias(this);
	}
};

Delete_aliasContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitDelete_alias(this);
	}
};

Delete_aliasContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitDelete_alias(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Delete_aliasContext = Delete_aliasContext;

HiveSqlParser.prototype.delete_alias = function() {

    var localctx = new Delete_aliasContext(this, this._ctx, this.state);
    this.enterRule(localctx, 362, HiveSqlParser.RULE_delete_alias);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2600;
        if (!( !this._input.LT(1).getText().equalsIgnoreCase("ALL"))) {
            throw new antlr4.error.FailedPredicateException(this, "!this._input.LT(1).getText().equalsIgnoreCase(\"ALL\")");
        }
        this.state = 2602;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,328,this._ctx);
        if(la_===1) {
            this.state = 2601;
            this.match(HiveSqlParser.T_AS);

        }
        this.state = 2604;
        this.ident();
    } 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 Describe_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_describe_stmt;
    return this;
}

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

Describe_stmtContext.prototype.table_name = function() {
    return this.getTypedRuleContext(Table_nameContext,0);
};

Describe_stmtContext.prototype.T_DESCRIBE = function() {
    return this.getToken(HiveSqlParser.T_DESCRIBE, 0);
};

Describe_stmtContext.prototype.T_DESC = function() {
    return this.getToken(HiveSqlParser.T_DESC, 0);
};

Describe_stmtContext.prototype.T_TABLE = function() {
    return this.getToken(HiveSqlParser.T_TABLE, 0);
};

Describe_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterDescribe_stmt(this);
	}
};

Describe_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitDescribe_stmt(this);
	}
};

Describe_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitDescribe_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Describe_stmtContext = Describe_stmtContext;

HiveSqlParser.prototype.describe_stmt = function() {

    var localctx = new Describe_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 364, HiveSqlParser.RULE_describe_stmt);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2606;
        _la = this._input.LA(1);
        if(!(_la===HiveSqlParser.T_DESC || _la===HiveSqlParser.T_DESCRIBE)) {
        this._errHandler.recoverInline(this);
        }
        else {
        	this._errHandler.reportMatch(this);
            this.consume();
        }
        this.state = 2608;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,329,this._ctx);
        if(la_===1) {
            this.state = 2607;
            this.match(HiveSqlParser.T_TABLE);

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


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

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

Bool_exprContext.prototype.T_OPEN_P = function() {
    return this.getToken(HiveSqlParser.T_OPEN_P, 0);
};

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

Bool_exprContext.prototype.T_CLOSE_P = function() {
    return this.getToken(HiveSqlParser.T_CLOSE_P, 0);
};

Bool_exprContext.prototype.T_NOT = function() {
    return this.getToken(HiveSqlParser.T_NOT, 0);
};

Bool_exprContext.prototype.bool_expr_atom = function() {
    return this.getTypedRuleContext(Bool_expr_atomContext,0);
};

Bool_exprContext.prototype.bool_expr_logical_operator = function() {
    return this.getTypedRuleContext(Bool_expr_logical_operatorContext,0);
};

Bool_exprContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterBool_expr(this);
	}
};

Bool_exprContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitBool_expr(this);
	}
};

Bool_exprContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitBool_expr(this);
    } else {
        return visitor.visitChildren(this);
    }
};



HiveSqlParser.prototype.bool_expr = function(_p) {
	if(_p===undefined) {
	    _p = 0;
	}
    var _parentctx = this._ctx;
    var _parentState = this.state;
    var localctx = new Bool_exprContext(this, this._ctx, _parentState);
    var _prevctx = localctx;
    var _startState = 366;
    this.enterRecursionRule(localctx, 366, HiveSqlParser.RULE_bool_expr, _p);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2621;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,331,this._ctx);
        switch(la_) {
        case 1:
            this.state = 2614;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===HiveSqlParser.T_NOT) {
                this.state = 2613;
                this.match(HiveSqlParser.T_NOT);
            }

            this.state = 2616;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 2617;
            this.bool_expr(0);
            this.state = 2618;
            this.match(HiveSqlParser.T_CLOSE_P);
            break;

        case 2:
            this.state = 2620;
            this.bool_expr_atom();
            break;

        }
        this._ctx.stop = this._input.LT(-1);
        this.state = 2629;
        this._errHandler.sync(this);
        var _alt = this._interp.adaptivePredict(this._input,332,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 Bool_exprContext(this, _parentctx, _parentState);
                this.pushNewRecursionContext(localctx, _startState, HiveSqlParser.RULE_bool_expr);
                this.state = 2623;
                if (!( this.precpred(this._ctx, 2))) {
                    throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 2)");
                }
                this.state = 2624;
                this.bool_expr_logical_operator();
                this.state = 2625;
                this.bool_expr(3); 
            }
            this.state = 2631;
            this._errHandler.sync(this);
            _alt = this._interp.adaptivePredict(this._input,332,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 Bool_expr_atomContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_bool_expr_atom;
    return this;
}

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

Bool_expr_atomContext.prototype.bool_expr_unary = function() {
    return this.getTypedRuleContext(Bool_expr_unaryContext,0);
};

Bool_expr_atomContext.prototype.bool_expr_binary = function() {
    return this.getTypedRuleContext(Bool_expr_binaryContext,0);
};

Bool_expr_atomContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Bool_expr_atomContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterBool_expr_atom(this);
	}
};

Bool_expr_atomContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitBool_expr_atom(this);
	}
};

Bool_expr_atomContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitBool_expr_atom(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Bool_expr_atomContext = Bool_expr_atomContext;

HiveSqlParser.prototype.bool_expr_atom = function() {

    var localctx = new Bool_expr_atomContext(this, this._ctx, this.state);
    this.enterRule(localctx, 368, HiveSqlParser.RULE_bool_expr_atom);
    try {
        this.state = 2635;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,333,this._ctx);
        switch(la_) {
        case 1:
            this.enterOuterAlt(localctx, 1);
            this.state = 2632;
            this.bool_expr_unary();
            break;

        case 2:
            this.enterOuterAlt(localctx, 2);
            this.state = 2633;
            this.bool_expr_binary();
            break;

        case 3:
            this.enterOuterAlt(localctx, 3);
            this.state = 2634;
            this.expr(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 Bool_expr_unaryContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_bool_expr_unary;
    return this;
}

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

Bool_expr_unaryContext.prototype.expr = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(ExprContext);
    } else {
        return this.getTypedRuleContext(ExprContext,i);
    }
};

Bool_expr_unaryContext.prototype.T_IS = function() {
    return this.getToken(HiveSqlParser.T_IS, 0);
};

Bool_expr_unaryContext.prototype.T_NULL = function() {
    return this.getToken(HiveSqlParser.T_NULL, 0);
};

Bool_expr_unaryContext.prototype.T_NOT = function() {
    return this.getToken(HiveSqlParser.T_NOT, 0);
};

Bool_expr_unaryContext.prototype.T_BETWEEN = function() {
    return this.getToken(HiveSqlParser.T_BETWEEN, 0);
};

Bool_expr_unaryContext.prototype.T_AND = function() {
    return this.getToken(HiveSqlParser.T_AND, 0);
};

Bool_expr_unaryContext.prototype.T_EXISTS = function() {
    return this.getToken(HiveSqlParser.T_EXISTS, 0);
};

Bool_expr_unaryContext.prototype.T_OPEN_P = function() {
    return this.getToken(HiveSqlParser.T_OPEN_P, 0);
};

Bool_expr_unaryContext.prototype.select_stmt = function() {
    return this.getTypedRuleContext(Select_stmtContext,0);
};

Bool_expr_unaryContext.prototype.T_CLOSE_P = function() {
    return this.getToken(HiveSqlParser.T_CLOSE_P, 0);
};

Bool_expr_unaryContext.prototype.bool_expr_single_in = function() {
    return this.getTypedRuleContext(Bool_expr_single_inContext,0);
};

Bool_expr_unaryContext.prototype.bool_expr_multi_in = function() {
    return this.getTypedRuleContext(Bool_expr_multi_inContext,0);
};

Bool_expr_unaryContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterBool_expr_unary(this);
	}
};

Bool_expr_unaryContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitBool_expr_unary(this);
	}
};

Bool_expr_unaryContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitBool_expr_unary(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Bool_expr_unaryContext = Bool_expr_unaryContext;

HiveSqlParser.prototype.bool_expr_unary = function() {

    var localctx = new Bool_expr_unaryContext(this, this._ctx, this.state);
    this.enterRule(localctx, 370, HiveSqlParser.RULE_bool_expr_unary);
    var _la = 0; // Token type
    try {
        this.state = 2660;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,336,this._ctx);
        switch(la_) {
        case 1:
            this.enterOuterAlt(localctx, 1);
            this.state = 2637;
            this.expr(0);
            this.state = 2638;
            this.match(HiveSqlParser.T_IS);
            this.state = 2640;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===HiveSqlParser.T_NOT) {
                this.state = 2639;
                this.match(HiveSqlParser.T_NOT);
            }

            this.state = 2642;
            this.match(HiveSqlParser.T_NULL);
            break;

        case 2:
            this.enterOuterAlt(localctx, 2);
            this.state = 2644;
            this.expr(0);
            this.state = 2645;
            this.match(HiveSqlParser.T_BETWEEN);
            this.state = 2646;
            this.expr(0);
            this.state = 2647;
            this.match(HiveSqlParser.T_AND);
            this.state = 2648;
            this.expr(0);
            break;

        case 3:
            this.enterOuterAlt(localctx, 3);
            this.state = 2651;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===HiveSqlParser.T_NOT) {
                this.state = 2650;
                this.match(HiveSqlParser.T_NOT);
            }

            this.state = 2653;
            this.match(HiveSqlParser.T_EXISTS);
            this.state = 2654;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 2655;
            this.select_stmt();
            this.state = 2656;
            this.match(HiveSqlParser.T_CLOSE_P);
            break;

        case 4:
            this.enterOuterAlt(localctx, 4);
            this.state = 2658;
            this.bool_expr_single_in();
            break;

        case 5:
            this.enterOuterAlt(localctx, 5);
            this.state = 2659;
            this.bool_expr_multi_in();
            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 Bool_expr_single_inContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_bool_expr_single_in;
    return this;
}

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

Bool_expr_single_inContext.prototype.expr = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(ExprContext);
    } else {
        return this.getTypedRuleContext(ExprContext,i);
    }
};

Bool_expr_single_inContext.prototype.T_IN = function() {
    return this.getToken(HiveSqlParser.T_IN, 0);
};

Bool_expr_single_inContext.prototype.T_OPEN_P = function() {
    return this.getToken(HiveSqlParser.T_OPEN_P, 0);
};

Bool_expr_single_inContext.prototype.T_CLOSE_P = function() {
    return this.getToken(HiveSqlParser.T_CLOSE_P, 0);
};

Bool_expr_single_inContext.prototype.select_stmt = function() {
    return this.getTypedRuleContext(Select_stmtContext,0);
};

Bool_expr_single_inContext.prototype.T_NOT = function() {
    return this.getToken(HiveSqlParser.T_NOT, 0);
};

Bool_expr_single_inContext.prototype.T_COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_COMMA);
    } else {
        return this.getToken(HiveSqlParser.T_COMMA, i);
    }
};


Bool_expr_single_inContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterBool_expr_single_in(this);
	}
};

Bool_expr_single_inContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitBool_expr_single_in(this);
	}
};

Bool_expr_single_inContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitBool_expr_single_in(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Bool_expr_single_inContext = Bool_expr_single_inContext;

HiveSqlParser.prototype.bool_expr_single_in = function() {

    var localctx = new Bool_expr_single_inContext(this, this._ctx, this.state);
    this.enterRule(localctx, 372, HiveSqlParser.RULE_bool_expr_single_in);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2662;
        this.expr(0);
        this.state = 2664;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===HiveSqlParser.T_NOT) {
            this.state = 2663;
            this.match(HiveSqlParser.T_NOT);
        }

        this.state = 2666;
        this.match(HiveSqlParser.T_IN);
        this.state = 2667;
        this.match(HiveSqlParser.T_OPEN_P);
        this.state = 2677;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,339,this._ctx);
        switch(la_) {
        case 1:
            this.state = 2668;
            this.expr(0);
            this.state = 2673;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            while(_la===HiveSqlParser.T_COMMA) {
                this.state = 2669;
                this.match(HiveSqlParser.T_COMMA);
                this.state = 2670;
                this.expr(0);
                this.state = 2675;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
            }
            break;

        case 2:
            this.state = 2676;
            this.select_stmt();
            break;

        }
        this.state = 2679;
        this.match(HiveSqlParser.T_CLOSE_P);
    } 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 Bool_expr_multi_inContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_bool_expr_multi_in;
    return this;
}

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

Bool_expr_multi_inContext.prototype.T_OPEN_P = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_OPEN_P);
    } else {
        return this.getToken(HiveSqlParser.T_OPEN_P, i);
    }
};


Bool_expr_multi_inContext.prototype.expr = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(ExprContext);
    } else {
        return this.getTypedRuleContext(ExprContext,i);
    }
};

Bool_expr_multi_inContext.prototype.T_CLOSE_P = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_CLOSE_P);
    } else {
        return this.getToken(HiveSqlParser.T_CLOSE_P, i);
    }
};


Bool_expr_multi_inContext.prototype.T_IN = function() {
    return this.getToken(HiveSqlParser.T_IN, 0);
};

Bool_expr_multi_inContext.prototype.select_stmt = function() {
    return this.getTypedRuleContext(Select_stmtContext,0);
};

Bool_expr_multi_inContext.prototype.T_COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_COMMA);
    } else {
        return this.getToken(HiveSqlParser.T_COMMA, i);
    }
};


Bool_expr_multi_inContext.prototype.T_NOT = function() {
    return this.getToken(HiveSqlParser.T_NOT, 0);
};

Bool_expr_multi_inContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterBool_expr_multi_in(this);
	}
};

Bool_expr_multi_inContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitBool_expr_multi_in(this);
	}
};

Bool_expr_multi_inContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitBool_expr_multi_in(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Bool_expr_multi_inContext = Bool_expr_multi_inContext;

HiveSqlParser.prototype.bool_expr_multi_in = function() {

    var localctx = new Bool_expr_multi_inContext(this, this._ctx, this.state);
    this.enterRule(localctx, 374, HiveSqlParser.RULE_bool_expr_multi_in);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2681;
        this.match(HiveSqlParser.T_OPEN_P);
        this.state = 2682;
        this.expr(0);
        this.state = 2687;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===HiveSqlParser.T_COMMA) {
            this.state = 2683;
            this.match(HiveSqlParser.T_COMMA);
            this.state = 2684;
            this.expr(0);
            this.state = 2689;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
        this.state = 2690;
        this.match(HiveSqlParser.T_CLOSE_P);
        this.state = 2692;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===HiveSqlParser.T_NOT) {
            this.state = 2691;
            this.match(HiveSqlParser.T_NOT);
        }

        this.state = 2694;
        this.match(HiveSqlParser.T_IN);
        this.state = 2695;
        this.match(HiveSqlParser.T_OPEN_P);
        this.state = 2696;
        this.select_stmt();
        this.state = 2697;
        this.match(HiveSqlParser.T_CLOSE_P);
    } 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 Bool_expr_binaryContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_bool_expr_binary;
    return this;
}

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

Bool_expr_binaryContext.prototype.expr = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(ExprContext);
    } else {
        return this.getTypedRuleContext(ExprContext,i);
    }
};

Bool_expr_binaryContext.prototype.bool_expr_binary_operator = function() {
    return this.getTypedRuleContext(Bool_expr_binary_operatorContext,0);
};

Bool_expr_binaryContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterBool_expr_binary(this);
	}
};

Bool_expr_binaryContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitBool_expr_binary(this);
	}
};

Bool_expr_binaryContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitBool_expr_binary(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Bool_expr_binaryContext = Bool_expr_binaryContext;

HiveSqlParser.prototype.bool_expr_binary = function() {

    var localctx = new Bool_expr_binaryContext(this, this._ctx, this.state);
    this.enterRule(localctx, 376, HiveSqlParser.RULE_bool_expr_binary);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2699;
        this.expr(0);
        this.state = 2700;
        this.bool_expr_binary_operator();
        this.state = 2701;
        this.expr(0);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


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

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

Bool_expr_logical_operatorContext.prototype.T_AND = function() {
    return this.getToken(HiveSqlParser.T_AND, 0);
};

Bool_expr_logical_operatorContext.prototype.T_OR = function() {
    return this.getToken(HiveSqlParser.T_OR, 0);
};

Bool_expr_logical_operatorContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterBool_expr_logical_operator(this);
	}
};

Bool_expr_logical_operatorContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitBool_expr_logical_operator(this);
	}
};

Bool_expr_logical_operatorContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitBool_expr_logical_operator(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Bool_expr_logical_operatorContext = Bool_expr_logical_operatorContext;

HiveSqlParser.prototype.bool_expr_logical_operator = function() {

    var localctx = new Bool_expr_logical_operatorContext(this, this._ctx, this.state);
    this.enterRule(localctx, 378, HiveSqlParser.RULE_bool_expr_logical_operator);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2703;
        _la = this._input.LA(1);
        if(!(_la===HiveSqlParser.T_OR || _la===HiveSqlParser.T_AND)) {
        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 Bool_expr_binary_operatorContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_bool_expr_binary_operator;
    return this;
}

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

Bool_expr_binary_operatorContext.prototype.T_EQUAL = function() {
    return this.getToken(HiveSqlParser.T_EQUAL, 0);
};

Bool_expr_binary_operatorContext.prototype.T_EQUAL2 = function() {
    return this.getToken(HiveSqlParser.T_EQUAL2, 0);
};

Bool_expr_binary_operatorContext.prototype.T_NOTEQUAL = function() {
    return this.getToken(HiveSqlParser.T_NOTEQUAL, 0);
};

Bool_expr_binary_operatorContext.prototype.T_NOTEQUAL2 = function() {
    return this.getToken(HiveSqlParser.T_NOTEQUAL2, 0);
};

Bool_expr_binary_operatorContext.prototype.T_LESS = function() {
    return this.getToken(HiveSqlParser.T_LESS, 0);
};

Bool_expr_binary_operatorContext.prototype.T_LESSEQUAL = function() {
    return this.getToken(HiveSqlParser.T_LESSEQUAL, 0);
};

Bool_expr_binary_operatorContext.prototype.T_GREATER = function() {
    return this.getToken(HiveSqlParser.T_GREATER, 0);
};

Bool_expr_binary_operatorContext.prototype.T_GREATEREQUAL = function() {
    return this.getToken(HiveSqlParser.T_GREATEREQUAL, 0);
};

Bool_expr_binary_operatorContext.prototype.T_LIKE = function() {
    return this.getToken(HiveSqlParser.T_LIKE, 0);
};

Bool_expr_binary_operatorContext.prototype.T_RLIKE = function() {
    return this.getToken(HiveSqlParser.T_RLIKE, 0);
};

Bool_expr_binary_operatorContext.prototype.T_REGEXP = function() {
    return this.getToken(HiveSqlParser.T_REGEXP, 0);
};

Bool_expr_binary_operatorContext.prototype.T_NOT = function() {
    return this.getToken(HiveSqlParser.T_NOT, 0);
};

Bool_expr_binary_operatorContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterBool_expr_binary_operator(this);
	}
};

Bool_expr_binary_operatorContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitBool_expr_binary_operator(this);
	}
};

Bool_expr_binary_operatorContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitBool_expr_binary_operator(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Bool_expr_binary_operatorContext = Bool_expr_binary_operatorContext;

HiveSqlParser.prototype.bool_expr_binary_operator = function() {

    var localctx = new Bool_expr_binary_operatorContext(this, this._ctx, this.state);
    this.enterRule(localctx, 380, HiveSqlParser.RULE_bool_expr_binary_operator);
    var _la = 0; // Token type
    try {
        this.state = 2717;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case HiveSqlParser.T_EQUAL:
            this.enterOuterAlt(localctx, 1);
            this.state = 2705;
            this.match(HiveSqlParser.T_EQUAL);
            break;
        case HiveSqlParser.T_EQUAL2:
            this.enterOuterAlt(localctx, 2);
            this.state = 2706;
            this.match(HiveSqlParser.T_EQUAL2);
            break;
        case HiveSqlParser.T_NOTEQUAL:
            this.enterOuterAlt(localctx, 3);
            this.state = 2707;
            this.match(HiveSqlParser.T_NOTEQUAL);
            break;
        case HiveSqlParser.T_NOTEQUAL2:
            this.enterOuterAlt(localctx, 4);
            this.state = 2708;
            this.match(HiveSqlParser.T_NOTEQUAL2);
            break;
        case HiveSqlParser.T_LESS:
            this.enterOuterAlt(localctx, 5);
            this.state = 2709;
            this.match(HiveSqlParser.T_LESS);
            break;
        case HiveSqlParser.T_LESSEQUAL:
            this.enterOuterAlt(localctx, 6);
            this.state = 2710;
            this.match(HiveSqlParser.T_LESSEQUAL);
            break;
        case HiveSqlParser.T_GREATER:
            this.enterOuterAlt(localctx, 7);
            this.state = 2711;
            this.match(HiveSqlParser.T_GREATER);
            break;
        case HiveSqlParser.T_GREATEREQUAL:
            this.enterOuterAlt(localctx, 8);
            this.state = 2712;
            this.match(HiveSqlParser.T_GREATEREQUAL);
            break;
        case HiveSqlParser.T_NOT:
        case HiveSqlParser.T_LIKE:
        case HiveSqlParser.T_RLIKE:
        case HiveSqlParser.T_REGEXP:
            this.enterOuterAlt(localctx, 9);
            this.state = 2714;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===HiveSqlParser.T_NOT) {
                this.state = 2713;
                this.match(HiveSqlParser.T_NOT);
            }

            this.state = 2716;
            _la = this._input.LA(1);
            if(!(_la===HiveSqlParser.T_LIKE || _la===HiveSqlParser.T_RLIKE || _la===HiveSqlParser.T_REGEXP)) {
            this._errHandler.recoverInline(this);
            }
            else {
            	this._errHandler.reportMatch(this);
                this.consume();
            }
            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 ExprContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_expr;
    return this;
}

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

ExprContext.prototype.T_OPEN_P = function() {
    return this.getToken(HiveSqlParser.T_OPEN_P, 0);
};

ExprContext.prototype.select_stmt = function() {
    return this.getTypedRuleContext(Select_stmtContext,0);
};

ExprContext.prototype.T_CLOSE_P = function() {
    return this.getToken(HiveSqlParser.T_CLOSE_P, 0);
};

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

ExprContext.prototype.expr_interval = function() {
    return this.getTypedRuleContext(Expr_intervalContext,0);
};

ExprContext.prototype.expr_concat = function() {
    return this.getTypedRuleContext(Expr_concatContext,0);
};

ExprContext.prototype.expr_case = function() {
    return this.getTypedRuleContext(Expr_caseContext,0);
};

ExprContext.prototype.expr_cursor_attribute = function() {
    return this.getTypedRuleContext(Expr_cursor_attributeContext,0);
};

ExprContext.prototype.expr_agg_window_func = function() {
    return this.getTypedRuleContext(Expr_agg_window_funcContext,0);
};

ExprContext.prototype.expr_spec_func = function() {
    return this.getTypedRuleContext(Expr_spec_funcContext,0);
};

ExprContext.prototype.expr_func = function() {
    return this.getTypedRuleContext(Expr_funcContext,0);
};

ExprContext.prototype.expr_atom = function() {
    return this.getTypedRuleContext(Expr_atomContext,0);
};

ExprContext.prototype.T_MUL = function() {
    return this.getToken(HiveSqlParser.T_MUL, 0);
};

ExprContext.prototype.T_DIV = function() {
    return this.getToken(HiveSqlParser.T_DIV, 0);
};

ExprContext.prototype.T_ADD = function() {
    return this.getToken(HiveSqlParser.T_ADD, 0);
};

ExprContext.prototype.T_SUB = function() {
    return this.getToken(HiveSqlParser.T_SUB, 0);
};

ExprContext.prototype.interval_item = function() {
    return this.getTypedRuleContext(Interval_itemContext,0);
};

ExprContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterExpr(this);
	}
};

ExprContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitExpr(this);
	}
};

ExprContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitExpr(this);
    } else {
        return visitor.visitChildren(this);
    }
};



HiveSqlParser.prototype.expr = function(_p) {
	if(_p===undefined) {
	    _p = 0;
	}
    var _parentctx = this._ctx;
    var _parentState = this.state;
    var localctx = new ExprContext(this, this._ctx, _parentState);
    var _prevctx = localctx;
    var _startState = 382;
    this.enterRecursionRule(localctx, 382, HiveSqlParser.RULE_expr, _p);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2736;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,344,this._ctx);
        switch(la_) {
        case 1:
            this.state = 2720;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 2721;
            this.select_stmt();
            this.state = 2722;
            this.match(HiveSqlParser.T_CLOSE_P);
            break;

        case 2:
            this.state = 2724;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 2725;
            this.expr(0);
            this.state = 2726;
            this.match(HiveSqlParser.T_CLOSE_P);
            break;

        case 3:
            this.state = 2728;
            this.expr_interval();
            break;

        case 4:
            this.state = 2729;
            this.expr_concat();
            break;

        case 5:
            this.state = 2730;
            this.expr_case();
            break;

        case 6:
            this.state = 2731;
            this.expr_cursor_attribute();
            break;

        case 7:
            this.state = 2732;
            this.expr_agg_window_func();
            break;

        case 8:
            this.state = 2733;
            this.expr_spec_func();
            break;

        case 9:
            this.state = 2734;
            this.expr_func();
            break;

        case 10:
            this.state = 2735;
            this.expr_atom();
            break;

        }
        this._ctx.stop = this._input.LT(-1);
        this.state = 2754;
        this._errHandler.sync(this);
        var _alt = this._interp.adaptivePredict(this._input,346,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 = 2752;
                this._errHandler.sync(this);
                var la_ = this._interp.adaptivePredict(this._input,345,this._ctx);
                switch(la_) {
                case 1:
                    localctx = new ExprContext(this, _parentctx, _parentState);
                    this.pushNewRecursionContext(localctx, _startState, HiveSqlParser.RULE_expr);
                    this.state = 2738;
                    if (!( this.precpred(this._ctx, 14))) {
                        throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 14)");
                    }
                    this.state = 2739;
                    this.match(HiveSqlParser.T_MUL);
                    this.state = 2740;
                    this.expr(15);
                    break;

                case 2:
                    localctx = new ExprContext(this, _parentctx, _parentState);
                    this.pushNewRecursionContext(localctx, _startState, HiveSqlParser.RULE_expr);
                    this.state = 2741;
                    if (!( this.precpred(this._ctx, 13))) {
                        throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 13)");
                    }
                    this.state = 2742;
                    this.match(HiveSqlParser.T_DIV);
                    this.state = 2743;
                    this.expr(14);
                    break;

                case 3:
                    localctx = new ExprContext(this, _parentctx, _parentState);
                    this.pushNewRecursionContext(localctx, _startState, HiveSqlParser.RULE_expr);
                    this.state = 2744;
                    if (!( this.precpred(this._ctx, 12))) {
                        throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 12)");
                    }
                    this.state = 2745;
                    this.match(HiveSqlParser.T_ADD);
                    this.state = 2746;
                    this.expr(13);
                    break;

                case 4:
                    localctx = new ExprContext(this, _parentctx, _parentState);
                    this.pushNewRecursionContext(localctx, _startState, HiveSqlParser.RULE_expr);
                    this.state = 2747;
                    if (!( this.precpred(this._ctx, 11))) {
                        throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 11)");
                    }
                    this.state = 2748;
                    this.match(HiveSqlParser.T_SUB);
                    this.state = 2749;
                    this.expr(12);
                    break;

                case 5:
                    localctx = new ExprContext(this, _parentctx, _parentState);
                    this.pushNewRecursionContext(localctx, _startState, HiveSqlParser.RULE_expr);
                    this.state = 2750;
                    if (!( this.precpred(this._ctx, 15))) {
                        throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 15)");
                    }
                    this.state = 2751;
                    this.interval_item();
                    break;

                } 
            }
            this.state = 2756;
            this._errHandler.sync(this);
            _alt = this._interp.adaptivePredict(this._input,346,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 Expr_atomContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_expr_atom;
    return this;
}

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

Expr_atomContext.prototype.date_literal = function() {
    return this.getTypedRuleContext(Date_literalContext,0);
};

Expr_atomContext.prototype.timestamp_literal = function() {
    return this.getTypedRuleContext(Timestamp_literalContext,0);
};

Expr_atomContext.prototype.bool_literal = function() {
    return this.getTypedRuleContext(Bool_literalContext,0);
};

Expr_atomContext.prototype.ident = function() {
    return this.getTypedRuleContext(IdentContext,0);
};

Expr_atomContext.prototype.string = function() {
    return this.getTypedRuleContext(StringContext,0);
};

Expr_atomContext.prototype.dec_number = function() {
    return this.getTypedRuleContext(Dec_numberContext,0);
};

Expr_atomContext.prototype.int_number = function() {
    return this.getTypedRuleContext(Int_numberContext,0);
};

Expr_atomContext.prototype.null_const = function() {
    return this.getTypedRuleContext(Null_constContext,0);
};

Expr_atomContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterExpr_atom(this);
	}
};

Expr_atomContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitExpr_atom(this);
	}
};

Expr_atomContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitExpr_atom(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Expr_atomContext = Expr_atomContext;

HiveSqlParser.prototype.expr_atom = function() {

    var localctx = new Expr_atomContext(this, this._ctx, this.state);
    this.enterRule(localctx, 384, HiveSqlParser.RULE_expr_atom);
    try {
        this.state = 2765;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,347,this._ctx);
        switch(la_) {
        case 1:
            this.enterOuterAlt(localctx, 1);
            this.state = 2757;
            this.date_literal();
            break;

        case 2:
            this.enterOuterAlt(localctx, 2);
            this.state = 2758;
            this.timestamp_literal();
            break;

        case 3:
            this.enterOuterAlt(localctx, 3);
            this.state = 2759;
            this.bool_literal();
            break;

        case 4:
            this.enterOuterAlt(localctx, 4);
            this.state = 2760;
            this.ident();
            break;

        case 5:
            this.enterOuterAlt(localctx, 5);
            this.state = 2761;
            this.string();
            break;

        case 6:
            this.enterOuterAlt(localctx, 6);
            this.state = 2762;
            this.dec_number();
            break;

        case 7:
            this.enterOuterAlt(localctx, 7);
            this.state = 2763;
            this.int_number();
            break;

        case 8:
            this.enterOuterAlt(localctx, 8);
            this.state = 2764;
            this.null_const();
            break;

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


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

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

Expr_intervalContext.prototype.T_INTERVAL = function() {
    return this.getToken(HiveSqlParser.T_INTERVAL, 0);
};

Expr_intervalContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Expr_intervalContext.prototype.interval_item = function() {
    return this.getTypedRuleContext(Interval_itemContext,0);
};

Expr_intervalContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterExpr_interval(this);
	}
};

Expr_intervalContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitExpr_interval(this);
	}
};

Expr_intervalContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitExpr_interval(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Expr_intervalContext = Expr_intervalContext;

HiveSqlParser.prototype.expr_interval = function() {

    var localctx = new Expr_intervalContext(this, this._ctx, this.state);
    this.enterRule(localctx, 386, HiveSqlParser.RULE_expr_interval);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2767;
        this.match(HiveSqlParser.T_INTERVAL);
        this.state = 2768;
        this.expr(0);
        this.state = 2769;
        this.interval_item();
    } 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 Interval_itemContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_interval_item;
    return this;
}

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

Interval_itemContext.prototype.T_DAY = function() {
    return this.getToken(HiveSqlParser.T_DAY, 0);
};

Interval_itemContext.prototype.T_DAYS = function() {
    return this.getToken(HiveSqlParser.T_DAYS, 0);
};

Interval_itemContext.prototype.T_MICROSECOND = function() {
    return this.getToken(HiveSqlParser.T_MICROSECOND, 0);
};

Interval_itemContext.prototype.T_MICROSECONDS = function() {
    return this.getToken(HiveSqlParser.T_MICROSECONDS, 0);
};

Interval_itemContext.prototype.T_SECOND = function() {
    return this.getToken(HiveSqlParser.T_SECOND, 0);
};

Interval_itemContext.prototype.T_SECONDS = function() {
    return this.getToken(HiveSqlParser.T_SECONDS, 0);
};

Interval_itemContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterInterval_item(this);
	}
};

Interval_itemContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitInterval_item(this);
	}
};

Interval_itemContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitInterval_item(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Interval_itemContext = Interval_itemContext;

HiveSqlParser.prototype.interval_item = function() {

    var localctx = new Interval_itemContext(this, this._ctx, this.state);
    this.enterRule(localctx, 388, HiveSqlParser.RULE_interval_item);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2771;
        _la = this._input.LA(1);
        if(!(((((_la - 316)) & ~0x1f) == 0 && ((1 << (_la - 316)) & ((1 << (HiveSqlParser.T_DAY - 316)) | (1 << (HiveSqlParser.T_DAYS - 316)) | (1 << (HiveSqlParser.T_MICROSECOND - 316)) | (1 << (HiveSqlParser.T_MICROSECONDS - 316)) | (1 << (HiveSqlParser.T_SECOND - 316)) | (1 << (HiveSqlParser.T_SECONDS - 316)))) !== 0))) {
        this._errHandler.recoverInline(this);
        }
        else {
        	this._errHandler.reportMatch(this);
            this.consume();
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


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

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

Expr_concatContext.prototype.expr_concat_item = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Expr_concat_itemContext);
    } else {
        return this.getTypedRuleContext(Expr_concat_itemContext,i);
    }
};

Expr_concatContext.prototype.T_PIPE = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_PIPE);
    } else {
        return this.getToken(HiveSqlParser.T_PIPE, i);
    }
};


Expr_concatContext.prototype.T_CONCAT = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_CONCAT);
    } else {
        return this.getToken(HiveSqlParser.T_CONCAT, i);
    }
};


Expr_concatContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterExpr_concat(this);
	}
};

Expr_concatContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitExpr_concat(this);
	}
};

Expr_concatContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitExpr_concat(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Expr_concatContext = Expr_concatContext;

HiveSqlParser.prototype.expr_concat = function() {

    var localctx = new Expr_concatContext(this, this._ctx, this.state);
    this.enterRule(localctx, 390, HiveSqlParser.RULE_expr_concat);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2773;
        this.expr_concat_item();
        this.state = 2774;
        _la = this._input.LA(1);
        if(!(_la===HiveSqlParser.T_PIPE || _la===HiveSqlParser.T_CONCAT)) {
        this._errHandler.recoverInline(this);
        }
        else {
        	this._errHandler.reportMatch(this);
            this.consume();
        }
        this.state = 2775;
        this.expr_concat_item();
        this.state = 2780;
        this._errHandler.sync(this);
        var _alt = this._interp.adaptivePredict(this._input,348,this._ctx)
        while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
            if(_alt===1) {
                this.state = 2776;
                _la = this._input.LA(1);
                if(!(_la===HiveSqlParser.T_PIPE || _la===HiveSqlParser.T_CONCAT)) {
                this._errHandler.recoverInline(this);
                }
                else {
                	this._errHandler.reportMatch(this);
                    this.consume();
                }
                this.state = 2777;
                this.expr_concat_item(); 
            }
            this.state = 2782;
            this._errHandler.sync(this);
            _alt = this._interp.adaptivePredict(this._input,348,this._ctx);
        }

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


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

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

Expr_concat_itemContext.prototype.T_OPEN_P = function() {
    return this.getToken(HiveSqlParser.T_OPEN_P, 0);
};

Expr_concat_itemContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Expr_concat_itemContext.prototype.T_CLOSE_P = function() {
    return this.getToken(HiveSqlParser.T_CLOSE_P, 0);
};

Expr_concat_itemContext.prototype.expr_case = function() {
    return this.getTypedRuleContext(Expr_caseContext,0);
};

Expr_concat_itemContext.prototype.expr_agg_window_func = function() {
    return this.getTypedRuleContext(Expr_agg_window_funcContext,0);
};

Expr_concat_itemContext.prototype.expr_spec_func = function() {
    return this.getTypedRuleContext(Expr_spec_funcContext,0);
};

Expr_concat_itemContext.prototype.expr_func = function() {
    return this.getTypedRuleContext(Expr_funcContext,0);
};

Expr_concat_itemContext.prototype.expr_atom = function() {
    return this.getTypedRuleContext(Expr_atomContext,0);
};

Expr_concat_itemContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterExpr_concat_item(this);
	}
};

Expr_concat_itemContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitExpr_concat_item(this);
	}
};

Expr_concat_itemContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitExpr_concat_item(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Expr_concat_itemContext = Expr_concat_itemContext;

HiveSqlParser.prototype.expr_concat_item = function() {

    var localctx = new Expr_concat_itemContext(this, this._ctx, this.state);
    this.enterRule(localctx, 392, HiveSqlParser.RULE_expr_concat_item);
    try {
        this.state = 2792;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,349,this._ctx);
        switch(la_) {
        case 1:
            this.enterOuterAlt(localctx, 1);
            this.state = 2783;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 2784;
            this.expr(0);
            this.state = 2785;
            this.match(HiveSqlParser.T_CLOSE_P);
            break;

        case 2:
            this.enterOuterAlt(localctx, 2);
            this.state = 2787;
            this.expr_case();
            break;

        case 3:
            this.enterOuterAlt(localctx, 3);
            this.state = 2788;
            this.expr_agg_window_func();
            break;

        case 4:
            this.enterOuterAlt(localctx, 4);
            this.state = 2789;
            this.expr_spec_func();
            break;

        case 5:
            this.enterOuterAlt(localctx, 5);
            this.state = 2790;
            this.expr_func();
            break;

        case 6:
            this.enterOuterAlt(localctx, 6);
            this.state = 2791;
            this.expr_atom();
            break;

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


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

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

Expr_caseContext.prototype.expr_case_simple = function() {
    return this.getTypedRuleContext(Expr_case_simpleContext,0);
};

Expr_caseContext.prototype.expr_case_searched = function() {
    return this.getTypedRuleContext(Expr_case_searchedContext,0);
};

Expr_caseContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterExpr_case(this);
	}
};

Expr_caseContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitExpr_case(this);
	}
};

Expr_caseContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitExpr_case(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Expr_caseContext = Expr_caseContext;

HiveSqlParser.prototype.expr_case = function() {

    var localctx = new Expr_caseContext(this, this._ctx, this.state);
    this.enterRule(localctx, 394, HiveSqlParser.RULE_expr_case);
    try {
        this.state = 2796;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,350,this._ctx);
        switch(la_) {
        case 1:
            this.enterOuterAlt(localctx, 1);
            this.state = 2794;
            this.expr_case_simple();
            break;

        case 2:
            this.enterOuterAlt(localctx, 2);
            this.state = 2795;
            this.expr_case_searched();
            break;

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


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

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

Expr_case_simpleContext.prototype.T_CASE = function() {
    return this.getToken(HiveSqlParser.T_CASE, 0);
};

Expr_case_simpleContext.prototype.expr = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(ExprContext);
    } else {
        return this.getTypedRuleContext(ExprContext,i);
    }
};

Expr_case_simpleContext.prototype.T_END = function() {
    return this.getToken(HiveSqlParser.T_END, 0);
};

Expr_case_simpleContext.prototype.T_WHEN = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_WHEN);
    } else {
        return this.getToken(HiveSqlParser.T_WHEN, i);
    }
};


Expr_case_simpleContext.prototype.T_THEN = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_THEN);
    } else {
        return this.getToken(HiveSqlParser.T_THEN, i);
    }
};


Expr_case_simpleContext.prototype.T_ELSE = function() {
    return this.getToken(HiveSqlParser.T_ELSE, 0);
};

Expr_case_simpleContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterExpr_case_simple(this);
	}
};

Expr_case_simpleContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitExpr_case_simple(this);
	}
};

Expr_case_simpleContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitExpr_case_simple(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Expr_case_simpleContext = Expr_case_simpleContext;

HiveSqlParser.prototype.expr_case_simple = function() {

    var localctx = new Expr_case_simpleContext(this, this._ctx, this.state);
    this.enterRule(localctx, 396, HiveSqlParser.RULE_expr_case_simple);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2798;
        this.match(HiveSqlParser.T_CASE);
        this.state = 2799;
        this.expr(0);
        this.state = 2805; 
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        do {
            this.state = 2800;
            this.match(HiveSqlParser.T_WHEN);
            this.state = 2801;
            this.expr(0);
            this.state = 2802;
            this.match(HiveSqlParser.T_THEN);
            this.state = 2803;
            this.expr(0);
            this.state = 2807; 
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        } while(_la===HiveSqlParser.T_WHEN);
        this.state = 2811;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===HiveSqlParser.T_ELSE) {
            this.state = 2809;
            this.match(HiveSqlParser.T_ELSE);
            this.state = 2810;
            this.expr(0);
        }

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


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

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

Expr_case_searchedContext.prototype.T_CASE = function() {
    return this.getToken(HiveSqlParser.T_CASE, 0);
};

Expr_case_searchedContext.prototype.T_END = function() {
    return this.getToken(HiveSqlParser.T_END, 0);
};

Expr_case_searchedContext.prototype.T_WHEN = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_WHEN);
    } else {
        return this.getToken(HiveSqlParser.T_WHEN, i);
    }
};


Expr_case_searchedContext.prototype.bool_expr = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Bool_exprContext);
    } else {
        return this.getTypedRuleContext(Bool_exprContext,i);
    }
};

Expr_case_searchedContext.prototype.T_THEN = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_THEN);
    } else {
        return this.getToken(HiveSqlParser.T_THEN, i);
    }
};


Expr_case_searchedContext.prototype.expr = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(ExprContext);
    } else {
        return this.getTypedRuleContext(ExprContext,i);
    }
};

Expr_case_searchedContext.prototype.T_ELSE = function() {
    return this.getToken(HiveSqlParser.T_ELSE, 0);
};

Expr_case_searchedContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterExpr_case_searched(this);
	}
};

Expr_case_searchedContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitExpr_case_searched(this);
	}
};

Expr_case_searchedContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitExpr_case_searched(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Expr_case_searchedContext = Expr_case_searchedContext;

HiveSqlParser.prototype.expr_case_searched = function() {

    var localctx = new Expr_case_searchedContext(this, this._ctx, this.state);
    this.enterRule(localctx, 398, HiveSqlParser.RULE_expr_case_searched);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2815;
        this.match(HiveSqlParser.T_CASE);
        this.state = 2821; 
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        do {
            this.state = 2816;
            this.match(HiveSqlParser.T_WHEN);
            this.state = 2817;
            this.bool_expr(0);
            this.state = 2818;
            this.match(HiveSqlParser.T_THEN);
            this.state = 2819;
            this.expr(0);
            this.state = 2823; 
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        } while(_la===HiveSqlParser.T_WHEN);
        this.state = 2827;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===HiveSqlParser.T_ELSE) {
            this.state = 2825;
            this.match(HiveSqlParser.T_ELSE);
            this.state = 2826;
            this.expr(0);
        }

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


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

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

Expr_cursor_attributeContext.prototype.ident = function() {
    return this.getTypedRuleContext(IdentContext,0);
};

Expr_cursor_attributeContext.prototype.T_ISOPEN = function() {
    return this.getToken(HiveSqlParser.T_ISOPEN, 0);
};

Expr_cursor_attributeContext.prototype.T_FOUND = function() {
    return this.getToken(HiveSqlParser.T_FOUND, 0);
};

Expr_cursor_attributeContext.prototype.T_NOTFOUND = function() {
    return this.getToken(HiveSqlParser.T_NOTFOUND, 0);
};

Expr_cursor_attributeContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterExpr_cursor_attribute(this);
	}
};

Expr_cursor_attributeContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitExpr_cursor_attribute(this);
	}
};

Expr_cursor_attributeContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitExpr_cursor_attribute(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Expr_cursor_attributeContext = Expr_cursor_attributeContext;

HiveSqlParser.prototype.expr_cursor_attribute = function() {

    var localctx = new Expr_cursor_attributeContext(this, this._ctx, this.state);
    this.enterRule(localctx, 400, HiveSqlParser.RULE_expr_cursor_attribute);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2831;
        this.ident();
        this.state = 2832;
        this.match(HiveSqlParser.T__3);
        this.state = 2833;
        _la = this._input.LA(1);
        if(!(_la===HiveSqlParser.T_FOUND || _la===HiveSqlParser.T_ISOPEN || _la===HiveSqlParser.T_NOTFOUND)) {
        this._errHandler.recoverInline(this);
        }
        else {
        	this._errHandler.reportMatch(this);
            this.consume();
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


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

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

Expr_agg_window_funcContext.prototype.T_AVG = function() {
    return this.getToken(HiveSqlParser.T_AVG, 0);
};

Expr_agg_window_funcContext.prototype.T_OPEN_P = function() {
    return this.getToken(HiveSqlParser.T_OPEN_P, 0);
};

Expr_agg_window_funcContext.prototype.expr = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(ExprContext);
    } else {
        return this.getTypedRuleContext(ExprContext,i);
    }
};

Expr_agg_window_funcContext.prototype.T_CLOSE_P = function() {
    return this.getToken(HiveSqlParser.T_CLOSE_P, 0);
};

Expr_agg_window_funcContext.prototype.expr_func_all_distinct = function() {
    return this.getTypedRuleContext(Expr_func_all_distinctContext,0);
};

Expr_agg_window_funcContext.prototype.expr_func_over_clause = function() {
    return this.getTypedRuleContext(Expr_func_over_clauseContext,0);
};

Expr_agg_window_funcContext.prototype.T_COUNT = function() {
    return this.getToken(HiveSqlParser.T_COUNT, 0);
};

Expr_agg_window_funcContext.prototype.T_COUNT_BIG = function() {
    return this.getToken(HiveSqlParser.T_COUNT_BIG, 0);
};

Expr_agg_window_funcContext.prototype.T_CUME_DIST = function() {
    return this.getToken(HiveSqlParser.T_CUME_DIST, 0);
};

Expr_agg_window_funcContext.prototype.T_DENSE_RANK = function() {
    return this.getToken(HiveSqlParser.T_DENSE_RANK, 0);
};

Expr_agg_window_funcContext.prototype.T_FIRST_VALUE = function() {
    return this.getToken(HiveSqlParser.T_FIRST_VALUE, 0);
};

Expr_agg_window_funcContext.prototype.T_LAG = function() {
    return this.getToken(HiveSqlParser.T_LAG, 0);
};

Expr_agg_window_funcContext.prototype.T_COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_COMMA);
    } else {
        return this.getToken(HiveSqlParser.T_COMMA, i);
    }
};


Expr_agg_window_funcContext.prototype.T_LAST_VALUE = function() {
    return this.getToken(HiveSqlParser.T_LAST_VALUE, 0);
};

Expr_agg_window_funcContext.prototype.T_LEAD = function() {
    return this.getToken(HiveSqlParser.T_LEAD, 0);
};

Expr_agg_window_funcContext.prototype.T_MAX = function() {
    return this.getToken(HiveSqlParser.T_MAX, 0);
};

Expr_agg_window_funcContext.prototype.T_MIN = function() {
    return this.getToken(HiveSqlParser.T_MIN, 0);
};

Expr_agg_window_funcContext.prototype.T_RANK = function() {
    return this.getToken(HiveSqlParser.T_RANK, 0);
};

Expr_agg_window_funcContext.prototype.T_ROW_NUMBER = function() {
    return this.getToken(HiveSqlParser.T_ROW_NUMBER, 0);
};

Expr_agg_window_funcContext.prototype.T_STDEV = function() {
    return this.getToken(HiveSqlParser.T_STDEV, 0);
};

Expr_agg_window_funcContext.prototype.T_SUM = function() {
    return this.getToken(HiveSqlParser.T_SUM, 0);
};

Expr_agg_window_funcContext.prototype.T_VAR = function() {
    return this.getToken(HiveSqlParser.T_VAR, 0);
};

Expr_agg_window_funcContext.prototype.T_VARIANCE = function() {
    return this.getToken(HiveSqlParser.T_VARIANCE, 0);
};

Expr_agg_window_funcContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterExpr_agg_window_func(this);
	}
};

Expr_agg_window_funcContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitExpr_agg_window_func(this);
	}
};

Expr_agg_window_funcContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitExpr_agg_window_func(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Expr_agg_window_funcContext = Expr_agg_window_funcContext;

HiveSqlParser.prototype.expr_agg_window_func = function() {

    var localctx = new Expr_agg_window_funcContext(this, this._ctx, this.state);
    this.enterRule(localctx, 402, HiveSqlParser.RULE_expr_agg_window_func);
    var _la = 0; // Token type
    try {
        this.state = 2987;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case HiveSqlParser.T_AVG:
            this.enterOuterAlt(localctx, 1);
            this.state = 2835;
            this.match(HiveSqlParser.T_AVG);
            this.state = 2836;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 2838;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,355,this._ctx);
            if(la_===1) {
                this.state = 2837;
                this.expr_func_all_distinct();

            }
            this.state = 2840;
            this.expr(0);
            this.state = 2841;
            this.match(HiveSqlParser.T_CLOSE_P);
            this.state = 2843;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,356,this._ctx);
            if(la_===1) {
                this.state = 2842;
                this.expr_func_over_clause();

            }
            break;
        case HiveSqlParser.T_COUNT:
            this.enterOuterAlt(localctx, 2);
            this.state = 2845;
            this.match(HiveSqlParser.T_COUNT);
            this.state = 2846;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 2852;
            this._errHandler.sync(this);
            switch(this._input.LA(1)) {
            case HiveSqlParser.T__8:
            case HiveSqlParser.T__9:
            case HiveSqlParser.T_GO:
            case HiveSqlParser.T_BEGIN:
            case HiveSqlParser.T_EXCEPTION:
            case HiveSqlParser.L_ID:
            case HiveSqlParser.T_THEN:
            case HiveSqlParser.T_NULL:
            case HiveSqlParser.T_SET:
            case HiveSqlParser.T_OPEN_P:
            case HiveSqlParser.T_ALLOCATE:
            case HiveSqlParser.T_CURSOR:
            case HiveSqlParser.T_FOR:
            case HiveSqlParser.T_RESULT:
            case HiveSqlParser.T_PROCEDURE:
            case HiveSqlParser.T_ASSOCIATE:
            case HiveSqlParser.T_LOCATOR:
            case HiveSqlParser.T_LOCATORS:
            case HiveSqlParser.T_WITH:
            case HiveSqlParser.T_TRANSACTION:
            case HiveSqlParser.T_BREAK:
            case HiveSqlParser.T_CALL:
            case HiveSqlParser.T_DECLARE:
            case HiveSqlParser.T_AS:
            case HiveSqlParser.T_CONSTANT:
            case HiveSqlParser.T_CONDITION:
            case HiveSqlParser.T_IS:
            case HiveSqlParser.T_RETURN:
            case HiveSqlParser.T_ONLY:
            case HiveSqlParser.T_TO:
            case HiveSqlParser.T_CALLER:
            case HiveSqlParser.T_CLIENT:
            case HiveSqlParser.T_WITHOUT:
            case HiveSqlParser.T_CONTINUE:
            case HiveSqlParser.T_EXIT:
            case HiveSqlParser.T_HANDLER:
            case HiveSqlParser.T_SQLEXCEPTION:
            case HiveSqlParser.T_SQLWARNING:
            case HiveSqlParser.T_NOT:
            case HiveSqlParser.T_FOUND:
            case HiveSqlParser.T_GLOBAL:
            case HiveSqlParser.T_TEMPORARY:
            case HiveSqlParser.T_TABLE:
            case HiveSqlParser.T_CREATE:
            case HiveSqlParser.T_IF:
            case HiveSqlParser.T_EXISTS:
            case HiveSqlParser.T_LOCAL:
            case HiveSqlParser.T_MULTISET:
            case HiveSqlParser.T_VOLATILE:
            case HiveSqlParser.T_LIKE:
            case HiveSqlParser.T_CONSTRAINT:
            case HiveSqlParser.T_PRIMARY:
            case HiveSqlParser.T_KEY:
            case HiveSqlParser.T_UNIQUE:
            case HiveSqlParser.T_REFERENCES:
            case HiveSqlParser.T_IDENTITY:
            case HiveSqlParser.L_INT:
            case HiveSqlParser.T_AUTO_INCREMENT:
            case HiveSqlParser.T_ENABLE:
            case HiveSqlParser.T_CLUSTERED:
            case HiveSqlParser.T_ASC:
            case HiveSqlParser.T_DESC:
            case HiveSqlParser.T_FOREIGN:
            case HiveSqlParser.T_ON:
            case HiveSqlParser.T_UPDATE:
            case HiveSqlParser.T_DELETE:
            case HiveSqlParser.T_NO:
            case HiveSqlParser.T_ACTION:
            case HiveSqlParser.T_RESTRICT:
            case HiveSqlParser.T_DEFAULT:
            case HiveSqlParser.T_CASCADE:
            case HiveSqlParser.T_LOG:
            case HiveSqlParser.T_FALLBACK:
            case HiveSqlParser.T_COMMIT:
            case HiveSqlParser.T_PRESERVE:
            case HiveSqlParser.T_ROWS:
            case HiveSqlParser.T_SEGMENT:
            case HiveSqlParser.T_CREATION:
            case HiveSqlParser.T_IMMEDIATE:
            case HiveSqlParser.T_DEFERRED:
            case HiveSqlParser.T_PCTFREE:
            case HiveSqlParser.T_PCTUSED:
            case HiveSqlParser.T_INITRANS:
            case HiveSqlParser.T_MAXTRANS:
            case HiveSqlParser.T_NOCOMPRESS:
            case HiveSqlParser.T_LOGGING:
            case HiveSqlParser.T_NOLOGGING:
            case HiveSqlParser.T_STORAGE:
            case HiveSqlParser.T_TABLESPACE:
            case HiveSqlParser.T_INDEX:
            case HiveSqlParser.T_IN:
            case HiveSqlParser.T_REPLACE:
            case HiveSqlParser.T_DISTRIBUTE:
            case HiveSqlParser.T_BY:
            case HiveSqlParser.T_HASH:
            case HiveSqlParser.T_LOGGED:
            case HiveSqlParser.T_COMPRESS:
            case HiveSqlParser.T_YES:
            case HiveSqlParser.T_DEFINITION:
            case HiveSqlParser.T_DROP:
            case HiveSqlParser.T_DATA:
            case HiveSqlParser.T_STORED:
            case HiveSqlParser.T_ROW:
            case HiveSqlParser.T_FORMAT:
            case HiveSqlParser.T_DELIMITED:
            case HiveSqlParser.T_FIELDS:
            case HiveSqlParser.T_TERMINATED:
            case HiveSqlParser.T_ESCAPED:
            case HiveSqlParser.T_COLLECTION:
            case HiveSqlParser.T_ITEMS:
            case HiveSqlParser.T_MAP:
            case HiveSqlParser.T_KEYS:
            case HiveSqlParser.T_LINES:
            case HiveSqlParser.T_DEFINED:
            case HiveSqlParser.T_TEXTIMAGE_ON:
            case HiveSqlParser.T_COMMENT:
            case HiveSqlParser.T_CHARACTER:
            case HiveSqlParser.T_CHARSET:
            case HiveSqlParser.T_ENGINE:
            case HiveSqlParser.T_ALTER:
            case HiveSqlParser.T_ADD2:
            case HiveSqlParser.T_CHAR:
            case HiveSqlParser.T_BIGINT:
            case HiveSqlParser.T_BINARY_DOUBLE:
            case HiveSqlParser.T_BINARY_FLOAT:
            case HiveSqlParser.T_BIT:
            case HiveSqlParser.T_DATE:
            case HiveSqlParser.T_DATETIME:
            case HiveSqlParser.T_DEC:
            case HiveSqlParser.T_DECIMAL:
            case HiveSqlParser.T_DOUBLE:
            case HiveSqlParser.T_PRECISION:
            case HiveSqlParser.T_FLOAT:
            case HiveSqlParser.T_INT:
            case HiveSqlParser.T_INT2:
            case HiveSqlParser.T_INT4:
            case HiveSqlParser.T_INT8:
            case HiveSqlParser.T_INTEGER:
            case HiveSqlParser.T_NCHAR:
            case HiveSqlParser.T_NVARCHAR:
            case HiveSqlParser.T_NUMBER:
            case HiveSqlParser.T_NUMERIC:
            case HiveSqlParser.T_REAL:
            case HiveSqlParser.T_RESULT_SET_LOCATOR:
            case HiveSqlParser.T_VARYING:
            case HiveSqlParser.T_SIMPLE_FLOAT:
            case HiveSqlParser.T_SIMPLE_DOUBLE:
            case HiveSqlParser.T_SMALLINT:
            case HiveSqlParser.T_SMALLDATETIME:
            case HiveSqlParser.T_STRING:
            case HiveSqlParser.T_SYS_REFCURSOR:
            case HiveSqlParser.T_TIMESTAMP:
            case HiveSqlParser.T_VARCHAR:
            case HiveSqlParser.T_VARCHAR2:
            case HiveSqlParser.T_XML:
            case HiveSqlParser.T_MAX:
            case HiveSqlParser.T_BYTE:
            case HiveSqlParser.T_CASESPECIFIC:
            case HiveSqlParser.T_CS:
            case HiveSqlParser.T_DATABASE:
            case HiveSqlParser.T_SCHEMA:
            case HiveSqlParser.T_LOCATION:
            case HiveSqlParser.T_OR:
            case HiveSqlParser.T_FUNCTION:
            case HiveSqlParser.T_RETURNS:
            case HiveSqlParser.T_PACKAGE:
            case HiveSqlParser.T_PROC:
            case HiveSqlParser.T_BODY:
            case HiveSqlParser.T_OUT:
            case HiveSqlParser.T_INOUT:
            case HiveSqlParser.T_LANGUAGE:
            case HiveSqlParser.T_SQL:
            case HiveSqlParser.T_SECURITY:
            case HiveSqlParser.T_CREATOR:
            case HiveSqlParser.T_DEFINER:
            case HiveSqlParser.T_INVOKER:
            case HiveSqlParser.T_OWNER:
            case HiveSqlParser.T_DYNAMIC:
            case HiveSqlParser.T_SETS:
            case HiveSqlParser.T_EXEC:
            case HiveSqlParser.T_EXECUTE:
            case HiveSqlParser.T_INTO:
            case HiveSqlParser.T_INCLUDE:
            case HiveSqlParser.T_INSERT:
            case HiveSqlParser.T_OVERWRITE:
            case HiveSqlParser.T_VALUES:
            case HiveSqlParser.T_DIRECTORY:
            case HiveSqlParser.T_GET:
            case HiveSqlParser.T_DIAGNOSTICS:
            case HiveSqlParser.T_MESSAGE_TEXT:
            case HiveSqlParser.T_ROW_COUNT:
            case HiveSqlParser.T_GRANT:
            case HiveSqlParser.T_ROLE:
            case HiveSqlParser.T_LEAVE:
            case HiveSqlParser.T_OBJECT:
            case HiveSqlParser.T_AT:
            case HiveSqlParser.T_OPEN:
            case HiveSqlParser.T_FETCH:
            case HiveSqlParser.T_FROM:
            case HiveSqlParser.T_COLLECT:
            case HiveSqlParser.T_STATISTICS:
            case HiveSqlParser.T_STATS:
            case HiveSqlParser.T_COLUMN:
            case HiveSqlParser.T_CLOSE:
            case HiveSqlParser.T_CMP:
            case HiveSqlParser.T_SUM:
            case HiveSqlParser.T_COPY:
            case HiveSqlParser.T_HDFS:
            case HiveSqlParser.T_BATCHSIZE:
            case HiveSqlParser.T_DELIMITER:
            case HiveSqlParser.T_SQLINSERT:
            case HiveSqlParser.T_IGNORE:
            case HiveSqlParser.T_WORK:
            case HiveSqlParser.T_PRINT:
            case HiveSqlParser.T_QUIT:
            case HiveSqlParser.T_RAISE:
            case HiveSqlParser.T_RESIGNAL:
            case HiveSqlParser.T_SQLSTATE:
            case HiveSqlParser.T_VALUE:
            case HiveSqlParser.T_ROLLBACK:
            case HiveSqlParser.T_CURRENT:
            case HiveSqlParser.T_CURRENT_SCHEMA:
            case HiveSqlParser.T_ANSI_NULLS:
            case HiveSqlParser.T_ANSI_PADDING:
            case HiveSqlParser.T_NOCOUNT:
            case HiveSqlParser.T_QUOTED_IDENTIFIER:
            case HiveSqlParser.T_XACT_ABORT:
            case HiveSqlParser.T_OFF:
            case HiveSqlParser.T_QUERY_BAND:
            case HiveSqlParser.T_NONE:
            case HiveSqlParser.T_SESSION:
            case HiveSqlParser.T_SIGNAL:
            case HiveSqlParser.T_SUMMARY:
            case HiveSqlParser.T_TOP:
            case HiveSqlParser.T_LIMIT:
            case HiveSqlParser.T_TRUNCATE:
            case HiveSqlParser.T_USE:
            case HiveSqlParser.T_WHILE:
            case HiveSqlParser.T_DO:
            case HiveSqlParser.T_LOOP:
            case HiveSqlParser.T_REVERSE:
            case HiveSqlParser.T_STEP:
            case HiveSqlParser.T_USING:
            case HiveSqlParser.T_ALL:
            case HiveSqlParser.T_EXCEPT:
            case HiveSqlParser.T_INTERSECT:
            case HiveSqlParser.T_SELECT:
            case HiveSqlParser.T_SEL:
            case HiveSqlParser.T_DISTINCT:
            case HiveSqlParser.T_TITLE:
            case HiveSqlParser.L_S_STRING:
            case HiveSqlParser.T_INNER:
            case HiveSqlParser.T_JOIN:
            case HiveSqlParser.T_LEFT:
            case HiveSqlParser.T_RIGHT:
            case HiveSqlParser.T_FULL:
            case HiveSqlParser.T_OUTER:
            case HiveSqlParser.T_GROUP:
            case HiveSqlParser.T_HAVING:
            case HiveSqlParser.T_QUALIFY:
            case HiveSqlParser.T_ORDER:
            case HiveSqlParser.T_RR:
            case HiveSqlParser.T_RS:
            case HiveSqlParser.T_UR:
            case HiveSqlParser.T_AND:
            case HiveSqlParser.T_KEEP:
            case HiveSqlParser.T_EXCLUSIVE:
            case HiveSqlParser.T_SHARE:
            case HiveSqlParser.T_LOCKS:
            case HiveSqlParser.T_MERGE:
            case HiveSqlParser.T_MATCHED:
            case HiveSqlParser.T_DESCRIBE:
            case HiveSqlParser.T_BETWEEN:
            case HiveSqlParser.T_RLIKE:
            case HiveSqlParser.T_REGEXP:
            case HiveSqlParser.T_INTERVAL:
            case HiveSqlParser.T_DAY:
            case HiveSqlParser.T_DAYS:
            case HiveSqlParser.T_MICROSECOND:
            case HiveSqlParser.T_MICROSECONDS:
            case HiveSqlParser.T_SECOND:
            case HiveSqlParser.T_SECONDS:
            case HiveSqlParser.T_CONCAT:
            case HiveSqlParser.T_CASE:
            case HiveSqlParser.T_ISOPEN:
            case HiveSqlParser.T_NOTFOUND:
            case HiveSqlParser.T_AVG:
            case HiveSqlParser.T_COUNT:
            case HiveSqlParser.T_COUNT_BIG:
            case HiveSqlParser.T_CUME_DIST:
            case HiveSqlParser.T_DENSE_RANK:
            case HiveSqlParser.T_FIRST_VALUE:
            case HiveSqlParser.T_LAG:
            case HiveSqlParser.T_LAST_VALUE:
            case HiveSqlParser.T_LEAD:
            case HiveSqlParser.T_MIN:
            case HiveSqlParser.T_RANK:
            case HiveSqlParser.T_ROW_NUMBER:
            case HiveSqlParser.T_STDEV:
            case HiveSqlParser.T_VAR:
            case HiveSqlParser.T_VARIANCE:
            case HiveSqlParser.T_OVER:
            case HiveSqlParser.T_PARTITION:
            case HiveSqlParser.T_ACTIVITY_COUNT:
            case HiveSqlParser.T_CAST:
            case HiveSqlParser.T_CURRENT_DATE:
            case HiveSqlParser.T_CURRENT_TIMESTAMP:
            case HiveSqlParser.T_CURRENT_USER:
            case HiveSqlParser.T_USER:
            case HiveSqlParser.T_MAX_PART_STRING:
            case HiveSqlParser.T_MIN_PART_STRING:
            case HiveSqlParser.T_MAX_PART_INT:
            case HiveSqlParser.T_MIN_PART_INT:
            case HiveSqlParser.T_MAX_PART_DATE:
            case HiveSqlParser.T_MIN_PART_DATE:
            case HiveSqlParser.T_PART_COUNT:
            case HiveSqlParser.T_PART_LOC:
            case HiveSqlParser.T_TRIM:
            case HiveSqlParser.T_SUBSTRING:
            case HiveSqlParser.T_SYSDATE:
            case HiveSqlParser.T_HIVE:
            case HiveSqlParser.T_HOST:
            case HiveSqlParser.L_D_STRING:
            case HiveSqlParser.L_DEC:
            case HiveSqlParser.T_TRUE:
            case HiveSqlParser.T_FALSE:
            case HiveSqlParser.T_DIR:
            case HiveSqlParser.T_FILE:
            case HiveSqlParser.T_FILES:
            case HiveSqlParser.T_NEW:
            case HiveSqlParser.T_PWD:
            case HiveSqlParser.T_SESSIONS:
            case HiveSqlParser.T_SUBDIR:
                this.state = 2848;
                this._errHandler.sync(this);
                var la_ = this._interp.adaptivePredict(this._input,357,this._ctx);
                if(la_===1) {
                    this.state = 2847;
                    this.expr_func_all_distinct();

                }
                this.state = 2850;
                this.expr(0);
                break;
            case HiveSqlParser.T__5:
                this.state = 2851;
                this.match(HiveSqlParser.T__5);
                break;
            default:
                throw new antlr4.error.NoViableAltException(this);
            }
            this.state = 2854;
            this.match(HiveSqlParser.T_CLOSE_P);
            this.state = 2856;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,359,this._ctx);
            if(la_===1) {
                this.state = 2855;
                this.expr_func_over_clause();

            }
            break;
        case HiveSqlParser.T_COUNT_BIG:
            this.enterOuterAlt(localctx, 3);
            this.state = 2858;
            this.match(HiveSqlParser.T_COUNT_BIG);
            this.state = 2859;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 2865;
            this._errHandler.sync(this);
            switch(this._input.LA(1)) {
            case HiveSqlParser.T__8:
            case HiveSqlParser.T__9:
            case HiveSqlParser.T_GO:
            case HiveSqlParser.T_BEGIN:
            case HiveSqlParser.T_EXCEPTION:
            case HiveSqlParser.L_ID:
            case HiveSqlParser.T_THEN:
            case HiveSqlParser.T_NULL:
            case HiveSqlParser.T_SET:
            case HiveSqlParser.T_OPEN_P:
            case HiveSqlParser.T_ALLOCATE:
            case HiveSqlParser.T_CURSOR:
            case HiveSqlParser.T_FOR:
            case HiveSqlParser.T_RESULT:
            case HiveSqlParser.T_PROCEDURE:
            case HiveSqlParser.T_ASSOCIATE:
            case HiveSqlParser.T_LOCATOR:
            case HiveSqlParser.T_LOCATORS:
            case HiveSqlParser.T_WITH:
            case HiveSqlParser.T_TRANSACTION:
            case HiveSqlParser.T_BREAK:
            case HiveSqlParser.T_CALL:
            case HiveSqlParser.T_DECLARE:
            case HiveSqlParser.T_AS:
            case HiveSqlParser.T_CONSTANT:
            case HiveSqlParser.T_CONDITION:
            case HiveSqlParser.T_IS:
            case HiveSqlParser.T_RETURN:
            case HiveSqlParser.T_ONLY:
            case HiveSqlParser.T_TO:
            case HiveSqlParser.T_CALLER:
            case HiveSqlParser.T_CLIENT:
            case HiveSqlParser.T_WITHOUT:
            case HiveSqlParser.T_CONTINUE:
            case HiveSqlParser.T_EXIT:
            case HiveSqlParser.T_HANDLER:
            case HiveSqlParser.T_SQLEXCEPTION:
            case HiveSqlParser.T_SQLWARNING:
            case HiveSqlParser.T_NOT:
            case HiveSqlParser.T_FOUND:
            case HiveSqlParser.T_GLOBAL:
            case HiveSqlParser.T_TEMPORARY:
            case HiveSqlParser.T_TABLE:
            case HiveSqlParser.T_CREATE:
            case HiveSqlParser.T_IF:
            case HiveSqlParser.T_EXISTS:
            case HiveSqlParser.T_LOCAL:
            case HiveSqlParser.T_MULTISET:
            case HiveSqlParser.T_VOLATILE:
            case HiveSqlParser.T_LIKE:
            case HiveSqlParser.T_CONSTRAINT:
            case HiveSqlParser.T_PRIMARY:
            case HiveSqlParser.T_KEY:
            case HiveSqlParser.T_UNIQUE:
            case HiveSqlParser.T_REFERENCES:
            case HiveSqlParser.T_IDENTITY:
            case HiveSqlParser.L_INT:
            case HiveSqlParser.T_AUTO_INCREMENT:
            case HiveSqlParser.T_ENABLE:
            case HiveSqlParser.T_CLUSTERED:
            case HiveSqlParser.T_ASC:
            case HiveSqlParser.T_DESC:
            case HiveSqlParser.T_FOREIGN:
            case HiveSqlParser.T_ON:
            case HiveSqlParser.T_UPDATE:
            case HiveSqlParser.T_DELETE:
            case HiveSqlParser.T_NO:
            case HiveSqlParser.T_ACTION:
            case HiveSqlParser.T_RESTRICT:
            case HiveSqlParser.T_DEFAULT:
            case HiveSqlParser.T_CASCADE:
            case HiveSqlParser.T_LOG:
            case HiveSqlParser.T_FALLBACK:
            case HiveSqlParser.T_COMMIT:
            case HiveSqlParser.T_PRESERVE:
            case HiveSqlParser.T_ROWS:
            case HiveSqlParser.T_SEGMENT:
            case HiveSqlParser.T_CREATION:
            case HiveSqlParser.T_IMMEDIATE:
            case HiveSqlParser.T_DEFERRED:
            case HiveSqlParser.T_PCTFREE:
            case HiveSqlParser.T_PCTUSED:
            case HiveSqlParser.T_INITRANS:
            case HiveSqlParser.T_MAXTRANS:
            case HiveSqlParser.T_NOCOMPRESS:
            case HiveSqlParser.T_LOGGING:
            case HiveSqlParser.T_NOLOGGING:
            case HiveSqlParser.T_STORAGE:
            case HiveSqlParser.T_TABLESPACE:
            case HiveSqlParser.T_INDEX:
            case HiveSqlParser.T_IN:
            case HiveSqlParser.T_REPLACE:
            case HiveSqlParser.T_DISTRIBUTE:
            case HiveSqlParser.T_BY:
            case HiveSqlParser.T_HASH:
            case HiveSqlParser.T_LOGGED:
            case HiveSqlParser.T_COMPRESS:
            case HiveSqlParser.T_YES:
            case HiveSqlParser.T_DEFINITION:
            case HiveSqlParser.T_DROP:
            case HiveSqlParser.T_DATA:
            case HiveSqlParser.T_STORED:
            case HiveSqlParser.T_ROW:
            case HiveSqlParser.T_FORMAT:
            case HiveSqlParser.T_DELIMITED:
            case HiveSqlParser.T_FIELDS:
            case HiveSqlParser.T_TERMINATED:
            case HiveSqlParser.T_ESCAPED:
            case HiveSqlParser.T_COLLECTION:
            case HiveSqlParser.T_ITEMS:
            case HiveSqlParser.T_MAP:
            case HiveSqlParser.T_KEYS:
            case HiveSqlParser.T_LINES:
            case HiveSqlParser.T_DEFINED:
            case HiveSqlParser.T_TEXTIMAGE_ON:
            case HiveSqlParser.T_COMMENT:
            case HiveSqlParser.T_CHARACTER:
            case HiveSqlParser.T_CHARSET:
            case HiveSqlParser.T_ENGINE:
            case HiveSqlParser.T_ALTER:
            case HiveSqlParser.T_ADD2:
            case HiveSqlParser.T_CHAR:
            case HiveSqlParser.T_BIGINT:
            case HiveSqlParser.T_BINARY_DOUBLE:
            case HiveSqlParser.T_BINARY_FLOAT:
            case HiveSqlParser.T_BIT:
            case HiveSqlParser.T_DATE:
            case HiveSqlParser.T_DATETIME:
            case HiveSqlParser.T_DEC:
            case HiveSqlParser.T_DECIMAL:
            case HiveSqlParser.T_DOUBLE:
            case HiveSqlParser.T_PRECISION:
            case HiveSqlParser.T_FLOAT:
            case HiveSqlParser.T_INT:
            case HiveSqlParser.T_INT2:
            case HiveSqlParser.T_INT4:
            case HiveSqlParser.T_INT8:
            case HiveSqlParser.T_INTEGER:
            case HiveSqlParser.T_NCHAR:
            case HiveSqlParser.T_NVARCHAR:
            case HiveSqlParser.T_NUMBER:
            case HiveSqlParser.T_NUMERIC:
            case HiveSqlParser.T_REAL:
            case HiveSqlParser.T_RESULT_SET_LOCATOR:
            case HiveSqlParser.T_VARYING:
            case HiveSqlParser.T_SIMPLE_FLOAT:
            case HiveSqlParser.T_SIMPLE_DOUBLE:
            case HiveSqlParser.T_SMALLINT:
            case HiveSqlParser.T_SMALLDATETIME:
            case HiveSqlParser.T_STRING:
            case HiveSqlParser.T_SYS_REFCURSOR:
            case HiveSqlParser.T_TIMESTAMP:
            case HiveSqlParser.T_VARCHAR:
            case HiveSqlParser.T_VARCHAR2:
            case HiveSqlParser.T_XML:
            case HiveSqlParser.T_MAX:
            case HiveSqlParser.T_BYTE:
            case HiveSqlParser.T_CASESPECIFIC:
            case HiveSqlParser.T_CS:
            case HiveSqlParser.T_DATABASE:
            case HiveSqlParser.T_SCHEMA:
            case HiveSqlParser.T_LOCATION:
            case HiveSqlParser.T_OR:
            case HiveSqlParser.T_FUNCTION:
            case HiveSqlParser.T_RETURNS:
            case HiveSqlParser.T_PACKAGE:
            case HiveSqlParser.T_PROC:
            case HiveSqlParser.T_BODY:
            case HiveSqlParser.T_OUT:
            case HiveSqlParser.T_INOUT:
            case HiveSqlParser.T_LANGUAGE:
            case HiveSqlParser.T_SQL:
            case HiveSqlParser.T_SECURITY:
            case HiveSqlParser.T_CREATOR:
            case HiveSqlParser.T_DEFINER:
            case HiveSqlParser.T_INVOKER:
            case HiveSqlParser.T_OWNER:
            case HiveSqlParser.T_DYNAMIC:
            case HiveSqlParser.T_SETS:
            case HiveSqlParser.T_EXEC:
            case HiveSqlParser.T_EXECUTE:
            case HiveSqlParser.T_INTO:
            case HiveSqlParser.T_INCLUDE:
            case HiveSqlParser.T_INSERT:
            case HiveSqlParser.T_OVERWRITE:
            case HiveSqlParser.T_VALUES:
            case HiveSqlParser.T_DIRECTORY:
            case HiveSqlParser.T_GET:
            case HiveSqlParser.T_DIAGNOSTICS:
            case HiveSqlParser.T_MESSAGE_TEXT:
            case HiveSqlParser.T_ROW_COUNT:
            case HiveSqlParser.T_GRANT:
            case HiveSqlParser.T_ROLE:
            case HiveSqlParser.T_LEAVE:
            case HiveSqlParser.T_OBJECT:
            case HiveSqlParser.T_AT:
            case HiveSqlParser.T_OPEN:
            case HiveSqlParser.T_FETCH:
            case HiveSqlParser.T_FROM:
            case HiveSqlParser.T_COLLECT:
            case HiveSqlParser.T_STATISTICS:
            case HiveSqlParser.T_STATS:
            case HiveSqlParser.T_COLUMN:
            case HiveSqlParser.T_CLOSE:
            case HiveSqlParser.T_CMP:
            case HiveSqlParser.T_SUM:
            case HiveSqlParser.T_COPY:
            case HiveSqlParser.T_HDFS:
            case HiveSqlParser.T_BATCHSIZE:
            case HiveSqlParser.T_DELIMITER:
            case HiveSqlParser.T_SQLINSERT:
            case HiveSqlParser.T_IGNORE:
            case HiveSqlParser.T_WORK:
            case HiveSqlParser.T_PRINT:
            case HiveSqlParser.T_QUIT:
            case HiveSqlParser.T_RAISE:
            case HiveSqlParser.T_RESIGNAL:
            case HiveSqlParser.T_SQLSTATE:
            case HiveSqlParser.T_VALUE:
            case HiveSqlParser.T_ROLLBACK:
            case HiveSqlParser.T_CURRENT:
            case HiveSqlParser.T_CURRENT_SCHEMA:
            case HiveSqlParser.T_ANSI_NULLS:
            case HiveSqlParser.T_ANSI_PADDING:
            case HiveSqlParser.T_NOCOUNT:
            case HiveSqlParser.T_QUOTED_IDENTIFIER:
            case HiveSqlParser.T_XACT_ABORT:
            case HiveSqlParser.T_OFF:
            case HiveSqlParser.T_QUERY_BAND:
            case HiveSqlParser.T_NONE:
            case HiveSqlParser.T_SESSION:
            case HiveSqlParser.T_SIGNAL:
            case HiveSqlParser.T_SUMMARY:
            case HiveSqlParser.T_TOP:
            case HiveSqlParser.T_LIMIT:
            case HiveSqlParser.T_TRUNCATE:
            case HiveSqlParser.T_USE:
            case HiveSqlParser.T_WHILE:
            case HiveSqlParser.T_DO:
            case HiveSqlParser.T_LOOP:
            case HiveSqlParser.T_REVERSE:
            case HiveSqlParser.T_STEP:
            case HiveSqlParser.T_USING:
            case HiveSqlParser.T_ALL:
            case HiveSqlParser.T_EXCEPT:
            case HiveSqlParser.T_INTERSECT:
            case HiveSqlParser.T_SELECT:
            case HiveSqlParser.T_SEL:
            case HiveSqlParser.T_DISTINCT:
            case HiveSqlParser.T_TITLE:
            case HiveSqlParser.L_S_STRING:
            case HiveSqlParser.T_INNER:
            case HiveSqlParser.T_JOIN:
            case HiveSqlParser.T_LEFT:
            case HiveSqlParser.T_RIGHT:
            case HiveSqlParser.T_FULL:
            case HiveSqlParser.T_OUTER:
            case HiveSqlParser.T_GROUP:
            case HiveSqlParser.T_HAVING:
            case HiveSqlParser.T_QUALIFY:
            case HiveSqlParser.T_ORDER:
            case HiveSqlParser.T_RR:
            case HiveSqlParser.T_RS:
            case HiveSqlParser.T_UR:
            case HiveSqlParser.T_AND:
            case HiveSqlParser.T_KEEP:
            case HiveSqlParser.T_EXCLUSIVE:
            case HiveSqlParser.T_SHARE:
            case HiveSqlParser.T_LOCKS:
            case HiveSqlParser.T_MERGE:
            case HiveSqlParser.T_MATCHED:
            case HiveSqlParser.T_DESCRIBE:
            case HiveSqlParser.T_BETWEEN:
            case HiveSqlParser.T_RLIKE:
            case HiveSqlParser.T_REGEXP:
            case HiveSqlParser.T_INTERVAL:
            case HiveSqlParser.T_DAY:
            case HiveSqlParser.T_DAYS:
            case HiveSqlParser.T_MICROSECOND:
            case HiveSqlParser.T_MICROSECONDS:
            case HiveSqlParser.T_SECOND:
            case HiveSqlParser.T_SECONDS:
            case HiveSqlParser.T_CONCAT:
            case HiveSqlParser.T_CASE:
            case HiveSqlParser.T_ISOPEN:
            case HiveSqlParser.T_NOTFOUND:
            case HiveSqlParser.T_AVG:
            case HiveSqlParser.T_COUNT:
            case HiveSqlParser.T_COUNT_BIG:
            case HiveSqlParser.T_CUME_DIST:
            case HiveSqlParser.T_DENSE_RANK:
            case HiveSqlParser.T_FIRST_VALUE:
            case HiveSqlParser.T_LAG:
            case HiveSqlParser.T_LAST_VALUE:
            case HiveSqlParser.T_LEAD:
            case HiveSqlParser.T_MIN:
            case HiveSqlParser.T_RANK:
            case HiveSqlParser.T_ROW_NUMBER:
            case HiveSqlParser.T_STDEV:
            case HiveSqlParser.T_VAR:
            case HiveSqlParser.T_VARIANCE:
            case HiveSqlParser.T_OVER:
            case HiveSqlParser.T_PARTITION:
            case HiveSqlParser.T_ACTIVITY_COUNT:
            case HiveSqlParser.T_CAST:
            case HiveSqlParser.T_CURRENT_DATE:
            case HiveSqlParser.T_CURRENT_TIMESTAMP:
            case HiveSqlParser.T_CURRENT_USER:
            case HiveSqlParser.T_USER:
            case HiveSqlParser.T_MAX_PART_STRING:
            case HiveSqlParser.T_MIN_PART_STRING:
            case HiveSqlParser.T_MAX_PART_INT:
            case HiveSqlParser.T_MIN_PART_INT:
            case HiveSqlParser.T_MAX_PART_DATE:
            case HiveSqlParser.T_MIN_PART_DATE:
            case HiveSqlParser.T_PART_COUNT:
            case HiveSqlParser.T_PART_LOC:
            case HiveSqlParser.T_TRIM:
            case HiveSqlParser.T_SUBSTRING:
            case HiveSqlParser.T_SYSDATE:
            case HiveSqlParser.T_HIVE:
            case HiveSqlParser.T_HOST:
            case HiveSqlParser.L_D_STRING:
            case HiveSqlParser.L_DEC:
            case HiveSqlParser.T_TRUE:
            case HiveSqlParser.T_FALSE:
            case HiveSqlParser.T_DIR:
            case HiveSqlParser.T_FILE:
            case HiveSqlParser.T_FILES:
            case HiveSqlParser.T_NEW:
            case HiveSqlParser.T_PWD:
            case HiveSqlParser.T_SESSIONS:
            case HiveSqlParser.T_SUBDIR:
                this.state = 2861;
                this._errHandler.sync(this);
                var la_ = this._interp.adaptivePredict(this._input,360,this._ctx);
                if(la_===1) {
                    this.state = 2860;
                    this.expr_func_all_distinct();

                }
                this.state = 2863;
                this.expr(0);
                break;
            case HiveSqlParser.T__5:
                this.state = 2864;
                this.match(HiveSqlParser.T__5);
                break;
            default:
                throw new antlr4.error.NoViableAltException(this);
            }
            this.state = 2867;
            this.match(HiveSqlParser.T_CLOSE_P);
            this.state = 2869;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,362,this._ctx);
            if(la_===1) {
                this.state = 2868;
                this.expr_func_over_clause();

            }
            break;
        case HiveSqlParser.T_CUME_DIST:
            this.enterOuterAlt(localctx, 4);
            this.state = 2871;
            this.match(HiveSqlParser.T_CUME_DIST);
            this.state = 2872;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 2873;
            this.match(HiveSqlParser.T_CLOSE_P);
            this.state = 2874;
            this.expr_func_over_clause();
            break;
        case HiveSqlParser.T_DENSE_RANK:
            this.enterOuterAlt(localctx, 5);
            this.state = 2875;
            this.match(HiveSqlParser.T_DENSE_RANK);
            this.state = 2876;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 2877;
            this.match(HiveSqlParser.T_CLOSE_P);
            this.state = 2878;
            this.expr_func_over_clause();
            break;
        case HiveSqlParser.T_FIRST_VALUE:
            this.enterOuterAlt(localctx, 6);
            this.state = 2879;
            this.match(HiveSqlParser.T_FIRST_VALUE);
            this.state = 2880;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 2881;
            this.expr(0);
            this.state = 2882;
            this.match(HiveSqlParser.T_CLOSE_P);
            this.state = 2883;
            this.expr_func_over_clause();
            break;
        case HiveSqlParser.T_LAG:
            this.enterOuterAlt(localctx, 7);
            this.state = 2885;
            this.match(HiveSqlParser.T_LAG);
            this.state = 2886;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 2887;
            this.expr(0);
            this.state = 2894;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===HiveSqlParser.T_COMMA) {
                this.state = 2888;
                this.match(HiveSqlParser.T_COMMA);
                this.state = 2889;
                this.expr(0);
                this.state = 2892;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
                if(_la===HiveSqlParser.T_COMMA) {
                    this.state = 2890;
                    this.match(HiveSqlParser.T_COMMA);
                    this.state = 2891;
                    this.expr(0);
                }

            }

            this.state = 2896;
            this.match(HiveSqlParser.T_CLOSE_P);
            this.state = 2897;
            this.expr_func_over_clause();
            break;
        case HiveSqlParser.T_LAST_VALUE:
            this.enterOuterAlt(localctx, 8);
            this.state = 2899;
            this.match(HiveSqlParser.T_LAST_VALUE);
            this.state = 2900;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 2901;
            this.expr(0);
            this.state = 2902;
            this.match(HiveSqlParser.T_CLOSE_P);
            this.state = 2903;
            this.expr_func_over_clause();
            break;
        case HiveSqlParser.T_LEAD:
            this.enterOuterAlt(localctx, 9);
            this.state = 2905;
            this.match(HiveSqlParser.T_LEAD);
            this.state = 2906;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 2907;
            this.expr(0);
            this.state = 2914;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===HiveSqlParser.T_COMMA) {
                this.state = 2908;
                this.match(HiveSqlParser.T_COMMA);
                this.state = 2909;
                this.expr(0);
                this.state = 2912;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
                if(_la===HiveSqlParser.T_COMMA) {
                    this.state = 2910;
                    this.match(HiveSqlParser.T_COMMA);
                    this.state = 2911;
                    this.expr(0);
                }

            }

            this.state = 2916;
            this.match(HiveSqlParser.T_CLOSE_P);
            this.state = 2917;
            this.expr_func_over_clause();
            break;
        case HiveSqlParser.T_MAX:
            this.enterOuterAlt(localctx, 10);
            this.state = 2919;
            this.match(HiveSqlParser.T_MAX);
            this.state = 2920;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 2922;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,367,this._ctx);
            if(la_===1) {
                this.state = 2921;
                this.expr_func_all_distinct();

            }
            this.state = 2924;
            this.expr(0);
            this.state = 2925;
            this.match(HiveSqlParser.T_CLOSE_P);
            this.state = 2927;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,368,this._ctx);
            if(la_===1) {
                this.state = 2926;
                this.expr_func_over_clause();

            }
            break;
        case HiveSqlParser.T_MIN:
            this.enterOuterAlt(localctx, 11);
            this.state = 2929;
            this.match(HiveSqlParser.T_MIN);
            this.state = 2930;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 2932;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,369,this._ctx);
            if(la_===1) {
                this.state = 2931;
                this.expr_func_all_distinct();

            }
            this.state = 2934;
            this.expr(0);
            this.state = 2935;
            this.match(HiveSqlParser.T_CLOSE_P);
            this.state = 2937;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,370,this._ctx);
            if(la_===1) {
                this.state = 2936;
                this.expr_func_over_clause();

            }
            break;
        case HiveSqlParser.T_RANK:
            this.enterOuterAlt(localctx, 12);
            this.state = 2939;
            this.match(HiveSqlParser.T_RANK);
            this.state = 2940;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 2941;
            this.match(HiveSqlParser.T_CLOSE_P);
            this.state = 2942;
            this.expr_func_over_clause();
            break;
        case HiveSqlParser.T_ROW_NUMBER:
            this.enterOuterAlt(localctx, 13);
            this.state = 2943;
            this.match(HiveSqlParser.T_ROW_NUMBER);
            this.state = 2944;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 2945;
            this.match(HiveSqlParser.T_CLOSE_P);
            this.state = 2946;
            this.expr_func_over_clause();
            break;
        case HiveSqlParser.T_STDEV:
            this.enterOuterAlt(localctx, 14);
            this.state = 2947;
            this.match(HiveSqlParser.T_STDEV);
            this.state = 2948;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 2950;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,371,this._ctx);
            if(la_===1) {
                this.state = 2949;
                this.expr_func_all_distinct();

            }
            this.state = 2952;
            this.expr(0);
            this.state = 2953;
            this.match(HiveSqlParser.T_CLOSE_P);
            this.state = 2955;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,372,this._ctx);
            if(la_===1) {
                this.state = 2954;
                this.expr_func_over_clause();

            }
            break;
        case HiveSqlParser.T_SUM:
            this.enterOuterAlt(localctx, 15);
            this.state = 2957;
            this.match(HiveSqlParser.T_SUM);
            this.state = 2958;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 2960;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,373,this._ctx);
            if(la_===1) {
                this.state = 2959;
                this.expr_func_all_distinct();

            }
            this.state = 2962;
            this.expr(0);
            this.state = 2963;
            this.match(HiveSqlParser.T_CLOSE_P);
            this.state = 2965;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,374,this._ctx);
            if(la_===1) {
                this.state = 2964;
                this.expr_func_over_clause();

            }
            break;
        case HiveSqlParser.T_VAR:
            this.enterOuterAlt(localctx, 16);
            this.state = 2967;
            this.match(HiveSqlParser.T_VAR);
            this.state = 2968;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 2970;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,375,this._ctx);
            if(la_===1) {
                this.state = 2969;
                this.expr_func_all_distinct();

            }
            this.state = 2972;
            this.expr(0);
            this.state = 2973;
            this.match(HiveSqlParser.T_CLOSE_P);
            this.state = 2975;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,376,this._ctx);
            if(la_===1) {
                this.state = 2974;
                this.expr_func_over_clause();

            }
            break;
        case HiveSqlParser.T_VARIANCE:
            this.enterOuterAlt(localctx, 17);
            this.state = 2977;
            this.match(HiveSqlParser.T_VARIANCE);
            this.state = 2978;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 2980;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,377,this._ctx);
            if(la_===1) {
                this.state = 2979;
                this.expr_func_all_distinct();

            }
            this.state = 2982;
            this.expr(0);
            this.state = 2983;
            this.match(HiveSqlParser.T_CLOSE_P);
            this.state = 2985;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,378,this._ctx);
            if(la_===1) {
                this.state = 2984;
                this.expr_func_over_clause();

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


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

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

Expr_func_all_distinctContext.prototype.T_ALL = function() {
    return this.getToken(HiveSqlParser.T_ALL, 0);
};

Expr_func_all_distinctContext.prototype.T_DISTINCT = function() {
    return this.getToken(HiveSqlParser.T_DISTINCT, 0);
};

Expr_func_all_distinctContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterExpr_func_all_distinct(this);
	}
};

Expr_func_all_distinctContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitExpr_func_all_distinct(this);
	}
};

Expr_func_all_distinctContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitExpr_func_all_distinct(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Expr_func_all_distinctContext = Expr_func_all_distinctContext;

HiveSqlParser.prototype.expr_func_all_distinct = function() {

    var localctx = new Expr_func_all_distinctContext(this, this._ctx, this.state);
    this.enterRule(localctx, 404, HiveSqlParser.RULE_expr_func_all_distinct);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2989;
        _la = this._input.LA(1);
        if(!(_la===HiveSqlParser.T_ALL || _la===HiveSqlParser.T_DISTINCT)) {
        this._errHandler.recoverInline(this);
        }
        else {
        	this._errHandler.reportMatch(this);
            this.consume();
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


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

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

Expr_func_over_clauseContext.prototype.T_OVER = function() {
    return this.getToken(HiveSqlParser.T_OVER, 0);
};

Expr_func_over_clauseContext.prototype.T_OPEN_P = function() {
    return this.getToken(HiveSqlParser.T_OPEN_P, 0);
};

Expr_func_over_clauseContext.prototype.T_CLOSE_P = function() {
    return this.getToken(HiveSqlParser.T_CLOSE_P, 0);
};

Expr_func_over_clauseContext.prototype.expr_func_partition_by_clause = function() {
    return this.getTypedRuleContext(Expr_func_partition_by_clauseContext,0);
};

Expr_func_over_clauseContext.prototype.order_by_clause = function() {
    return this.getTypedRuleContext(Order_by_clauseContext,0);
};

Expr_func_over_clauseContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterExpr_func_over_clause(this);
	}
};

Expr_func_over_clauseContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitExpr_func_over_clause(this);
	}
};

Expr_func_over_clauseContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitExpr_func_over_clause(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Expr_func_over_clauseContext = Expr_func_over_clauseContext;

HiveSqlParser.prototype.expr_func_over_clause = function() {

    var localctx = new Expr_func_over_clauseContext(this, this._ctx, this.state);
    this.enterRule(localctx, 406, HiveSqlParser.RULE_expr_func_over_clause);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2991;
        this.match(HiveSqlParser.T_OVER);
        this.state = 2992;
        this.match(HiveSqlParser.T_OPEN_P);
        this.state = 2994;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===HiveSqlParser.T_PARTITION) {
            this.state = 2993;
            this.expr_func_partition_by_clause();
        }

        this.state = 2997;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===HiveSqlParser.T_ORDER) {
            this.state = 2996;
            this.order_by_clause();
        }

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


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

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

Expr_func_partition_by_clauseContext.prototype.T_PARTITION = function() {
    return this.getToken(HiveSqlParser.T_PARTITION, 0);
};

Expr_func_partition_by_clauseContext.prototype.T_BY = function() {
    return this.getToken(HiveSqlParser.T_BY, 0);
};

Expr_func_partition_by_clauseContext.prototype.expr = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(ExprContext);
    } else {
        return this.getTypedRuleContext(ExprContext,i);
    }
};

Expr_func_partition_by_clauseContext.prototype.T_COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_COMMA);
    } else {
        return this.getToken(HiveSqlParser.T_COMMA, i);
    }
};


Expr_func_partition_by_clauseContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterExpr_func_partition_by_clause(this);
	}
};

Expr_func_partition_by_clauseContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitExpr_func_partition_by_clause(this);
	}
};

Expr_func_partition_by_clauseContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitExpr_func_partition_by_clause(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Expr_func_partition_by_clauseContext = Expr_func_partition_by_clauseContext;

HiveSqlParser.prototype.expr_func_partition_by_clause = function() {

    var localctx = new Expr_func_partition_by_clauseContext(this, this._ctx, this.state);
    this.enterRule(localctx, 408, HiveSqlParser.RULE_expr_func_partition_by_clause);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 3001;
        this.match(HiveSqlParser.T_PARTITION);
        this.state = 3002;
        this.match(HiveSqlParser.T_BY);
        this.state = 3003;
        this.expr(0);
        this.state = 3008;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===HiveSqlParser.T_COMMA) {
            this.state = 3004;
            this.match(HiveSqlParser.T_COMMA);
            this.state = 3005;
            this.expr(0);
            this.state = 3010;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


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

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

Expr_spec_funcContext.prototype.T_ACTIVITY_COUNT = function() {
    return this.getToken(HiveSqlParser.T_ACTIVITY_COUNT, 0);
};

Expr_spec_funcContext.prototype.T_CAST = function() {
    return this.getToken(HiveSqlParser.T_CAST, 0);
};

Expr_spec_funcContext.prototype.T_OPEN_P = function() {
    return this.getToken(HiveSqlParser.T_OPEN_P, 0);
};

Expr_spec_funcContext.prototype.expr = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(ExprContext);
    } else {
        return this.getTypedRuleContext(ExprContext,i);
    }
};

Expr_spec_funcContext.prototype.T_AS = function() {
    return this.getToken(HiveSqlParser.T_AS, 0);
};

Expr_spec_funcContext.prototype.dtype = function() {
    return this.getTypedRuleContext(DtypeContext,0);
};

Expr_spec_funcContext.prototype.T_CLOSE_P = function() {
    return this.getToken(HiveSqlParser.T_CLOSE_P, 0);
};

Expr_spec_funcContext.prototype.dtype_len = function() {
    return this.getTypedRuleContext(Dtype_lenContext,0);
};

Expr_spec_funcContext.prototype.T_COUNT = function() {
    return this.getToken(HiveSqlParser.T_COUNT, 0);
};

Expr_spec_funcContext.prototype.T_CURRENT_DATE = function() {
    return this.getToken(HiveSqlParser.T_CURRENT_DATE, 0);
};

Expr_spec_funcContext.prototype.T_CURRENT = function() {
    return this.getToken(HiveSqlParser.T_CURRENT, 0);
};

Expr_spec_funcContext.prototype.T_DATE = function() {
    return this.getToken(HiveSqlParser.T_DATE, 0);
};

Expr_spec_funcContext.prototype.T_CURRENT_TIMESTAMP = function() {
    return this.getToken(HiveSqlParser.T_CURRENT_TIMESTAMP, 0);
};

Expr_spec_funcContext.prototype.T_TIMESTAMP = function() {
    return this.getToken(HiveSqlParser.T_TIMESTAMP, 0);
};

Expr_spec_funcContext.prototype.T_CURRENT_USER = function() {
    return this.getToken(HiveSqlParser.T_CURRENT_USER, 0);
};

Expr_spec_funcContext.prototype.T_USER = function() {
    return this.getToken(HiveSqlParser.T_USER, 0);
};

Expr_spec_funcContext.prototype.T_MAX_PART_STRING = function() {
    return this.getToken(HiveSqlParser.T_MAX_PART_STRING, 0);
};

Expr_spec_funcContext.prototype.T_COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_COMMA);
    } else {
        return this.getToken(HiveSqlParser.T_COMMA, i);
    }
};


Expr_spec_funcContext.prototype.T_EQUAL = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_EQUAL);
    } else {
        return this.getToken(HiveSqlParser.T_EQUAL, i);
    }
};


Expr_spec_funcContext.prototype.T_MIN_PART_STRING = function() {
    return this.getToken(HiveSqlParser.T_MIN_PART_STRING, 0);
};

Expr_spec_funcContext.prototype.T_MAX_PART_INT = function() {
    return this.getToken(HiveSqlParser.T_MAX_PART_INT, 0);
};

Expr_spec_funcContext.prototype.T_MIN_PART_INT = function() {
    return this.getToken(HiveSqlParser.T_MIN_PART_INT, 0);
};

Expr_spec_funcContext.prototype.T_MAX_PART_DATE = function() {
    return this.getToken(HiveSqlParser.T_MAX_PART_DATE, 0);
};

Expr_spec_funcContext.prototype.T_MIN_PART_DATE = function() {
    return this.getToken(HiveSqlParser.T_MIN_PART_DATE, 0);
};

Expr_spec_funcContext.prototype.T_PART_COUNT = function() {
    return this.getToken(HiveSqlParser.T_PART_COUNT, 0);
};

Expr_spec_funcContext.prototype.T_PART_LOC = function() {
    return this.getToken(HiveSqlParser.T_PART_LOC, 0);
};

Expr_spec_funcContext.prototype.T_TRIM = function() {
    return this.getToken(HiveSqlParser.T_TRIM, 0);
};

Expr_spec_funcContext.prototype.T_SUBSTRING = function() {
    return this.getToken(HiveSqlParser.T_SUBSTRING, 0);
};

Expr_spec_funcContext.prototype.T_FROM = function() {
    return this.getToken(HiveSqlParser.T_FROM, 0);
};

Expr_spec_funcContext.prototype.T_FOR = function() {
    return this.getToken(HiveSqlParser.T_FOR, 0);
};

Expr_spec_funcContext.prototype.T_SYSDATE = function() {
    return this.getToken(HiveSqlParser.T_SYSDATE, 0);
};

Expr_spec_funcContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterExpr_spec_func(this);
	}
};

Expr_spec_funcContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitExpr_spec_func(this);
	}
};

Expr_spec_funcContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitExpr_spec_func(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Expr_spec_funcContext = Expr_spec_funcContext;

HiveSqlParser.prototype.expr_spec_func = function() {

    var localctx = new Expr_spec_funcContext(this, this._ctx, this.state);
    this.enterRule(localctx, 410, HiveSqlParser.RULE_expr_spec_func);
    var _la = 0; // Token type
    try {
        this.state = 3211;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,403,this._ctx);
        switch(la_) {
        case 1:
            this.enterOuterAlt(localctx, 1);
            this.state = 3011;
            this.match(HiveSqlParser.T_ACTIVITY_COUNT);
            break;

        case 2:
            this.enterOuterAlt(localctx, 2);
            this.state = 3012;
            this.match(HiveSqlParser.T_CAST);
            this.state = 3013;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 3014;
            this.expr(0);
            this.state = 3015;
            this.match(HiveSqlParser.T_AS);
            this.state = 3016;
            this.dtype();
            this.state = 3018;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===HiveSqlParser.T_OPEN_P) {
                this.state = 3017;
                this.dtype_len();
            }

            this.state = 3020;
            this.match(HiveSqlParser.T_CLOSE_P);
            break;

        case 3:
            this.enterOuterAlt(localctx, 3);
            this.state = 3022;
            this.match(HiveSqlParser.T_COUNT);
            this.state = 3023;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 3026;
            this._errHandler.sync(this);
            switch(this._input.LA(1)) {
            case HiveSqlParser.T__8:
            case HiveSqlParser.T__9:
            case HiveSqlParser.T_GO:
            case HiveSqlParser.T_BEGIN:
            case HiveSqlParser.T_EXCEPTION:
            case HiveSqlParser.L_ID:
            case HiveSqlParser.T_THEN:
            case HiveSqlParser.T_NULL:
            case HiveSqlParser.T_SET:
            case HiveSqlParser.T_OPEN_P:
            case HiveSqlParser.T_ALLOCATE:
            case HiveSqlParser.T_CURSOR:
            case HiveSqlParser.T_FOR:
            case HiveSqlParser.T_RESULT:
            case HiveSqlParser.T_PROCEDURE:
            case HiveSqlParser.T_ASSOCIATE:
            case HiveSqlParser.T_LOCATOR:
            case HiveSqlParser.T_LOCATORS:
            case HiveSqlParser.T_WITH:
            case HiveSqlParser.T_TRANSACTION:
            case HiveSqlParser.T_BREAK:
            case HiveSqlParser.T_CALL:
            case HiveSqlParser.T_DECLARE:
            case HiveSqlParser.T_AS:
            case HiveSqlParser.T_CONSTANT:
            case HiveSqlParser.T_CONDITION:
            case HiveSqlParser.T_IS:
            case HiveSqlParser.T_RETURN:
            case HiveSqlParser.T_ONLY:
            case HiveSqlParser.T_TO:
            case HiveSqlParser.T_CALLER:
            case HiveSqlParser.T_CLIENT:
            case HiveSqlParser.T_WITHOUT:
            case HiveSqlParser.T_CONTINUE:
            case HiveSqlParser.T_EXIT:
            case HiveSqlParser.T_HANDLER:
            case HiveSqlParser.T_SQLEXCEPTION:
            case HiveSqlParser.T_SQLWARNING:
            case HiveSqlParser.T_NOT:
            case HiveSqlParser.T_FOUND:
            case HiveSqlParser.T_GLOBAL:
            case HiveSqlParser.T_TEMPORARY:
            case HiveSqlParser.T_TABLE:
            case HiveSqlParser.T_CREATE:
            case HiveSqlParser.T_IF:
            case HiveSqlParser.T_EXISTS:
            case HiveSqlParser.T_LOCAL:
            case HiveSqlParser.T_MULTISET:
            case HiveSqlParser.T_VOLATILE:
            case HiveSqlParser.T_LIKE:
            case HiveSqlParser.T_CONSTRAINT:
            case HiveSqlParser.T_PRIMARY:
            case HiveSqlParser.T_KEY:
            case HiveSqlParser.T_UNIQUE:
            case HiveSqlParser.T_REFERENCES:
            case HiveSqlParser.T_IDENTITY:
            case HiveSqlParser.L_INT:
            case HiveSqlParser.T_AUTO_INCREMENT:
            case HiveSqlParser.T_ENABLE:
            case HiveSqlParser.T_CLUSTERED:
            case HiveSqlParser.T_ASC:
            case HiveSqlParser.T_DESC:
            case HiveSqlParser.T_FOREIGN:
            case HiveSqlParser.T_ON:
            case HiveSqlParser.T_UPDATE:
            case HiveSqlParser.T_DELETE:
            case HiveSqlParser.T_NO:
            case HiveSqlParser.T_ACTION:
            case HiveSqlParser.T_RESTRICT:
            case HiveSqlParser.T_DEFAULT:
            case HiveSqlParser.T_CASCADE:
            case HiveSqlParser.T_LOG:
            case HiveSqlParser.T_FALLBACK:
            case HiveSqlParser.T_COMMIT:
            case HiveSqlParser.T_PRESERVE:
            case HiveSqlParser.T_ROWS:
            case HiveSqlParser.T_SEGMENT:
            case HiveSqlParser.T_CREATION:
            case HiveSqlParser.T_IMMEDIATE:
            case HiveSqlParser.T_DEFERRED:
            case HiveSqlParser.T_PCTFREE:
            case HiveSqlParser.T_PCTUSED:
            case HiveSqlParser.T_INITRANS:
            case HiveSqlParser.T_MAXTRANS:
            case HiveSqlParser.T_NOCOMPRESS:
            case HiveSqlParser.T_LOGGING:
            case HiveSqlParser.T_NOLOGGING:
            case HiveSqlParser.T_STORAGE:
            case HiveSqlParser.T_TABLESPACE:
            case HiveSqlParser.T_INDEX:
            case HiveSqlParser.T_IN:
            case HiveSqlParser.T_REPLACE:
            case HiveSqlParser.T_DISTRIBUTE:
            case HiveSqlParser.T_BY:
            case HiveSqlParser.T_HASH:
            case HiveSqlParser.T_LOGGED:
            case HiveSqlParser.T_COMPRESS:
            case HiveSqlParser.T_YES:
            case HiveSqlParser.T_DEFINITION:
            case HiveSqlParser.T_DROP:
            case HiveSqlParser.T_DATA:
            case HiveSqlParser.T_STORED:
            case HiveSqlParser.T_ROW:
            case HiveSqlParser.T_FORMAT:
            case HiveSqlParser.T_DELIMITED:
            case HiveSqlParser.T_FIELDS:
            case HiveSqlParser.T_TERMINATED:
            case HiveSqlParser.T_ESCAPED:
            case HiveSqlParser.T_COLLECTION:
            case HiveSqlParser.T_ITEMS:
            case HiveSqlParser.T_MAP:
            case HiveSqlParser.T_KEYS:
            case HiveSqlParser.T_LINES:
            case HiveSqlParser.T_DEFINED:
            case HiveSqlParser.T_TEXTIMAGE_ON:
            case HiveSqlParser.T_COMMENT:
            case HiveSqlParser.T_CHARACTER:
            case HiveSqlParser.T_CHARSET:
            case HiveSqlParser.T_ENGINE:
            case HiveSqlParser.T_ALTER:
            case HiveSqlParser.T_ADD2:
            case HiveSqlParser.T_CHAR:
            case HiveSqlParser.T_BIGINT:
            case HiveSqlParser.T_BINARY_DOUBLE:
            case HiveSqlParser.T_BINARY_FLOAT:
            case HiveSqlParser.T_BIT:
            case HiveSqlParser.T_DATE:
            case HiveSqlParser.T_DATETIME:
            case HiveSqlParser.T_DEC:
            case HiveSqlParser.T_DECIMAL:
            case HiveSqlParser.T_DOUBLE:
            case HiveSqlParser.T_PRECISION:
            case HiveSqlParser.T_FLOAT:
            case HiveSqlParser.T_INT:
            case HiveSqlParser.T_INT2:
            case HiveSqlParser.T_INT4:
            case HiveSqlParser.T_INT8:
            case HiveSqlParser.T_INTEGER:
            case HiveSqlParser.T_NCHAR:
            case HiveSqlParser.T_NVARCHAR:
            case HiveSqlParser.T_NUMBER:
            case HiveSqlParser.T_NUMERIC:
            case HiveSqlParser.T_REAL:
            case HiveSqlParser.T_RESULT_SET_LOCATOR:
            case HiveSqlParser.T_VARYING:
            case HiveSqlParser.T_SIMPLE_FLOAT:
            case HiveSqlParser.T_SIMPLE_DOUBLE:
            case HiveSqlParser.T_SMALLINT:
            case HiveSqlParser.T_SMALLDATETIME:
            case HiveSqlParser.T_STRING:
            case HiveSqlParser.T_SYS_REFCURSOR:
            case HiveSqlParser.T_TIMESTAMP:
            case HiveSqlParser.T_VARCHAR:
            case HiveSqlParser.T_VARCHAR2:
            case HiveSqlParser.T_XML:
            case HiveSqlParser.T_MAX:
            case HiveSqlParser.T_BYTE:
            case HiveSqlParser.T_CASESPECIFIC:
            case HiveSqlParser.T_CS:
            case HiveSqlParser.T_DATABASE:
            case HiveSqlParser.T_SCHEMA:
            case HiveSqlParser.T_LOCATION:
            case HiveSqlParser.T_OR:
            case HiveSqlParser.T_FUNCTION:
            case HiveSqlParser.T_RETURNS:
            case HiveSqlParser.T_PACKAGE:
            case HiveSqlParser.T_PROC:
            case HiveSqlParser.T_BODY:
            case HiveSqlParser.T_OUT:
            case HiveSqlParser.T_INOUT:
            case HiveSqlParser.T_LANGUAGE:
            case HiveSqlParser.T_SQL:
            case HiveSqlParser.T_SECURITY:
            case HiveSqlParser.T_CREATOR:
            case HiveSqlParser.T_DEFINER:
            case HiveSqlParser.T_INVOKER:
            case HiveSqlParser.T_OWNER:
            case HiveSqlParser.T_DYNAMIC:
            case HiveSqlParser.T_SETS:
            case HiveSqlParser.T_EXEC:
            case HiveSqlParser.T_EXECUTE:
            case HiveSqlParser.T_INTO:
            case HiveSqlParser.T_INCLUDE:
            case HiveSqlParser.T_INSERT:
            case HiveSqlParser.T_OVERWRITE:
            case HiveSqlParser.T_VALUES:
            case HiveSqlParser.T_DIRECTORY:
            case HiveSqlParser.T_GET:
            case HiveSqlParser.T_DIAGNOSTICS:
            case HiveSqlParser.T_MESSAGE_TEXT:
            case HiveSqlParser.T_ROW_COUNT:
            case HiveSqlParser.T_GRANT:
            case HiveSqlParser.T_ROLE:
            case HiveSqlParser.T_LEAVE:
            case HiveSqlParser.T_OBJECT:
            case HiveSqlParser.T_AT:
            case HiveSqlParser.T_OPEN:
            case HiveSqlParser.T_FETCH:
            case HiveSqlParser.T_FROM:
            case HiveSqlParser.T_COLLECT:
            case HiveSqlParser.T_STATISTICS:
            case HiveSqlParser.T_STATS:
            case HiveSqlParser.T_COLUMN:
            case HiveSqlParser.T_CLOSE:
            case HiveSqlParser.T_CMP:
            case HiveSqlParser.T_SUM:
            case HiveSqlParser.T_COPY:
            case HiveSqlParser.T_HDFS:
            case HiveSqlParser.T_BATCHSIZE:
            case HiveSqlParser.T_DELIMITER:
            case HiveSqlParser.T_SQLINSERT:
            case HiveSqlParser.T_IGNORE:
            case HiveSqlParser.T_WORK:
            case HiveSqlParser.T_PRINT:
            case HiveSqlParser.T_QUIT:
            case HiveSqlParser.T_RAISE:
            case HiveSqlParser.T_RESIGNAL:
            case HiveSqlParser.T_SQLSTATE:
            case HiveSqlParser.T_VALUE:
            case HiveSqlParser.T_ROLLBACK:
            case HiveSqlParser.T_CURRENT:
            case HiveSqlParser.T_CURRENT_SCHEMA:
            case HiveSqlParser.T_ANSI_NULLS:
            case HiveSqlParser.T_ANSI_PADDING:
            case HiveSqlParser.T_NOCOUNT:
            case HiveSqlParser.T_QUOTED_IDENTIFIER:
            case HiveSqlParser.T_XACT_ABORT:
            case HiveSqlParser.T_OFF:
            case HiveSqlParser.T_QUERY_BAND:
            case HiveSqlParser.T_NONE:
            case HiveSqlParser.T_SESSION:
            case HiveSqlParser.T_SIGNAL:
            case HiveSqlParser.T_SUMMARY:
            case HiveSqlParser.T_TOP:
            case HiveSqlParser.T_LIMIT:
            case HiveSqlParser.T_TRUNCATE:
            case HiveSqlParser.T_USE:
            case HiveSqlParser.T_WHILE:
            case HiveSqlParser.T_DO:
            case HiveSqlParser.T_LOOP:
            case HiveSqlParser.T_REVERSE:
            case HiveSqlParser.T_STEP:
            case HiveSqlParser.T_USING:
            case HiveSqlParser.T_ALL:
            case HiveSqlParser.T_EXCEPT:
            case HiveSqlParser.T_INTERSECT:
            case HiveSqlParser.T_SELECT:
            case HiveSqlParser.T_SEL:
            case HiveSqlParser.T_DISTINCT:
            case HiveSqlParser.T_TITLE:
            case HiveSqlParser.L_S_STRING:
            case HiveSqlParser.T_INNER:
            case HiveSqlParser.T_JOIN:
            case HiveSqlParser.T_LEFT:
            case HiveSqlParser.T_RIGHT:
            case HiveSqlParser.T_FULL:
            case HiveSqlParser.T_OUTER:
            case HiveSqlParser.T_GROUP:
            case HiveSqlParser.T_HAVING:
            case HiveSqlParser.T_QUALIFY:
            case HiveSqlParser.T_ORDER:
            case HiveSqlParser.T_RR:
            case HiveSqlParser.T_RS:
            case HiveSqlParser.T_UR:
            case HiveSqlParser.T_AND:
            case HiveSqlParser.T_KEEP:
            case HiveSqlParser.T_EXCLUSIVE:
            case HiveSqlParser.T_SHARE:
            case HiveSqlParser.T_LOCKS:
            case HiveSqlParser.T_MERGE:
            case HiveSqlParser.T_MATCHED:
            case HiveSqlParser.T_DESCRIBE:
            case HiveSqlParser.T_BETWEEN:
            case HiveSqlParser.T_RLIKE:
            case HiveSqlParser.T_REGEXP:
            case HiveSqlParser.T_INTERVAL:
            case HiveSqlParser.T_DAY:
            case HiveSqlParser.T_DAYS:
            case HiveSqlParser.T_MICROSECOND:
            case HiveSqlParser.T_MICROSECONDS:
            case HiveSqlParser.T_SECOND:
            case HiveSqlParser.T_SECONDS:
            case HiveSqlParser.T_CONCAT:
            case HiveSqlParser.T_CASE:
            case HiveSqlParser.T_ISOPEN:
            case HiveSqlParser.T_NOTFOUND:
            case HiveSqlParser.T_AVG:
            case HiveSqlParser.T_COUNT:
            case HiveSqlParser.T_COUNT_BIG:
            case HiveSqlParser.T_CUME_DIST:
            case HiveSqlParser.T_DENSE_RANK:
            case HiveSqlParser.T_FIRST_VALUE:
            case HiveSqlParser.T_LAG:
            case HiveSqlParser.T_LAST_VALUE:
            case HiveSqlParser.T_LEAD:
            case HiveSqlParser.T_MIN:
            case HiveSqlParser.T_RANK:
            case HiveSqlParser.T_ROW_NUMBER:
            case HiveSqlParser.T_STDEV:
            case HiveSqlParser.T_VAR:
            case HiveSqlParser.T_VARIANCE:
            case HiveSqlParser.T_OVER:
            case HiveSqlParser.T_PARTITION:
            case HiveSqlParser.T_ACTIVITY_COUNT:
            case HiveSqlParser.T_CAST:
            case HiveSqlParser.T_CURRENT_DATE:
            case HiveSqlParser.T_CURRENT_TIMESTAMP:
            case HiveSqlParser.T_CURRENT_USER:
            case HiveSqlParser.T_USER:
            case HiveSqlParser.T_MAX_PART_STRING:
            case HiveSqlParser.T_MIN_PART_STRING:
            case HiveSqlParser.T_MAX_PART_INT:
            case HiveSqlParser.T_MIN_PART_INT:
            case HiveSqlParser.T_MAX_PART_DATE:
            case HiveSqlParser.T_MIN_PART_DATE:
            case HiveSqlParser.T_PART_COUNT:
            case HiveSqlParser.T_PART_LOC:
            case HiveSqlParser.T_TRIM:
            case HiveSqlParser.T_SUBSTRING:
            case HiveSqlParser.T_SYSDATE:
            case HiveSqlParser.T_HIVE:
            case HiveSqlParser.T_HOST:
            case HiveSqlParser.L_D_STRING:
            case HiveSqlParser.L_DEC:
            case HiveSqlParser.T_TRUE:
            case HiveSqlParser.T_FALSE:
            case HiveSqlParser.T_DIR:
            case HiveSqlParser.T_FILE:
            case HiveSqlParser.T_FILES:
            case HiveSqlParser.T_NEW:
            case HiveSqlParser.T_PWD:
            case HiveSqlParser.T_SESSIONS:
            case HiveSqlParser.T_SUBDIR:
                this.state = 3024;
                this.expr(0);
                break;
            case HiveSqlParser.T__5:
                this.state = 3025;
                this.match(HiveSqlParser.T__5);
                break;
            default:
                throw new antlr4.error.NoViableAltException(this);
            }
            this.state = 3028;
            this.match(HiveSqlParser.T_CLOSE_P);
            break;

        case 4:
            this.enterOuterAlt(localctx, 4);
            this.state = 3029;
            this.match(HiveSqlParser.T_CURRENT_DATE);
            break;

        case 5:
            this.enterOuterAlt(localctx, 5);
            this.state = 3030;
            this.match(HiveSqlParser.T_CURRENT);
            this.state = 3031;
            this.match(HiveSqlParser.T_DATE);
            break;

        case 6:
            this.enterOuterAlt(localctx, 6);
            this.state = 3035;
            this._errHandler.sync(this);
            switch(this._input.LA(1)) {
            case HiveSqlParser.T_CURRENT_TIMESTAMP:
                this.state = 3032;
                this.match(HiveSqlParser.T_CURRENT_TIMESTAMP);
                break;
            case HiveSqlParser.T_CURRENT:
                this.state = 3033;
                this.match(HiveSqlParser.T_CURRENT);
                this.state = 3034;
                this.match(HiveSqlParser.T_TIMESTAMP);
                break;
            default:
                throw new antlr4.error.NoViableAltException(this);
            }
            this.state = 3041;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,386,this._ctx);
            if(la_===1) {
                this.state = 3037;
                this.match(HiveSqlParser.T_OPEN_P);
                this.state = 3038;
                this.expr(0);
                this.state = 3039;
                this.match(HiveSqlParser.T_CLOSE_P);

            }
            break;

        case 7:
            this.enterOuterAlt(localctx, 7);
            this.state = 3043;
            this.match(HiveSqlParser.T_CURRENT_USER);
            break;

        case 8:
            this.enterOuterAlt(localctx, 8);
            this.state = 3044;
            this.match(HiveSqlParser.T_CURRENT);
            this.state = 3045;
            this.match(HiveSqlParser.T_USER);
            break;

        case 9:
            this.enterOuterAlt(localctx, 9);
            this.state = 3046;
            this.match(HiveSqlParser.T_MAX_PART_STRING);
            this.state = 3047;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 3048;
            this.expr(0);
            this.state = 3061;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===HiveSqlParser.T_COMMA) {
                this.state = 3049;
                this.match(HiveSqlParser.T_COMMA);
                this.state = 3050;
                this.expr(0);
                this.state = 3058;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
                while(_la===HiveSqlParser.T_COMMA) {
                    this.state = 3051;
                    this.match(HiveSqlParser.T_COMMA);
                    this.state = 3052;
                    this.expr(0);
                    this.state = 3053;
                    this.match(HiveSqlParser.T_EQUAL);
                    this.state = 3054;
                    this.expr(0);
                    this.state = 3060;
                    this._errHandler.sync(this);
                    _la = this._input.LA(1);
                }
            }

            this.state = 3063;
            this.match(HiveSqlParser.T_CLOSE_P);
            break;

        case 10:
            this.enterOuterAlt(localctx, 10);
            this.state = 3065;
            this.match(HiveSqlParser.T_MIN_PART_STRING);
            this.state = 3066;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 3067;
            this.expr(0);
            this.state = 3080;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===HiveSqlParser.T_COMMA) {
                this.state = 3068;
                this.match(HiveSqlParser.T_COMMA);
                this.state = 3069;
                this.expr(0);
                this.state = 3077;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
                while(_la===HiveSqlParser.T_COMMA) {
                    this.state = 3070;
                    this.match(HiveSqlParser.T_COMMA);
                    this.state = 3071;
                    this.expr(0);
                    this.state = 3072;
                    this.match(HiveSqlParser.T_EQUAL);
                    this.state = 3073;
                    this.expr(0);
                    this.state = 3079;
                    this._errHandler.sync(this);
                    _la = this._input.LA(1);
                }
            }

            this.state = 3082;
            this.match(HiveSqlParser.T_CLOSE_P);
            break;

        case 11:
            this.enterOuterAlt(localctx, 11);
            this.state = 3084;
            this.match(HiveSqlParser.T_MAX_PART_INT);
            this.state = 3085;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 3086;
            this.expr(0);
            this.state = 3099;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===HiveSqlParser.T_COMMA) {
                this.state = 3087;
                this.match(HiveSqlParser.T_COMMA);
                this.state = 3088;
                this.expr(0);
                this.state = 3096;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
                while(_la===HiveSqlParser.T_COMMA) {
                    this.state = 3089;
                    this.match(HiveSqlParser.T_COMMA);
                    this.state = 3090;
                    this.expr(0);
                    this.state = 3091;
                    this.match(HiveSqlParser.T_EQUAL);
                    this.state = 3092;
                    this.expr(0);
                    this.state = 3098;
                    this._errHandler.sync(this);
                    _la = this._input.LA(1);
                }
            }

            this.state = 3101;
            this.match(HiveSqlParser.T_CLOSE_P);
            break;

        case 12:
            this.enterOuterAlt(localctx, 12);
            this.state = 3103;
            this.match(HiveSqlParser.T_MIN_PART_INT);
            this.state = 3104;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 3105;
            this.expr(0);
            this.state = 3118;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===HiveSqlParser.T_COMMA) {
                this.state = 3106;
                this.match(HiveSqlParser.T_COMMA);
                this.state = 3107;
                this.expr(0);
                this.state = 3115;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
                while(_la===HiveSqlParser.T_COMMA) {
                    this.state = 3108;
                    this.match(HiveSqlParser.T_COMMA);
                    this.state = 3109;
                    this.expr(0);
                    this.state = 3110;
                    this.match(HiveSqlParser.T_EQUAL);
                    this.state = 3111;
                    this.expr(0);
                    this.state = 3117;
                    this._errHandler.sync(this);
                    _la = this._input.LA(1);
                }
            }

            this.state = 3120;
            this.match(HiveSqlParser.T_CLOSE_P);
            break;

        case 13:
            this.enterOuterAlt(localctx, 13);
            this.state = 3122;
            this.match(HiveSqlParser.T_MAX_PART_DATE);
            this.state = 3123;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 3124;
            this.expr(0);
            this.state = 3137;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===HiveSqlParser.T_COMMA) {
                this.state = 3125;
                this.match(HiveSqlParser.T_COMMA);
                this.state = 3126;
                this.expr(0);
                this.state = 3134;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
                while(_la===HiveSqlParser.T_COMMA) {
                    this.state = 3127;
                    this.match(HiveSqlParser.T_COMMA);
                    this.state = 3128;
                    this.expr(0);
                    this.state = 3129;
                    this.match(HiveSqlParser.T_EQUAL);
                    this.state = 3130;
                    this.expr(0);
                    this.state = 3136;
                    this._errHandler.sync(this);
                    _la = this._input.LA(1);
                }
            }

            this.state = 3139;
            this.match(HiveSqlParser.T_CLOSE_P);
            break;

        case 14:
            this.enterOuterAlt(localctx, 14);
            this.state = 3141;
            this.match(HiveSqlParser.T_MIN_PART_DATE);
            this.state = 3142;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 3143;
            this.expr(0);
            this.state = 3156;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===HiveSqlParser.T_COMMA) {
                this.state = 3144;
                this.match(HiveSqlParser.T_COMMA);
                this.state = 3145;
                this.expr(0);
                this.state = 3153;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
                while(_la===HiveSqlParser.T_COMMA) {
                    this.state = 3146;
                    this.match(HiveSqlParser.T_COMMA);
                    this.state = 3147;
                    this.expr(0);
                    this.state = 3148;
                    this.match(HiveSqlParser.T_EQUAL);
                    this.state = 3149;
                    this.expr(0);
                    this.state = 3155;
                    this._errHandler.sync(this);
                    _la = this._input.LA(1);
                }
            }

            this.state = 3158;
            this.match(HiveSqlParser.T_CLOSE_P);
            break;

        case 15:
            this.enterOuterAlt(localctx, 15);
            this.state = 3160;
            this.match(HiveSqlParser.T_PART_COUNT);
            this.state = 3161;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 3162;
            this.expr(0);
            this.state = 3170;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            while(_la===HiveSqlParser.T_COMMA) {
                this.state = 3163;
                this.match(HiveSqlParser.T_COMMA);
                this.state = 3164;
                this.expr(0);
                this.state = 3165;
                this.match(HiveSqlParser.T_EQUAL);
                this.state = 3166;
                this.expr(0);
                this.state = 3172;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
            }
            this.state = 3173;
            this.match(HiveSqlParser.T_CLOSE_P);
            break;

        case 16:
            this.enterOuterAlt(localctx, 16);
            this.state = 3175;
            this.match(HiveSqlParser.T_PART_LOC);
            this.state = 3176;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 3177;
            this.expr(0);
            this.state = 3183; 
            this._errHandler.sync(this);
            var _alt = 1;
            do {
            	switch (_alt) {
            	case 1:
            		this.state = 3178;
            		this.match(HiveSqlParser.T_COMMA);
            		this.state = 3179;
            		this.expr(0);
            		this.state = 3180;
            		this.match(HiveSqlParser.T_EQUAL);
            		this.state = 3181;
            		this.expr(0);
            		break;
            	default:
            		throw new antlr4.error.NoViableAltException(this);
            	}
            	this.state = 3185; 
            	this._errHandler.sync(this);
            	_alt = this._interp.adaptivePredict(this._input,400, this._ctx);
            } while ( _alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER );
            this.state = 3189;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===HiveSqlParser.T_COMMA) {
                this.state = 3187;
                this.match(HiveSqlParser.T_COMMA);
                this.state = 3188;
                this.expr(0);
            }

            this.state = 3191;
            this.match(HiveSqlParser.T_CLOSE_P);
            break;

        case 17:
            this.enterOuterAlt(localctx, 17);
            this.state = 3193;
            this.match(HiveSqlParser.T_TRIM);
            this.state = 3194;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 3195;
            this.expr(0);
            this.state = 3196;
            this.match(HiveSqlParser.T_CLOSE_P);
            break;

        case 18:
            this.enterOuterAlt(localctx, 18);
            this.state = 3198;
            this.match(HiveSqlParser.T_SUBSTRING);
            this.state = 3199;
            this.match(HiveSqlParser.T_OPEN_P);
            this.state = 3200;
            this.expr(0);
            this.state = 3201;
            this.match(HiveSqlParser.T_FROM);
            this.state = 3202;
            this.expr(0);
            this.state = 3205;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===HiveSqlParser.T_FOR) {
                this.state = 3203;
                this.match(HiveSqlParser.T_FOR);
                this.state = 3204;
                this.expr(0);
            }

            this.state = 3207;
            this.match(HiveSqlParser.T_CLOSE_P);
            break;

        case 19:
            this.enterOuterAlt(localctx, 19);
            this.state = 3209;
            this.match(HiveSqlParser.T_SYSDATE);
            break;

        case 20:
            this.enterOuterAlt(localctx, 20);
            this.state = 3210;
            this.match(HiveSqlParser.T_USER);
            break;

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


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

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

Expr_funcContext.prototype.ident = function() {
    return this.getTypedRuleContext(IdentContext,0);
};

Expr_funcContext.prototype.T_OPEN_P = function() {
    return this.getToken(HiveSqlParser.T_OPEN_P, 0);
};

Expr_funcContext.prototype.T_CLOSE_P = function() {
    return this.getToken(HiveSqlParser.T_CLOSE_P, 0);
};

Expr_funcContext.prototype.expr_func_params = function() {
    return this.getTypedRuleContext(Expr_func_paramsContext,0);
};

Expr_funcContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterExpr_func(this);
	}
};

Expr_funcContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitExpr_func(this);
	}
};

Expr_funcContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitExpr_func(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Expr_funcContext = Expr_funcContext;

HiveSqlParser.prototype.expr_func = function() {

    var localctx = new Expr_funcContext(this, this._ctx, this.state);
    this.enterRule(localctx, 412, HiveSqlParser.RULE_expr_func);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 3213;
        this.ident();
        this.state = 3214;
        this.match(HiveSqlParser.T_OPEN_P);
        this.state = 3216;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,404,this._ctx);
        if(la_===1) {
            this.state = 3215;
            this.expr_func_params();

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


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

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

Expr_func_paramsContext.prototype.func_param = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Func_paramContext);
    } else {
        return this.getTypedRuleContext(Func_paramContext,i);
    }
};

Expr_func_paramsContext.prototype.T_COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.T_COMMA);
    } else {
        return this.getToken(HiveSqlParser.T_COMMA, i);
    }
};


Expr_func_paramsContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterExpr_func_params(this);
	}
};

Expr_func_paramsContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitExpr_func_params(this);
	}
};

Expr_func_paramsContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitExpr_func_params(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Expr_func_paramsContext = Expr_func_paramsContext;

HiveSqlParser.prototype.expr_func_params = function() {

    var localctx = new Expr_func_paramsContext(this, this._ctx, this.state);
    this.enterRule(localctx, 414, HiveSqlParser.RULE_expr_func_params);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 3220;
        this.func_param();
        this.state = 3225;
        this._errHandler.sync(this);
        var _alt = this._interp.adaptivePredict(this._input,405,this._ctx)
        while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
            if(_alt===1) {
                this.state = 3221;
                this.match(HiveSqlParser.T_COMMA);
                this.state = 3222;
                this.func_param(); 
            }
            this.state = 3227;
            this._errHandler.sync(this);
            _alt = this._interp.adaptivePredict(this._input,405,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 Func_paramContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_func_param;
    return this;
}

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

Func_paramContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Func_paramContext.prototype.ident = function() {
    return this.getTypedRuleContext(IdentContext,0);
};

Func_paramContext.prototype.T_EQUAL = function() {
    return this.getToken(HiveSqlParser.T_EQUAL, 0);
};

Func_paramContext.prototype.T_GREATER = function() {
    return this.getToken(HiveSqlParser.T_GREATER, 0);
};

Func_paramContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterFunc_param(this);
	}
};

Func_paramContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitFunc_param(this);
	}
};

Func_paramContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitFunc_param(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Func_paramContext = Func_paramContext;

HiveSqlParser.prototype.func_param = function() {

    var localctx = new Func_paramContext(this, this._ctx, this.state);
    this.enterRule(localctx, 416, HiveSqlParser.RULE_func_param);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 3228;
        if (!( !this._input.LT(1).getText().equalsIgnoreCase("INTO"))) {
            throw new antlr4.error.FailedPredicateException(this, "!this._input.LT(1).getText().equalsIgnoreCase(\"INTO\")");
        }
        this.state = 3234;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,407,this._ctx);
        if(la_===1) {
            this.state = 3229;
            this.ident();
            this.state = 3230;
            this.match(HiveSqlParser.T_EQUAL);
            this.state = 3232;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===HiveSqlParser.T_GREATER) {
                this.state = 3231;
                this.match(HiveSqlParser.T_GREATER);
            }


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


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

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

Expr_selectContext.prototype.select_stmt = function() {
    return this.getTypedRuleContext(Select_stmtContext,0);
};

Expr_selectContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Expr_selectContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterExpr_select(this);
	}
};

Expr_selectContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitExpr_select(this);
	}
};

Expr_selectContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitExpr_select(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Expr_selectContext = Expr_selectContext;

HiveSqlParser.prototype.expr_select = function() {

    var localctx = new Expr_selectContext(this, this._ctx, this.state);
    this.enterRule(localctx, 418, HiveSqlParser.RULE_expr_select);
    try {
        this.state = 3240;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,408,this._ctx);
        switch(la_) {
        case 1:
            this.enterOuterAlt(localctx, 1);
            this.state = 3238;
            this.select_stmt();
            break;

        case 2:
            this.enterOuterAlt(localctx, 2);
            this.state = 3239;
            this.expr(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 Expr_fileContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_expr_file;
    return this;
}

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

Expr_fileContext.prototype.file_name = function() {
    return this.getTypedRuleContext(File_nameContext,0);
};

Expr_fileContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Expr_fileContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterExpr_file(this);
	}
};

Expr_fileContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitExpr_file(this);
	}
};

Expr_fileContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitExpr_file(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Expr_fileContext = Expr_fileContext;

HiveSqlParser.prototype.expr_file = function() {

    var localctx = new Expr_fileContext(this, this._ctx, this.state);
    this.enterRule(localctx, 420, HiveSqlParser.RULE_expr_file);
    try {
        this.state = 3244;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,409,this._ctx);
        switch(la_) {
        case 1:
            this.enterOuterAlt(localctx, 1);
            this.state = 3242;
            this.file_name();
            break;

        case 2:
            this.enterOuterAlt(localctx, 2);
            this.state = 3243;
            this.expr(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 HiveContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_hive;
    return this;
}

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

HiveContext.prototype.T_HIVE = function() {
    return this.getToken(HiveSqlParser.T_HIVE, 0);
};

HiveContext.prototype.hive_item = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Hive_itemContext);
    } else {
        return this.getTypedRuleContext(Hive_itemContext,i);
    }
};

HiveContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterHive(this);
	}
};

HiveContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitHive(this);
	}
};

HiveContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitHive(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.HiveContext = HiveContext;

HiveSqlParser.prototype.hive = function() {

    var localctx = new HiveContext(this, this._ctx, this.state);
    this.enterRule(localctx, 422, HiveSqlParser.RULE_hive);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 3246;
        this.match(HiveSqlParser.T_HIVE);
        this.state = 3250;
        this._errHandler.sync(this);
        var _alt = this._interp.adaptivePredict(this._input,410,this._ctx)
        while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
            if(_alt===1) {
                this.state = 3247;
                this.hive_item(); 
            }
            this.state = 3252;
            this._errHandler.sync(this);
            _alt = this._interp.adaptivePredict(this._input,410,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 Hive_itemContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_hive_item;
    return this;
}

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

Hive_itemContext.prototype.T_SUB = function() {
    return this.getToken(HiveSqlParser.T_SUB, 0);
};

Hive_itemContext.prototype.ident = function() {
    return this.getTypedRuleContext(IdentContext,0);
};

Hive_itemContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Hive_itemContext.prototype.L_ID = function() {
    return this.getToken(HiveSqlParser.L_ID, 0);
};

Hive_itemContext.prototype.T_EQUAL = function() {
    return this.getToken(HiveSqlParser.T_EQUAL, 0);
};

Hive_itemContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterHive_item(this);
	}
};

Hive_itemContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitHive_item(this);
	}
};

Hive_itemContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitHive_item(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Hive_itemContext = Hive_itemContext;

HiveSqlParser.prototype.hive_item = function() {

    var localctx = new Hive_itemContext(this, this._ctx, this.state);
    this.enterRule(localctx, 424, HiveSqlParser.RULE_hive_item);
    try {
        this.state = 3265;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,411,this._ctx);
        switch(la_) {
        case 1:
            this.enterOuterAlt(localctx, 1);
            this.state = 3253;
            this.match(HiveSqlParser.T_SUB);
            this.state = 3254;
            this.ident();
            this.state = 3255;
            this.expr(0);
            break;

        case 2:
            this.enterOuterAlt(localctx, 2);
            this.state = 3257;
            this.match(HiveSqlParser.T_SUB);
            this.state = 3258;
            this.ident();
            this.state = 3259;
            this.match(HiveSqlParser.L_ID);
            this.state = 3260;
            this.match(HiveSqlParser.T_EQUAL);
            this.state = 3261;
            this.expr(0);
            break;

        case 3:
            this.enterOuterAlt(localctx, 3);
            this.state = 3263;
            this.match(HiveSqlParser.T_SUB);
            this.state = 3264;
            this.ident();
            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 HostContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_host;
    return this;
}

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

HostContext.prototype.host_cmd = function() {
    return this.getTypedRuleContext(Host_cmdContext,0);
};

HostContext.prototype.host_stmt = function() {
    return this.getTypedRuleContext(Host_stmtContext,0);
};

HostContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterHost(this);
	}
};

HostContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitHost(this);
	}
};

HostContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitHost(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.HostContext = HostContext;

HiveSqlParser.prototype.host = function() {

    var localctx = new HostContext(this, this._ctx, this.state);
    this.enterRule(localctx, 426, HiveSqlParser.RULE_host);
    try {
        this.state = 3272;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case HiveSqlParser.T__6:
            this.enterOuterAlt(localctx, 1);
            this.state = 3267;
            this.match(HiveSqlParser.T__6);
            this.state = 3268;
            this.host_cmd();
            this.state = 3269;
            this.match(HiveSqlParser.T__7);
            break;
        case HiveSqlParser.T_HOST:
            this.enterOuterAlt(localctx, 2);
            this.state = 3271;
            this.host_stmt();
            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 Host_cmdContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_host_cmd;
    return this;
}

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


Host_cmdContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterHost_cmd(this);
	}
};

Host_cmdContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitHost_cmd(this);
	}
};

Host_cmdContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitHost_cmd(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Host_cmdContext = Host_cmdContext;

HiveSqlParser.prototype.host_cmd = function() {

    var localctx = new Host_cmdContext(this, this._ctx, this.state);
    this.enterRule(localctx, 428, HiveSqlParser.RULE_host_cmd);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 3277;
        this._errHandler.sync(this);
        var _alt = this._interp.adaptivePredict(this._input,413,this._ctx)
        while(_alt!=1 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
            if(_alt===1+1) {
                this.state = 3274;
                this.matchWildcard(); 
            }
            this.state = 3279;
            this._errHandler.sync(this);
            _alt = this._interp.adaptivePredict(this._input,413,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 Host_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_host_stmt;
    return this;
}

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

Host_stmtContext.prototype.T_HOST = function() {
    return this.getToken(HiveSqlParser.T_HOST, 0);
};

Host_stmtContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Host_stmtContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterHost_stmt(this);
	}
};

Host_stmtContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitHost_stmt(this);
	}
};

Host_stmtContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitHost_stmt(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Host_stmtContext = Host_stmtContext;

HiveSqlParser.prototype.host_stmt = function() {

    var localctx = new Host_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 430, HiveSqlParser.RULE_host_stmt);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 3280;
        this.match(HiveSqlParser.T_HOST);
        this.state = 3281;
        this.expr(0);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


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

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

File_nameContext.prototype.L_FILE = function() {
    return this.getToken(HiveSqlParser.L_FILE, 0);
};

File_nameContext.prototype.ident = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(IdentContext);
    } else {
        return this.getTypedRuleContext(IdentContext,i);
    }
};

File_nameContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterFile_name(this);
	}
};

File_nameContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitFile_name(this);
	}
};

File_nameContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitFile_name(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.File_nameContext = File_nameContext;

HiveSqlParser.prototype.file_name = function() {

    var localctx = new File_nameContext(this, this._ctx, this.state);
    this.enterRule(localctx, 432, HiveSqlParser.RULE_file_name);
    try {
        this.state = 3297;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case HiveSqlParser.L_FILE:
            this.enterOuterAlt(localctx, 1);
            this.state = 3283;
            this.match(HiveSqlParser.L_FILE);
            break;
        case HiveSqlParser.T__2:
        case HiveSqlParser.T__4:
        case HiveSqlParser.T__8:
        case HiveSqlParser.T_GO:
        case HiveSqlParser.T_BEGIN:
        case HiveSqlParser.T_EXCEPTION:
        case HiveSqlParser.L_ID:
        case HiveSqlParser.T_THEN:
        case HiveSqlParser.T_SET:
        case HiveSqlParser.T_ALLOCATE:
        case HiveSqlParser.T_CURSOR:
        case HiveSqlParser.T_FOR:
        case HiveSqlParser.T_RESULT:
        case HiveSqlParser.T_PROCEDURE:
        case HiveSqlParser.T_ASSOCIATE:
        case HiveSqlParser.T_LOCATOR:
        case HiveSqlParser.T_LOCATORS:
        case HiveSqlParser.T_WITH:
        case HiveSqlParser.T_TRANSACTION:
        case HiveSqlParser.T_BREAK:
        case HiveSqlParser.T_CALL:
        case HiveSqlParser.T_DECLARE:
        case HiveSqlParser.T_AS:
        case HiveSqlParser.T_CONSTANT:
        case HiveSqlParser.T_CONDITION:
        case HiveSqlParser.T_IS:
        case HiveSqlParser.T_RETURN:
        case HiveSqlParser.T_ONLY:
        case HiveSqlParser.T_TO:
        case HiveSqlParser.T_CALLER:
        case HiveSqlParser.T_CLIENT:
        case HiveSqlParser.T_WITHOUT:
        case HiveSqlParser.T_CONTINUE:
        case HiveSqlParser.T_EXIT:
        case HiveSqlParser.T_HANDLER:
        case HiveSqlParser.T_SQLEXCEPTION:
        case HiveSqlParser.T_SQLWARNING:
        case HiveSqlParser.T_NOT:
        case HiveSqlParser.T_FOUND:
        case HiveSqlParser.T_GLOBAL:
        case HiveSqlParser.T_TEMPORARY:
        case HiveSqlParser.T_TABLE:
        case HiveSqlParser.T_CREATE:
        case HiveSqlParser.T_IF:
        case HiveSqlParser.T_EXISTS:
        case HiveSqlParser.T_LOCAL:
        case HiveSqlParser.T_MULTISET:
        case HiveSqlParser.T_VOLATILE:
        case HiveSqlParser.T_LIKE:
        case HiveSqlParser.T_CONSTRAINT:
        case HiveSqlParser.T_PRIMARY:
        case HiveSqlParser.T_KEY:
        case HiveSqlParser.T_UNIQUE:
        case HiveSqlParser.T_REFERENCES:
        case HiveSqlParser.T_IDENTITY:
        case HiveSqlParser.T_AUTO_INCREMENT:
        case HiveSqlParser.T_ENABLE:
        case HiveSqlParser.T_CLUSTERED:
        case HiveSqlParser.T_ASC:
        case HiveSqlParser.T_DESC:
        case HiveSqlParser.T_FOREIGN:
        case HiveSqlParser.T_ON:
        case HiveSqlParser.T_UPDATE:
        case HiveSqlParser.T_DELETE:
        case HiveSqlParser.T_NO:
        case HiveSqlParser.T_ACTION:
        case HiveSqlParser.T_RESTRICT:
        case HiveSqlParser.T_DEFAULT:
        case HiveSqlParser.T_CASCADE:
        case HiveSqlParser.T_LOG:
        case HiveSqlParser.T_FALLBACK:
        case HiveSqlParser.T_COMMIT:
        case HiveSqlParser.T_PRESERVE:
        case HiveSqlParser.T_ROWS:
        case HiveSqlParser.T_SEGMENT:
        case HiveSqlParser.T_CREATION:
        case HiveSqlParser.T_IMMEDIATE:
        case HiveSqlParser.T_DEFERRED:
        case HiveSqlParser.T_PCTFREE:
        case HiveSqlParser.T_PCTUSED:
        case HiveSqlParser.T_INITRANS:
        case HiveSqlParser.T_MAXTRANS:
        case HiveSqlParser.T_NOCOMPRESS:
        case HiveSqlParser.T_LOGGING:
        case HiveSqlParser.T_NOLOGGING:
        case HiveSqlParser.T_STORAGE:
        case HiveSqlParser.T_TABLESPACE:
        case HiveSqlParser.T_INDEX:
        case HiveSqlParser.T_IN:
        case HiveSqlParser.T_REPLACE:
        case HiveSqlParser.T_DISTRIBUTE:
        case HiveSqlParser.T_BY:
        case HiveSqlParser.T_HASH:
        case HiveSqlParser.T_LOGGED:
        case HiveSqlParser.T_COMPRESS:
        case HiveSqlParser.T_YES:
        case HiveSqlParser.T_DEFINITION:
        case HiveSqlParser.T_DROP:
        case HiveSqlParser.T_DATA:
        case HiveSqlParser.T_STORED:
        case HiveSqlParser.T_ROW:
        case HiveSqlParser.T_FORMAT:
        case HiveSqlParser.T_DELIMITED:
        case HiveSqlParser.T_FIELDS:
        case HiveSqlParser.T_TERMINATED:
        case HiveSqlParser.T_ESCAPED:
        case HiveSqlParser.T_COLLECTION:
        case HiveSqlParser.T_ITEMS:
        case HiveSqlParser.T_MAP:
        case HiveSqlParser.T_KEYS:
        case HiveSqlParser.T_LINES:
        case HiveSqlParser.T_DEFINED:
        case HiveSqlParser.T_TEXTIMAGE_ON:
        case HiveSqlParser.T_COMMENT:
        case HiveSqlParser.T_CHARACTER:
        case HiveSqlParser.T_CHARSET:
        case HiveSqlParser.T_ENGINE:
        case HiveSqlParser.T_ALTER:
        case HiveSqlParser.T_ADD2:
        case HiveSqlParser.T_CHAR:
        case HiveSqlParser.T_BIGINT:
        case HiveSqlParser.T_BINARY_DOUBLE:
        case HiveSqlParser.T_BINARY_FLOAT:
        case HiveSqlParser.T_BIT:
        case HiveSqlParser.T_DATE:
        case HiveSqlParser.T_DATETIME:
        case HiveSqlParser.T_DEC:
        case HiveSqlParser.T_DECIMAL:
        case HiveSqlParser.T_DOUBLE:
        case HiveSqlParser.T_PRECISION:
        case HiveSqlParser.T_FLOAT:
        case HiveSqlParser.T_INT:
        case HiveSqlParser.T_INT2:
        case HiveSqlParser.T_INT4:
        case HiveSqlParser.T_INT8:
        case HiveSqlParser.T_INTEGER:
        case HiveSqlParser.T_NCHAR:
        case HiveSqlParser.T_NVARCHAR:
        case HiveSqlParser.T_NUMBER:
        case HiveSqlParser.T_NUMERIC:
        case HiveSqlParser.T_REAL:
        case HiveSqlParser.T_RESULT_SET_LOCATOR:
        case HiveSqlParser.T_VARYING:
        case HiveSqlParser.T_SIMPLE_FLOAT:
        case HiveSqlParser.T_SIMPLE_DOUBLE:
        case HiveSqlParser.T_SMALLINT:
        case HiveSqlParser.T_SMALLDATETIME:
        case HiveSqlParser.T_STRING:
        case HiveSqlParser.T_SYS_REFCURSOR:
        case HiveSqlParser.T_TIMESTAMP:
        case HiveSqlParser.T_VARCHAR:
        case HiveSqlParser.T_VARCHAR2:
        case HiveSqlParser.T_XML:
        case HiveSqlParser.T_MAX:
        case HiveSqlParser.T_BYTE:
        case HiveSqlParser.T_CASESPECIFIC:
        case HiveSqlParser.T_CS:
        case HiveSqlParser.T_DATABASE:
        case HiveSqlParser.T_SCHEMA:
        case HiveSqlParser.T_LOCATION:
        case HiveSqlParser.T_OR:
        case HiveSqlParser.T_FUNCTION:
        case HiveSqlParser.T_RETURNS:
        case HiveSqlParser.T_PACKAGE:
        case HiveSqlParser.T_PROC:
        case HiveSqlParser.T_BODY:
        case HiveSqlParser.T_OUT:
        case HiveSqlParser.T_INOUT:
        case HiveSqlParser.T_LANGUAGE:
        case HiveSqlParser.T_SQL:
        case HiveSqlParser.T_SECURITY:
        case HiveSqlParser.T_CREATOR:
        case HiveSqlParser.T_DEFINER:
        case HiveSqlParser.T_INVOKER:
        case HiveSqlParser.T_OWNER:
        case HiveSqlParser.T_DYNAMIC:
        case HiveSqlParser.T_SETS:
        case HiveSqlParser.T_EXEC:
        case HiveSqlParser.T_EXECUTE:
        case HiveSqlParser.T_INTO:
        case HiveSqlParser.T_INCLUDE:
        case HiveSqlParser.T_INSERT:
        case HiveSqlParser.T_OVERWRITE:
        case HiveSqlParser.T_VALUES:
        case HiveSqlParser.T_DIRECTORY:
        case HiveSqlParser.T_GET:
        case HiveSqlParser.T_DIAGNOSTICS:
        case HiveSqlParser.T_MESSAGE_TEXT:
        case HiveSqlParser.T_ROW_COUNT:
        case HiveSqlParser.T_GRANT:
        case HiveSqlParser.T_ROLE:
        case HiveSqlParser.T_LEAVE:
        case HiveSqlParser.T_OBJECT:
        case HiveSqlParser.T_AT:
        case HiveSqlParser.T_OPEN:
        case HiveSqlParser.T_FETCH:
        case HiveSqlParser.T_FROM:
        case HiveSqlParser.T_COLLECT:
        case HiveSqlParser.T_STATISTICS:
        case HiveSqlParser.T_STATS:
        case HiveSqlParser.T_COLUMN:
        case HiveSqlParser.T_CLOSE:
        case HiveSqlParser.T_CMP:
        case HiveSqlParser.T_SUM:
        case HiveSqlParser.T_COPY:
        case HiveSqlParser.T_HDFS:
        case HiveSqlParser.T_BATCHSIZE:
        case HiveSqlParser.T_DELIMITER:
        case HiveSqlParser.T_SQLINSERT:
        case HiveSqlParser.T_IGNORE:
        case HiveSqlParser.T_WORK:
        case HiveSqlParser.T_PRINT:
        case HiveSqlParser.T_QUIT:
        case HiveSqlParser.T_RAISE:
        case HiveSqlParser.T_RESIGNAL:
        case HiveSqlParser.T_SQLSTATE:
        case HiveSqlParser.T_VALUE:
        case HiveSqlParser.T_ROLLBACK:
        case HiveSqlParser.T_CURRENT:
        case HiveSqlParser.T_CURRENT_SCHEMA:
        case HiveSqlParser.T_ANSI_NULLS:
        case HiveSqlParser.T_ANSI_PADDING:
        case HiveSqlParser.T_NOCOUNT:
        case HiveSqlParser.T_QUOTED_IDENTIFIER:
        case HiveSqlParser.T_XACT_ABORT:
        case HiveSqlParser.T_OFF:
        case HiveSqlParser.T_QUERY_BAND:
        case HiveSqlParser.T_NONE:
        case HiveSqlParser.T_SESSION:
        case HiveSqlParser.T_SIGNAL:
        case HiveSqlParser.T_SUMMARY:
        case HiveSqlParser.T_TOP:
        case HiveSqlParser.T_LIMIT:
        case HiveSqlParser.T_TRUNCATE:
        case HiveSqlParser.T_USE:
        case HiveSqlParser.T_WHILE:
        case HiveSqlParser.T_DO:
        case HiveSqlParser.T_LOOP:
        case HiveSqlParser.T_REVERSE:
        case HiveSqlParser.T_STEP:
        case HiveSqlParser.T_USING:
        case HiveSqlParser.T_ALL:
        case HiveSqlParser.T_EXCEPT:
        case HiveSqlParser.T_INTERSECT:
        case HiveSqlParser.T_SELECT:
        case HiveSqlParser.T_SEL:
        case HiveSqlParser.T_DISTINCT:
        case HiveSqlParser.T_TITLE:
        case HiveSqlParser.T_INNER:
        case HiveSqlParser.T_JOIN:
        case HiveSqlParser.T_LEFT:
        case HiveSqlParser.T_RIGHT:
        case HiveSqlParser.T_FULL:
        case HiveSqlParser.T_OUTER:
        case HiveSqlParser.T_GROUP:
        case HiveSqlParser.T_HAVING:
        case HiveSqlParser.T_QUALIFY:
        case HiveSqlParser.T_ORDER:
        case HiveSqlParser.T_RR:
        case HiveSqlParser.T_RS:
        case HiveSqlParser.T_UR:
        case HiveSqlParser.T_AND:
        case HiveSqlParser.T_KEEP:
        case HiveSqlParser.T_EXCLUSIVE:
        case HiveSqlParser.T_SHARE:
        case HiveSqlParser.T_LOCKS:
        case HiveSqlParser.T_MERGE:
        case HiveSqlParser.T_MATCHED:
        case HiveSqlParser.T_DESCRIBE:
        case HiveSqlParser.T_BETWEEN:
        case HiveSqlParser.T_RLIKE:
        case HiveSqlParser.T_REGEXP:
        case HiveSqlParser.T_INTERVAL:
        case HiveSqlParser.T_DAY:
        case HiveSqlParser.T_DAYS:
        case HiveSqlParser.T_MICROSECOND:
        case HiveSqlParser.T_MICROSECONDS:
        case HiveSqlParser.T_SECOND:
        case HiveSqlParser.T_SECONDS:
        case HiveSqlParser.T_CONCAT:
        case HiveSqlParser.T_CASE:
        case HiveSqlParser.T_ISOPEN:
        case HiveSqlParser.T_NOTFOUND:
        case HiveSqlParser.T_AVG:
        case HiveSqlParser.T_COUNT:
        case HiveSqlParser.T_COUNT_BIG:
        case HiveSqlParser.T_CUME_DIST:
        case HiveSqlParser.T_DENSE_RANK:
        case HiveSqlParser.T_FIRST_VALUE:
        case HiveSqlParser.T_LAG:
        case HiveSqlParser.T_LAST_VALUE:
        case HiveSqlParser.T_LEAD:
        case HiveSqlParser.T_MIN:
        case HiveSqlParser.T_RANK:
        case HiveSqlParser.T_ROW_NUMBER:
        case HiveSqlParser.T_STDEV:
        case HiveSqlParser.T_VAR:
        case HiveSqlParser.T_VARIANCE:
        case HiveSqlParser.T_OVER:
        case HiveSqlParser.T_PARTITION:
        case HiveSqlParser.T_ACTIVITY_COUNT:
        case HiveSqlParser.T_CAST:
        case HiveSqlParser.T_CURRENT_DATE:
        case HiveSqlParser.T_CURRENT_TIMESTAMP:
        case HiveSqlParser.T_CURRENT_USER:
        case HiveSqlParser.T_USER:
        case HiveSqlParser.T_PART_COUNT:
        case HiveSqlParser.T_PART_LOC:
        case HiveSqlParser.T_TRIM:
        case HiveSqlParser.T_SUBSTRING:
        case HiveSqlParser.T_SYSDATE:
        case HiveSqlParser.T_HIVE:
        case HiveSqlParser.T_HOST:
        case HiveSqlParser.T_TRUE:
        case HiveSqlParser.T_FALSE:
        case HiveSqlParser.T_DIR:
        case HiveSqlParser.T_FILE:
        case HiveSqlParser.T_FILES:
        case HiveSqlParser.T_NEW:
        case HiveSqlParser.T_PWD:
        case HiveSqlParser.T_SESSIONS:
        case HiveSqlParser.T_SUBDIR:
            this.enterOuterAlt(localctx, 2);
            this.state = 3287;
            this._errHandler.sync(this);
            switch (this._input.LA(1)) {
            case HiveSqlParser.T__2:
            	this.state = 3284;
            	this.match(HiveSqlParser.T__2);
            	break;
            case HiveSqlParser.T__4:
            	this.state = 3285;
            	this.match(HiveSqlParser.T__4);
            	this.state = 3286;
            	this.match(HiveSqlParser.T__2);
            	break;
            case HiveSqlParser.T__8:
            case HiveSqlParser.T_GO:
            case HiveSqlParser.T_BEGIN:
            case HiveSqlParser.T_EXCEPTION:
            case HiveSqlParser.L_ID:
            case HiveSqlParser.T_THEN:
            case HiveSqlParser.T_SET:
            case HiveSqlParser.T_ALLOCATE:
            case HiveSqlParser.T_CURSOR:
            case HiveSqlParser.T_FOR:
            case HiveSqlParser.T_RESULT:
            case HiveSqlParser.T_PROCEDURE:
            case HiveSqlParser.T_ASSOCIATE:
            case HiveSqlParser.T_LOCATOR:
            case HiveSqlParser.T_LOCATORS:
            case HiveSqlParser.T_WITH:
            case HiveSqlParser.T_TRANSACTION:
            case HiveSqlParser.T_BREAK:
            case HiveSqlParser.T_CALL:
            case HiveSqlParser.T_DECLARE:
            case HiveSqlParser.T_AS:
            case HiveSqlParser.T_CONSTANT:
            case HiveSqlParser.T_CONDITION:
            case HiveSqlParser.T_IS:
            case HiveSqlParser.T_RETURN:
            case HiveSqlParser.T_ONLY:
            case HiveSqlParser.T_TO:
            case HiveSqlParser.T_CALLER:
            case HiveSqlParser.T_CLIENT:
            case HiveSqlParser.T_WITHOUT:
            case HiveSqlParser.T_CONTINUE:
            case HiveSqlParser.T_EXIT:
            case HiveSqlParser.T_HANDLER:
            case HiveSqlParser.T_SQLEXCEPTION:
            case HiveSqlParser.T_SQLWARNING:
            case HiveSqlParser.T_NOT:
            case HiveSqlParser.T_FOUND:
            case HiveSqlParser.T_GLOBAL:
            case HiveSqlParser.T_TEMPORARY:
            case HiveSqlParser.T_TABLE:
            case HiveSqlParser.T_CREATE:
            case HiveSqlParser.T_IF:
            case HiveSqlParser.T_EXISTS:
            case HiveSqlParser.T_LOCAL:
            case HiveSqlParser.T_MULTISET:
            case HiveSqlParser.T_VOLATILE:
            case HiveSqlParser.T_LIKE:
            case HiveSqlParser.T_CONSTRAINT:
            case HiveSqlParser.T_PRIMARY:
            case HiveSqlParser.T_KEY:
            case HiveSqlParser.T_UNIQUE:
            case HiveSqlParser.T_REFERENCES:
            case HiveSqlParser.T_IDENTITY:
            case HiveSqlParser.T_AUTO_INCREMENT:
            case HiveSqlParser.T_ENABLE:
            case HiveSqlParser.T_CLUSTERED:
            case HiveSqlParser.T_ASC:
            case HiveSqlParser.T_DESC:
            case HiveSqlParser.T_FOREIGN:
            case HiveSqlParser.T_ON:
            case HiveSqlParser.T_UPDATE:
            case HiveSqlParser.T_DELETE:
            case HiveSqlParser.T_NO:
            case HiveSqlParser.T_ACTION:
            case HiveSqlParser.T_RESTRICT:
            case HiveSqlParser.T_DEFAULT:
            case HiveSqlParser.T_CASCADE:
            case HiveSqlParser.T_LOG:
            case HiveSqlParser.T_FALLBACK:
            case HiveSqlParser.T_COMMIT:
            case HiveSqlParser.T_PRESERVE:
            case HiveSqlParser.T_ROWS:
            case HiveSqlParser.T_SEGMENT:
            case HiveSqlParser.T_CREATION:
            case HiveSqlParser.T_IMMEDIATE:
            case HiveSqlParser.T_DEFERRED:
            case HiveSqlParser.T_PCTFREE:
            case HiveSqlParser.T_PCTUSED:
            case HiveSqlParser.T_INITRANS:
            case HiveSqlParser.T_MAXTRANS:
            case HiveSqlParser.T_NOCOMPRESS:
            case HiveSqlParser.T_LOGGING:
            case HiveSqlParser.T_NOLOGGING:
            case HiveSqlParser.T_STORAGE:
            case HiveSqlParser.T_TABLESPACE:
            case HiveSqlParser.T_INDEX:
            case HiveSqlParser.T_IN:
            case HiveSqlParser.T_REPLACE:
            case HiveSqlParser.T_DISTRIBUTE:
            case HiveSqlParser.T_BY:
            case HiveSqlParser.T_HASH:
            case HiveSqlParser.T_LOGGED:
            case HiveSqlParser.T_COMPRESS:
            case HiveSqlParser.T_YES:
            case HiveSqlParser.T_DEFINITION:
            case HiveSqlParser.T_DROP:
            case HiveSqlParser.T_DATA:
            case HiveSqlParser.T_STORED:
            case HiveSqlParser.T_ROW:
            case HiveSqlParser.T_FORMAT:
            case HiveSqlParser.T_DELIMITED:
            case HiveSqlParser.T_FIELDS:
            case HiveSqlParser.T_TERMINATED:
            case HiveSqlParser.T_ESCAPED:
            case HiveSqlParser.T_COLLECTION:
            case HiveSqlParser.T_ITEMS:
            case HiveSqlParser.T_MAP:
            case HiveSqlParser.T_KEYS:
            case HiveSqlParser.T_LINES:
            case HiveSqlParser.T_DEFINED:
            case HiveSqlParser.T_TEXTIMAGE_ON:
            case HiveSqlParser.T_COMMENT:
            case HiveSqlParser.T_CHARACTER:
            case HiveSqlParser.T_CHARSET:
            case HiveSqlParser.T_ENGINE:
            case HiveSqlParser.T_ALTER:
            case HiveSqlParser.T_ADD2:
            case HiveSqlParser.T_CHAR:
            case HiveSqlParser.T_BIGINT:
            case HiveSqlParser.T_BINARY_DOUBLE:
            case HiveSqlParser.T_BINARY_FLOAT:
            case HiveSqlParser.T_BIT:
            case HiveSqlParser.T_DATE:
            case HiveSqlParser.T_DATETIME:
            case HiveSqlParser.T_DEC:
            case HiveSqlParser.T_DECIMAL:
            case HiveSqlParser.T_DOUBLE:
            case HiveSqlParser.T_PRECISION:
            case HiveSqlParser.T_FLOAT:
            case HiveSqlParser.T_INT:
            case HiveSqlParser.T_INT2:
            case HiveSqlParser.T_INT4:
            case HiveSqlParser.T_INT8:
            case HiveSqlParser.T_INTEGER:
            case HiveSqlParser.T_NCHAR:
            case HiveSqlParser.T_NVARCHAR:
            case HiveSqlParser.T_NUMBER:
            case HiveSqlParser.T_NUMERIC:
            case HiveSqlParser.T_REAL:
            case HiveSqlParser.T_RESULT_SET_LOCATOR:
            case HiveSqlParser.T_VARYING:
            case HiveSqlParser.T_SIMPLE_FLOAT:
            case HiveSqlParser.T_SIMPLE_DOUBLE:
            case HiveSqlParser.T_SMALLINT:
            case HiveSqlParser.T_SMALLDATETIME:
            case HiveSqlParser.T_STRING:
            case HiveSqlParser.T_SYS_REFCURSOR:
            case HiveSqlParser.T_TIMESTAMP:
            case HiveSqlParser.T_VARCHAR:
            case HiveSqlParser.T_VARCHAR2:
            case HiveSqlParser.T_XML:
            case HiveSqlParser.T_MAX:
            case HiveSqlParser.T_BYTE:
            case HiveSqlParser.T_CASESPECIFIC:
            case HiveSqlParser.T_CS:
            case HiveSqlParser.T_DATABASE:
            case HiveSqlParser.T_SCHEMA:
            case HiveSqlParser.T_LOCATION:
            case HiveSqlParser.T_OR:
            case HiveSqlParser.T_FUNCTION:
            case HiveSqlParser.T_RETURNS:
            case HiveSqlParser.T_PACKAGE:
            case HiveSqlParser.T_PROC:
            case HiveSqlParser.T_BODY:
            case HiveSqlParser.T_OUT:
            case HiveSqlParser.T_INOUT:
            case HiveSqlParser.T_LANGUAGE:
            case HiveSqlParser.T_SQL:
            case HiveSqlParser.T_SECURITY:
            case HiveSqlParser.T_CREATOR:
            case HiveSqlParser.T_DEFINER:
            case HiveSqlParser.T_INVOKER:
            case HiveSqlParser.T_OWNER:
            case HiveSqlParser.T_DYNAMIC:
            case HiveSqlParser.T_SETS:
            case HiveSqlParser.T_EXEC:
            case HiveSqlParser.T_EXECUTE:
            case HiveSqlParser.T_INTO:
            case HiveSqlParser.T_INCLUDE:
            case HiveSqlParser.T_INSERT:
            case HiveSqlParser.T_OVERWRITE:
            case HiveSqlParser.T_VALUES:
            case HiveSqlParser.T_DIRECTORY:
            case HiveSqlParser.T_GET:
            case HiveSqlParser.T_DIAGNOSTICS:
            case HiveSqlParser.T_MESSAGE_TEXT:
            case HiveSqlParser.T_ROW_COUNT:
            case HiveSqlParser.T_GRANT:
            case HiveSqlParser.T_ROLE:
            case HiveSqlParser.T_LEAVE:
            case HiveSqlParser.T_OBJECT:
            case HiveSqlParser.T_AT:
            case HiveSqlParser.T_OPEN:
            case HiveSqlParser.T_FETCH:
            case HiveSqlParser.T_FROM:
            case HiveSqlParser.T_COLLECT:
            case HiveSqlParser.T_STATISTICS:
            case HiveSqlParser.T_STATS:
            case HiveSqlParser.T_COLUMN:
            case HiveSqlParser.T_CLOSE:
            case HiveSqlParser.T_CMP:
            case HiveSqlParser.T_SUM:
            case HiveSqlParser.T_COPY:
            case HiveSqlParser.T_HDFS:
            case HiveSqlParser.T_BATCHSIZE:
            case HiveSqlParser.T_DELIMITER:
            case HiveSqlParser.T_SQLINSERT:
            case HiveSqlParser.T_IGNORE:
            case HiveSqlParser.T_WORK:
            case HiveSqlParser.T_PRINT:
            case HiveSqlParser.T_QUIT:
            case HiveSqlParser.T_RAISE:
            case HiveSqlParser.T_RESIGNAL:
            case HiveSqlParser.T_SQLSTATE:
            case HiveSqlParser.T_VALUE:
            case HiveSqlParser.T_ROLLBACK:
            case HiveSqlParser.T_CURRENT:
            case HiveSqlParser.T_CURRENT_SCHEMA:
            case HiveSqlParser.T_ANSI_NULLS:
            case HiveSqlParser.T_ANSI_PADDING:
            case HiveSqlParser.T_NOCOUNT:
            case HiveSqlParser.T_QUOTED_IDENTIFIER:
            case HiveSqlParser.T_XACT_ABORT:
            case HiveSqlParser.T_OFF:
            case HiveSqlParser.T_QUERY_BAND:
            case HiveSqlParser.T_NONE:
            case HiveSqlParser.T_SESSION:
            case HiveSqlParser.T_SIGNAL:
            case HiveSqlParser.T_SUMMARY:
            case HiveSqlParser.T_TOP:
            case HiveSqlParser.T_LIMIT:
            case HiveSqlParser.T_TRUNCATE:
            case HiveSqlParser.T_USE:
            case HiveSqlParser.T_WHILE:
            case HiveSqlParser.T_DO:
            case HiveSqlParser.T_LOOP:
            case HiveSqlParser.T_REVERSE:
            case HiveSqlParser.T_STEP:
            case HiveSqlParser.T_USING:
            case HiveSqlParser.T_ALL:
            case HiveSqlParser.T_EXCEPT:
            case HiveSqlParser.T_INTERSECT:
            case HiveSqlParser.T_SELECT:
            case HiveSqlParser.T_SEL:
            case HiveSqlParser.T_DISTINCT:
            case HiveSqlParser.T_TITLE:
            case HiveSqlParser.T_INNER:
            case HiveSqlParser.T_JOIN:
            case HiveSqlParser.T_LEFT:
            case HiveSqlParser.T_RIGHT:
            case HiveSqlParser.T_FULL:
            case HiveSqlParser.T_OUTER:
            case HiveSqlParser.T_GROUP:
            case HiveSqlParser.T_HAVING:
            case HiveSqlParser.T_QUALIFY:
            case HiveSqlParser.T_ORDER:
            case HiveSqlParser.T_RR:
            case HiveSqlParser.T_RS:
            case HiveSqlParser.T_UR:
            case HiveSqlParser.T_AND:
            case HiveSqlParser.T_KEEP:
            case HiveSqlParser.T_EXCLUSIVE:
            case HiveSqlParser.T_SHARE:
            case HiveSqlParser.T_LOCKS:
            case HiveSqlParser.T_MERGE:
            case HiveSqlParser.T_MATCHED:
            case HiveSqlParser.T_DESCRIBE:
            case HiveSqlParser.T_BETWEEN:
            case HiveSqlParser.T_RLIKE:
            case HiveSqlParser.T_REGEXP:
            case HiveSqlParser.T_INTERVAL:
            case HiveSqlParser.T_DAY:
            case HiveSqlParser.T_DAYS:
            case HiveSqlParser.T_MICROSECOND:
            case HiveSqlParser.T_MICROSECONDS:
            case HiveSqlParser.T_SECOND:
            case HiveSqlParser.T_SECONDS:
            case HiveSqlParser.T_CONCAT:
            case HiveSqlParser.T_CASE:
            case HiveSqlParser.T_ISOPEN:
            case HiveSqlParser.T_NOTFOUND:
            case HiveSqlParser.T_AVG:
            case HiveSqlParser.T_COUNT:
            case HiveSqlParser.T_COUNT_BIG:
            case HiveSqlParser.T_CUME_DIST:
            case HiveSqlParser.T_DENSE_RANK:
            case HiveSqlParser.T_FIRST_VALUE:
            case HiveSqlParser.T_LAG:
            case HiveSqlParser.T_LAST_VALUE:
            case HiveSqlParser.T_LEAD:
            case HiveSqlParser.T_MIN:
            case HiveSqlParser.T_RANK:
            case HiveSqlParser.T_ROW_NUMBER:
            case HiveSqlParser.T_STDEV:
            case HiveSqlParser.T_VAR:
            case HiveSqlParser.T_VARIANCE:
            case HiveSqlParser.T_OVER:
            case HiveSqlParser.T_PARTITION:
            case HiveSqlParser.T_ACTIVITY_COUNT:
            case HiveSqlParser.T_CAST:
            case HiveSqlParser.T_CURRENT_DATE:
            case HiveSqlParser.T_CURRENT_TIMESTAMP:
            case HiveSqlParser.T_CURRENT_USER:
            case HiveSqlParser.T_USER:
            case HiveSqlParser.T_PART_COUNT:
            case HiveSqlParser.T_PART_LOC:
            case HiveSqlParser.T_TRIM:
            case HiveSqlParser.T_SUBSTRING:
            case HiveSqlParser.T_SYSDATE:
            case HiveSqlParser.T_HIVE:
            case HiveSqlParser.T_HOST:
            case HiveSqlParser.T_TRUE:
            case HiveSqlParser.T_FALSE:
            case HiveSqlParser.T_DIR:
            case HiveSqlParser.T_FILE:
            case HiveSqlParser.T_FILES:
            case HiveSqlParser.T_NEW:
            case HiveSqlParser.T_PWD:
            case HiveSqlParser.T_SESSIONS:
            case HiveSqlParser.T_SUBDIR:
            	break;
            default:
            	break;
            }
            this.state = 3289;
            this.ident();
            this.state = 3294;
            this._errHandler.sync(this);
            var _alt = this._interp.adaptivePredict(this._input,415,this._ctx)
            while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
                if(_alt===1) {
                    this.state = 3290;
                    this.match(HiveSqlParser.T__2);
                    this.state = 3291;
                    this.ident(); 
                }
                this.state = 3296;
                this._errHandler.sync(this);
                _alt = this._interp.adaptivePredict(this._input,415,this._ctx);
            }

            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 Date_literalContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_date_literal;
    return this;
}

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

Date_literalContext.prototype.T_DATE = function() {
    return this.getToken(HiveSqlParser.T_DATE, 0);
};

Date_literalContext.prototype.string = function() {
    return this.getTypedRuleContext(StringContext,0);
};

Date_literalContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterDate_literal(this);
	}
};

Date_literalContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitDate_literal(this);
	}
};

Date_literalContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitDate_literal(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Date_literalContext = Date_literalContext;

HiveSqlParser.prototype.date_literal = function() {

    var localctx = new Date_literalContext(this, this._ctx, this.state);
    this.enterRule(localctx, 434, HiveSqlParser.RULE_date_literal);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 3299;
        this.match(HiveSqlParser.T_DATE);
        this.state = 3300;
        this.string();
    } 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 Timestamp_literalContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_timestamp_literal;
    return this;
}

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

Timestamp_literalContext.prototype.T_TIMESTAMP = function() {
    return this.getToken(HiveSqlParser.T_TIMESTAMP, 0);
};

Timestamp_literalContext.prototype.string = function() {
    return this.getTypedRuleContext(StringContext,0);
};

Timestamp_literalContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterTimestamp_literal(this);
	}
};

Timestamp_literalContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitTimestamp_literal(this);
	}
};

Timestamp_literalContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitTimestamp_literal(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Timestamp_literalContext = Timestamp_literalContext;

HiveSqlParser.prototype.timestamp_literal = function() {

    var localctx = new Timestamp_literalContext(this, this._ctx, this.state);
    this.enterRule(localctx, 436, HiveSqlParser.RULE_timestamp_literal);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 3302;
        this.match(HiveSqlParser.T_TIMESTAMP);
        this.state = 3303;
        this.string();
    } 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 IdentContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_ident;
    return this;
}

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

IdentContext.prototype.L_ID = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(HiveSqlParser.L_ID);
    } else {
        return this.getToken(HiveSqlParser.L_ID, i);
    }
};


IdentContext.prototype.non_reserved_words = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Non_reserved_wordsContext);
    } else {
        return this.getTypedRuleContext(Non_reserved_wordsContext,i);
    }
};

IdentContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterIdent(this);
	}
};

IdentContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitIdent(this);
	}
};

IdentContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitIdent(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.IdentContext = IdentContext;

HiveSqlParser.prototype.ident = function() {

    var localctx = new IdentContext(this, this._ctx, this.state);
    this.enterRule(localctx, 438, HiveSqlParser.RULE_ident);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 3306;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===HiveSqlParser.T__8) {
            this.state = 3305;
            this.match(HiveSqlParser.T__8);
        }

        this.state = 3310;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case HiveSqlParser.L_ID:
            this.state = 3308;
            this.match(HiveSqlParser.L_ID);
            break;
        case HiveSqlParser.T_GO:
        case HiveSqlParser.T_BEGIN:
        case HiveSqlParser.T_EXCEPTION:
        case HiveSqlParser.T_THEN:
        case HiveSqlParser.T_SET:
        case HiveSqlParser.T_ALLOCATE:
        case HiveSqlParser.T_CURSOR:
        case HiveSqlParser.T_FOR:
        case HiveSqlParser.T_RESULT:
        case HiveSqlParser.T_PROCEDURE:
        case HiveSqlParser.T_ASSOCIATE:
        case HiveSqlParser.T_LOCATOR:
        case HiveSqlParser.T_LOCATORS:
        case HiveSqlParser.T_WITH:
        case HiveSqlParser.T_TRANSACTION:
        case HiveSqlParser.T_BREAK:
        case HiveSqlParser.T_CALL:
        case HiveSqlParser.T_DECLARE:
        case HiveSqlParser.T_AS:
        case HiveSqlParser.T_CONSTANT:
        case HiveSqlParser.T_CONDITION:
        case HiveSqlParser.T_IS:
        case HiveSqlParser.T_RETURN:
        case HiveSqlParser.T_ONLY:
        case HiveSqlParser.T_TO:
        case HiveSqlParser.T_CALLER:
        case HiveSqlParser.T_CLIENT:
        case HiveSqlParser.T_WITHOUT:
        case HiveSqlParser.T_CONTINUE:
        case HiveSqlParser.T_EXIT:
        case HiveSqlParser.T_HANDLER:
        case HiveSqlParser.T_SQLEXCEPTION:
        case HiveSqlParser.T_SQLWARNING:
        case HiveSqlParser.T_NOT:
        case HiveSqlParser.T_FOUND:
        case HiveSqlParser.T_GLOBAL:
        case HiveSqlParser.T_TEMPORARY:
        case HiveSqlParser.T_TABLE:
        case HiveSqlParser.T_CREATE:
        case HiveSqlParser.T_IF:
        case HiveSqlParser.T_EXISTS:
        case HiveSqlParser.T_LOCAL:
        case HiveSqlParser.T_MULTISET:
        case HiveSqlParser.T_VOLATILE:
        case HiveSqlParser.T_LIKE:
        case HiveSqlParser.T_CONSTRAINT:
        case HiveSqlParser.T_PRIMARY:
        case HiveSqlParser.T_KEY:
        case HiveSqlParser.T_UNIQUE:
        case HiveSqlParser.T_REFERENCES:
        case HiveSqlParser.T_IDENTITY:
        case HiveSqlParser.T_AUTO_INCREMENT:
        case HiveSqlParser.T_ENABLE:
        case HiveSqlParser.T_CLUSTERED:
        case HiveSqlParser.T_ASC:
        case HiveSqlParser.T_DESC:
        case HiveSqlParser.T_FOREIGN:
        case HiveSqlParser.T_ON:
        case HiveSqlParser.T_UPDATE:
        case HiveSqlParser.T_DELETE:
        case HiveSqlParser.T_NO:
        case HiveSqlParser.T_ACTION:
        case HiveSqlParser.T_RESTRICT:
        case HiveSqlParser.T_DEFAULT:
        case HiveSqlParser.T_CASCADE:
        case HiveSqlParser.T_LOG:
        case HiveSqlParser.T_FALLBACK:
        case HiveSqlParser.T_COMMIT:
        case HiveSqlParser.T_PRESERVE:
        case HiveSqlParser.T_ROWS:
        case HiveSqlParser.T_SEGMENT:
        case HiveSqlParser.T_CREATION:
        case HiveSqlParser.T_IMMEDIATE:
        case HiveSqlParser.T_DEFERRED:
        case HiveSqlParser.T_PCTFREE:
        case HiveSqlParser.T_PCTUSED:
        case HiveSqlParser.T_INITRANS:
        case HiveSqlParser.T_MAXTRANS:
        case HiveSqlParser.T_NOCOMPRESS:
        case HiveSqlParser.T_LOGGING:
        case HiveSqlParser.T_NOLOGGING:
        case HiveSqlParser.T_STORAGE:
        case HiveSqlParser.T_TABLESPACE:
        case HiveSqlParser.T_INDEX:
        case HiveSqlParser.T_IN:
        case HiveSqlParser.T_REPLACE:
        case HiveSqlParser.T_DISTRIBUTE:
        case HiveSqlParser.T_BY:
        case HiveSqlParser.T_HASH:
        case HiveSqlParser.T_LOGGED:
        case HiveSqlParser.T_COMPRESS:
        case HiveSqlParser.T_YES:
        case HiveSqlParser.T_DEFINITION:
        case HiveSqlParser.T_DROP:
        case HiveSqlParser.T_DATA:
        case HiveSqlParser.T_STORED:
        case HiveSqlParser.T_ROW:
        case HiveSqlParser.T_FORMAT:
        case HiveSqlParser.T_DELIMITED:
        case HiveSqlParser.T_FIELDS:
        case HiveSqlParser.T_TERMINATED:
        case HiveSqlParser.T_ESCAPED:
        case HiveSqlParser.T_COLLECTION:
        case HiveSqlParser.T_ITEMS:
        case HiveSqlParser.T_MAP:
        case HiveSqlParser.T_KEYS:
        case HiveSqlParser.T_LINES:
        case HiveSqlParser.T_DEFINED:
        case HiveSqlParser.T_TEXTIMAGE_ON:
        case HiveSqlParser.T_COMMENT:
        case HiveSqlParser.T_CHARACTER:
        case HiveSqlParser.T_CHARSET:
        case HiveSqlParser.T_ENGINE:
        case HiveSqlParser.T_ALTER:
        case HiveSqlParser.T_ADD2:
        case HiveSqlParser.T_CHAR:
        case HiveSqlParser.T_BIGINT:
        case HiveSqlParser.T_BINARY_DOUBLE:
        case HiveSqlParser.T_BINARY_FLOAT:
        case HiveSqlParser.T_BIT:
        case HiveSqlParser.T_DATE:
        case HiveSqlParser.T_DATETIME:
        case HiveSqlParser.T_DEC:
        case HiveSqlParser.T_DECIMAL:
        case HiveSqlParser.T_DOUBLE:
        case HiveSqlParser.T_PRECISION:
        case HiveSqlParser.T_FLOAT:
        case HiveSqlParser.T_INT:
        case HiveSqlParser.T_INT2:
        case HiveSqlParser.T_INT4:
        case HiveSqlParser.T_INT8:
        case HiveSqlParser.T_INTEGER:
        case HiveSqlParser.T_NCHAR:
        case HiveSqlParser.T_NVARCHAR:
        case HiveSqlParser.T_NUMBER:
        case HiveSqlParser.T_NUMERIC:
        case HiveSqlParser.T_REAL:
        case HiveSqlParser.T_RESULT_SET_LOCATOR:
        case HiveSqlParser.T_VARYING:
        case HiveSqlParser.T_SIMPLE_FLOAT:
        case HiveSqlParser.T_SIMPLE_DOUBLE:
        case HiveSqlParser.T_SMALLINT:
        case HiveSqlParser.T_SMALLDATETIME:
        case HiveSqlParser.T_STRING:
        case HiveSqlParser.T_SYS_REFCURSOR:
        case HiveSqlParser.T_TIMESTAMP:
        case HiveSqlParser.T_VARCHAR:
        case HiveSqlParser.T_VARCHAR2:
        case HiveSqlParser.T_XML:
        case HiveSqlParser.T_MAX:
        case HiveSqlParser.T_BYTE:
        case HiveSqlParser.T_CASESPECIFIC:
        case HiveSqlParser.T_CS:
        case HiveSqlParser.T_DATABASE:
        case HiveSqlParser.T_SCHEMA:
        case HiveSqlParser.T_LOCATION:
        case HiveSqlParser.T_OR:
        case HiveSqlParser.T_FUNCTION:
        case HiveSqlParser.T_RETURNS:
        case HiveSqlParser.T_PACKAGE:
        case HiveSqlParser.T_PROC:
        case HiveSqlParser.T_BODY:
        case HiveSqlParser.T_OUT:
        case HiveSqlParser.T_INOUT:
        case HiveSqlParser.T_LANGUAGE:
        case HiveSqlParser.T_SQL:
        case HiveSqlParser.T_SECURITY:
        case HiveSqlParser.T_CREATOR:
        case HiveSqlParser.T_DEFINER:
        case HiveSqlParser.T_INVOKER:
        case HiveSqlParser.T_OWNER:
        case HiveSqlParser.T_DYNAMIC:
        case HiveSqlParser.T_SETS:
        case HiveSqlParser.T_EXEC:
        case HiveSqlParser.T_EXECUTE:
        case HiveSqlParser.T_INTO:
        case HiveSqlParser.T_INCLUDE:
        case HiveSqlParser.T_INSERT:
        case HiveSqlParser.T_OVERWRITE:
        case HiveSqlParser.T_VALUES:
        case HiveSqlParser.T_DIRECTORY:
        case HiveSqlParser.T_GET:
        case HiveSqlParser.T_DIAGNOSTICS:
        case HiveSqlParser.T_MESSAGE_TEXT:
        case HiveSqlParser.T_ROW_COUNT:
        case HiveSqlParser.T_GRANT:
        case HiveSqlParser.T_ROLE:
        case HiveSqlParser.T_LEAVE:
        case HiveSqlParser.T_OBJECT:
        case HiveSqlParser.T_AT:
        case HiveSqlParser.T_OPEN:
        case HiveSqlParser.T_FETCH:
        case HiveSqlParser.T_FROM:
        case HiveSqlParser.T_COLLECT:
        case HiveSqlParser.T_STATISTICS:
        case HiveSqlParser.T_STATS:
        case HiveSqlParser.T_COLUMN:
        case HiveSqlParser.T_CLOSE:
        case HiveSqlParser.T_CMP:
        case HiveSqlParser.T_SUM:
        case HiveSqlParser.T_COPY:
        case HiveSqlParser.T_HDFS:
        case HiveSqlParser.T_BATCHSIZE:
        case HiveSqlParser.T_DELIMITER:
        case HiveSqlParser.T_SQLINSERT:
        case HiveSqlParser.T_IGNORE:
        case HiveSqlParser.T_WORK:
        case HiveSqlParser.T_PRINT:
        case HiveSqlParser.T_QUIT:
        case HiveSqlParser.T_RAISE:
        case HiveSqlParser.T_RESIGNAL:
        case HiveSqlParser.T_SQLSTATE:
        case HiveSqlParser.T_VALUE:
        case HiveSqlParser.T_ROLLBACK:
        case HiveSqlParser.T_CURRENT:
        case HiveSqlParser.T_CURRENT_SCHEMA:
        case HiveSqlParser.T_ANSI_NULLS:
        case HiveSqlParser.T_ANSI_PADDING:
        case HiveSqlParser.T_NOCOUNT:
        case HiveSqlParser.T_QUOTED_IDENTIFIER:
        case HiveSqlParser.T_XACT_ABORT:
        case HiveSqlParser.T_OFF:
        case HiveSqlParser.T_QUERY_BAND:
        case HiveSqlParser.T_NONE:
        case HiveSqlParser.T_SESSION:
        case HiveSqlParser.T_SIGNAL:
        case HiveSqlParser.T_SUMMARY:
        case HiveSqlParser.T_TOP:
        case HiveSqlParser.T_LIMIT:
        case HiveSqlParser.T_TRUNCATE:
        case HiveSqlParser.T_USE:
        case HiveSqlParser.T_WHILE:
        case HiveSqlParser.T_DO:
        case HiveSqlParser.T_LOOP:
        case HiveSqlParser.T_REVERSE:
        case HiveSqlParser.T_STEP:
        case HiveSqlParser.T_USING:
        case HiveSqlParser.T_ALL:
        case HiveSqlParser.T_EXCEPT:
        case HiveSqlParser.T_INTERSECT:
        case HiveSqlParser.T_SELECT:
        case HiveSqlParser.T_SEL:
        case HiveSqlParser.T_DISTINCT:
        case HiveSqlParser.T_TITLE:
        case HiveSqlParser.T_INNER:
        case HiveSqlParser.T_JOIN:
        case HiveSqlParser.T_LEFT:
        case HiveSqlParser.T_RIGHT:
        case HiveSqlParser.T_FULL:
        case HiveSqlParser.T_OUTER:
        case HiveSqlParser.T_GROUP:
        case HiveSqlParser.T_HAVING:
        case HiveSqlParser.T_QUALIFY:
        case HiveSqlParser.T_ORDER:
        case HiveSqlParser.T_RR:
        case HiveSqlParser.T_RS:
        case HiveSqlParser.T_UR:
        case HiveSqlParser.T_AND:
        case HiveSqlParser.T_KEEP:
        case HiveSqlParser.T_EXCLUSIVE:
        case HiveSqlParser.T_SHARE:
        case HiveSqlParser.T_LOCKS:
        case HiveSqlParser.T_MERGE:
        case HiveSqlParser.T_MATCHED:
        case HiveSqlParser.T_DESCRIBE:
        case HiveSqlParser.T_BETWEEN:
        case HiveSqlParser.T_RLIKE:
        case HiveSqlParser.T_REGEXP:
        case HiveSqlParser.T_INTERVAL:
        case HiveSqlParser.T_DAY:
        case HiveSqlParser.T_DAYS:
        case HiveSqlParser.T_MICROSECOND:
        case HiveSqlParser.T_MICROSECONDS:
        case HiveSqlParser.T_SECOND:
        case HiveSqlParser.T_SECONDS:
        case HiveSqlParser.T_CONCAT:
        case HiveSqlParser.T_CASE:
        case HiveSqlParser.T_ISOPEN:
        case HiveSqlParser.T_NOTFOUND:
        case HiveSqlParser.T_AVG:
        case HiveSqlParser.T_COUNT:
        case HiveSqlParser.T_COUNT_BIG:
        case HiveSqlParser.T_CUME_DIST:
        case HiveSqlParser.T_DENSE_RANK:
        case HiveSqlParser.T_FIRST_VALUE:
        case HiveSqlParser.T_LAG:
        case HiveSqlParser.T_LAST_VALUE:
        case HiveSqlParser.T_LEAD:
        case HiveSqlParser.T_MIN:
        case HiveSqlParser.T_RANK:
        case HiveSqlParser.T_ROW_NUMBER:
        case HiveSqlParser.T_STDEV:
        case HiveSqlParser.T_VAR:
        case HiveSqlParser.T_VARIANCE:
        case HiveSqlParser.T_OVER:
        case HiveSqlParser.T_PARTITION:
        case HiveSqlParser.T_ACTIVITY_COUNT:
        case HiveSqlParser.T_CAST:
        case HiveSqlParser.T_CURRENT_DATE:
        case HiveSqlParser.T_CURRENT_TIMESTAMP:
        case HiveSqlParser.T_CURRENT_USER:
        case HiveSqlParser.T_USER:
        case HiveSqlParser.T_PART_COUNT:
        case HiveSqlParser.T_PART_LOC:
        case HiveSqlParser.T_TRIM:
        case HiveSqlParser.T_SUBSTRING:
        case HiveSqlParser.T_SYSDATE:
        case HiveSqlParser.T_HIVE:
        case HiveSqlParser.T_HOST:
        case HiveSqlParser.T_TRUE:
        case HiveSqlParser.T_FALSE:
        case HiveSqlParser.T_DIR:
        case HiveSqlParser.T_FILE:
        case HiveSqlParser.T_FILES:
        case HiveSqlParser.T_NEW:
        case HiveSqlParser.T_PWD:
        case HiveSqlParser.T_SESSIONS:
        case HiveSqlParser.T_SUBDIR:
            this.state = 3309;
            this.non_reserved_words();
            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
        this.state = 3319;
        this._errHandler.sync(this);
        var _alt = this._interp.adaptivePredict(this._input,420,this._ctx)
        while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
            if(_alt===1) {
                this.state = 3312;
                this.match(HiveSqlParser.T__4);
                this.state = 3315;
                this._errHandler.sync(this);
                switch(this._input.LA(1)) {
                case HiveSqlParser.L_ID:
                    this.state = 3313;
                    this.match(HiveSqlParser.L_ID);
                    break;
                case HiveSqlParser.T_GO:
                case HiveSqlParser.T_BEGIN:
                case HiveSqlParser.T_EXCEPTION:
                case HiveSqlParser.T_THEN:
                case HiveSqlParser.T_SET:
                case HiveSqlParser.T_ALLOCATE:
                case HiveSqlParser.T_CURSOR:
                case HiveSqlParser.T_FOR:
                case HiveSqlParser.T_RESULT:
                case HiveSqlParser.T_PROCEDURE:
                case HiveSqlParser.T_ASSOCIATE:
                case HiveSqlParser.T_LOCATOR:
                case HiveSqlParser.T_LOCATORS:
                case HiveSqlParser.T_WITH:
                case HiveSqlParser.T_TRANSACTION:
                case HiveSqlParser.T_BREAK:
                case HiveSqlParser.T_CALL:
                case HiveSqlParser.T_DECLARE:
                case HiveSqlParser.T_AS:
                case HiveSqlParser.T_CONSTANT:
                case HiveSqlParser.T_CONDITION:
                case HiveSqlParser.T_IS:
                case HiveSqlParser.T_RETURN:
                case HiveSqlParser.T_ONLY:
                case HiveSqlParser.T_TO:
                case HiveSqlParser.T_CALLER:
                case HiveSqlParser.T_CLIENT:
                case HiveSqlParser.T_WITHOUT:
                case HiveSqlParser.T_CONTINUE:
                case HiveSqlParser.T_EXIT:
                case HiveSqlParser.T_HANDLER:
                case HiveSqlParser.T_SQLEXCEPTION:
                case HiveSqlParser.T_SQLWARNING:
                case HiveSqlParser.T_NOT:
                case HiveSqlParser.T_FOUND:
                case HiveSqlParser.T_GLOBAL:
                case HiveSqlParser.T_TEMPORARY:
                case HiveSqlParser.T_TABLE:
                case HiveSqlParser.T_CREATE:
                case HiveSqlParser.T_IF:
                case HiveSqlParser.T_EXISTS:
                case HiveSqlParser.T_LOCAL:
                case HiveSqlParser.T_MULTISET:
                case HiveSqlParser.T_VOLATILE:
                case HiveSqlParser.T_LIKE:
                case HiveSqlParser.T_CONSTRAINT:
                case HiveSqlParser.T_PRIMARY:
                case HiveSqlParser.T_KEY:
                case HiveSqlParser.T_UNIQUE:
                case HiveSqlParser.T_REFERENCES:
                case HiveSqlParser.T_IDENTITY:
                case HiveSqlParser.T_AUTO_INCREMENT:
                case HiveSqlParser.T_ENABLE:
                case HiveSqlParser.T_CLUSTERED:
                case HiveSqlParser.T_ASC:
                case HiveSqlParser.T_DESC:
                case HiveSqlParser.T_FOREIGN:
                case HiveSqlParser.T_ON:
                case HiveSqlParser.T_UPDATE:
                case HiveSqlParser.T_DELETE:
                case HiveSqlParser.T_NO:
                case HiveSqlParser.T_ACTION:
                case HiveSqlParser.T_RESTRICT:
                case HiveSqlParser.T_DEFAULT:
                case HiveSqlParser.T_CASCADE:
                case HiveSqlParser.T_LOG:
                case HiveSqlParser.T_FALLBACK:
                case HiveSqlParser.T_COMMIT:
                case HiveSqlParser.T_PRESERVE:
                case HiveSqlParser.T_ROWS:
                case HiveSqlParser.T_SEGMENT:
                case HiveSqlParser.T_CREATION:
                case HiveSqlParser.T_IMMEDIATE:
                case HiveSqlParser.T_DEFERRED:
                case HiveSqlParser.T_PCTFREE:
                case HiveSqlParser.T_PCTUSED:
                case HiveSqlParser.T_INITRANS:
                case HiveSqlParser.T_MAXTRANS:
                case HiveSqlParser.T_NOCOMPRESS:
                case HiveSqlParser.T_LOGGING:
                case HiveSqlParser.T_NOLOGGING:
                case HiveSqlParser.T_STORAGE:
                case HiveSqlParser.T_TABLESPACE:
                case HiveSqlParser.T_INDEX:
                case HiveSqlParser.T_IN:
                case HiveSqlParser.T_REPLACE:
                case HiveSqlParser.T_DISTRIBUTE:
                case HiveSqlParser.T_BY:
                case HiveSqlParser.T_HASH:
                case HiveSqlParser.T_LOGGED:
                case HiveSqlParser.T_COMPRESS:
                case HiveSqlParser.T_YES:
                case HiveSqlParser.T_DEFINITION:
                case HiveSqlParser.T_DROP:
                case HiveSqlParser.T_DATA:
                case HiveSqlParser.T_STORED:
                case HiveSqlParser.T_ROW:
                case HiveSqlParser.T_FORMAT:
                case HiveSqlParser.T_DELIMITED:
                case HiveSqlParser.T_FIELDS:
                case HiveSqlParser.T_TERMINATED:
                case HiveSqlParser.T_ESCAPED:
                case HiveSqlParser.T_COLLECTION:
                case HiveSqlParser.T_ITEMS:
                case HiveSqlParser.T_MAP:
                case HiveSqlParser.T_KEYS:
                case HiveSqlParser.T_LINES:
                case HiveSqlParser.T_DEFINED:
                case HiveSqlParser.T_TEXTIMAGE_ON:
                case HiveSqlParser.T_COMMENT:
                case HiveSqlParser.T_CHARACTER:
                case HiveSqlParser.T_CHARSET:
                case HiveSqlParser.T_ENGINE:
                case HiveSqlParser.T_ALTER:
                case HiveSqlParser.T_ADD2:
                case HiveSqlParser.T_CHAR:
                case HiveSqlParser.T_BIGINT:
                case HiveSqlParser.T_BINARY_DOUBLE:
                case HiveSqlParser.T_BINARY_FLOAT:
                case HiveSqlParser.T_BIT:
                case HiveSqlParser.T_DATE:
                case HiveSqlParser.T_DATETIME:
                case HiveSqlParser.T_DEC:
                case HiveSqlParser.T_DECIMAL:
                case HiveSqlParser.T_DOUBLE:
                case HiveSqlParser.T_PRECISION:
                case HiveSqlParser.T_FLOAT:
                case HiveSqlParser.T_INT:
                case HiveSqlParser.T_INT2:
                case HiveSqlParser.T_INT4:
                case HiveSqlParser.T_INT8:
                case HiveSqlParser.T_INTEGER:
                case HiveSqlParser.T_NCHAR:
                case HiveSqlParser.T_NVARCHAR:
                case HiveSqlParser.T_NUMBER:
                case HiveSqlParser.T_NUMERIC:
                case HiveSqlParser.T_REAL:
                case HiveSqlParser.T_RESULT_SET_LOCATOR:
                case HiveSqlParser.T_VARYING:
                case HiveSqlParser.T_SIMPLE_FLOAT:
                case HiveSqlParser.T_SIMPLE_DOUBLE:
                case HiveSqlParser.T_SMALLINT:
                case HiveSqlParser.T_SMALLDATETIME:
                case HiveSqlParser.T_STRING:
                case HiveSqlParser.T_SYS_REFCURSOR:
                case HiveSqlParser.T_TIMESTAMP:
                case HiveSqlParser.T_VARCHAR:
                case HiveSqlParser.T_VARCHAR2:
                case HiveSqlParser.T_XML:
                case HiveSqlParser.T_MAX:
                case HiveSqlParser.T_BYTE:
                case HiveSqlParser.T_CASESPECIFIC:
                case HiveSqlParser.T_CS:
                case HiveSqlParser.T_DATABASE:
                case HiveSqlParser.T_SCHEMA:
                case HiveSqlParser.T_LOCATION:
                case HiveSqlParser.T_OR:
                case HiveSqlParser.T_FUNCTION:
                case HiveSqlParser.T_RETURNS:
                case HiveSqlParser.T_PACKAGE:
                case HiveSqlParser.T_PROC:
                case HiveSqlParser.T_BODY:
                case HiveSqlParser.T_OUT:
                case HiveSqlParser.T_INOUT:
                case HiveSqlParser.T_LANGUAGE:
                case HiveSqlParser.T_SQL:
                case HiveSqlParser.T_SECURITY:
                case HiveSqlParser.T_CREATOR:
                case HiveSqlParser.T_DEFINER:
                case HiveSqlParser.T_INVOKER:
                case HiveSqlParser.T_OWNER:
                case HiveSqlParser.T_DYNAMIC:
                case HiveSqlParser.T_SETS:
                case HiveSqlParser.T_EXEC:
                case HiveSqlParser.T_EXECUTE:
                case HiveSqlParser.T_INTO:
                case HiveSqlParser.T_INCLUDE:
                case HiveSqlParser.T_INSERT:
                case HiveSqlParser.T_OVERWRITE:
                case HiveSqlParser.T_VALUES:
                case HiveSqlParser.T_DIRECTORY:
                case HiveSqlParser.T_GET:
                case HiveSqlParser.T_DIAGNOSTICS:
                case HiveSqlParser.T_MESSAGE_TEXT:
                case HiveSqlParser.T_ROW_COUNT:
                case HiveSqlParser.T_GRANT:
                case HiveSqlParser.T_ROLE:
                case HiveSqlParser.T_LEAVE:
                case HiveSqlParser.T_OBJECT:
                case HiveSqlParser.T_AT:
                case HiveSqlParser.T_OPEN:
                case HiveSqlParser.T_FETCH:
                case HiveSqlParser.T_FROM:
                case HiveSqlParser.T_COLLECT:
                case HiveSqlParser.T_STATISTICS:
                case HiveSqlParser.T_STATS:
                case HiveSqlParser.T_COLUMN:
                case HiveSqlParser.T_CLOSE:
                case HiveSqlParser.T_CMP:
                case HiveSqlParser.T_SUM:
                case HiveSqlParser.T_COPY:
                case HiveSqlParser.T_HDFS:
                case HiveSqlParser.T_BATCHSIZE:
                case HiveSqlParser.T_DELIMITER:
                case HiveSqlParser.T_SQLINSERT:
                case HiveSqlParser.T_IGNORE:
                case HiveSqlParser.T_WORK:
                case HiveSqlParser.T_PRINT:
                case HiveSqlParser.T_QUIT:
                case HiveSqlParser.T_RAISE:
                case HiveSqlParser.T_RESIGNAL:
                case HiveSqlParser.T_SQLSTATE:
                case HiveSqlParser.T_VALUE:
                case HiveSqlParser.T_ROLLBACK:
                case HiveSqlParser.T_CURRENT:
                case HiveSqlParser.T_CURRENT_SCHEMA:
                case HiveSqlParser.T_ANSI_NULLS:
                case HiveSqlParser.T_ANSI_PADDING:
                case HiveSqlParser.T_NOCOUNT:
                case HiveSqlParser.T_QUOTED_IDENTIFIER:
                case HiveSqlParser.T_XACT_ABORT:
                case HiveSqlParser.T_OFF:
                case HiveSqlParser.T_QUERY_BAND:
                case HiveSqlParser.T_NONE:
                case HiveSqlParser.T_SESSION:
                case HiveSqlParser.T_SIGNAL:
                case HiveSqlParser.T_SUMMARY:
                case HiveSqlParser.T_TOP:
                case HiveSqlParser.T_LIMIT:
                case HiveSqlParser.T_TRUNCATE:
                case HiveSqlParser.T_USE:
                case HiveSqlParser.T_WHILE:
                case HiveSqlParser.T_DO:
                case HiveSqlParser.T_LOOP:
                case HiveSqlParser.T_REVERSE:
                case HiveSqlParser.T_STEP:
                case HiveSqlParser.T_USING:
                case HiveSqlParser.T_ALL:
                case HiveSqlParser.T_EXCEPT:
                case HiveSqlParser.T_INTERSECT:
                case HiveSqlParser.T_SELECT:
                case HiveSqlParser.T_SEL:
                case HiveSqlParser.T_DISTINCT:
                case HiveSqlParser.T_TITLE:
                case HiveSqlParser.T_INNER:
                case HiveSqlParser.T_JOIN:
                case HiveSqlParser.T_LEFT:
                case HiveSqlParser.T_RIGHT:
                case HiveSqlParser.T_FULL:
                case HiveSqlParser.T_OUTER:
                case HiveSqlParser.T_GROUP:
                case HiveSqlParser.T_HAVING:
                case HiveSqlParser.T_QUALIFY:
                case HiveSqlParser.T_ORDER:
                case HiveSqlParser.T_RR:
                case HiveSqlParser.T_RS:
                case HiveSqlParser.T_UR:
                case HiveSqlParser.T_AND:
                case HiveSqlParser.T_KEEP:
                case HiveSqlParser.T_EXCLUSIVE:
                case HiveSqlParser.T_SHARE:
                case HiveSqlParser.T_LOCKS:
                case HiveSqlParser.T_MERGE:
                case HiveSqlParser.T_MATCHED:
                case HiveSqlParser.T_DESCRIBE:
                case HiveSqlParser.T_BETWEEN:
                case HiveSqlParser.T_RLIKE:
                case HiveSqlParser.T_REGEXP:
                case HiveSqlParser.T_INTERVAL:
                case HiveSqlParser.T_DAY:
                case HiveSqlParser.T_DAYS:
                case HiveSqlParser.T_MICROSECOND:
                case HiveSqlParser.T_MICROSECONDS:
                case HiveSqlParser.T_SECOND:
                case HiveSqlParser.T_SECONDS:
                case HiveSqlParser.T_CONCAT:
                case HiveSqlParser.T_CASE:
                case HiveSqlParser.T_ISOPEN:
                case HiveSqlParser.T_NOTFOUND:
                case HiveSqlParser.T_AVG:
                case HiveSqlParser.T_COUNT:
                case HiveSqlParser.T_COUNT_BIG:
                case HiveSqlParser.T_CUME_DIST:
                case HiveSqlParser.T_DENSE_RANK:
                case HiveSqlParser.T_FIRST_VALUE:
                case HiveSqlParser.T_LAG:
                case HiveSqlParser.T_LAST_VALUE:
                case HiveSqlParser.T_LEAD:
                case HiveSqlParser.T_MIN:
                case HiveSqlParser.T_RANK:
                case HiveSqlParser.T_ROW_NUMBER:
                case HiveSqlParser.T_STDEV:
                case HiveSqlParser.T_VAR:
                case HiveSqlParser.T_VARIANCE:
                case HiveSqlParser.T_OVER:
                case HiveSqlParser.T_PARTITION:
                case HiveSqlParser.T_ACTIVITY_COUNT:
                case HiveSqlParser.T_CAST:
                case HiveSqlParser.T_CURRENT_DATE:
                case HiveSqlParser.T_CURRENT_TIMESTAMP:
                case HiveSqlParser.T_CURRENT_USER:
                case HiveSqlParser.T_USER:
                case HiveSqlParser.T_PART_COUNT:
                case HiveSqlParser.T_PART_LOC:
                case HiveSqlParser.T_TRIM:
                case HiveSqlParser.T_SUBSTRING:
                case HiveSqlParser.T_SYSDATE:
                case HiveSqlParser.T_HIVE:
                case HiveSqlParser.T_HOST:
                case HiveSqlParser.T_TRUE:
                case HiveSqlParser.T_FALSE:
                case HiveSqlParser.T_DIR:
                case HiveSqlParser.T_FILE:
                case HiveSqlParser.T_FILES:
                case HiveSqlParser.T_NEW:
                case HiveSqlParser.T_PWD:
                case HiveSqlParser.T_SESSIONS:
                case HiveSqlParser.T_SUBDIR:
                    this.state = 3314;
                    this.non_reserved_words();
                    break;
                default:
                    throw new antlr4.error.NoViableAltException(this);
                } 
            }
            this.state = 3321;
            this._errHandler.sync(this);
            _alt = this._interp.adaptivePredict(this._input,420,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 StringContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_string;
    return this;
}

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


 
StringContext.prototype.copyFrom = function(ctx) {
    antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};


function Double_quotedStringContext(parser, ctx) {
	StringContext.call(this, parser);
    StringContext.prototype.copyFrom.call(this, ctx);
    return this;
}

Double_quotedStringContext.prototype = Object.create(StringContext.prototype);
Double_quotedStringContext.prototype.constructor = Double_quotedStringContext;

HiveSqlParser.Double_quotedStringContext = Double_quotedStringContext;

Double_quotedStringContext.prototype.L_D_STRING = function() {
    return this.getToken(HiveSqlParser.L_D_STRING, 0);
};
Double_quotedStringContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterDouble_quotedString(this);
	}
};

Double_quotedStringContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitDouble_quotedString(this);
	}
};

Double_quotedStringContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitDouble_quotedString(this);
    } else {
        return visitor.visitChildren(this);
    }
};


function Single_quotedStringContext(parser, ctx) {
	StringContext.call(this, parser);
    StringContext.prototype.copyFrom.call(this, ctx);
    return this;
}

Single_quotedStringContext.prototype = Object.create(StringContext.prototype);
Single_quotedStringContext.prototype.constructor = Single_quotedStringContext;

HiveSqlParser.Single_quotedStringContext = Single_quotedStringContext;

Single_quotedStringContext.prototype.L_S_STRING = function() {
    return this.getToken(HiveSqlParser.L_S_STRING, 0);
};
Single_quotedStringContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterSingle_quotedString(this);
	}
};

Single_quotedStringContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitSingle_quotedString(this);
	}
};

Single_quotedStringContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitSingle_quotedString(this);
    } else {
        return visitor.visitChildren(this);
    }
};



HiveSqlParser.StringContext = StringContext;

HiveSqlParser.prototype.string = function() {

    var localctx = new StringContext(this, this._ctx, this.state);
    this.enterRule(localctx, 440, HiveSqlParser.RULE_string);
    try {
        this.state = 3324;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case HiveSqlParser.L_S_STRING:
            localctx = new Single_quotedStringContext(this, localctx);
            this.enterOuterAlt(localctx, 1);
            this.state = 3322;
            this.match(HiveSqlParser.L_S_STRING);
            break;
        case HiveSqlParser.L_D_STRING:
            localctx = new Double_quotedStringContext(this, localctx);
            this.enterOuterAlt(localctx, 2);
            this.state = 3323;
            this.match(HiveSqlParser.L_D_STRING);
            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 Int_numberContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_int_number;
    return this;
}

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

Int_numberContext.prototype.L_INT = function() {
    return this.getToken(HiveSqlParser.L_INT, 0);
};

Int_numberContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterInt_number(this);
	}
};

Int_numberContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitInt_number(this);
	}
};

Int_numberContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitInt_number(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Int_numberContext = Int_numberContext;

HiveSqlParser.prototype.int_number = function() {

    var localctx = new Int_numberContext(this, this._ctx, this.state);
    this.enterRule(localctx, 442, HiveSqlParser.RULE_int_number);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 3327;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===HiveSqlParser.T__8 || _la===HiveSqlParser.T__9) {
            this.state = 3326;
            _la = this._input.LA(1);
            if(!(_la===HiveSqlParser.T__8 || _la===HiveSqlParser.T__9)) {
            this._errHandler.recoverInline(this);
            }
            else {
            	this._errHandler.reportMatch(this);
                this.consume();
            }
        }

        this.state = 3329;
        this.match(HiveSqlParser.L_INT);
    } 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 Dec_numberContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_dec_number;
    return this;
}

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

Dec_numberContext.prototype.L_DEC = function() {
    return this.getToken(HiveSqlParser.L_DEC, 0);
};

Dec_numberContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterDec_number(this);
	}
};

Dec_numberContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitDec_number(this);
	}
};

Dec_numberContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitDec_number(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Dec_numberContext = Dec_numberContext;

HiveSqlParser.prototype.dec_number = function() {

    var localctx = new Dec_numberContext(this, this._ctx, this.state);
    this.enterRule(localctx, 444, HiveSqlParser.RULE_dec_number);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 3332;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===HiveSqlParser.T__8 || _la===HiveSqlParser.T__9) {
            this.state = 3331;
            _la = this._input.LA(1);
            if(!(_la===HiveSqlParser.T__8 || _la===HiveSqlParser.T__9)) {
            this._errHandler.recoverInline(this);
            }
            else {
            	this._errHandler.reportMatch(this);
                this.consume();
            }
        }

        this.state = 3334;
        this.match(HiveSqlParser.L_DEC);
    } 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 Bool_literalContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_bool_literal;
    return this;
}

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

Bool_literalContext.prototype.T_TRUE = function() {
    return this.getToken(HiveSqlParser.T_TRUE, 0);
};

Bool_literalContext.prototype.T_FALSE = function() {
    return this.getToken(HiveSqlParser.T_FALSE, 0);
};

Bool_literalContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterBool_literal(this);
	}
};

Bool_literalContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitBool_literal(this);
	}
};

Bool_literalContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitBool_literal(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Bool_literalContext = Bool_literalContext;

HiveSqlParser.prototype.bool_literal = function() {

    var localctx = new Bool_literalContext(this, this._ctx, this.state);
    this.enterRule(localctx, 446, HiveSqlParser.RULE_bool_literal);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 3336;
        _la = this._input.LA(1);
        if(!(_la===HiveSqlParser.T_TRUE || _la===HiveSqlParser.T_FALSE)) {
        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 Null_constContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = HiveSqlParser.RULE_null_const;
    return this;
}

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

Null_constContext.prototype.T_NULL = function() {
    return this.getToken(HiveSqlParser.T_NULL, 0);
};

Null_constContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterNull_const(this);
	}
};

Null_constContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitNull_const(this);
	}
};

Null_constContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitNull_const(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Null_constContext = Null_constContext;

HiveSqlParser.prototype.null_const = function() {

    var localctx = new Null_constContext(this, this._ctx, this.state);
    this.enterRule(localctx, 448, HiveSqlParser.RULE_null_const);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 3338;
        this.match(HiveSqlParser.T_NULL);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


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

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

Non_reserved_wordsContext.prototype.T_ACTION = function() {
    return this.getToken(HiveSqlParser.T_ACTION, 0);
};

Non_reserved_wordsContext.prototype.T_ACTIVITY_COUNT = function() {
    return this.getToken(HiveSqlParser.T_ACTIVITY_COUNT, 0);
};

Non_reserved_wordsContext.prototype.T_ADD2 = function() {
    return this.getToken(HiveSqlParser.T_ADD2, 0);
};

Non_reserved_wordsContext.prototype.T_ALL = function() {
    return this.getToken(HiveSqlParser.T_ALL, 0);
};

Non_reserved_wordsContext.prototype.T_ALLOCATE = function() {
    return this.getToken(HiveSqlParser.T_ALLOCATE, 0);
};

Non_reserved_wordsContext.prototype.T_ALTER = function() {
    return this.getToken(HiveSqlParser.T_ALTER, 0);
};

Non_reserved_wordsContext.prototype.T_AND = function() {
    return this.getToken(HiveSqlParser.T_AND, 0);
};

Non_reserved_wordsContext.prototype.T_ANSI_NULLS = function() {
    return this.getToken(HiveSqlParser.T_ANSI_NULLS, 0);
};

Non_reserved_wordsContext.prototype.T_ANSI_PADDING = function() {
    return this.getToken(HiveSqlParser.T_ANSI_PADDING, 0);
};

Non_reserved_wordsContext.prototype.T_AS = function() {
    return this.getToken(HiveSqlParser.T_AS, 0);
};

Non_reserved_wordsContext.prototype.T_ASC = function() {
    return this.getToken(HiveSqlParser.T_ASC, 0);
};

Non_reserved_wordsContext.prototype.T_ASSOCIATE = function() {
    return this.getToken(HiveSqlParser.T_ASSOCIATE, 0);
};

Non_reserved_wordsContext.prototype.T_AT = function() {
    return this.getToken(HiveSqlParser.T_AT, 0);
};

Non_reserved_wordsContext.prototype.T_AUTO_INCREMENT = function() {
    return this.getToken(HiveSqlParser.T_AUTO_INCREMENT, 0);
};

Non_reserved_wordsContext.prototype.T_AVG = function() {
    return this.getToken(HiveSqlParser.T_AVG, 0);
};

Non_reserved_wordsContext.prototype.T_BATCHSIZE = function() {
    return this.getToken(HiveSqlParser.T_BATCHSIZE, 0);
};

Non_reserved_wordsContext.prototype.T_BEGIN = function() {
    return this.getToken(HiveSqlParser.T_BEGIN, 0);
};

Non_reserved_wordsContext.prototype.T_BETWEEN = function() {
    return this.getToken(HiveSqlParser.T_BETWEEN, 0);
};

Non_reserved_wordsContext.prototype.T_BIGINT = function() {
    return this.getToken(HiveSqlParser.T_BIGINT, 0);
};

Non_reserved_wordsContext.prototype.T_BINARY_DOUBLE = function() {
    return this.getToken(HiveSqlParser.T_BINARY_DOUBLE, 0);
};

Non_reserved_wordsContext.prototype.T_BINARY_FLOAT = function() {
    return this.getToken(HiveSqlParser.T_BINARY_FLOAT, 0);
};

Non_reserved_wordsContext.prototype.T_BIT = function() {
    return this.getToken(HiveSqlParser.T_BIT, 0);
};

Non_reserved_wordsContext.prototype.T_BODY = function() {
    return this.getToken(HiveSqlParser.T_BODY, 0);
};

Non_reserved_wordsContext.prototype.T_BREAK = function() {
    return this.getToken(HiveSqlParser.T_BREAK, 0);
};

Non_reserved_wordsContext.prototype.T_BY = function() {
    return this.getToken(HiveSqlParser.T_BY, 0);
};

Non_reserved_wordsContext.prototype.T_BYTE = function() {
    return this.getToken(HiveSqlParser.T_BYTE, 0);
};

Non_reserved_wordsContext.prototype.T_CALL = function() {
    return this.getToken(HiveSqlParser.T_CALL, 0);
};

Non_reserved_wordsContext.prototype.T_CALLER = function() {
    return this.getToken(HiveSqlParser.T_CALLER, 0);
};

Non_reserved_wordsContext.prototype.T_CASCADE = function() {
    return this.getToken(HiveSqlParser.T_CASCADE, 0);
};

Non_reserved_wordsContext.prototype.T_CASE = function() {
    return this.getToken(HiveSqlParser.T_CASE, 0);
};

Non_reserved_wordsContext.prototype.T_CASESPECIFIC = function() {
    return this.getToken(HiveSqlParser.T_CASESPECIFIC, 0);
};

Non_reserved_wordsContext.prototype.T_CAST = function() {
    return this.getToken(HiveSqlParser.T_CAST, 0);
};

Non_reserved_wordsContext.prototype.T_CHAR = function() {
    return this.getToken(HiveSqlParser.T_CHAR, 0);
};

Non_reserved_wordsContext.prototype.T_CHARACTER = function() {
    return this.getToken(HiveSqlParser.T_CHARACTER, 0);
};

Non_reserved_wordsContext.prototype.T_CHARSET = function() {
    return this.getToken(HiveSqlParser.T_CHARSET, 0);
};

Non_reserved_wordsContext.prototype.T_CLIENT = function() {
    return this.getToken(HiveSqlParser.T_CLIENT, 0);
};

Non_reserved_wordsContext.prototype.T_CLOSE = function() {
    return this.getToken(HiveSqlParser.T_CLOSE, 0);
};

Non_reserved_wordsContext.prototype.T_CLUSTERED = function() {
    return this.getToken(HiveSqlParser.T_CLUSTERED, 0);
};

Non_reserved_wordsContext.prototype.T_CMP = function() {
    return this.getToken(HiveSqlParser.T_CMP, 0);
};

Non_reserved_wordsContext.prototype.T_COLLECT = function() {
    return this.getToken(HiveSqlParser.T_COLLECT, 0);
};

Non_reserved_wordsContext.prototype.T_COLLECTION = function() {
    return this.getToken(HiveSqlParser.T_COLLECTION, 0);
};

Non_reserved_wordsContext.prototype.T_COLUMN = function() {
    return this.getToken(HiveSqlParser.T_COLUMN, 0);
};

Non_reserved_wordsContext.prototype.T_COMMENT = function() {
    return this.getToken(HiveSqlParser.T_COMMENT, 0);
};

Non_reserved_wordsContext.prototype.T_COMPRESS = function() {
    return this.getToken(HiveSqlParser.T_COMPRESS, 0);
};

Non_reserved_wordsContext.prototype.T_CONSTANT = function() {
    return this.getToken(HiveSqlParser.T_CONSTANT, 0);
};

Non_reserved_wordsContext.prototype.T_COPY = function() {
    return this.getToken(HiveSqlParser.T_COPY, 0);
};

Non_reserved_wordsContext.prototype.T_COMMIT = function() {
    return this.getToken(HiveSqlParser.T_COMMIT, 0);
};

Non_reserved_wordsContext.prototype.T_CONCAT = function() {
    return this.getToken(HiveSqlParser.T_CONCAT, 0);
};

Non_reserved_wordsContext.prototype.T_CONDITION = function() {
    return this.getToken(HiveSqlParser.T_CONDITION, 0);
};

Non_reserved_wordsContext.prototype.T_CONSTRAINT = function() {
    return this.getToken(HiveSqlParser.T_CONSTRAINT, 0);
};

Non_reserved_wordsContext.prototype.T_CONTINUE = function() {
    return this.getToken(HiveSqlParser.T_CONTINUE, 0);
};

Non_reserved_wordsContext.prototype.T_COUNT = function() {
    return this.getToken(HiveSqlParser.T_COUNT, 0);
};

Non_reserved_wordsContext.prototype.T_COUNT_BIG = function() {
    return this.getToken(HiveSqlParser.T_COUNT_BIG, 0);
};

Non_reserved_wordsContext.prototype.T_CREATE = function() {
    return this.getToken(HiveSqlParser.T_CREATE, 0);
};

Non_reserved_wordsContext.prototype.T_CREATION = function() {
    return this.getToken(HiveSqlParser.T_CREATION, 0);
};

Non_reserved_wordsContext.prototype.T_CREATOR = function() {
    return this.getToken(HiveSqlParser.T_CREATOR, 0);
};

Non_reserved_wordsContext.prototype.T_CS = function() {
    return this.getToken(HiveSqlParser.T_CS, 0);
};

Non_reserved_wordsContext.prototype.T_CUME_DIST = function() {
    return this.getToken(HiveSqlParser.T_CUME_DIST, 0);
};

Non_reserved_wordsContext.prototype.T_CURRENT = function() {
    return this.getToken(HiveSqlParser.T_CURRENT, 0);
};

Non_reserved_wordsContext.prototype.T_CURRENT_DATE = function() {
    return this.getToken(HiveSqlParser.T_CURRENT_DATE, 0);
};

Non_reserved_wordsContext.prototype.T_CURRENT_SCHEMA = function() {
    return this.getToken(HiveSqlParser.T_CURRENT_SCHEMA, 0);
};

Non_reserved_wordsContext.prototype.T_CURRENT_TIMESTAMP = function() {
    return this.getToken(HiveSqlParser.T_CURRENT_TIMESTAMP, 0);
};

Non_reserved_wordsContext.prototype.T_CURRENT_USER = function() {
    return this.getToken(HiveSqlParser.T_CURRENT_USER, 0);
};

Non_reserved_wordsContext.prototype.T_CURSOR = function() {
    return this.getToken(HiveSqlParser.T_CURSOR, 0);
};

Non_reserved_wordsContext.prototype.T_DATA = function() {
    return this.getToken(HiveSqlParser.T_DATA, 0);
};

Non_reserved_wordsContext.prototype.T_DATABASE = function() {
    return this.getToken(HiveSqlParser.T_DATABASE, 0);
};

Non_reserved_wordsContext.prototype.T_DATE = function() {
    return this.getToken(HiveSqlParser.T_DATE, 0);
};

Non_reserved_wordsContext.prototype.T_DATETIME = function() {
    return this.getToken(HiveSqlParser.T_DATETIME, 0);
};

Non_reserved_wordsContext.prototype.T_DAY = function() {
    return this.getToken(HiveSqlParser.T_DAY, 0);
};

Non_reserved_wordsContext.prototype.T_DAYS = function() {
    return this.getToken(HiveSqlParser.T_DAYS, 0);
};

Non_reserved_wordsContext.prototype.T_DEC = function() {
    return this.getToken(HiveSqlParser.T_DEC, 0);
};

Non_reserved_wordsContext.prototype.T_DECIMAL = function() {
    return this.getToken(HiveSqlParser.T_DECIMAL, 0);
};

Non_reserved_wordsContext.prototype.T_DECLARE = function() {
    return this.getToken(HiveSqlParser.T_DECLARE, 0);
};

Non_reserved_wordsContext.prototype.T_DEFAULT = function() {
    return this.getToken(HiveSqlParser.T_DEFAULT, 0);
};

Non_reserved_wordsContext.prototype.T_DEFERRED = function() {
    return this.getToken(HiveSqlParser.T_DEFERRED, 0);
};

Non_reserved_wordsContext.prototype.T_DEFINED = function() {
    return this.getToken(HiveSqlParser.T_DEFINED, 0);
};

Non_reserved_wordsContext.prototype.T_DEFINER = function() {
    return this.getToken(HiveSqlParser.T_DEFINER, 0);
};

Non_reserved_wordsContext.prototype.T_DEFINITION = function() {
    return this.getToken(HiveSqlParser.T_DEFINITION, 0);
};

Non_reserved_wordsContext.prototype.T_DELETE = function() {
    return this.getToken(HiveSqlParser.T_DELETE, 0);
};

Non_reserved_wordsContext.prototype.T_DELIMITED = function() {
    return this.getToken(HiveSqlParser.T_DELIMITED, 0);
};

Non_reserved_wordsContext.prototype.T_DELIMITER = function() {
    return this.getToken(HiveSqlParser.T_DELIMITER, 0);
};

Non_reserved_wordsContext.prototype.T_DENSE_RANK = function() {
    return this.getToken(HiveSqlParser.T_DENSE_RANK, 0);
};

Non_reserved_wordsContext.prototype.T_DESC = function() {
    return this.getToken(HiveSqlParser.T_DESC, 0);
};

Non_reserved_wordsContext.prototype.T_DESCRIBE = function() {
    return this.getToken(HiveSqlParser.T_DESCRIBE, 0);
};

Non_reserved_wordsContext.prototype.T_DIAGNOSTICS = function() {
    return this.getToken(HiveSqlParser.T_DIAGNOSTICS, 0);
};

Non_reserved_wordsContext.prototype.T_DIR = function() {
    return this.getToken(HiveSqlParser.T_DIR, 0);
};

Non_reserved_wordsContext.prototype.T_DIRECTORY = function() {
    return this.getToken(HiveSqlParser.T_DIRECTORY, 0);
};

Non_reserved_wordsContext.prototype.T_DISTINCT = function() {
    return this.getToken(HiveSqlParser.T_DISTINCT, 0);
};

Non_reserved_wordsContext.prototype.T_DISTRIBUTE = function() {
    return this.getToken(HiveSqlParser.T_DISTRIBUTE, 0);
};

Non_reserved_wordsContext.prototype.T_DO = function() {
    return this.getToken(HiveSqlParser.T_DO, 0);
};

Non_reserved_wordsContext.prototype.T_DOUBLE = function() {
    return this.getToken(HiveSqlParser.T_DOUBLE, 0);
};

Non_reserved_wordsContext.prototype.T_DROP = function() {
    return this.getToken(HiveSqlParser.T_DROP, 0);
};

Non_reserved_wordsContext.prototype.T_DYNAMIC = function() {
    return this.getToken(HiveSqlParser.T_DYNAMIC, 0);
};

Non_reserved_wordsContext.prototype.T_ENABLE = function() {
    return this.getToken(HiveSqlParser.T_ENABLE, 0);
};

Non_reserved_wordsContext.prototype.T_ENGINE = function() {
    return this.getToken(HiveSqlParser.T_ENGINE, 0);
};

Non_reserved_wordsContext.prototype.T_ESCAPED = function() {
    return this.getToken(HiveSqlParser.T_ESCAPED, 0);
};

Non_reserved_wordsContext.prototype.T_EXCEPT = function() {
    return this.getToken(HiveSqlParser.T_EXCEPT, 0);
};

Non_reserved_wordsContext.prototype.T_EXEC = function() {
    return this.getToken(HiveSqlParser.T_EXEC, 0);
};

Non_reserved_wordsContext.prototype.T_EXECUTE = function() {
    return this.getToken(HiveSqlParser.T_EXECUTE, 0);
};

Non_reserved_wordsContext.prototype.T_EXCEPTION = function() {
    return this.getToken(HiveSqlParser.T_EXCEPTION, 0);
};

Non_reserved_wordsContext.prototype.T_EXCLUSIVE = function() {
    return this.getToken(HiveSqlParser.T_EXCLUSIVE, 0);
};

Non_reserved_wordsContext.prototype.T_EXISTS = function() {
    return this.getToken(HiveSqlParser.T_EXISTS, 0);
};

Non_reserved_wordsContext.prototype.T_EXIT = function() {
    return this.getToken(HiveSqlParser.T_EXIT, 0);
};

Non_reserved_wordsContext.prototype.T_FALLBACK = function() {
    return this.getToken(HiveSqlParser.T_FALLBACK, 0);
};

Non_reserved_wordsContext.prototype.T_FALSE = function() {
    return this.getToken(HiveSqlParser.T_FALSE, 0);
};

Non_reserved_wordsContext.prototype.T_FETCH = function() {
    return this.getToken(HiveSqlParser.T_FETCH, 0);
};

Non_reserved_wordsContext.prototype.T_FIELDS = function() {
    return this.getToken(HiveSqlParser.T_FIELDS, 0);
};

Non_reserved_wordsContext.prototype.T_FILE = function() {
    return this.getToken(HiveSqlParser.T_FILE, 0);
};

Non_reserved_wordsContext.prototype.T_FILES = function() {
    return this.getToken(HiveSqlParser.T_FILES, 0);
};

Non_reserved_wordsContext.prototype.T_FIRST_VALUE = function() {
    return this.getToken(HiveSqlParser.T_FIRST_VALUE, 0);
};

Non_reserved_wordsContext.prototype.T_FLOAT = function() {
    return this.getToken(HiveSqlParser.T_FLOAT, 0);
};

Non_reserved_wordsContext.prototype.T_FOR = function() {
    return this.getToken(HiveSqlParser.T_FOR, 0);
};

Non_reserved_wordsContext.prototype.T_FOREIGN = function() {
    return this.getToken(HiveSqlParser.T_FOREIGN, 0);
};

Non_reserved_wordsContext.prototype.T_FORMAT = function() {
    return this.getToken(HiveSqlParser.T_FORMAT, 0);
};

Non_reserved_wordsContext.prototype.T_FOUND = function() {
    return this.getToken(HiveSqlParser.T_FOUND, 0);
};

Non_reserved_wordsContext.prototype.T_FROM = function() {
    return this.getToken(HiveSqlParser.T_FROM, 0);
};

Non_reserved_wordsContext.prototype.T_FULL = function() {
    return this.getToken(HiveSqlParser.T_FULL, 0);
};

Non_reserved_wordsContext.prototype.T_FUNCTION = function() {
    return this.getToken(HiveSqlParser.T_FUNCTION, 0);
};

Non_reserved_wordsContext.prototype.T_GET = function() {
    return this.getToken(HiveSqlParser.T_GET, 0);
};

Non_reserved_wordsContext.prototype.T_GLOBAL = function() {
    return this.getToken(HiveSqlParser.T_GLOBAL, 0);
};

Non_reserved_wordsContext.prototype.T_GO = function() {
    return this.getToken(HiveSqlParser.T_GO, 0);
};

Non_reserved_wordsContext.prototype.T_GRANT = function() {
    return this.getToken(HiveSqlParser.T_GRANT, 0);
};

Non_reserved_wordsContext.prototype.T_GROUP = function() {
    return this.getToken(HiveSqlParser.T_GROUP, 0);
};

Non_reserved_wordsContext.prototype.T_HANDLER = function() {
    return this.getToken(HiveSqlParser.T_HANDLER, 0);
};

Non_reserved_wordsContext.prototype.T_HASH = function() {
    return this.getToken(HiveSqlParser.T_HASH, 0);
};

Non_reserved_wordsContext.prototype.T_HAVING = function() {
    return this.getToken(HiveSqlParser.T_HAVING, 0);
};

Non_reserved_wordsContext.prototype.T_HDFS = function() {
    return this.getToken(HiveSqlParser.T_HDFS, 0);
};

Non_reserved_wordsContext.prototype.T_HIVE = function() {
    return this.getToken(HiveSqlParser.T_HIVE, 0);
};

Non_reserved_wordsContext.prototype.T_HOST = function() {
    return this.getToken(HiveSqlParser.T_HOST, 0);
};

Non_reserved_wordsContext.prototype.T_IDENTITY = function() {
    return this.getToken(HiveSqlParser.T_IDENTITY, 0);
};

Non_reserved_wordsContext.prototype.T_IF = function() {
    return this.getToken(HiveSqlParser.T_IF, 0);
};

Non_reserved_wordsContext.prototype.T_IGNORE = function() {
    return this.getToken(HiveSqlParser.T_IGNORE, 0);
};

Non_reserved_wordsContext.prototype.T_IMMEDIATE = function() {
    return this.getToken(HiveSqlParser.T_IMMEDIATE, 0);
};

Non_reserved_wordsContext.prototype.T_IN = function() {
    return this.getToken(HiveSqlParser.T_IN, 0);
};

Non_reserved_wordsContext.prototype.T_INCLUDE = function() {
    return this.getToken(HiveSqlParser.T_INCLUDE, 0);
};

Non_reserved_wordsContext.prototype.T_INDEX = function() {
    return this.getToken(HiveSqlParser.T_INDEX, 0);
};

Non_reserved_wordsContext.prototype.T_INITRANS = function() {
    return this.getToken(HiveSqlParser.T_INITRANS, 0);
};

Non_reserved_wordsContext.prototype.T_INNER = function() {
    return this.getToken(HiveSqlParser.T_INNER, 0);
};

Non_reserved_wordsContext.prototype.T_INOUT = function() {
    return this.getToken(HiveSqlParser.T_INOUT, 0);
};

Non_reserved_wordsContext.prototype.T_INSERT = function() {
    return this.getToken(HiveSqlParser.T_INSERT, 0);
};

Non_reserved_wordsContext.prototype.T_INT = function() {
    return this.getToken(HiveSqlParser.T_INT, 0);
};

Non_reserved_wordsContext.prototype.T_INT2 = function() {
    return this.getToken(HiveSqlParser.T_INT2, 0);
};

Non_reserved_wordsContext.prototype.T_INT4 = function() {
    return this.getToken(HiveSqlParser.T_INT4, 0);
};

Non_reserved_wordsContext.prototype.T_INT8 = function() {
    return this.getToken(HiveSqlParser.T_INT8, 0);
};

Non_reserved_wordsContext.prototype.T_INTEGER = function() {
    return this.getToken(HiveSqlParser.T_INTEGER, 0);
};

Non_reserved_wordsContext.prototype.T_INTERSECT = function() {
    return this.getToken(HiveSqlParser.T_INTERSECT, 0);
};

Non_reserved_wordsContext.prototype.T_INTERVAL = function() {
    return this.getToken(HiveSqlParser.T_INTERVAL, 0);
};

Non_reserved_wordsContext.prototype.T_INTO = function() {
    return this.getToken(HiveSqlParser.T_INTO, 0);
};

Non_reserved_wordsContext.prototype.T_INVOKER = function() {
    return this.getToken(HiveSqlParser.T_INVOKER, 0);
};

Non_reserved_wordsContext.prototype.T_ITEMS = function() {
    return this.getToken(HiveSqlParser.T_ITEMS, 0);
};

Non_reserved_wordsContext.prototype.T_IS = function() {
    return this.getToken(HiveSqlParser.T_IS, 0);
};

Non_reserved_wordsContext.prototype.T_ISOPEN = function() {
    return this.getToken(HiveSqlParser.T_ISOPEN, 0);
};

Non_reserved_wordsContext.prototype.T_JOIN = function() {
    return this.getToken(HiveSqlParser.T_JOIN, 0);
};

Non_reserved_wordsContext.prototype.T_KEEP = function() {
    return this.getToken(HiveSqlParser.T_KEEP, 0);
};

Non_reserved_wordsContext.prototype.T_KEY = function() {
    return this.getToken(HiveSqlParser.T_KEY, 0);
};

Non_reserved_wordsContext.prototype.T_KEYS = function() {
    return this.getToken(HiveSqlParser.T_KEYS, 0);
};

Non_reserved_wordsContext.prototype.T_LAG = function() {
    return this.getToken(HiveSqlParser.T_LAG, 0);
};

Non_reserved_wordsContext.prototype.T_LANGUAGE = function() {
    return this.getToken(HiveSqlParser.T_LANGUAGE, 0);
};

Non_reserved_wordsContext.prototype.T_LAST_VALUE = function() {
    return this.getToken(HiveSqlParser.T_LAST_VALUE, 0);
};

Non_reserved_wordsContext.prototype.T_LEAD = function() {
    return this.getToken(HiveSqlParser.T_LEAD, 0);
};

Non_reserved_wordsContext.prototype.T_LEAVE = function() {
    return this.getToken(HiveSqlParser.T_LEAVE, 0);
};

Non_reserved_wordsContext.prototype.T_LEFT = function() {
    return this.getToken(HiveSqlParser.T_LEFT, 0);
};

Non_reserved_wordsContext.prototype.T_LIKE = function() {
    return this.getToken(HiveSqlParser.T_LIKE, 0);
};

Non_reserved_wordsContext.prototype.T_LIMIT = function() {
    return this.getToken(HiveSqlParser.T_LIMIT, 0);
};

Non_reserved_wordsContext.prototype.T_LINES = function() {
    return this.getToken(HiveSqlParser.T_LINES, 0);
};

Non_reserved_wordsContext.prototype.T_LOCAL = function() {
    return this.getToken(HiveSqlParser.T_LOCAL, 0);
};

Non_reserved_wordsContext.prototype.T_LOCATION = function() {
    return this.getToken(HiveSqlParser.T_LOCATION, 0);
};

Non_reserved_wordsContext.prototype.T_LOCATOR = function() {
    return this.getToken(HiveSqlParser.T_LOCATOR, 0);
};

Non_reserved_wordsContext.prototype.T_LOCATORS = function() {
    return this.getToken(HiveSqlParser.T_LOCATORS, 0);
};

Non_reserved_wordsContext.prototype.T_LOCKS = function() {
    return this.getToken(HiveSqlParser.T_LOCKS, 0);
};

Non_reserved_wordsContext.prototype.T_LOG = function() {
    return this.getToken(HiveSqlParser.T_LOG, 0);
};

Non_reserved_wordsContext.prototype.T_LOGGED = function() {
    return this.getToken(HiveSqlParser.T_LOGGED, 0);
};

Non_reserved_wordsContext.prototype.T_LOGGING = function() {
    return this.getToken(HiveSqlParser.T_LOGGING, 0);
};

Non_reserved_wordsContext.prototype.T_LOOP = function() {
    return this.getToken(HiveSqlParser.T_LOOP, 0);
};

Non_reserved_wordsContext.prototype.T_MAP = function() {
    return this.getToken(HiveSqlParser.T_MAP, 0);
};

Non_reserved_wordsContext.prototype.T_MATCHED = function() {
    return this.getToken(HiveSqlParser.T_MATCHED, 0);
};

Non_reserved_wordsContext.prototype.T_MAX = function() {
    return this.getToken(HiveSqlParser.T_MAX, 0);
};

Non_reserved_wordsContext.prototype.T_MAXTRANS = function() {
    return this.getToken(HiveSqlParser.T_MAXTRANS, 0);
};

Non_reserved_wordsContext.prototype.T_MERGE = function() {
    return this.getToken(HiveSqlParser.T_MERGE, 0);
};

Non_reserved_wordsContext.prototype.T_MESSAGE_TEXT = function() {
    return this.getToken(HiveSqlParser.T_MESSAGE_TEXT, 0);
};

Non_reserved_wordsContext.prototype.T_MICROSECOND = function() {
    return this.getToken(HiveSqlParser.T_MICROSECOND, 0);
};

Non_reserved_wordsContext.prototype.T_MICROSECONDS = function() {
    return this.getToken(HiveSqlParser.T_MICROSECONDS, 0);
};

Non_reserved_wordsContext.prototype.T_MIN = function() {
    return this.getToken(HiveSqlParser.T_MIN, 0);
};

Non_reserved_wordsContext.prototype.T_MULTISET = function() {
    return this.getToken(HiveSqlParser.T_MULTISET, 0);
};

Non_reserved_wordsContext.prototype.T_NCHAR = function() {
    return this.getToken(HiveSqlParser.T_NCHAR, 0);
};

Non_reserved_wordsContext.prototype.T_NEW = function() {
    return this.getToken(HiveSqlParser.T_NEW, 0);
};

Non_reserved_wordsContext.prototype.T_NVARCHAR = function() {
    return this.getToken(HiveSqlParser.T_NVARCHAR, 0);
};

Non_reserved_wordsContext.prototype.T_NO = function() {
    return this.getToken(HiveSqlParser.T_NO, 0);
};

Non_reserved_wordsContext.prototype.T_NOCOMPRESS = function() {
    return this.getToken(HiveSqlParser.T_NOCOMPRESS, 0);
};

Non_reserved_wordsContext.prototype.T_NOCOUNT = function() {
    return this.getToken(HiveSqlParser.T_NOCOUNT, 0);
};

Non_reserved_wordsContext.prototype.T_NOLOGGING = function() {
    return this.getToken(HiveSqlParser.T_NOLOGGING, 0);
};

Non_reserved_wordsContext.prototype.T_NONE = function() {
    return this.getToken(HiveSqlParser.T_NONE, 0);
};

Non_reserved_wordsContext.prototype.T_NOT = function() {
    return this.getToken(HiveSqlParser.T_NOT, 0);
};

Non_reserved_wordsContext.prototype.T_NOTFOUND = function() {
    return this.getToken(HiveSqlParser.T_NOTFOUND, 0);
};

Non_reserved_wordsContext.prototype.T_NUMERIC = function() {
    return this.getToken(HiveSqlParser.T_NUMERIC, 0);
};

Non_reserved_wordsContext.prototype.T_NUMBER = function() {
    return this.getToken(HiveSqlParser.T_NUMBER, 0);
};

Non_reserved_wordsContext.prototype.T_OBJECT = function() {
    return this.getToken(HiveSqlParser.T_OBJECT, 0);
};

Non_reserved_wordsContext.prototype.T_OFF = function() {
    return this.getToken(HiveSqlParser.T_OFF, 0);
};

Non_reserved_wordsContext.prototype.T_ON = function() {
    return this.getToken(HiveSqlParser.T_ON, 0);
};

Non_reserved_wordsContext.prototype.T_ONLY = function() {
    return this.getToken(HiveSqlParser.T_ONLY, 0);
};

Non_reserved_wordsContext.prototype.T_OPEN = function() {
    return this.getToken(HiveSqlParser.T_OPEN, 0);
};

Non_reserved_wordsContext.prototype.T_OR = function() {
    return this.getToken(HiveSqlParser.T_OR, 0);
};

Non_reserved_wordsContext.prototype.T_ORDER = function() {
    return this.getToken(HiveSqlParser.T_ORDER, 0);
};

Non_reserved_wordsContext.prototype.T_OUT = function() {
    return this.getToken(HiveSqlParser.T_OUT, 0);
};

Non_reserved_wordsContext.prototype.T_OUTER = function() {
    return this.getToken(HiveSqlParser.T_OUTER, 0);
};

Non_reserved_wordsContext.prototype.T_OVER = function() {
    return this.getToken(HiveSqlParser.T_OVER, 0);
};

Non_reserved_wordsContext.prototype.T_OVERWRITE = function() {
    return this.getToken(HiveSqlParser.T_OVERWRITE, 0);
};

Non_reserved_wordsContext.prototype.T_OWNER = function() {
    return this.getToken(HiveSqlParser.T_OWNER, 0);
};

Non_reserved_wordsContext.prototype.T_PACKAGE = function() {
    return this.getToken(HiveSqlParser.T_PACKAGE, 0);
};

Non_reserved_wordsContext.prototype.T_PART_COUNT = function() {
    return this.getToken(HiveSqlParser.T_PART_COUNT, 0);
};

Non_reserved_wordsContext.prototype.T_PART_LOC = function() {
    return this.getToken(HiveSqlParser.T_PART_LOC, 0);
};

Non_reserved_wordsContext.prototype.T_PARTITION = function() {
    return this.getToken(HiveSqlParser.T_PARTITION, 0);
};

Non_reserved_wordsContext.prototype.T_PCTFREE = function() {
    return this.getToken(HiveSqlParser.T_PCTFREE, 0);
};

Non_reserved_wordsContext.prototype.T_PCTUSED = function() {
    return this.getToken(HiveSqlParser.T_PCTUSED, 0);
};

Non_reserved_wordsContext.prototype.T_PRECISION = function() {
    return this.getToken(HiveSqlParser.T_PRECISION, 0);
};

Non_reserved_wordsContext.prototype.T_PRESERVE = function() {
    return this.getToken(HiveSqlParser.T_PRESERVE, 0);
};

Non_reserved_wordsContext.prototype.T_PRIMARY = function() {
    return this.getToken(HiveSqlParser.T_PRIMARY, 0);
};

Non_reserved_wordsContext.prototype.T_PRINT = function() {
    return this.getToken(HiveSqlParser.T_PRINT, 0);
};

Non_reserved_wordsContext.prototype.T_PROC = function() {
    return this.getToken(HiveSqlParser.T_PROC, 0);
};

Non_reserved_wordsContext.prototype.T_PROCEDURE = function() {
    return this.getToken(HiveSqlParser.T_PROCEDURE, 0);
};

Non_reserved_wordsContext.prototype.T_PWD = function() {
    return this.getToken(HiveSqlParser.T_PWD, 0);
};

Non_reserved_wordsContext.prototype.T_QUALIFY = function() {
    return this.getToken(HiveSqlParser.T_QUALIFY, 0);
};

Non_reserved_wordsContext.prototype.T_QUERY_BAND = function() {
    return this.getToken(HiveSqlParser.T_QUERY_BAND, 0);
};

Non_reserved_wordsContext.prototype.T_QUIT = function() {
    return this.getToken(HiveSqlParser.T_QUIT, 0);
};

Non_reserved_wordsContext.prototype.T_QUOTED_IDENTIFIER = function() {
    return this.getToken(HiveSqlParser.T_QUOTED_IDENTIFIER, 0);
};

Non_reserved_wordsContext.prototype.T_RAISE = function() {
    return this.getToken(HiveSqlParser.T_RAISE, 0);
};

Non_reserved_wordsContext.prototype.T_RANK = function() {
    return this.getToken(HiveSqlParser.T_RANK, 0);
};

Non_reserved_wordsContext.prototype.T_REAL = function() {
    return this.getToken(HiveSqlParser.T_REAL, 0);
};

Non_reserved_wordsContext.prototype.T_REFERENCES = function() {
    return this.getToken(HiveSqlParser.T_REFERENCES, 0);
};

Non_reserved_wordsContext.prototype.T_REGEXP = function() {
    return this.getToken(HiveSqlParser.T_REGEXP, 0);
};

Non_reserved_wordsContext.prototype.T_RR = function() {
    return this.getToken(HiveSqlParser.T_RR, 0);
};

Non_reserved_wordsContext.prototype.T_REPLACE = function() {
    return this.getToken(HiveSqlParser.T_REPLACE, 0);
};

Non_reserved_wordsContext.prototype.T_RESIGNAL = function() {
    return this.getToken(HiveSqlParser.T_RESIGNAL, 0);
};

Non_reserved_wordsContext.prototype.T_RESTRICT = function() {
    return this.getToken(HiveSqlParser.T_RESTRICT, 0);
};

Non_reserved_wordsContext.prototype.T_RESULT = function() {
    return this.getToken(HiveSqlParser.T_RESULT, 0);
};

Non_reserved_wordsContext.prototype.T_RESULT_SET_LOCATOR = function() {
    return this.getToken(HiveSqlParser.T_RESULT_SET_LOCATOR, 0);
};

Non_reserved_wordsContext.prototype.T_RETURN = function() {
    return this.getToken(HiveSqlParser.T_RETURN, 0);
};

Non_reserved_wordsContext.prototype.T_RETURNS = function() {
    return this.getToken(HiveSqlParser.T_RETURNS, 0);
};

Non_reserved_wordsContext.prototype.T_REVERSE = function() {
    return this.getToken(HiveSqlParser.T_REVERSE, 0);
};

Non_reserved_wordsContext.prototype.T_RIGHT = function() {
    return this.getToken(HiveSqlParser.T_RIGHT, 0);
};

Non_reserved_wordsContext.prototype.T_RLIKE = function() {
    return this.getToken(HiveSqlParser.T_RLIKE, 0);
};

Non_reserved_wordsContext.prototype.T_RS = function() {
    return this.getToken(HiveSqlParser.T_RS, 0);
};

Non_reserved_wordsContext.prototype.T_ROLE = function() {
    return this.getToken(HiveSqlParser.T_ROLE, 0);
};

Non_reserved_wordsContext.prototype.T_ROLLBACK = function() {
    return this.getToken(HiveSqlParser.T_ROLLBACK, 0);
};

Non_reserved_wordsContext.prototype.T_ROW = function() {
    return this.getToken(HiveSqlParser.T_ROW, 0);
};

Non_reserved_wordsContext.prototype.T_ROWS = function() {
    return this.getToken(HiveSqlParser.T_ROWS, 0);
};

Non_reserved_wordsContext.prototype.T_ROW_COUNT = function() {
    return this.getToken(HiveSqlParser.T_ROW_COUNT, 0);
};

Non_reserved_wordsContext.prototype.T_ROW_NUMBER = function() {
    return this.getToken(HiveSqlParser.T_ROW_NUMBER, 0);
};

Non_reserved_wordsContext.prototype.T_SCHEMA = function() {
    return this.getToken(HiveSqlParser.T_SCHEMA, 0);
};

Non_reserved_wordsContext.prototype.T_SECOND = function() {
    return this.getToken(HiveSqlParser.T_SECOND, 0);
};

Non_reserved_wordsContext.prototype.T_SECONDS = function() {
    return this.getToken(HiveSqlParser.T_SECONDS, 0);
};

Non_reserved_wordsContext.prototype.T_SECURITY = function() {
    return this.getToken(HiveSqlParser.T_SECURITY, 0);
};

Non_reserved_wordsContext.prototype.T_SEGMENT = function() {
    return this.getToken(HiveSqlParser.T_SEGMENT, 0);
};

Non_reserved_wordsContext.prototype.T_SEL = function() {
    return this.getToken(HiveSqlParser.T_SEL, 0);
};

Non_reserved_wordsContext.prototype.T_SELECT = function() {
    return this.getToken(HiveSqlParser.T_SELECT, 0);
};

Non_reserved_wordsContext.prototype.T_SESSION = function() {
    return this.getToken(HiveSqlParser.T_SESSION, 0);
};

Non_reserved_wordsContext.prototype.T_SESSIONS = function() {
    return this.getToken(HiveSqlParser.T_SESSIONS, 0);
};

Non_reserved_wordsContext.prototype.T_SET = function() {
    return this.getToken(HiveSqlParser.T_SET, 0);
};

Non_reserved_wordsContext.prototype.T_SETS = function() {
    return this.getToken(HiveSqlParser.T_SETS, 0);
};

Non_reserved_wordsContext.prototype.T_SHARE = function() {
    return this.getToken(HiveSqlParser.T_SHARE, 0);
};

Non_reserved_wordsContext.prototype.T_SIGNAL = function() {
    return this.getToken(HiveSqlParser.T_SIGNAL, 0);
};

Non_reserved_wordsContext.prototype.T_SIMPLE_DOUBLE = function() {
    return this.getToken(HiveSqlParser.T_SIMPLE_DOUBLE, 0);
};

Non_reserved_wordsContext.prototype.T_SIMPLE_FLOAT = function() {
    return this.getToken(HiveSqlParser.T_SIMPLE_FLOAT, 0);
};

Non_reserved_wordsContext.prototype.T_SMALLDATETIME = function() {
    return this.getToken(HiveSqlParser.T_SMALLDATETIME, 0);
};

Non_reserved_wordsContext.prototype.T_SMALLINT = function() {
    return this.getToken(HiveSqlParser.T_SMALLINT, 0);
};

Non_reserved_wordsContext.prototype.T_SQL = function() {
    return this.getToken(HiveSqlParser.T_SQL, 0);
};

Non_reserved_wordsContext.prototype.T_SQLEXCEPTION = function() {
    return this.getToken(HiveSqlParser.T_SQLEXCEPTION, 0);
};

Non_reserved_wordsContext.prototype.T_SQLINSERT = function() {
    return this.getToken(HiveSqlParser.T_SQLINSERT, 0);
};

Non_reserved_wordsContext.prototype.T_SQLSTATE = function() {
    return this.getToken(HiveSqlParser.T_SQLSTATE, 0);
};

Non_reserved_wordsContext.prototype.T_SQLWARNING = function() {
    return this.getToken(HiveSqlParser.T_SQLWARNING, 0);
};

Non_reserved_wordsContext.prototype.T_STATS = function() {
    return this.getToken(HiveSqlParser.T_STATS, 0);
};

Non_reserved_wordsContext.prototype.T_STATISTICS = function() {
    return this.getToken(HiveSqlParser.T_STATISTICS, 0);
};

Non_reserved_wordsContext.prototype.T_STEP = function() {
    return this.getToken(HiveSqlParser.T_STEP, 0);
};

Non_reserved_wordsContext.prototype.T_STDEV = function() {
    return this.getToken(HiveSqlParser.T_STDEV, 0);
};

Non_reserved_wordsContext.prototype.T_STORAGE = function() {
    return this.getToken(HiveSqlParser.T_STORAGE, 0);
};

Non_reserved_wordsContext.prototype.T_STORED = function() {
    return this.getToken(HiveSqlParser.T_STORED, 0);
};

Non_reserved_wordsContext.prototype.T_STRING = function() {
    return this.getToken(HiveSqlParser.T_STRING, 0);
};

Non_reserved_wordsContext.prototype.T_SUBDIR = function() {
    return this.getToken(HiveSqlParser.T_SUBDIR, 0);
};

Non_reserved_wordsContext.prototype.T_SUBSTRING = function() {
    return this.getToken(HiveSqlParser.T_SUBSTRING, 0);
};

Non_reserved_wordsContext.prototype.T_SUM = function() {
    return this.getToken(HiveSqlParser.T_SUM, 0);
};

Non_reserved_wordsContext.prototype.T_SUMMARY = function() {
    return this.getToken(HiveSqlParser.T_SUMMARY, 0);
};

Non_reserved_wordsContext.prototype.T_SYSDATE = function() {
    return this.getToken(HiveSqlParser.T_SYSDATE, 0);
};

Non_reserved_wordsContext.prototype.T_SYS_REFCURSOR = function() {
    return this.getToken(HiveSqlParser.T_SYS_REFCURSOR, 0);
};

Non_reserved_wordsContext.prototype.T_TABLE = function() {
    return this.getToken(HiveSqlParser.T_TABLE, 0);
};

Non_reserved_wordsContext.prototype.T_TABLESPACE = function() {
    return this.getToken(HiveSqlParser.T_TABLESPACE, 0);
};

Non_reserved_wordsContext.prototype.T_TEMPORARY = function() {
    return this.getToken(HiveSqlParser.T_TEMPORARY, 0);
};

Non_reserved_wordsContext.prototype.T_TERMINATED = function() {
    return this.getToken(HiveSqlParser.T_TERMINATED, 0);
};

Non_reserved_wordsContext.prototype.T_TEXTIMAGE_ON = function() {
    return this.getToken(HiveSqlParser.T_TEXTIMAGE_ON, 0);
};

Non_reserved_wordsContext.prototype.T_THEN = function() {
    return this.getToken(HiveSqlParser.T_THEN, 0);
};

Non_reserved_wordsContext.prototype.T_TIMESTAMP = function() {
    return this.getToken(HiveSqlParser.T_TIMESTAMP, 0);
};

Non_reserved_wordsContext.prototype.T_TITLE = function() {
    return this.getToken(HiveSqlParser.T_TITLE, 0);
};

Non_reserved_wordsContext.prototype.T_TO = function() {
    return this.getToken(HiveSqlParser.T_TO, 0);
};

Non_reserved_wordsContext.prototype.T_TOP = function() {
    return this.getToken(HiveSqlParser.T_TOP, 0);
};

Non_reserved_wordsContext.prototype.T_TRANSACTION = function() {
    return this.getToken(HiveSqlParser.T_TRANSACTION, 0);
};

Non_reserved_wordsContext.prototype.T_TRIM = function() {
    return this.getToken(HiveSqlParser.T_TRIM, 0);
};

Non_reserved_wordsContext.prototype.T_TRUE = function() {
    return this.getToken(HiveSqlParser.T_TRUE, 0);
};

Non_reserved_wordsContext.prototype.T_TRUNCATE = function() {
    return this.getToken(HiveSqlParser.T_TRUNCATE, 0);
};

Non_reserved_wordsContext.prototype.T_UNIQUE = function() {
    return this.getToken(HiveSqlParser.T_UNIQUE, 0);
};

Non_reserved_wordsContext.prototype.T_UPDATE = function() {
    return this.getToken(HiveSqlParser.T_UPDATE, 0);
};

Non_reserved_wordsContext.prototype.T_UR = function() {
    return this.getToken(HiveSqlParser.T_UR, 0);
};

Non_reserved_wordsContext.prototype.T_USE = function() {
    return this.getToken(HiveSqlParser.T_USE, 0);
};

Non_reserved_wordsContext.prototype.T_USER = function() {
    return this.getToken(HiveSqlParser.T_USER, 0);
};

Non_reserved_wordsContext.prototype.T_USING = function() {
    return this.getToken(HiveSqlParser.T_USING, 0);
};

Non_reserved_wordsContext.prototype.T_VALUE = function() {
    return this.getToken(HiveSqlParser.T_VALUE, 0);
};

Non_reserved_wordsContext.prototype.T_VALUES = function() {
    return this.getToken(HiveSqlParser.T_VALUES, 0);
};

Non_reserved_wordsContext.prototype.T_VAR = function() {
    return this.getToken(HiveSqlParser.T_VAR, 0);
};

Non_reserved_wordsContext.prototype.T_VARCHAR = function() {
    return this.getToken(HiveSqlParser.T_VARCHAR, 0);
};

Non_reserved_wordsContext.prototype.T_VARCHAR2 = function() {
    return this.getToken(HiveSqlParser.T_VARCHAR2, 0);
};

Non_reserved_wordsContext.prototype.T_VARYING = function() {
    return this.getToken(HiveSqlParser.T_VARYING, 0);
};

Non_reserved_wordsContext.prototype.T_VARIANCE = function() {
    return this.getToken(HiveSqlParser.T_VARIANCE, 0);
};

Non_reserved_wordsContext.prototype.T_VOLATILE = function() {
    return this.getToken(HiveSqlParser.T_VOLATILE, 0);
};

Non_reserved_wordsContext.prototype.T_WHILE = function() {
    return this.getToken(HiveSqlParser.T_WHILE, 0);
};

Non_reserved_wordsContext.prototype.T_WITH = function() {
    return this.getToken(HiveSqlParser.T_WITH, 0);
};

Non_reserved_wordsContext.prototype.T_WITHOUT = function() {
    return this.getToken(HiveSqlParser.T_WITHOUT, 0);
};

Non_reserved_wordsContext.prototype.T_WORK = function() {
    return this.getToken(HiveSqlParser.T_WORK, 0);
};

Non_reserved_wordsContext.prototype.T_XACT_ABORT = function() {
    return this.getToken(HiveSqlParser.T_XACT_ABORT, 0);
};

Non_reserved_wordsContext.prototype.T_XML = function() {
    return this.getToken(HiveSqlParser.T_XML, 0);
};

Non_reserved_wordsContext.prototype.T_YES = function() {
    return this.getToken(HiveSqlParser.T_YES, 0);
};

Non_reserved_wordsContext.prototype.enterRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.enterNon_reserved_words(this);
	}
};

Non_reserved_wordsContext.prototype.exitRule = function(listener) {
    if(listener instanceof HiveSqlListener ) {
        listener.exitNon_reserved_words(this);
	}
};

Non_reserved_wordsContext.prototype.accept = function(visitor) {
    if ( visitor instanceof HiveSqlVisitor ) {
        return visitor.visitNon_reserved_words(this);
    } else {
        return visitor.visitChildren(this);
    }
};




HiveSqlParser.Non_reserved_wordsContext = Non_reserved_wordsContext;

HiveSqlParser.prototype.non_reserved_words = function() {

    var localctx = new Non_reserved_wordsContext(this, this._ctx, this.state);
    this.enterRule(localctx, 450, HiveSqlParser.RULE_non_reserved_words);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 3340;
        _la = this._input.LA(1);
        if(!((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << HiveSqlParser.T_GO) | (1 << HiveSqlParser.T_BEGIN) | (1 << HiveSqlParser.T_EXCEPTION) | (1 << HiveSqlParser.T_THEN) | (1 << HiveSqlParser.T_SET) | (1 << HiveSqlParser.T_ALLOCATE) | (1 << HiveSqlParser.T_CURSOR) | (1 << HiveSqlParser.T_FOR) | (1 << HiveSqlParser.T_RESULT) | (1 << HiveSqlParser.T_PROCEDURE) | (1 << HiveSqlParser.T_ASSOCIATE))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (HiveSqlParser.T_LOCATOR - 32)) | (1 << (HiveSqlParser.T_LOCATORS - 32)) | (1 << (HiveSqlParser.T_WITH - 32)) | (1 << (HiveSqlParser.T_TRANSACTION - 32)) | (1 << (HiveSqlParser.T_BREAK - 32)) | (1 << (HiveSqlParser.T_CALL - 32)) | (1 << (HiveSqlParser.T_DECLARE - 32)) | (1 << (HiveSqlParser.T_AS - 32)) | (1 << (HiveSqlParser.T_CONSTANT - 32)) | (1 << (HiveSqlParser.T_CONDITION - 32)) | (1 << (HiveSqlParser.T_IS - 32)) | (1 << (HiveSqlParser.T_RETURN - 32)) | (1 << (HiveSqlParser.T_ONLY - 32)) | (1 << (HiveSqlParser.T_TO - 32)) | (1 << (HiveSqlParser.T_CALLER - 32)) | (1 << (HiveSqlParser.T_CLIENT - 32)) | (1 << (HiveSqlParser.T_WITHOUT - 32)) | (1 << (HiveSqlParser.T_CONTINUE - 32)) | (1 << (HiveSqlParser.T_EXIT - 32)) | (1 << (HiveSqlParser.T_HANDLER - 32)) | (1 << (HiveSqlParser.T_SQLEXCEPTION - 32)) | (1 << (HiveSqlParser.T_SQLWARNING - 32)) | (1 << (HiveSqlParser.T_NOT - 32)) | (1 << (HiveSqlParser.T_FOUND - 32)) | (1 << (HiveSqlParser.T_GLOBAL - 32)) | (1 << (HiveSqlParser.T_TEMPORARY - 32)) | (1 << (HiveSqlParser.T_TABLE - 32)) | (1 << (HiveSqlParser.T_CREATE - 32)) | (1 << (HiveSqlParser.T_IF - 32)) | (1 << (HiveSqlParser.T_EXISTS - 32)) | (1 << (HiveSqlParser.T_LOCAL - 32)) | (1 << (HiveSqlParser.T_MULTISET - 32)))) !== 0) || ((((_la - 64)) & ~0x1f) == 0 && ((1 << (_la - 64)) & ((1 << (HiveSqlParser.T_VOLATILE - 64)) | (1 << (HiveSqlParser.T_LIKE - 64)) | (1 << (HiveSqlParser.T_CONSTRAINT - 64)) | (1 << (HiveSqlParser.T_PRIMARY - 64)) | (1 << (HiveSqlParser.T_KEY - 64)) | (1 << (HiveSqlParser.T_UNIQUE - 64)) | (1 << (HiveSqlParser.T_REFERENCES - 64)) | (1 << (HiveSqlParser.T_IDENTITY - 64)) | (1 << (HiveSqlParser.T_AUTO_INCREMENT - 64)) | (1 << (HiveSqlParser.T_ENABLE - 64)) | (1 << (HiveSqlParser.T_CLUSTERED - 64)) | (1 << (HiveSqlParser.T_ASC - 64)) | (1 << (HiveSqlParser.T_DESC - 64)) | (1 << (HiveSqlParser.T_FOREIGN - 64)) | (1 << (HiveSqlParser.T_ON - 64)) | (1 << (HiveSqlParser.T_UPDATE - 64)) | (1 << (HiveSqlParser.T_DELETE - 64)) | (1 << (HiveSqlParser.T_NO - 64)) | (1 << (HiveSqlParser.T_ACTION - 64)) | (1 << (HiveSqlParser.T_RESTRICT - 64)) | (1 << (HiveSqlParser.T_DEFAULT - 64)) | (1 << (HiveSqlParser.T_CASCADE - 64)) | (1 << (HiveSqlParser.T_LOG - 64)) | (1 << (HiveSqlParser.T_FALLBACK - 64)) | (1 << (HiveSqlParser.T_COMMIT - 64)) | (1 << (HiveSqlParser.T_PRESERVE - 64)) | (1 << (HiveSqlParser.T_ROWS - 64)) | (1 << (HiveSqlParser.T_SEGMENT - 64)) | (1 << (HiveSqlParser.T_CREATION - 64)) | (1 << (HiveSqlParser.T_IMMEDIATE - 64)) | (1 << (HiveSqlParser.T_DEFERRED - 64)))) !== 0) || ((((_la - 96)) & ~0x1f) == 0 && ((1 << (_la - 96)) & ((1 << (HiveSqlParser.T_PCTFREE - 96)) | (1 << (HiveSqlParser.T_PCTUSED - 96)) | (1 << (HiveSqlParser.T_INITRANS - 96)) | (1 << (HiveSqlParser.T_MAXTRANS - 96)) | (1 << (HiveSqlParser.T_NOCOMPRESS - 96)) | (1 << (HiveSqlParser.T_LOGGING - 96)) | (1 << (HiveSqlParser.T_NOLOGGING - 96)) | (1 << (HiveSqlParser.T_STORAGE - 96)) | (1 << (HiveSqlParser.T_TABLESPACE - 96)) | (1 << (HiveSqlParser.T_INDEX - 96)) | (1 << (HiveSqlParser.T_IN - 96)) | (1 << (HiveSqlParser.T_REPLACE - 96)) | (1 << (HiveSqlParser.T_DISTRIBUTE - 96)) | (1 << (HiveSqlParser.T_BY - 96)) | (1 << (HiveSqlParser.T_HASH - 96)) | (1 << (HiveSqlParser.T_LOGGED - 96)) | (1 << (HiveSqlParser.T_COMPRESS - 96)) | (1 << (HiveSqlParser.T_YES - 96)) | (1 << (HiveSqlParser.T_DEFINITION - 96)) | (1 << (HiveSqlParser.T_DROP - 96)) | (1 << (HiveSqlParser.T_DATA - 96)) | (1 << (HiveSqlParser.T_STORED - 96)) | (1 << (HiveSqlParser.T_ROW - 96)) | (1 << (HiveSqlParser.T_FORMAT - 96)) | (1 << (HiveSqlParser.T_DELIMITED - 96)) | (1 << (HiveSqlParser.T_FIELDS - 96)) | (1 << (HiveSqlParser.T_TERMINATED - 96)) | (1 << (HiveSqlParser.T_ESCAPED - 96)) | (1 << (HiveSqlParser.T_COLLECTION - 96)) | (1 << (HiveSqlParser.T_ITEMS - 96)) | (1 << (HiveSqlParser.T_MAP - 96)) | (1 << (HiveSqlParser.T_KEYS - 96)))) !== 0) || ((((_la - 128)) & ~0x1f) == 0 && ((1 << (_la - 128)) & ((1 << (HiveSqlParser.T_LINES - 128)) | (1 << (HiveSqlParser.T_DEFINED - 128)) | (1 << (HiveSqlParser.T_TEXTIMAGE_ON - 128)) | (1 << (HiveSqlParser.T_COMMENT - 128)) | (1 << (HiveSqlParser.T_CHARACTER - 128)) | (1 << (HiveSqlParser.T_CHARSET - 128)) | (1 << (HiveSqlParser.T_ENGINE - 128)) | (1 << (HiveSqlParser.T_ALTER - 128)) | (1 << (HiveSqlParser.T_ADD2 - 128)) | (1 << (HiveSqlParser.T_CHAR - 128)) | (1 << (HiveSqlParser.T_BIGINT - 128)) | (1 << (HiveSqlParser.T_BINARY_DOUBLE - 128)) | (1 << (HiveSqlParser.T_BINARY_FLOAT - 128)) | (1 << (HiveSqlParser.T_BIT - 128)) | (1 << (HiveSqlParser.T_DATE - 128)) | (1 << (HiveSqlParser.T_DATETIME - 128)) | (1 << (HiveSqlParser.T_DEC - 128)) | (1 << (HiveSqlParser.T_DECIMAL - 128)) | (1 << (HiveSqlParser.T_DOUBLE - 128)) | (1 << (HiveSqlParser.T_PRECISION - 128)) | (1 << (HiveSqlParser.T_FLOAT - 128)) | (1 << (HiveSqlParser.T_INT - 128)) | (1 << (HiveSqlParser.T_INT2 - 128)) | (1 << (HiveSqlParser.T_INT4 - 128)) | (1 << (HiveSqlParser.T_INT8 - 128)) | (1 << (HiveSqlParser.T_INTEGER - 128)) | (1 << (HiveSqlParser.T_NCHAR - 128)) | (1 << (HiveSqlParser.T_NVARCHAR - 128)) | (1 << (HiveSqlParser.T_NUMBER - 128)) | (1 << (HiveSqlParser.T_NUMERIC - 128)))) !== 0) || ((((_la - 160)) & ~0x1f) == 0 && ((1 << (_la - 160)) & ((1 << (HiveSqlParser.T_REAL - 160)) | (1 << (HiveSqlParser.T_RESULT_SET_LOCATOR - 160)) | (1 << (HiveSqlParser.T_VARYING - 160)) | (1 << (HiveSqlParser.T_SIMPLE_FLOAT - 160)) | (1 << (HiveSqlParser.T_SIMPLE_DOUBLE - 160)) | (1 << (HiveSqlParser.T_SMALLINT - 160)) | (1 << (HiveSqlParser.T_SMALLDATETIME - 160)) | (1 << (HiveSqlParser.T_STRING - 160)) | (1 << (HiveSqlParser.T_SYS_REFCURSOR - 160)) | (1 << (HiveSqlParser.T_TIMESTAMP - 160)) | (1 << (HiveSqlParser.T_VARCHAR - 160)) | (1 << (HiveSqlParser.T_VARCHAR2 - 160)) | (1 << (HiveSqlParser.T_XML - 160)) | (1 << (HiveSqlParser.T_MAX - 160)) | (1 << (HiveSqlParser.T_BYTE - 160)) | (1 << (HiveSqlParser.T_CASESPECIFIC - 160)) | (1 << (HiveSqlParser.T_CS - 160)) | (1 << (HiveSqlParser.T_DATABASE - 160)) | (1 << (HiveSqlParser.T_SCHEMA - 160)) | (1 << (HiveSqlParser.T_LOCATION - 160)) | (1 << (HiveSqlParser.T_OR - 160)) | (1 << (HiveSqlParser.T_FUNCTION - 160)) | (1 << (HiveSqlParser.T_RETURNS - 160)) | (1 << (HiveSqlParser.T_PACKAGE - 160)) | (1 << (HiveSqlParser.T_PROC - 160)) | (1 << (HiveSqlParser.T_BODY - 160)) | (1 << (HiveSqlParser.T_OUT - 160)) | (1 << (HiveSqlParser.T_INOUT - 160)))) !== 0) || ((((_la - 192)) & ~0x1f) == 0 && ((1 << (_la - 192)) & ((1 << (HiveSqlParser.T_LANGUAGE - 192)) | (1 << (HiveSqlParser.T_SQL - 192)) | (1 << (HiveSqlParser.T_SECURITY - 192)) | (1 << (HiveSqlParser.T_CREATOR - 192)) | (1 << (HiveSqlParser.T_DEFINER - 192)) | (1 << (HiveSqlParser.T_INVOKER - 192)) | (1 << (HiveSqlParser.T_OWNER - 192)) | (1 << (HiveSqlParser.T_DYNAMIC - 192)) | (1 << (HiveSqlParser.T_SETS - 192)) | (1 << (HiveSqlParser.T_EXEC - 192)) | (1 << (HiveSqlParser.T_EXECUTE - 192)) | (1 << (HiveSqlParser.T_INTO - 192)) | (1 << (HiveSqlParser.T_INCLUDE - 192)) | (1 << (HiveSqlParser.T_INSERT - 192)) | (1 << (HiveSqlParser.T_OVERWRITE - 192)) | (1 << (HiveSqlParser.T_VALUES - 192)) | (1 << (HiveSqlParser.T_DIRECTORY - 192)) | (1 << (HiveSqlParser.T_GET - 192)) | (1 << (HiveSqlParser.T_DIAGNOSTICS - 192)) | (1 << (HiveSqlParser.T_MESSAGE_TEXT - 192)) | (1 << (HiveSqlParser.T_ROW_COUNT - 192)) | (1 << (HiveSqlParser.T_GRANT - 192)) | (1 << (HiveSqlParser.T_ROLE - 192)) | (1 << (HiveSqlParser.T_LEAVE - 192)) | (1 << (HiveSqlParser.T_OBJECT - 192)) | (1 << (HiveSqlParser.T_AT - 192)) | (1 << (HiveSqlParser.T_OPEN - 192)) | (1 << (HiveSqlParser.T_FETCH - 192)) | (1 << (HiveSqlParser.T_FROM - 192)))) !== 0) || ((((_la - 224)) & ~0x1f) == 0 && ((1 << (_la - 224)) & ((1 << (HiveSqlParser.T_COLLECT - 224)) | (1 << (HiveSqlParser.T_STATISTICS - 224)) | (1 << (HiveSqlParser.T_STATS - 224)) | (1 << (HiveSqlParser.T_COLUMN - 224)) | (1 << (HiveSqlParser.T_CLOSE - 224)) | (1 << (HiveSqlParser.T_CMP - 224)) | (1 << (HiveSqlParser.T_SUM - 224)) | (1 << (HiveSqlParser.T_COPY - 224)) | (1 << (HiveSqlParser.T_HDFS - 224)) | (1 << (HiveSqlParser.T_BATCHSIZE - 224)) | (1 << (HiveSqlParser.T_DELIMITER - 224)) | (1 << (HiveSqlParser.T_SQLINSERT - 224)) | (1 << (HiveSqlParser.T_IGNORE - 224)) | (1 << (HiveSqlParser.T_WORK - 224)) | (1 << (HiveSqlParser.T_PRINT - 224)) | (1 << (HiveSqlParser.T_QUIT - 224)) | (1 << (HiveSqlParser.T_RAISE - 224)) | (1 << (HiveSqlParser.T_RESIGNAL - 224)) | (1 << (HiveSqlParser.T_SQLSTATE - 224)) | (1 << (HiveSqlParser.T_VALUE - 224)) | (1 << (HiveSqlParser.T_ROLLBACK - 224)) | (1 << (HiveSqlParser.T_CURRENT - 224)) | (1 << (HiveSqlParser.T_CURRENT_SCHEMA - 224)) | (1 << (HiveSqlParser.T_ANSI_NULLS - 224)) | (1 << (HiveSqlParser.T_ANSI_PADDING - 224)) | (1 << (HiveSqlParser.T_NOCOUNT - 224)) | (1 << (HiveSqlParser.T_QUOTED_IDENTIFIER - 224)) | (1 << (HiveSqlParser.T_XACT_ABORT - 224)) | (1 << (HiveSqlParser.T_OFF - 224)) | (1 << (HiveSqlParser.T_QUERY_BAND - 224)) | (1 << (HiveSqlParser.T_NONE - 224)) | (1 << (HiveSqlParser.T_SESSION - 224)))) !== 0) || ((((_la - 256)) & ~0x1f) == 0 && ((1 << (_la - 256)) & ((1 << (HiveSqlParser.T_SIGNAL - 256)) | (1 << (HiveSqlParser.T_SUMMARY - 256)) | (1 << (HiveSqlParser.T_TOP - 256)) | (1 << (HiveSqlParser.T_LIMIT - 256)) | (1 << (HiveSqlParser.T_TRUNCATE - 256)) | (1 << (HiveSqlParser.T_USE - 256)) | (1 << (HiveSqlParser.T_WHILE - 256)) | (1 << (HiveSqlParser.T_DO - 256)) | (1 << (HiveSqlParser.T_LOOP - 256)) | (1 << (HiveSqlParser.T_REVERSE - 256)) | (1 << (HiveSqlParser.T_STEP - 256)) | (1 << (HiveSqlParser.T_USING - 256)) | (1 << (HiveSqlParser.T_ALL - 256)) | (1 << (HiveSqlParser.T_EXCEPT - 256)) | (1 << (HiveSqlParser.T_INTERSECT - 256)) | (1 << (HiveSqlParser.T_SELECT - 256)) | (1 << (HiveSqlParser.T_SEL - 256)) | (1 << (HiveSqlParser.T_DISTINCT - 256)) | (1 << (HiveSqlParser.T_TITLE - 256)) | (1 << (HiveSqlParser.T_INNER - 256)) | (1 << (HiveSqlParser.T_JOIN - 256)) | (1 << (HiveSqlParser.T_LEFT - 256)) | (1 << (HiveSqlParser.T_RIGHT - 256)) | (1 << (HiveSqlParser.T_FULL - 256)) | (1 << (HiveSqlParser.T_OUTER - 256)))) !== 0) || ((((_la - 288)) & ~0x1f) == 0 && ((1 << (_la - 288)) & ((1 << (HiveSqlParser.T_GROUP - 288)) | (1 << (HiveSqlParser.T_HAVING - 288)) | (1 << (HiveSqlParser.T_QUALIFY - 288)) | (1 << (HiveSqlParser.T_ORDER - 288)) | (1 << (HiveSqlParser.T_RR - 288)) | (1 << (HiveSqlParser.T_RS - 288)) | (1 << (HiveSqlParser.T_UR - 288)) | (1 << (HiveSqlParser.T_AND - 288)) | (1 << (HiveSqlParser.T_KEEP - 288)) | (1 << (HiveSqlParser.T_EXCLUSIVE - 288)) | (1 << (HiveSqlParser.T_SHARE - 288)) | (1 << (HiveSqlParser.T_LOCKS - 288)) | (1 << (HiveSqlParser.T_MERGE - 288)) | (1 << (HiveSqlParser.T_MATCHED - 288)) | (1 << (HiveSqlParser.T_DESCRIBE - 288)) | (1 << (HiveSqlParser.T_BETWEEN - 288)) | (1 << (HiveSqlParser.T_RLIKE - 288)) | (1 << (HiveSqlParser.T_REGEXP - 288)) | (1 << (HiveSqlParser.T_INTERVAL - 288)) | (1 << (HiveSqlParser.T_DAY - 288)) | (1 << (HiveSqlParser.T_DAYS - 288)) | (1 << (HiveSqlParser.T_MICROSECOND - 288)) | (1 << (HiveSqlParser.T_MICROSECONDS - 288)))) !== 0) || ((((_la - 320)) & ~0x1f) == 0 && ((1 << (_la - 320)) & ((1 << (HiveSqlParser.T_SECOND - 320)) | (1 << (HiveSqlParser.T_SECONDS - 320)) | (1 << (HiveSqlParser.T_CONCAT - 320)) | (1 << (HiveSqlParser.T_CASE - 320)) | (1 << (HiveSqlParser.T_ISOPEN - 320)) | (1 << (HiveSqlParser.T_NOTFOUND - 320)) | (1 << (HiveSqlParser.T_AVG - 320)) | (1 << (HiveSqlParser.T_COUNT - 320)) | (1 << (HiveSqlParser.T_COUNT_BIG - 320)) | (1 << (HiveSqlParser.T_CUME_DIST - 320)) | (1 << (HiveSqlParser.T_DENSE_RANK - 320)) | (1 << (HiveSqlParser.T_FIRST_VALUE - 320)) | (1 << (HiveSqlParser.T_LAG - 320)) | (1 << (HiveSqlParser.T_LAST_VALUE - 320)) | (1 << (HiveSqlParser.T_LEAD - 320)) | (1 << (HiveSqlParser.T_MIN - 320)) | (1 << (HiveSqlParser.T_RANK - 320)) | (1 << (HiveSqlParser.T_ROW_NUMBER - 320)) | (1 << (HiveSqlParser.T_STDEV - 320)) | (1 << (HiveSqlParser.T_VAR - 320)) | (1 << (HiveSqlParser.T_VARIANCE - 320)) | (1 << (HiveSqlParser.T_OVER - 320)) | (1 << (HiveSqlParser.T_PARTITION - 320)) | (1 << (HiveSqlParser.T_ACTIVITY_COUNT - 320)) | (1 << (HiveSqlParser.T_CAST - 320)) | (1 << (HiveSqlParser.T_CURRENT_DATE - 320)) | (1 << (HiveSqlParser.T_CURRENT_TIMESTAMP - 320)) | (1 << (HiveSqlParser.T_CURRENT_USER - 320)) | (1 << (HiveSqlParser.T_USER - 320)))) !== 0) || ((((_la - 356)) & ~0x1f) == 0 && ((1 << (_la - 356)) & ((1 << (HiveSqlParser.T_PART_COUNT - 356)) | (1 << (HiveSqlParser.T_PART_LOC - 356)) | (1 << (HiveSqlParser.T_TRIM - 356)) | (1 << (HiveSqlParser.T_SUBSTRING - 356)) | (1 << (HiveSqlParser.T_SYSDATE - 356)) | (1 << (HiveSqlParser.T_HIVE - 356)) | (1 << (HiveSqlParser.T_HOST - 356)) | (1 << (HiveSqlParser.T_TRUE - 356)) | (1 << (HiveSqlParser.T_FALSE - 356)) | (1 << (HiveSqlParser.T_DIR - 356)) | (1 << (HiveSqlParser.T_FILE - 356)) | (1 << (HiveSqlParser.T_FILES - 356)) | (1 << (HiveSqlParser.T_NEW - 356)) | (1 << (HiveSqlParser.T_PWD - 356)) | (1 << (HiveSqlParser.T_SESSIONS - 356)) | (1 << (HiveSqlParser.T_SUBDIR - 356)))) !== 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;
};


HiveSqlParser.prototype.sempred = function(localctx, ruleIndex, predIndex) {
	switch(ruleIndex) {
	case 4:
			return this.block_end_sempred(localctx, predIndex);
	case 11:
			return this.expr_stmt_sempred(localctx, predIndex);
	case 74:
			return this.create_routine_params_sempred(localctx, predIndex);
	case 152:
			return this.select_list_alias_sempred(localctx, predIndex);
	case 163:
			return this.from_alias_clause_sempred(localctx, predIndex);
	case 181:
			return this.delete_alias_sempred(localctx, predIndex);
	case 183:
			return this.bool_expr_sempred(localctx, predIndex);
	case 191:
			return this.expr_sempred(localctx, predIndex);
	case 208:
			return this.func_param_sempred(localctx, predIndex);
    default:
        throw "No predicate with index:" + ruleIndex;
   }
};

HiveSqlParser.prototype.block_end_sempred = function(localctx, predIndex) {
	switch(predIndex) {
		case 0:
			return !this._input.LT(2).getText().equalsIgnoreCase("TRANSACTION");
		default:
			throw "No predicate with index:" + predIndex;
	}
};

HiveSqlParser.prototype.expr_stmt_sempred = function(localctx, predIndex) {
	switch(predIndex) {
		case 1:
			return !this._input.LT(1).getText().equalsIgnoreCase("GO");
		default:
			throw "No predicate with index:" + predIndex;
	}
};

HiveSqlParser.prototype.create_routine_params_sempred = function(localctx, predIndex) {
	switch(predIndex) {
		case 2:
			return !this._input.LT(1).getText().equalsIgnoreCase("IS") &&
		        !this._input.LT(1).getText().equalsIgnoreCase("AS") &&
		        !(this._input.LT(1).getText().equalsIgnoreCase("DYNAMIC") && this._input.LT(2).getText().equalsIgnoreCase("RESULT"))
		        ;
		default:
			throw "No predicate with index:" + predIndex;
	}
};

HiveSqlParser.prototype.select_list_alias_sempred = function(localctx, predIndex) {
	switch(predIndex) {
		case 3:
			return !this._input.LT(1).getText().equalsIgnoreCase("INTO") && !this._input.LT(1).getText().equalsIgnoreCase("FROM");
		default:
			throw "No predicate with index:" + predIndex;
	}
};

HiveSqlParser.prototype.from_alias_clause_sempred = function(localctx, predIndex) {
	switch(predIndex) {
		case 4:
			return !this._input.LT(1).getText().equalsIgnoreCase("EXEC") &&
		        !this._input.LT(1).getText().equalsIgnoreCase("EXECUTE") && 
		        !this._input.LT(1).getText().equalsIgnoreCase("INNER") &&
		        !this._input.LT(1).getText().equalsIgnoreCase("LEFT") &&
		        !this._input.LT(1).getText().equalsIgnoreCase("GROUP") &&
		        !this._input.LT(1).getText().equalsIgnoreCase("ORDER") &&
		        !this._input.LT(1).getText().equalsIgnoreCase("LIMIT") &&
		        !this._input.LT(1).getText().equalsIgnoreCase("WITH");
		default:
			throw "No predicate with index:" + predIndex;
	}
};

HiveSqlParser.prototype.delete_alias_sempred = function(localctx, predIndex) {
	switch(predIndex) {
		case 5:
			return !this._input.LT(1).getText().equalsIgnoreCase("ALL");
		default:
			throw "No predicate with index:" + predIndex;
	}
};

HiveSqlParser.prototype.bool_expr_sempred = function(localctx, predIndex) {
	switch(predIndex) {
		case 6:
			return this.precpred(this._ctx, 2);
		default:
			throw "No predicate with index:" + predIndex;
	}
};

HiveSqlParser.prototype.expr_sempred = function(localctx, predIndex) {
	switch(predIndex) {
		case 7:
			return this.precpred(this._ctx, 14);
		case 8:
			return this.precpred(this._ctx, 13);
		case 9:
			return this.precpred(this._ctx, 12);
		case 10:
			return this.precpred(this._ctx, 11);
		case 11:
			return this.precpred(this._ctx, 15);
		default:
			throw "No predicate with index:" + predIndex;
	}
};

HiveSqlParser.prototype.func_param_sempred = function(localctx, predIndex) {
	switch(predIndex) {
		case 12:
			return !this._input.LT(1).getText().equalsIgnoreCase("INTO");
		default:
			throw "No predicate with index:" + predIndex;
	}
};


exports.HiveSqlParser = HiveSqlParser;
