Skip to content

Instantly share code, notes, and snippets.

@stevenhao
Created November 27, 2018 11:56
Show Gist options
  • Save stevenhao/94d989155bb768a48c23dedd19ada221 to your computer and use it in GitHub Desktop.
Save stevenhao/94d989155bb768a48c23dedd19ada221 to your computer and use it in GitHub Desktop.
Browserified, antlr-generated parser
This file has been truncated, but you can view the full file.
// ==UserScript==
// @name Presto Parser
// @namespace http://tampermonkey.net/
// @version 0.1
// @description try to take over the world!
// @author You
// @match https://modeanalytics.com/editor/*
// @grant none
// ==/UserScript==
(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
// Generated from SqlBase.g4 by ANTLR 4.7.1
// jshint ignore: start
var antlr4 = require('antlr4/index');
var serializedATN = ["\u0003\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964",
"\u0002\u00dd\u07d7\b\u0001\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\u0004",
"1\t1\u00042\t2\u00043\t3\u00044\t4\u00045\t5\u00046\t6\u00047\t7\u0004",
"8\t8\u00049\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\u0004",
"F\tF\u0004G\tG\u0004H\tH\u0004I\tI\u0004J\tJ\u0004K\tK\u0004L\tL\u0004",
"M\tM\u0004N\tN\u0004O\tO\u0004P\tP\u0004Q\tQ\u0004R\tR\u0004S\tS\u0004",
"T\tT\u0004U\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\u0004",
"b\tb\u0004c\tc\u0004d\td\u0004e\te\u0004f\tf\u0004g\tg\u0004h\th\u0004",
"i\ti\u0004j\tj\u0004k\tk\u0004l\tl\u0004m\tm\u0004n\tn\u0004o\to\u0004",
"p\tp\u0004q\tq\u0004r\tr\u0004s\ts\u0004t\tt\u0004u\tu\u0004v\tv\u0004",
"w\tw\u0004x\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\u0003\u0002\u0003",
"\u0002\u0003\u0003\u0003\u0003\u0003\u0004\u0003\u0004\u0003\u0005\u0003",
"\u0005\u0003\u0006\u0003\u0006\u0003\u0007\u0003\u0007\u0003\u0007\u0003",
"\b\u0003\b\u0003\t\u0003\t\u0003\n\u0003\n\u0003\n\u0003\u000b\u0003",
"\u000b\u0003\u000b\u0003\u000b\u0003\f\u0003\f\u0003\f\u0003\f\u0003",
"\r\u0003\r\u0003\r\u0003\r\u0003\r\u0003\r\u0003\u000e\u0003\u000e\u0003",
"\u000e\u0003\u000e\u0003\u000e\u0003\u000e\u0003\u000e\u0003\u000e\u0003",
"\u000f\u0003\u000f\u0003\u000f\u0003\u000f\u0003\u0010\u0003\u0010\u0003",
"\u0010\u0003\u0010\u0003\u0011\u0003\u0011\u0003\u0011\u0003\u0011\u0003",
"\u0011\u0003\u0011\u0003\u0012\u0003\u0012\u0003\u0012\u0003\u0013\u0003",
"\u0013\u0003\u0013\u0003\u0013\u0003\u0014\u0003\u0014\u0003\u0014\u0003",
"\u0015\u0003\u0015\u0003\u0015\u0003\u0015\u0003\u0015\u0003\u0015\u0003",
"\u0015\u0003\u0015\u0003\u0015\u0003\u0015\u0003\u0016\u0003\u0016\u0003",
"\u0016\u0003\u0016\u0003\u0016\u0003\u0016\u0003\u0016\u0003\u0016\u0003",
"\u0017\u0003\u0017\u0003\u0017\u0003\u0018\u0003\u0018\u0003\u0018\u0003",
"\u0018\u0003\u0018\u0003\u0019\u0003\u0019\u0003\u0019\u0003\u0019\u0003",
"\u0019\u0003\u0019\u0003\u0019\u0003\u0019\u0003\u001a\u0003\u001a\u0003",
"\u001a\u0003\u001a\u0003\u001a\u0003\u001b\u0003\u001b\u0003\u001b\u0003",
"\u001b\u0003\u001b\u0003\u001c\u0003\u001c\u0003\u001c\u0003\u001c\u0003",
"\u001c\u0003\u001c\u0003\u001c\u0003\u001c\u0003\u001c\u0003\u001d\u0003",
"\u001d\u0003\u001d\u0003\u001d\u0003\u001d\u0003\u001d\u0003\u001d\u0003",
"\u001e\u0003\u001e\u0003\u001e\u0003\u001e\u0003\u001e\u0003\u001e\u0003",
"\u001e\u0003\u001e\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003",
"\u001f\u0003\u001f\u0003\u001f\u0003\u001f\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#\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\'\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)\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+\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/\u0003/\u0003/\u0003/\u0003/\u0003",
"0\u00030\u00030\u00030\u00030\u00030\u00030\u00031\u00031\u00031\u0003",
"1\u00031\u00032\u00032\u00032\u00032\u00032\u00032\u00032\u00032\u0003",
"2\u00033\u00033\u00033\u00033\u00033\u00033\u00033\u00033\u00033\u0003",
"4\u00034\u00034\u00034\u00034\u00034\u00034\u00034\u00034\u00034\u0003",
"4\u00034\u00035\u00035\u00035\u00035\u00035\u00036\u00036\u00036\u0003",
"6\u00036\u00037\u00037\u00037\u00037\u00038\u00038\u00038\u00038\u0003",
"8\u00038\u00038\u00039\u00039\u00039\u00039\u00039\u00039\u00039\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=\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@\u0003A\u0003A\u0003A\u0003A\u0003A\u0003A\u0003",
"B\u0003B\u0003B\u0003B\u0003B\u0003B\u0003B\u0003B\u0003B\u0003B\u0003",
"C\u0003C\u0003C\u0003C\u0003D\u0003D\u0003D\u0003D\u0003D\u0003D\u0003",
"D\u0003E\u0003E\u0003E\u0003E\u0003E\u0003F\u0003F\u0003F\u0003F\u0003",
"F\u0003G\u0003G\u0003G\u0003G\u0003G\u0003G\u0003G\u0003G\u0003G\u0003",
"G\u0003H\u0003H\u0003H\u0003H\u0003H\u0003H\u0003I\u0003I\u0003I\u0003",
"I\u0003I\u0003I\u0003I\u0003J\u0003J\u0003J\u0003J\u0003J\u0003J\u0003",
"J\u0003J\u0003J\u0003K\u0003K\u0003K\u0003K\u0003K\u0003K\u0003L\u0003",
"L\u0003L\u0003L\u0003L\u0003L\u0003L\u0003L\u0003L\u0003M\u0003M\u0003",
"M\u0003M\u0003M\u0003M\u0003M\u0003N\u0003N\u0003N\u0003N\u0003N\u0003",
"O\u0003O\u0003O\u0003P\u0003P\u0003P\u0003Q\u0003Q\u0003Q\u0003Q\u0003",
"Q\u0003Q\u0003Q\u0003Q\u0003Q\u0003Q\u0003R\u0003R\u0003R\u0003R\u0003",
"R\u0003R\u0003S\u0003S\u0003S\u0003S\u0003S\u0003S\u0003T\u0003T\u0003",
"T\u0003T\u0003T\u0003T\u0003T\u0003U\u0003U\u0003U\u0003U\u0003U\u0003",
"U\u0003U\u0003U\u0003U\u0003U\u0003V\u0003V\u0003V\u0003V\u0003V\u0003",
"V\u0003V\u0003V\u0003V\u0003W\u0003W\u0003W\u0003W\u0003W\u0003X\u0003",
"X\u0003X\u0003Y\u0003Y\u0003Y\u0003Z\u0003Z\u0003Z\u0003Z\u0003Z\u0003",
"Z\u0003Z\u0003Z\u0003Z\u0003Z\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`\u0003`\u0003`\u0003`\u0003`\u0003`\u0003",
"a\u0003a\u0003a\u0003a\u0003a\u0003b\u0003b\u0003b\u0003b\u0003b\u0003",
"b\u0003c\u0003c\u0003c\u0003c\u0003c\u0003c\u0003c\u0003c\u0003c\u0003",
"c\u0003d\u0003d\u0003d\u0003d\u0003d\u0003d\u0003d\u0003d\u0003d\u0003",
"d\u0003d\u0003d\u0003d\u0003d\u0003d\u0003e\u0003e\u0003e\u0003e\u0003",
"e\u0003e\u0003e\u0003e\u0003f\u0003f\u0003f\u0003f\u0003g\u0003g\u0003",
"g\u0003g\u0003g\u0003g\u0003g\u0003h\u0003h\u0003h\u0003h\u0003h\u0003",
"h\u0003i\u0003i\u0003i\u0003i\u0003i\u0003i\u0003i\u0003i\u0003j\u0003",
"j\u0003j\u0003j\u0003k\u0003k\u0003k\u0003k\u0003l\u0003l\u0003l\u0003",
"l\u0003l\u0003m\u0003m\u0003m\u0003m\u0003m\u0003n\u0003n\u0003n\u0003",
"o\u0003o\u0003o\u0003o\u0003o\u0003o\u0003o\u0003o\u0003o\u0003o\u0003",
"p\u0003p\u0003p\u0003p\u0003q\u0003q\u0003q\u0003q\u0003q\u0003r\u0003",
"r\u0003r\u0003r\u0003r\u0003r\u0003r\u0003s\u0003s\u0003s\u0003s\u0003",
"s\u0003s\u0003t\u0003t\u0003t\u0003u\u0003u\u0003u\u0003u\u0003u\u0003",
"v\u0003v\u0003v\u0003v\u0003v\u0003v\u0003v\u0003w\u0003w\u0003w\u0003",
"x\u0003x\u0003x\u0003x\u0003x\u0003x\u0003y\u0003y\u0003y\u0003y\u0003",
"y\u0003y\u0003y\u0003y\u0003y\u0003y\u0003y\u0003z\u0003z\u0003z\u0003",
"z\u0003z\u0003z\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~\u0003~\u0003~\u0003~\u0003~\u0003\u007f\u0003\u007f\u0003\u007f",
"\u0003\u007f\u0003\u007f\u0003\u0080\u0003\u0080\u0003\u0080\u0003\u0080",
"\u0003\u0080\u0003\u0080\u0003\u0080\u0003\u0080\u0003\u0080\u0003\u0081",
"\u0003\u0081\u0003\u0081\u0003\u0081\u0003\u0081\u0003\u0081\u0003\u0081",
"\u0003\u0081\u0003\u0081\u0003\u0081\u0003\u0082\u0003\u0082\u0003\u0082",
"\u0003\u0082\u0003\u0082\u0003\u0082\u0003\u0082\u0003\u0082\u0003\u0083",
"\u0003\u0083\u0003\u0083\u0003\u0083\u0003\u0083\u0003\u0083\u0003\u0083",
"\u0003\u0083\u0003\u0083\u0003\u0083\u0003\u0083\u0003\u0084\u0003\u0084",
"\u0003\u0084\u0003\u0084\u0003\u0084\u0003\u0084\u0003\u0084\u0003\u0084",
"\u0003\u0084\u0003\u0084\u0003\u0084\u0003\u0085\u0003\u0085\u0003\u0085",
"\u0003\u0085\u0003\u0085\u0003\u0085\u0003\u0085\u0003\u0086\u0003\u0086",
"\u0003\u0086\u0003\u0086\u0003\u0086\u0003\u0086\u0003\u0087\u0003\u0087",
"\u0003\u0087\u0003\u0087\u0003\u0087\u0003\u0088\u0003\u0088\u0003\u0088",
"\u0003\u0088\u0003\u0088\u0003\u0088\u0003\u0088\u0003\u0088\u0003\u0088",
"\u0003\u0088\u0003\u0089\u0003\u0089\u0003\u0089\u0003\u0089\u0003\u0089",
"\u0003\u0089\u0003\u0089\u0003\u008a\u0003\u008a\u0003\u008a\u0003\u008a",
"\u0003\u008a\u0003\u008a\u0003\u008a\u0003\u008a\u0003\u008a\u0003\u008a",
"\u0003\u008a\u0003\u008b\u0003\u008b\u0003\u008b\u0003\u008b\u0003\u008b",
"\u0003\u008b\u0003\u008b\u0003\u008b\u0003\u008c\u0003\u008c\u0003\u008c",
"\u0003\u008c\u0003\u008c\u0003\u008c\u0003\u008d\u0003\u008d\u0003\u008d",
"\u0003\u008d\u0003\u008d\u0003\u008d\u0003\u008d\u0003\u008d\u0003\u008d",
"\u0003\u008e\u0003\u008e\u0003\u008e\u0003\u008e\u0003\u008e\u0003\u008e",
"\u0003\u008e\u0003\u008f\u0003\u008f\u0003\u008f\u0003\u008f\u0003\u008f",
"\u0003\u008f\u0003\u0090\u0003\u0090\u0003\u0090\u0003\u0090\u0003\u0090",
"\u0003\u0090\u0003\u0090\u0003\u0090\u0003\u0090\u0003\u0091\u0003\u0091",
"\u0003\u0091\u0003\u0091\u0003\u0091\u0003\u0091\u0003\u0091\u0003\u0092",
"\u0003\u0092\u0003\u0092\u0003\u0092\u0003\u0093\u0003\u0093\u0003\u0093",
"\u0003\u0093\u0003\u0093\u0003\u0094\u0003\u0094\u0003\u0094\u0003\u0094",
"\u0003\u0094\u0003\u0094\u0003\u0094\u0003\u0095\u0003\u0095\u0003\u0095",
"\u0003\u0095\u0003\u0095\u0003\u0095\u0003\u0095\u0003\u0095\u0003\u0096",
"\u0003\u0096\u0003\u0096\u0003\u0096\u0003\u0096\u0003\u0096\u0003\u0096",
"\u0003\u0097\u0003\u0097\u0003\u0097\u0003\u0097\u0003\u0097\u0003\u0097",
"\u0003\u0097\u0003\u0098\u0003\u0098\u0003\u0098\u0003\u0098\u0003\u0098",
"\u0003\u0098\u0003\u0098\u0003\u0098\u0003\u0098\u0003\u0098\u0003\u0098",
"\u0003\u0098\u0003\u0098\u0003\u0099\u0003\u0099\u0003\u0099\u0003\u0099",
"\u0003\u0099\u0003\u0099\u0003\u0099\u0003\u0099\u0003\u009a\u0003\u009a",
"\u0003\u009a\u0003\u009a\u0003\u009b\u0003\u009b\u0003\u009b\u0003\u009b",
"\u0003\u009b\u0003\u009c\u0003\u009c\u0003\u009c\u0003\u009c\u0003\u009c",
"\u0003\u009d\u0003\u009d\u0003\u009d\u0003\u009d\u0003\u009d\u0003\u009e",
"\u0003\u009e\u0003\u009e\u0003\u009e\u0003\u009e\u0003\u009e\u0003\u009f",
"\u0003\u009f\u0003\u009f\u0003\u009f\u0003\u009f\u0003\u009f\u0003\u00a0",
"\u0003\u00a0\u0003\u00a0\u0003\u00a0\u0003\u00a0\u0003\u00a0\u0003\u00a0",
"\u0003\u00a0\u0003\u00a0\u0003\u00a0\u0003\u00a1\u0003\u00a1\u0003\u00a1",
"\u0003\u00a1\u0003\u00a1\u0003\u00a1\u0003\u00a1\u0003\u00a2\u0003\u00a2",
"\u0003\u00a2\u0003\u00a2\u0003\u00a2\u0003\u00a2\u0003\u00a3\u0003\u00a3",
"\u0003\u00a3\u0003\u00a3\u0003\u00a3\u0003\u00a3\u0003\u00a3\u0003\u00a4",
"\u0003\u00a4\u0003\u00a4\u0003\u00a4\u0003\u00a4\u0003\u00a4\u0003\u00a4",
"\u0003\u00a4\u0003\u00a4\u0003\u00a4\u0003\u00a4\u0003\u00a4\u0003\u00a5",
"\u0003\u00a5\u0003\u00a5\u0003\u00a5\u0003\u00a5\u0003\u00a6\u0003\u00a6",
"\u0003\u00a6\u0003\u00a6\u0003\u00a6\u0003\u00a7\u0003\u00a7\u0003\u00a7",
"\u0003\u00a7\u0003\u00a7\u0003\u00a8\u0003\u00a8\u0003\u00a8\u0003\u00a8",
"\u0003\u00a8\u0003\u00a8\u0003\u00a8\u0003\u00a8\u0003\u00a8\u0003\u00a8",
"\u0003\u00a9\u0003\u00a9\u0003\u00a9\u0003\u00aa\u0003\u00aa\u0003\u00aa",
"\u0003\u00aa\u0003\u00aa\u0003\u00aa\u0003\u00aa\u0003\u00aa\u0003\u00aa",
"\u0003\u00aa\u0003\u00aa\u0003\u00aa\u0003\u00ab\u0003\u00ab\u0003\u00ab",
"\u0003\u00ab\u0003\u00ab\u0003\u00ac\u0003\u00ac\u0003\u00ac\u0003\u00ac",
"\u0003\u00ac\u0003\u00ac\u0003\u00ac\u0003\u00ac\u0003\u00ac\u0003\u00ad",
"\u0003\u00ad\u0003\u00ad\u0003\u00ad\u0003\u00ad\u0003\u00ae\u0003\u00ae",
"\u0003\u00ae\u0003\u00ae\u0003\u00ae\u0003\u00ae\u0003\u00ae\u0003\u00ae",
"\u0003\u00af\u0003\u00af\u0003\u00af\u0003\u00af\u0003\u00af\u0003\u00af",
"\u0003\u00af\u0003\u00af\u0003\u00af\u0003\u00af\u0003\u00b0\u0003\u00b0",
"\u0003\u00b0\u0003\u00b0\u0003\u00b0\u0003\u00b0\u0003\u00b0\u0003\u00b0",
"\u0003\u00b0\u0003\u00b0\u0003\u00b0\u0003\u00b0\u0003\u00b1\u0003\u00b1",
"\u0003\u00b1\u0003\u00b1\u0003\u00b1\u0003\u00b1\u0003\u00b2\u0003\u00b2",
"\u0003\u00b2\u0003\u00b2\u0003\u00b2\u0003\u00b2\u0003\u00b2\u0003\u00b3",
"\u0003\u00b3\u0003\u00b3\u0003\u00b3\u0003\u00b4\u0003\u00b4\u0003\u00b4",
"\u0003\u00b4\u0003\u00b4\u0003\u00b4\u0003\u00b5\u0003\u00b5\u0003\u00b5",
"\u0003\u00b5\u0003\u00b5\u0003\u00b5\u0003\u00b5\u0003\u00b5\u0003\u00b5",
"\u0003\u00b6\u0003\u00b6\u0003\u00b6\u0003\u00b6\u0003\u00b6\u0003\u00b6",
"\u0003\u00b6\u0003\u00b7\u0003\u00b7\u0003\u00b7\u0003\u00b7\u0003\u00b7",
"\u0003\u00b7\u0003\u00b7\u0003\u00b7\u0003\u00b8\u0003\u00b8\u0003\u00b8",
"\u0003\u00b8\u0003\u00b8\u0003\u00b9\u0003\u00b9\u0003\u00b9\u0003\u00b9",
"\u0003\u00b9\u0003\u00ba\u0003\u00ba\u0003\u00ba\u0003\u00ba\u0003\u00ba",
"\u0003\u00ba\u0003\u00bb\u0003\u00bb\u0003\u00bb\u0003\u00bb\u0003\u00bb",
"\u0003\u00bc\u0003\u00bc\u0003\u00bc\u0003\u00bc\u0003\u00bc\u0003\u00bd",
"\u0003\u00bd\u0003\u00bd\u0003\u00bd\u0003\u00bd\u0003\u00bd\u0003\u00be",
"\u0003\u00be\u0003\u00be\u0003\u00be\u0003\u00be\u0003\u00bf\u0003\u00bf",
"\u0003\u00bf\u0003\u00bf\u0003\u00bf\u0003\u00c0\u0003\u00c0\u0003\u00c1",
"\u0003\u00c1\u0003\u00c1\u0003\u00c1\u0005\u00c1\u06c4\n\u00c1\u0003",
"\u00c2\u0003\u00c2\u0003\u00c3\u0003\u00c3\u0003\u00c3\u0003\u00c4\u0003",
"\u00c4\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c6\u0003\u00c6\u0003",
"\u00c7\u0003\u00c7\u0003\u00c8\u0003\u00c8\u0003\u00c9\u0003\u00c9\u0003",
"\u00ca\u0003\u00ca\u0003\u00cb\u0003\u00cb\u0003\u00cb\u0003\u00cc\u0003",
"\u00cc\u0003\u00cc\u0003\u00cc\u0007\u00cc\u06e1\n\u00cc\f\u00cc\u000e",
"\u00cc\u06e4\u000b\u00cc\u0003\u00cc\u0003\u00cc\u0003\u00cd\u0003\u00cd",
"\u0003\u00cd\u0003\u00cd\u0003\u00cd\u0003\u00cd\u0003\u00cd\u0007\u00cd",
"\u06ef\n\u00cd\f\u00cd\u000e\u00cd\u06f2\u000b\u00cd\u0003\u00cd\u0003",
"\u00cd\u0003\u00ce\u0003\u00ce\u0003\u00ce\u0003\u00ce\u0007\u00ce\u06fa",
"\n\u00ce\f\u00ce\u000e\u00ce\u06fd\u000b\u00ce\u0003\u00ce\u0003\u00ce",
"\u0003\u00cf\u0006\u00cf\u0702\n\u00cf\r\u00cf\u000e\u00cf\u0703\u0003",
"\u00d0\u0006\u00d0\u0707\n\u00d0\r\u00d0\u000e\u00d0\u0708\u0003\u00d0",
"\u0003\u00d0\u0007\u00d0\u070d\n\u00d0\f\u00d0\u000e\u00d0\u0710\u000b",
"\u00d0\u0003\u00d0\u0003\u00d0\u0006\u00d0\u0714\n\u00d0\r\u00d0\u000e",
"\u00d0\u0715\u0005\u00d0\u0718\n\u00d0\u0003\u00d1\u0006\u00d1\u071b",
"\n\u00d1\r\u00d1\u000e\u00d1\u071c\u0003\u00d1\u0003\u00d1\u0007\u00d1",
"\u0721\n\u00d1\f\u00d1\u000e\u00d1\u0724\u000b\u00d1\u0005\u00d1\u0726",
"\n\u00d1\u0003\u00d1\u0003\u00d1\u0003\u00d1\u0003\u00d1\u0006\u00d1",
"\u072c\n\u00d1\r\u00d1\u000e\u00d1\u072d\u0003\u00d1\u0003\u00d1\u0005",
"\u00d1\u0732\n\u00d1\u0003\u00d2\u0003\u00d2\u0005\u00d2\u0736\n\u00d2",
"\u0003\u00d2\u0003\u00d2\u0003\u00d2\u0007\u00d2\u073b\n\u00d2\f\u00d2",
"\u000e\u00d2\u073e\u000b\u00d2\u0003\u00d3\u0003\u00d3\u0003\u00d3\u0003",
"\u00d3\u0006\u00d3\u0744\n\u00d3\r\u00d3\u000e\u00d3\u0745\u0003\u00d4",
"\u0003\u00d4\u0003\u00d4\u0003\u00d4\u0007\u00d4\u074c\n\u00d4\f\u00d4",
"\u000e\u00d4\u074f\u000b\u00d4\u0003\u00d4\u0003\u00d4\u0003\u00d5\u0003",
"\u00d5\u0003\u00d5\u0003\u00d5\u0007\u00d5\u0757\n\u00d5\f\u00d5\u000e",
"\u00d5\u075a\u000b\u00d5\u0003\u00d5\u0003\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\u0003\u00d6\u0003\u00d6",
"\u0003\u00d6\u0003\u00d6\u0003\u00d6\u0003\u00d6\u0003\u00d6\u0003\u00d6",
"\u0003\u00d6\u0003\u00d6\u0003\u00d6\u0003\u00d7\u0003\u00d7\u0003\u00d7",
"\u0003\u00d7\u0003\u00d7\u0003\u00d7\u0003\u00d7\u0003\u00d7\u0003\u00d7",
"\u0003\u00d7\u0003\u00d7\u0003\u00d7\u0003\u00d7\u0003\u00d7\u0003\u00d7",
"\u0003\u00d7\u0003\u00d7\u0003\u00d7\u0003\u00d7\u0003\u00d7\u0003\u00d7",
"\u0003\u00d7\u0003\u00d7\u0003\u00d7\u0003\u00d7\u0003\u00d7\u0003\u00d7",
"\u0003\u00d7\u0003\u00d8\u0003\u00d8\u0003\u00d8\u0003\u00d8\u0003\u00d8",
"\u0003\u00d8\u0003\u00d8\u0003\u00d8\u0003\u00d8\u0003\u00d8\u0003\u00d8",
"\u0003\u00d8\u0003\u00d8\u0003\u00d8\u0003\u00d8\u0003\u00d8\u0003\u00d8",
"\u0003\u00d8\u0003\u00d9\u0003\u00d9\u0005\u00d9\u07a5\n\u00d9\u0003",
"\u00d9\u0006\u00d9\u07a8\n\u00d9\r\u00d9\u000e\u00d9\u07a9\u0003\u00da",
"\u0003\u00da\u0003\u00db\u0003\u00db\u0003\u00dc\u0003\u00dc\u0003\u00dc",
"\u0003\u00dc\u0007\u00dc\u07b4\n\u00dc\f\u00dc\u000e\u00dc\u07b7\u000b",
"\u00dc\u0003\u00dc\u0005\u00dc\u07ba\n\u00dc\u0003\u00dc\u0005\u00dc",
"\u07bd\n\u00dc\u0003\u00dc\u0003\u00dc\u0003\u00dd\u0003\u00dd\u0003",
"\u00dd\u0003\u00dd\u0007\u00dd\u07c5\n\u00dd\f\u00dd\u000e\u00dd\u07c8",
"\u000b\u00dd\u0003\u00dd\u0003\u00dd\u0003\u00dd\u0003\u00dd\u0003\u00dd",
"\u0003\u00de\u0006\u00de\u07d0\n\u00de\r\u00de\u000e\u00de\u07d1\u0003",
"\u00de\u0003\u00de\u0003\u00df\u0003\u00df\u0003\u07c6\u0002\u00e0\u0003",
"\u0003\u0005\u0004\u0007\u0005\t\u0006\u000b\u0007\r\b\u000f\t\u0011",
"\n\u0013\u000b\u0015\f\u0017\r\u0019\u000e\u001b\u000f\u001d\u0010\u001f",
"\u0011!\u0012#\u0013%\u0014\'\u0015)\u0016+\u0017-\u0018/\u00191\u001a",
"3\u001b5\u001c7\u001d9\u001e;\u001f= ?!A\"C#E$G%I&K\'M(O)Q*S+U,W-Y.",
"[/]0_1a2c3e4g5i6k7m8o9q:s;u<w=y>{?}@\u007fA\u0081B\u0083C\u0085D\u0087",
"E\u0089F\u008bG\u008dH\u008fI\u0091J\u0093K\u0095L\u0097M\u0099N\u009b",
"O\u009dP\u009fQ\u00a1R\u00a3S\u00a5T\u00a7U\u00a9V\u00abW\u00adX\u00af",
"Y\u00b1Z\u00b3[\u00b5\\\u00b7]\u00b9^\u00bb_\u00bd`\u00bfa\u00c1b\u00c3",
"c\u00c5d\u00c7e\u00c9f\u00cbg\u00cdh\u00cfi\u00d1j\u00d3k\u00d5l\u00d7",
"m\u00d9n\u00dbo\u00ddp\u00dfq\u00e1r\u00e3s\u00e5t\u00e7u\u00e9v\u00eb",
"w\u00edx\u00efy\u00f1z\u00f3{\u00f5|\u00f7}\u00f9~\u00fb\u007f\u00fd",
"\u0080\u00ff\u0081\u0101\u0082\u0103\u0083\u0105\u0084\u0107\u0085\u0109",
"\u0086\u010b\u0087\u010d\u0088\u010f\u0089\u0111\u008a\u0113\u008b\u0115",
"\u008c\u0117\u008d\u0119\u008e\u011b\u008f\u011d\u0090\u011f\u0091\u0121",
"\u0092\u0123\u0093\u0125\u0094\u0127\u0095\u0129\u0096\u012b\u0097\u012d",
"\u0098\u012f\u0099\u0131\u009a\u0133\u009b\u0135\u009c\u0137\u009d\u0139",
"\u009e\u013b\u009f\u013d\u00a0\u013f\u00a1\u0141\u00a2\u0143\u00a3\u0145",
"\u00a4\u0147\u00a5\u0149\u00a6\u014b\u00a7\u014d\u00a8\u014f\u00a9\u0151",
"\u00aa\u0153\u00ab\u0155\u00ac\u0157\u00ad\u0159\u00ae\u015b\u00af\u015d",
"\u00b0\u015f\u00b1\u0161\u00b2\u0163\u00b3\u0165\u00b4\u0167\u00b5\u0169",
"\u00b6\u016b\u00b7\u016d\u00b8\u016f\u00b9\u0171\u00ba\u0173\u00bb\u0175",
"\u00bc\u0177\u00bd\u0179\u00be\u017b\u00bf\u017d\u00c0\u017f\u00c1\u0181",
"\u00c2\u0183\u00c3\u0185\u00c4\u0187\u00c5\u0189\u00c6\u018b\u00c7\u018d",
"\u00c8\u018f\u00c9\u0191\u00ca\u0193\u00cb\u0195\u00cc\u0197\u00cd\u0199",
"\u00ce\u019b\u00cf\u019d\u00d0\u019f\u00d1\u01a1\u00d2\u01a3\u00d3\u01a5",
"\u00d4\u01a7\u00d5\u01a9\u00d6\u01ab\u00d7\u01ad\u00d8\u01af\u00d9\u01b1",
"\u0002\u01b3\u0002\u01b5\u0002\u01b7\u00da\u01b9\u00db\u01bb\u00dc\u01bd",
"\u00dd\u0003\u0002\u000b\u0003\u0002))\u0005\u0002<<BBaa\u0003\u0002",
"$$\u0003\u0002bb\u0004\u0002--//\u0003\u00022;\u0003\u0002C\\\u0004",
"\u0002\f\f\u000f\u000f\u0005\u0002\u000b\f\u000f\u000f\"\"\u0002\u07f5",
"\u0002\u0003\u0003\u0002\u0002\u0002\u0002\u0005\u0003\u0002\u0002\u0002",
"\u0002\u0007\u0003\u0002\u0002\u0002\u0002\t\u0003\u0002\u0002\u0002",
"\u0002\u000b\u0003\u0002\u0002\u0002\u0002\r\u0003\u0002\u0002\u0002",
"\u0002\u000f\u0003\u0002\u0002\u0002\u0002\u0011\u0003\u0002\u0002\u0002",
"\u0002\u0013\u0003\u0002\u0002\u0002\u0002\u0015\u0003\u0002\u0002\u0002",
"\u0002\u0017\u0003\u0002\u0002\u0002\u0002\u0019\u0003\u0002\u0002\u0002",
"\u0002\u001b\u0003\u0002\u0002\u0002\u0002\u001d\u0003\u0002\u0002\u0002",
"\u0002\u001f\u0003\u0002\u0002\u0002\u0002!\u0003\u0002\u0002\u0002",
"\u0002#\u0003\u0002\u0002\u0002\u0002%\u0003\u0002\u0002\u0002\u0002",
"\'\u0003\u0002\u0002\u0002\u0002)\u0003\u0002\u0002\u0002\u0002+\u0003",
"\u0002\u0002\u0002\u0002-\u0003\u0002\u0002\u0002\u0002/\u0003\u0002",
"\u0002\u0002\u00021\u0003\u0002\u0002\u0002\u00023\u0003\u0002\u0002",
"\u0002\u00025\u0003\u0002\u0002\u0002\u00027\u0003\u0002\u0002\u0002",
"\u00029\u0003\u0002\u0002\u0002\u0002;\u0003\u0002\u0002\u0002\u0002",
"=\u0003\u0002\u0002\u0002\u0002?\u0003\u0002\u0002\u0002\u0002A\u0003",
"\u0002\u0002\u0002\u0002C\u0003\u0002\u0002\u0002\u0002E\u0003\u0002",
"\u0002\u0002\u0002G\u0003\u0002\u0002\u0002\u0002I\u0003\u0002\u0002",
"\u0002\u0002K\u0003\u0002\u0002\u0002\u0002M\u0003\u0002\u0002\u0002",
"\u0002O\u0003\u0002\u0002\u0002\u0002Q\u0003\u0002\u0002\u0002\u0002",
"S\u0003\u0002\u0002\u0002\u0002U\u0003\u0002\u0002\u0002\u0002W\u0003",
"\u0002\u0002\u0002\u0002Y\u0003\u0002\u0002\u0002\u0002[\u0003\u0002",
"\u0002\u0002\u0002]\u0003\u0002\u0002\u0002\u0002_\u0003\u0002\u0002",
"\u0002\u0002a\u0003\u0002\u0002\u0002\u0002c\u0003\u0002\u0002\u0002",
"\u0002e\u0003\u0002\u0002\u0002\u0002g\u0003\u0002\u0002\u0002\u0002",
"i\u0003\u0002\u0002\u0002\u0002k\u0003\u0002\u0002\u0002\u0002m\u0003",
"\u0002\u0002\u0002\u0002o\u0003\u0002\u0002\u0002\u0002q\u0003\u0002",
"\u0002\u0002\u0002s\u0003\u0002\u0002\u0002\u0002u\u0003\u0002\u0002",
"\u0002\u0002w\u0003\u0002\u0002\u0002\u0002y\u0003\u0002\u0002\u0002",
"\u0002{\u0003\u0002\u0002\u0002\u0002}\u0003\u0002\u0002\u0002\u0002",
"\u007f\u0003\u0002\u0002\u0002\u0002\u0081\u0003\u0002\u0002\u0002\u0002",
"\u0083\u0003\u0002\u0002\u0002\u0002\u0085\u0003\u0002\u0002\u0002\u0002",
"\u0087\u0003\u0002\u0002\u0002\u0002\u0089\u0003\u0002\u0002\u0002\u0002",
"\u008b\u0003\u0002\u0002\u0002\u0002\u008d\u0003\u0002\u0002\u0002\u0002",
"\u008f\u0003\u0002\u0002\u0002\u0002\u0091\u0003\u0002\u0002\u0002\u0002",
"\u0093\u0003\u0002\u0002\u0002\u0002\u0095\u0003\u0002\u0002\u0002\u0002",
"\u0097\u0003\u0002\u0002\u0002\u0002\u0099\u0003\u0002\u0002\u0002\u0002",
"\u009b\u0003\u0002\u0002\u0002\u0002\u009d\u0003\u0002\u0002\u0002\u0002",
"\u009f\u0003\u0002\u0002\u0002\u0002\u00a1\u0003\u0002\u0002\u0002\u0002",
"\u00a3\u0003\u0002\u0002\u0002\u0002\u00a5\u0003\u0002\u0002\u0002\u0002",
"\u00a7\u0003\u0002\u0002\u0002\u0002\u00a9\u0003\u0002\u0002\u0002\u0002",
"\u00ab\u0003\u0002\u0002\u0002\u0002\u00ad\u0003\u0002\u0002\u0002\u0002",
"\u00af\u0003\u0002\u0002\u0002\u0002\u00b1\u0003\u0002\u0002\u0002\u0002",
"\u00b3\u0003\u0002\u0002\u0002\u0002\u00b5\u0003\u0002\u0002\u0002\u0002",
"\u00b7\u0003\u0002\u0002\u0002\u0002\u00b9\u0003\u0002\u0002\u0002\u0002",
"\u00bb\u0003\u0002\u0002\u0002\u0002\u00bd\u0003\u0002\u0002\u0002\u0002",
"\u00bf\u0003\u0002\u0002\u0002\u0002\u00c1\u0003\u0002\u0002\u0002\u0002",
"\u00c3\u0003\u0002\u0002\u0002\u0002\u00c5\u0003\u0002\u0002\u0002\u0002",
"\u00c7\u0003\u0002\u0002\u0002\u0002\u00c9\u0003\u0002\u0002\u0002\u0002",
"\u00cb\u0003\u0002\u0002\u0002\u0002\u00cd\u0003\u0002\u0002\u0002\u0002",
"\u00cf\u0003\u0002\u0002\u0002\u0002\u00d1\u0003\u0002\u0002\u0002\u0002",
"\u00d3\u0003\u0002\u0002\u0002\u0002\u00d5\u0003\u0002\u0002\u0002\u0002",
"\u00d7\u0003\u0002\u0002\u0002\u0002\u00d9\u0003\u0002\u0002\u0002\u0002",
"\u00db\u0003\u0002\u0002\u0002\u0002\u00dd\u0003\u0002\u0002\u0002\u0002",
"\u00df\u0003\u0002\u0002\u0002\u0002\u00e1\u0003\u0002\u0002\u0002\u0002",
"\u00e3\u0003\u0002\u0002\u0002\u0002\u00e5\u0003\u0002\u0002\u0002\u0002",
"\u00e7\u0003\u0002\u0002\u0002\u0002\u00e9\u0003\u0002\u0002\u0002\u0002",
"\u00eb\u0003\u0002\u0002\u0002\u0002\u00ed\u0003\u0002\u0002\u0002\u0002",
"\u00ef\u0003\u0002\u0002\u0002\u0002\u00f1\u0003\u0002\u0002\u0002\u0002",
"\u00f3\u0003\u0002\u0002\u0002\u0002\u00f5\u0003\u0002\u0002\u0002\u0002",
"\u00f7\u0003\u0002\u0002\u0002\u0002\u00f9\u0003\u0002\u0002\u0002\u0002",
"\u00fb\u0003\u0002\u0002\u0002\u0002\u00fd\u0003\u0002\u0002\u0002\u0002",
"\u00ff\u0003\u0002\u0002\u0002\u0002\u0101\u0003\u0002\u0002\u0002\u0002",
"\u0103\u0003\u0002\u0002\u0002\u0002\u0105\u0003\u0002\u0002\u0002\u0002",
"\u0107\u0003\u0002\u0002\u0002\u0002\u0109\u0003\u0002\u0002\u0002\u0002",
"\u010b\u0003\u0002\u0002\u0002\u0002\u010d\u0003\u0002\u0002\u0002\u0002",
"\u010f\u0003\u0002\u0002\u0002\u0002\u0111\u0003\u0002\u0002\u0002\u0002",
"\u0113\u0003\u0002\u0002\u0002\u0002\u0115\u0003\u0002\u0002\u0002\u0002",
"\u0117\u0003\u0002\u0002\u0002\u0002\u0119\u0003\u0002\u0002\u0002\u0002",
"\u011b\u0003\u0002\u0002\u0002\u0002\u011d\u0003\u0002\u0002\u0002\u0002",
"\u011f\u0003\u0002\u0002\u0002\u0002\u0121\u0003\u0002\u0002\u0002\u0002",
"\u0123\u0003\u0002\u0002\u0002\u0002\u0125\u0003\u0002\u0002\u0002\u0002",
"\u0127\u0003\u0002\u0002\u0002\u0002\u0129\u0003\u0002\u0002\u0002\u0002",
"\u012b\u0003\u0002\u0002\u0002\u0002\u012d\u0003\u0002\u0002\u0002\u0002",
"\u012f\u0003\u0002\u0002\u0002\u0002\u0131\u0003\u0002\u0002\u0002\u0002",
"\u0133\u0003\u0002\u0002\u0002\u0002\u0135\u0003\u0002\u0002\u0002\u0002",
"\u0137\u0003\u0002\u0002\u0002\u0002\u0139\u0003\u0002\u0002\u0002\u0002",
"\u013b\u0003\u0002\u0002\u0002\u0002\u013d\u0003\u0002\u0002\u0002\u0002",
"\u013f\u0003\u0002\u0002\u0002\u0002\u0141\u0003\u0002\u0002\u0002\u0002",
"\u0143\u0003\u0002\u0002\u0002\u0002\u0145\u0003\u0002\u0002\u0002\u0002",
"\u0147\u0003\u0002\u0002\u0002\u0002\u0149\u0003\u0002\u0002\u0002\u0002",
"\u014b\u0003\u0002\u0002\u0002\u0002\u014d\u0003\u0002\u0002\u0002\u0002",
"\u014f\u0003\u0002\u0002\u0002\u0002\u0151\u0003\u0002\u0002\u0002\u0002",
"\u0153\u0003\u0002\u0002\u0002\u0002\u0155\u0003\u0002\u0002\u0002\u0002",
"\u0157\u0003\u0002\u0002\u0002\u0002\u0159\u0003\u0002\u0002\u0002\u0002",
"\u015b\u0003\u0002\u0002\u0002\u0002\u015d\u0003\u0002\u0002\u0002\u0002",
"\u015f\u0003\u0002\u0002\u0002\u0002\u0161\u0003\u0002\u0002\u0002\u0002",
"\u0163\u0003\u0002\u0002\u0002\u0002\u0165\u0003\u0002\u0002\u0002\u0002",
"\u0167\u0003\u0002\u0002\u0002\u0002\u0169\u0003\u0002\u0002\u0002\u0002",
"\u016b\u0003\u0002\u0002\u0002\u0002\u016d\u0003\u0002\u0002\u0002\u0002",
"\u016f\u0003\u0002\u0002\u0002\u0002\u0171\u0003\u0002\u0002\u0002\u0002",
"\u0173\u0003\u0002\u0002\u0002\u0002\u0175\u0003\u0002\u0002\u0002\u0002",
"\u0177\u0003\u0002\u0002\u0002\u0002\u0179\u0003\u0002\u0002\u0002\u0002",
"\u017b\u0003\u0002\u0002\u0002\u0002\u017d\u0003\u0002\u0002\u0002\u0002",
"\u017f\u0003\u0002\u0002\u0002\u0002\u0181\u0003\u0002\u0002\u0002\u0002",
"\u0183\u0003\u0002\u0002\u0002\u0002\u0185\u0003\u0002\u0002\u0002\u0002",
"\u0187\u0003\u0002\u0002\u0002\u0002\u0189\u0003\u0002\u0002\u0002\u0002",
"\u018b\u0003\u0002\u0002\u0002\u0002\u018d\u0003\u0002\u0002\u0002\u0002",
"\u018f\u0003\u0002\u0002\u0002\u0002\u0191\u0003\u0002\u0002\u0002\u0002",
"\u0193\u0003\u0002\u0002\u0002\u0002\u0195\u0003\u0002\u0002\u0002\u0002",
"\u0197\u0003\u0002\u0002\u0002\u0002\u0199\u0003\u0002\u0002\u0002\u0002",
"\u019b\u0003\u0002\u0002\u0002\u0002\u019d\u0003\u0002\u0002\u0002\u0002",
"\u019f\u0003\u0002\u0002\u0002\u0002\u01a1\u0003\u0002\u0002\u0002\u0002",
"\u01a3\u0003\u0002\u0002\u0002\u0002\u01a5\u0003\u0002\u0002\u0002\u0002",
"\u01a7\u0003\u0002\u0002\u0002\u0002\u01a9\u0003\u0002\u0002\u0002\u0002",
"\u01ab\u0003\u0002\u0002\u0002\u0002\u01ad\u0003\u0002\u0002\u0002\u0002",
"\u01af\u0003\u0002\u0002\u0002\u0002\u01b7\u0003\u0002\u0002\u0002\u0002",
"\u01b9\u0003\u0002\u0002\u0002\u0002\u01bb\u0003\u0002\u0002\u0002\u0002",
"\u01bd\u0003\u0002\u0002\u0002\u0003\u01bf\u0003\u0002\u0002\u0002\u0005",
"\u01c1\u0003\u0002\u0002\u0002\u0007\u01c3\u0003\u0002\u0002\u0002\t",
"\u01c5\u0003\u0002\u0002\u0002\u000b\u01c7\u0003\u0002\u0002\u0002\r",
"\u01c9\u0003\u0002\u0002\u0002\u000f\u01cc\u0003\u0002\u0002\u0002\u0011",
"\u01ce\u0003\u0002\u0002\u0002\u0013\u01d0\u0003\u0002\u0002\u0002\u0015",
"\u01d3\u0003\u0002\u0002\u0002\u0017\u01d7\u0003\u0002\u0002\u0002\u0019",
"\u01db\u0003\u0002\u0002\u0002\u001b\u01e1\u0003\u0002\u0002\u0002\u001d",
"\u01e9\u0003\u0002\u0002\u0002\u001f\u01ed\u0003\u0002\u0002\u0002!",
"\u01f1\u0003\u0002\u0002\u0002#\u01f7\u0003\u0002\u0002\u0002%\u01fa",
"\u0003\u0002\u0002\u0002\'\u01fe\u0003\u0002\u0002\u0002)\u0201\u0003",
"\u0002\u0002\u0002+\u020b\u0003\u0002\u0002\u0002-\u0213\u0003\u0002",
"\u0002\u0002/\u0216\u0003\u0002\u0002\u00021\u021b\u0003\u0002\u0002",
"\u00023\u0223\u0003\u0002\u0002\u00025\u0228\u0003\u0002\u0002\u0002",
"7\u022d\u0003\u0002\u0002\u00029\u0236\u0003\u0002\u0002\u0002;\u023d",
"\u0003\u0002\u0002\u0002=\u0245\u0003\u0002\u0002\u0002?\u024d\u0003",
"\u0002\u0002\u0002A\u0254\u0003\u0002\u0002\u0002C\u025e\u0003\u0002",
"\u0002\u0002E\u0269\u0003\u0002\u0002\u0002G\u0270\u0003\u0002\u0002",
"\u0002I\u0276\u0003\u0002\u0002\u0002K\u027b\u0003\u0002\u0002\u0002",
"M\u0283\u0003\u0002\u0002\u0002O\u0290\u0003\u0002\u0002\u0002Q\u029d",
"\u0003\u0002\u0002\u0002S\u02aa\u0003\u0002\u0002\u0002U\u02bc\u0003",
"\u0002\u0002\u0002W\u02c9\u0003\u0002\u0002\u0002Y\u02ce\u0003\u0002",
"\u0002\u0002[\u02d3\u0003\u0002\u0002\u0002]\u02d7\u0003\u0002\u0002",
"\u0002_\u02e2\u0003\u0002\u0002\u0002a\u02e9\u0003\u0002\u0002\u0002",
"c\u02ee\u0003\u0002\u0002\u0002e\u02f7\u0003\u0002\u0002\u0002g\u0300",
"\u0003\u0002\u0002\u0002i\u030c\u0003\u0002\u0002\u0002k\u0311\u0003",
"\u0002\u0002\u0002m\u0316\u0003\u0002\u0002\u0002o\u031a\u0003\u0002",
"\u0002\u0002q\u0321\u0003\u0002\u0002\u0002s\u0328\u0003\u0002\u0002",
"\u0002u\u0332\u0003\u0002\u0002\u0002w\u033a\u0003\u0002\u0002\u0002",
"y\u0341\u0003\u0002\u0002\u0002{\u0349\u0003\u0002\u0002\u0002}\u0351",
"\u0003\u0002\u0002\u0002\u007f\u0357\u0003\u0002\u0002\u0002\u0081\u035e",
"\u0003\u0002\u0002\u0002\u0083\u0364\u0003\u0002\u0002\u0002\u0085\u036e",
"\u0003\u0002\u0002\u0002\u0087\u0372\u0003\u0002\u0002\u0002\u0089\u0379",
"\u0003\u0002\u0002\u0002\u008b\u037e\u0003\u0002\u0002\u0002\u008d\u0383",
"\u0003\u0002\u0002\u0002\u008f\u038d\u0003\u0002\u0002\u0002\u0091\u0393",
"\u0003\u0002\u0002\u0002\u0093\u039a\u0003\u0002\u0002\u0002\u0095\u03a3",
"\u0003\u0002\u0002\u0002\u0097\u03a9\u0003\u0002\u0002\u0002\u0099\u03b2",
"\u0003\u0002\u0002\u0002\u009b\u03b9\u0003\u0002\u0002\u0002\u009d\u03be",
"\u0003\u0002\u0002\u0002\u009f\u03c1\u0003\u0002\u0002\u0002\u00a1\u03c4",
"\u0003\u0002\u0002\u0002\u00a3\u03ce\u0003\u0002\u0002\u0002\u00a5\u03d4",
"\u0003\u0002\u0002\u0002\u00a7\u03da\u0003\u0002\u0002\u0002\u00a9\u03e1",
"\u0003\u0002\u0002\u0002\u00ab\u03eb\u0003\u0002\u0002\u0002\u00ad\u03f4",
"\u0003\u0002\u0002\u0002\u00af\u03f9\u0003\u0002\u0002\u0002\u00b1\u03fc",
"\u0003\u0002\u0002\u0002\u00b3\u03ff\u0003\u0002\u0002\u0002\u00b5\u0409",
"\u0003\u0002\u0002\u0002\u00b7\u040e\u0003\u0002\u0002\u0002\u00b9\u0413",
"\u0003\u0002\u0002\u0002\u00bb\u0418\u0003\u0002\u0002\u0002\u00bd\u0420",
"\u0003\u0002\u0002\u0002\u00bf\u0425\u0003\u0002\u0002\u0002\u00c1\u042b",
"\u0003\u0002\u0002\u0002\u00c3\u0430\u0003\u0002\u0002\u0002\u00c5\u0436",
"\u0003\u0002\u0002\u0002\u00c7\u0440\u0003\u0002\u0002\u0002\u00c9\u044f",
"\u0003\u0002\u0002\u0002\u00cb\u0457\u0003\u0002\u0002\u0002\u00cd\u045b",
"\u0003\u0002\u0002\u0002\u00cf\u0462\u0003\u0002\u0002\u0002\u00d1\u0468",
"\u0003\u0002\u0002\u0002\u00d3\u0470\u0003\u0002\u0002\u0002\u00d5\u0474",
"\u0003\u0002\u0002\u0002\u00d7\u0478\u0003\u0002\u0002\u0002\u00d9\u047d",
"\u0003\u0002\u0002\u0002\u00db\u0482\u0003\u0002\u0002\u0002\u00dd\u0485",
"\u0003\u0002\u0002\u0002\u00df\u048f\u0003\u0002\u0002\u0002\u00e1\u0493",
"\u0003\u0002\u0002\u0002\u00e3\u0498\u0003\u0002\u0002\u0002\u00e5\u049f",
"\u0003\u0002\u0002\u0002\u00e7\u04a5\u0003\u0002\u0002\u0002\u00e9\u04a8",
"\u0003\u0002\u0002\u0002\u00eb\u04ad\u0003\u0002\u0002\u0002\u00ed\u04b4",
"\u0003\u0002\u0002\u0002\u00ef\u04b7\u0003\u0002\u0002\u0002\u00f1\u04bd",
"\u0003\u0002\u0002\u0002\u00f3\u04c8\u0003\u0002\u0002\u0002\u00f5\u04ce",
"\u0003\u0002\u0002\u0002\u00f7\u04d5\u0003\u0002\u0002\u0002\u00f9\u04da",
"\u0003\u0002\u0002\u0002\u00fb\u04e4\u0003\u0002\u0002\u0002\u00fd\u04ef",
"\u0003\u0002\u0002\u0002\u00ff\u04f4\u0003\u0002\u0002\u0002\u0101\u04fd",
"\u0003\u0002\u0002\u0002\u0103\u0507\u0003\u0002\u0002\u0002\u0105\u050f",
"\u0003\u0002\u0002\u0002\u0107\u051a\u0003\u0002\u0002\u0002\u0109\u0525",
"\u0003\u0002\u0002\u0002\u010b\u052c\u0003\u0002\u0002\u0002\u010d\u0532",
"\u0003\u0002\u0002\u0002\u010f\u0537\u0003\u0002\u0002\u0002\u0111\u0541",
"\u0003\u0002\u0002\u0002\u0113\u0548\u0003\u0002\u0002\u0002\u0115\u0553",
"\u0003\u0002\u0002\u0002\u0117\u055b\u0003\u0002\u0002\u0002\u0119\u0561",
"\u0003\u0002\u0002\u0002\u011b\u056a\u0003\u0002\u0002\u0002\u011d\u0571",
"\u0003\u0002\u0002\u0002\u011f\u0577\u0003\u0002\u0002\u0002\u0121\u0580",
"\u0003\u0002\u0002\u0002\u0123\u0587\u0003\u0002\u0002\u0002\u0125\u058b",
"\u0003\u0002\u0002\u0002\u0127\u0590\u0003\u0002\u0002\u0002\u0129\u0597",
"\u0003\u0002\u0002\u0002\u012b\u059f\u0003\u0002\u0002\u0002\u012d\u05a6",
"\u0003\u0002\u0002\u0002\u012f\u05ad\u0003\u0002\u0002\u0002\u0131\u05ba",
"\u0003\u0002\u0002\u0002\u0133\u05c2\u0003\u0002\u0002\u0002\u0135\u05c6",
"\u0003\u0002\u0002\u0002\u0137\u05cb\u0003\u0002\u0002\u0002\u0139\u05d0",
"\u0003\u0002\u0002\u0002\u013b\u05d5\u0003\u0002\u0002\u0002\u013d\u05db",
"\u0003\u0002\u0002\u0002\u013f\u05e1\u0003\u0002\u0002\u0002\u0141\u05eb",
"\u0003\u0002\u0002\u0002\u0143\u05f2\u0003\u0002\u0002\u0002\u0145\u05f8",
"\u0003\u0002\u0002\u0002\u0147\u05ff\u0003\u0002\u0002\u0002\u0149\u060b",
"\u0003\u0002\u0002\u0002\u014b\u0610\u0003\u0002\u0002\u0002\u014d\u0615",
"\u0003\u0002\u0002\u0002\u014f\u061a\u0003\u0002\u0002\u0002\u0151\u0624",
"\u0003\u0002\u0002\u0002\u0153\u0627\u0003\u0002\u0002\u0002\u0155\u0633",
"\u0003\u0002\u0002\u0002\u0157\u0638\u0003\u0002\u0002\u0002\u0159\u0641",
"\u0003\u0002\u0002\u0002\u015b\u0646\u0003\u0002\u0002\u0002\u015d\u064e",
"\u0003\u0002\u0002\u0002\u015f\u0658\u0003\u0002\u0002\u0002\u0161\u0664",
"\u0003\u0002\u0002\u0002\u0163\u066a\u0003\u0002\u0002\u0002\u0165\u0671",
"\u0003\u0002\u0002\u0002\u0167\u0675\u0003\u0002\u0002\u0002\u0169\u067b",
"\u0003\u0002\u0002\u0002\u016b\u0684\u0003\u0002\u0002\u0002\u016d\u068b",
"\u0003\u0002\u0002\u0002\u016f\u0693\u0003\u0002\u0002\u0002\u0171\u0698",
"\u0003\u0002\u0002\u0002\u0173\u069d\u0003\u0002\u0002\u0002\u0175\u06a3",
"\u0003\u0002\u0002\u0002\u0177\u06a8\u0003\u0002\u0002\u0002\u0179\u06ad",
"\u0003\u0002\u0002\u0002\u017b\u06b3\u0003\u0002\u0002\u0002\u017d\u06b8",
"\u0003\u0002\u0002\u0002\u017f\u06bd\u0003\u0002\u0002\u0002\u0181\u06c3",
"\u0003\u0002\u0002\u0002\u0183\u06c5\u0003\u0002\u0002\u0002\u0185\u06c7",
"\u0003\u0002\u0002\u0002\u0187\u06ca\u0003\u0002\u0002\u0002\u0189\u06cc",
"\u0003\u0002\u0002\u0002\u018b\u06cf\u0003\u0002\u0002\u0002\u018d\u06d1",
"\u0003\u0002\u0002\u0002\u018f\u06d3\u0003\u0002\u0002\u0002\u0191\u06d5",
"\u0003\u0002\u0002\u0002\u0193\u06d7\u0003\u0002\u0002\u0002\u0195\u06d9",
"\u0003\u0002\u0002\u0002\u0197\u06dc\u0003\u0002\u0002\u0002\u0199\u06e7",
"\u0003\u0002\u0002\u0002\u019b\u06f5\u0003\u0002\u0002\u0002\u019d\u0701",
"\u0003\u0002\u0002\u0002\u019f\u0717\u0003\u0002\u0002\u0002\u01a1\u0731",
"\u0003\u0002\u0002\u0002\u01a3\u0735\u0003\u0002\u0002\u0002\u01a5\u073f",
"\u0003\u0002\u0002\u0002\u01a7\u0747\u0003\u0002\u0002\u0002\u01a9\u0752",
"\u0003\u0002\u0002\u0002\u01ab\u075d\u0003\u0002\u0002\u0002\u01ad\u0774",
"\u0003\u0002\u0002\u0002\u01af\u0790\u0003\u0002\u0002\u0002\u01b1\u07a2",
"\u0003\u0002\u0002\u0002\u01b3\u07ab\u0003\u0002\u0002\u0002\u01b5\u07ad",
"\u0003\u0002\u0002\u0002\u01b7\u07af\u0003\u0002\u0002\u0002\u01b9\u07c0",
"\u0003\u0002\u0002\u0002\u01bb\u07cf\u0003\u0002\u0002\u0002\u01bd\u07d5",
"\u0003\u0002\u0002\u0002\u01bf\u01c0\u00070\u0002\u0002\u01c0\u0004",
"\u0003\u0002\u0002\u0002\u01c1\u01c2\u0007*\u0002\u0002\u01c2\u0006",
"\u0003\u0002\u0002\u0002\u01c3\u01c4\u0007+\u0002\u0002\u01c4\b\u0003",
"\u0002\u0002\u0002\u01c5\u01c6\u0007.\u0002\u0002\u01c6\n\u0003\u0002",
"\u0002\u0002\u01c7\u01c8\u0007A\u0002\u0002\u01c8\f\u0003\u0002\u0002",
"\u0002\u01c9\u01ca\u0007/\u0002\u0002\u01ca\u01cb\u0007@\u0002\u0002",
"\u01cb\u000e\u0003\u0002\u0002\u0002\u01cc\u01cd\u0007]\u0002\u0002",
"\u01cd\u0010\u0003\u0002\u0002\u0002\u01ce\u01cf\u0007_\u0002\u0002",
"\u01cf\u0012\u0003\u0002\u0002\u0002\u01d0\u01d1\u0007?\u0002\u0002",
"\u01d1\u01d2\u0007@\u0002\u0002\u01d2\u0014\u0003\u0002\u0002\u0002",
"\u01d3\u01d4\u0007C\u0002\u0002\u01d4\u01d5\u0007F\u0002\u0002\u01d5",
"\u01d6\u0007F\u0002\u0002\u01d6\u0016\u0003\u0002\u0002\u0002\u01d7",
"\u01d8\u0007C\u0002\u0002\u01d8\u01d9\u0007N\u0002\u0002\u01d9\u01da",
"\u0007N\u0002\u0002\u01da\u0018\u0003\u0002\u0002\u0002\u01db\u01dc",
"\u0007C\u0002\u0002\u01dc\u01dd\u0007N\u0002\u0002\u01dd\u01de\u0007",
"V\u0002\u0002\u01de\u01df\u0007G\u0002\u0002\u01df\u01e0\u0007T\u0002",
"\u0002\u01e0\u001a\u0003\u0002\u0002\u0002\u01e1\u01e2\u0007C\u0002",
"\u0002\u01e2\u01e3\u0007P\u0002\u0002\u01e3\u01e4\u0007C\u0002\u0002",
"\u01e4\u01e5\u0007N\u0002\u0002\u01e5\u01e6\u0007[\u0002\u0002\u01e6",
"\u01e7\u0007\\\u0002\u0002\u01e7\u01e8\u0007G\u0002\u0002\u01e8\u001c",
"\u0003\u0002\u0002\u0002\u01e9\u01ea\u0007C\u0002\u0002\u01ea\u01eb",
"\u0007P\u0002\u0002\u01eb\u01ec\u0007F\u0002\u0002\u01ec\u001e\u0003",
"\u0002\u0002\u0002\u01ed\u01ee\u0007C\u0002\u0002\u01ee\u01ef\u0007",
"P\u0002\u0002\u01ef\u01f0\u0007[\u0002\u0002\u01f0 \u0003\u0002\u0002",
"\u0002\u01f1\u01f2\u0007C\u0002\u0002\u01f2\u01f3\u0007T\u0002\u0002",
"\u01f3\u01f4\u0007T\u0002\u0002\u01f4\u01f5\u0007C\u0002\u0002\u01f5",
"\u01f6\u0007[\u0002\u0002\u01f6\"\u0003\u0002\u0002\u0002\u01f7\u01f8",
"\u0007C\u0002\u0002\u01f8\u01f9\u0007U\u0002\u0002\u01f9$\u0003\u0002",
"\u0002\u0002\u01fa\u01fb\u0007C\u0002\u0002\u01fb\u01fc\u0007U\u0002",
"\u0002\u01fc\u01fd\u0007E\u0002\u0002\u01fd&\u0003\u0002\u0002\u0002",
"\u01fe\u01ff\u0007C\u0002\u0002\u01ff\u0200\u0007V\u0002\u0002\u0200",
"(\u0003\u0002\u0002\u0002\u0201\u0202\u0007D\u0002\u0002\u0202\u0203",
"\u0007G\u0002\u0002\u0203\u0204\u0007T\u0002\u0002\u0204\u0205\u0007",
"P\u0002\u0002\u0205\u0206\u0007Q\u0002\u0002\u0206\u0207\u0007W\u0002",
"\u0002\u0207\u0208\u0007N\u0002\u0002\u0208\u0209\u0007N\u0002\u0002",
"\u0209\u020a\u0007K\u0002\u0002\u020a*\u0003\u0002\u0002\u0002\u020b",
"\u020c\u0007D\u0002\u0002\u020c\u020d\u0007G\u0002\u0002\u020d\u020e",
"\u0007V\u0002\u0002\u020e\u020f\u0007Y\u0002\u0002\u020f\u0210\u0007",
"G\u0002\u0002\u0210\u0211\u0007G\u0002\u0002\u0211\u0212\u0007P\u0002",
"\u0002\u0212,\u0003\u0002\u0002\u0002\u0213\u0214\u0007D\u0002\u0002",
"\u0214\u0215\u0007[\u0002\u0002\u0215.\u0003\u0002\u0002\u0002\u0216",
"\u0217\u0007E\u0002\u0002\u0217\u0218\u0007C\u0002\u0002\u0218\u0219",
"\u0007N\u0002\u0002\u0219\u021a\u0007N\u0002\u0002\u021a0\u0003\u0002",
"\u0002\u0002\u021b\u021c\u0007E\u0002\u0002\u021c\u021d\u0007C\u0002",
"\u0002\u021d\u021e\u0007U\u0002\u0002\u021e\u021f\u0007E\u0002\u0002",
"\u021f\u0220\u0007C\u0002\u0002\u0220\u0221\u0007F\u0002\u0002\u0221",
"\u0222\u0007G\u0002\u0002\u02222\u0003\u0002\u0002\u0002\u0223\u0224",
"\u0007E\u0002\u0002\u0224\u0225\u0007C\u0002\u0002\u0225\u0226\u0007",
"U\u0002\u0002\u0226\u0227\u0007G\u0002\u0002\u02274\u0003\u0002\u0002",
"\u0002\u0228\u0229\u0007E\u0002\u0002\u0229\u022a\u0007C\u0002\u0002",
"\u022a\u022b\u0007U\u0002\u0002\u022b\u022c\u0007V\u0002\u0002\u022c",
"6\u0003\u0002\u0002\u0002\u022d\u022e\u0007E\u0002\u0002\u022e\u022f",
"\u0007C\u0002\u0002\u022f\u0230\u0007V\u0002\u0002\u0230\u0231\u0007",
"C\u0002\u0002\u0231\u0232\u0007N\u0002\u0002\u0232\u0233\u0007Q\u0002",
"\u0002\u0233\u0234\u0007I\u0002\u0002\u0234\u0235\u0007U\u0002\u0002",
"\u02358\u0003\u0002\u0002\u0002\u0236\u0237\u0007E\u0002\u0002\u0237",
"\u0238\u0007Q\u0002\u0002\u0238\u0239\u0007N\u0002\u0002\u0239\u023a",
"\u0007W\u0002\u0002\u023a\u023b\u0007O\u0002\u0002\u023b\u023c\u0007",
"P\u0002\u0002\u023c:\u0003\u0002\u0002\u0002\u023d\u023e\u0007E\u0002",
"\u0002\u023e\u023f\u0007Q\u0002\u0002\u023f\u0240\u0007N\u0002\u0002",
"\u0240\u0241\u0007W\u0002\u0002\u0241\u0242\u0007O\u0002\u0002\u0242",
"\u0243\u0007P\u0002\u0002\u0243\u0244\u0007U\u0002\u0002\u0244<\u0003",
"\u0002\u0002\u0002\u0245\u0246\u0007E\u0002\u0002\u0246\u0247\u0007",
"Q\u0002\u0002\u0247\u0248\u0007O\u0002\u0002\u0248\u0249\u0007O\u0002",
"\u0002\u0249\u024a\u0007G\u0002\u0002\u024a\u024b\u0007P\u0002\u0002",
"\u024b\u024c\u0007V\u0002\u0002\u024c>\u0003\u0002\u0002\u0002\u024d",
"\u024e\u0007E\u0002\u0002\u024e\u024f\u0007Q\u0002\u0002\u024f\u0250",
"\u0007O\u0002\u0002\u0250\u0251\u0007O\u0002\u0002\u0251\u0252\u0007",
"K\u0002\u0002\u0252\u0253\u0007V\u0002\u0002\u0253@\u0003\u0002\u0002",
"\u0002\u0254\u0255\u0007E\u0002\u0002\u0255\u0256\u0007Q\u0002\u0002",
"\u0256\u0257\u0007O\u0002\u0002\u0257\u0258\u0007O\u0002\u0002\u0258",
"\u0259\u0007K\u0002\u0002\u0259\u025a\u0007V\u0002\u0002\u025a\u025b",
"\u0007V\u0002\u0002\u025b\u025c\u0007G\u0002\u0002\u025c\u025d\u0007",
"F\u0002\u0002\u025dB\u0003\u0002\u0002\u0002\u025e\u025f\u0007E\u0002",
"\u0002\u025f\u0260\u0007Q\u0002\u0002\u0260\u0261\u0007P\u0002\u0002",
"\u0261\u0262\u0007U\u0002\u0002\u0262\u0263\u0007V\u0002\u0002\u0263",
"\u0264\u0007T\u0002\u0002\u0264\u0265\u0007C\u0002\u0002\u0265\u0266",
"\u0007K\u0002\u0002\u0266\u0267\u0007P\u0002\u0002\u0267\u0268\u0007",
"V\u0002\u0002\u0268D\u0003\u0002\u0002\u0002\u0269\u026a\u0007E\u0002",
"\u0002\u026a\u026b\u0007T\u0002\u0002\u026b\u026c\u0007G\u0002\u0002",
"\u026c\u026d\u0007C\u0002\u0002\u026d\u026e\u0007V\u0002\u0002\u026e",
"\u026f\u0007G\u0002\u0002\u026fF\u0003\u0002\u0002\u0002\u0270\u0271",
"\u0007E\u0002\u0002\u0271\u0272\u0007T\u0002\u0002\u0272\u0273\u0007",
"Q\u0002\u0002\u0273\u0274\u0007U\u0002\u0002\u0274\u0275\u0007U\u0002",
"\u0002\u0275H\u0003\u0002\u0002\u0002\u0276\u0277\u0007E\u0002\u0002",
"\u0277\u0278\u0007W\u0002\u0002\u0278\u0279\u0007D\u0002\u0002\u0279",
"\u027a\u0007G\u0002\u0002\u027aJ\u0003\u0002\u0002\u0002\u027b\u027c",
"\u0007E\u0002\u0002\u027c\u027d\u0007W\u0002\u0002\u027d\u027e\u0007",
"T\u0002\u0002\u027e\u027f\u0007T\u0002\u0002\u027f\u0280\u0007G\u0002",
"\u0002\u0280\u0281\u0007P\u0002\u0002\u0281\u0282\u0007V\u0002\u0002",
"\u0282L\u0003\u0002\u0002\u0002\u0283\u0284\u0007E\u0002\u0002\u0284",
"\u0285\u0007W\u0002\u0002\u0285\u0286\u0007T\u0002\u0002\u0286\u0287",
"\u0007T\u0002\u0002\u0287\u0288\u0007G\u0002\u0002\u0288\u0289\u0007",
"P\u0002\u0002\u0289\u028a\u0007V\u0002\u0002\u028a\u028b\u0007a\u0002",
"\u0002\u028b\u028c\u0007F\u0002\u0002\u028c\u028d\u0007C\u0002\u0002",
"\u028d\u028e\u0007V\u0002\u0002\u028e\u028f\u0007G\u0002\u0002\u028f",
"N\u0003\u0002\u0002\u0002\u0290\u0291\u0007E\u0002\u0002\u0291\u0292",
"\u0007W\u0002\u0002\u0292\u0293\u0007T\u0002\u0002\u0293\u0294\u0007",
"T\u0002\u0002\u0294\u0295\u0007G\u0002\u0002\u0295\u0296\u0007P\u0002",
"\u0002\u0296\u0297\u0007V\u0002\u0002\u0297\u0298\u0007a\u0002\u0002",
"\u0298\u0299\u0007R\u0002\u0002\u0299\u029a\u0007C\u0002\u0002\u029a",
"\u029b\u0007V\u0002\u0002\u029b\u029c\u0007J\u0002\u0002\u029cP\u0003",
"\u0002\u0002\u0002\u029d\u029e\u0007E\u0002\u0002\u029e\u029f\u0007",
"W\u0002\u0002\u029f\u02a0\u0007T\u0002\u0002\u02a0\u02a1\u0007T\u0002",
"\u0002\u02a1\u02a2\u0007G\u0002\u0002\u02a2\u02a3\u0007P\u0002\u0002",
"\u02a3\u02a4\u0007V\u0002\u0002\u02a4\u02a5\u0007a\u0002\u0002\u02a5",
"\u02a6\u0007V\u0002\u0002\u02a6\u02a7\u0007K\u0002\u0002\u02a7\u02a8",
"\u0007O\u0002\u0002\u02a8\u02a9\u0007G\u0002\u0002\u02a9R\u0003\u0002",
"\u0002\u0002\u02aa\u02ab\u0007E\u0002\u0002\u02ab\u02ac\u0007W\u0002",
"\u0002\u02ac\u02ad\u0007T\u0002\u0002\u02ad\u02ae\u0007T\u0002\u0002",
"\u02ae\u02af\u0007G\u0002\u0002\u02af\u02b0\u0007P\u0002\u0002\u02b0",
"\u02b1\u0007V\u0002\u0002\u02b1\u02b2\u0007a\u0002\u0002\u02b2\u02b3",
"\u0007V\u0002\u0002\u02b3\u02b4\u0007K\u0002\u0002\u02b4\u02b5\u0007",
"O\u0002\u0002\u02b5\u02b6\u0007G\u0002\u0002\u02b6\u02b7\u0007U\u0002",
"\u0002\u02b7\u02b8\u0007V\u0002\u0002\u02b8\u02b9\u0007C\u0002\u0002",
"\u02b9\u02ba\u0007O\u0002\u0002\u02ba\u02bb\u0007R\u0002\u0002\u02bb",
"T\u0003\u0002\u0002\u0002\u02bc\u02bd\u0007E\u0002\u0002\u02bd\u02be",
"\u0007W\u0002\u0002\u02be\u02bf\u0007T\u0002\u0002\u02bf\u02c0\u0007",
"T\u0002\u0002\u02c0\u02c1\u0007G\u0002\u0002\u02c1\u02c2\u0007P\u0002",
"\u0002\u02c2\u02c3\u0007V\u0002\u0002\u02c3\u02c4\u0007a\u0002\u0002",
"\u02c4\u02c5\u0007W\u0002\u0002\u02c5\u02c6\u0007U\u0002\u0002\u02c6",
"\u02c7\u0007G\u0002\u0002\u02c7\u02c8\u0007T\u0002\u0002\u02c8V\u0003",
"\u0002\u0002\u0002\u02c9\u02ca\u0007F\u0002\u0002\u02ca\u02cb\u0007",
"C\u0002\u0002\u02cb\u02cc\u0007V\u0002\u0002\u02cc\u02cd\u0007C\u0002",
"\u0002\u02cdX\u0003\u0002\u0002\u0002\u02ce\u02cf\u0007F\u0002\u0002",
"\u02cf\u02d0\u0007C\u0002\u0002\u02d0\u02d1\u0007V\u0002\u0002\u02d1",
"\u02d2\u0007G\u0002\u0002\u02d2Z\u0003\u0002\u0002\u0002\u02d3\u02d4",
"\u0007F\u0002\u0002\u02d4\u02d5\u0007C\u0002\u0002\u02d5\u02d6\u0007",
"[\u0002\u0002\u02d6\\\u0003\u0002\u0002\u0002\u02d7\u02d8\u0007F\u0002",
"\u0002\u02d8\u02d9\u0007G\u0002\u0002\u02d9\u02da\u0007C\u0002\u0002",
"\u02da\u02db\u0007N\u0002\u0002\u02db\u02dc\u0007N\u0002\u0002\u02dc",
"\u02dd\u0007Q\u0002\u0002\u02dd\u02de\u0007E\u0002\u0002\u02de\u02df",
"\u0007C\u0002\u0002\u02df\u02e0\u0007V\u0002\u0002\u02e0\u02e1\u0007",
"G\u0002\u0002\u02e1^\u0003\u0002\u0002\u0002\u02e2\u02e3\u0007F\u0002",
"\u0002\u02e3\u02e4\u0007G\u0002\u0002\u02e4\u02e5\u0007N\u0002\u0002",
"\u02e5\u02e6\u0007G\u0002\u0002\u02e6\u02e7\u0007V\u0002\u0002\u02e7",
"\u02e8\u0007G\u0002\u0002\u02e8`\u0003\u0002\u0002\u0002\u02e9\u02ea",
"\u0007F\u0002\u0002\u02ea\u02eb\u0007G\u0002\u0002\u02eb\u02ec\u0007",
"U\u0002\u0002\u02ec\u02ed\u0007E\u0002\u0002\u02edb\u0003\u0002\u0002",
"\u0002\u02ee\u02ef\u0007F\u0002\u0002\u02ef\u02f0\u0007G\u0002\u0002",
"\u02f0\u02f1\u0007U\u0002\u0002\u02f1\u02f2\u0007E\u0002\u0002\u02f2",
"\u02f3\u0007T\u0002\u0002\u02f3\u02f4\u0007K\u0002\u0002\u02f4\u02f5",
"\u0007D\u0002\u0002\u02f5\u02f6\u0007G\u0002\u0002\u02f6d\u0003\u0002",
"\u0002\u0002\u02f7\u02f8\u0007F\u0002\u0002\u02f8\u02f9\u0007K\u0002",
"\u0002\u02f9\u02fa\u0007U\u0002\u0002\u02fa\u02fb\u0007V\u0002\u0002",
"\u02fb\u02fc\u0007K\u0002\u0002\u02fc\u02fd\u0007P\u0002\u0002\u02fd",
"\u02fe\u0007E\u0002\u0002\u02fe\u02ff\u0007V\u0002\u0002\u02fff\u0003",
"\u0002\u0002\u0002\u0300\u0301\u0007F\u0002\u0002\u0301\u0302\u0007",
"K\u0002\u0002\u0302\u0303\u0007U\u0002\u0002\u0303\u0304\u0007V\u0002",
"\u0002\u0304\u0305\u0007T\u0002\u0002\u0305\u0306\u0007K\u0002\u0002",
"\u0306\u0307\u0007D\u0002\u0002\u0307\u0308\u0007W\u0002\u0002\u0308",
"\u0309\u0007V\u0002\u0002\u0309\u030a\u0007G\u0002\u0002\u030a\u030b",
"\u0007F\u0002\u0002\u030bh\u0003\u0002\u0002\u0002\u030c\u030d\u0007",
"F\u0002\u0002\u030d\u030e\u0007T\u0002\u0002\u030e\u030f\u0007Q\u0002",
"\u0002\u030f\u0310\u0007R\u0002\u0002\u0310j\u0003\u0002\u0002\u0002",
"\u0311\u0312\u0007G\u0002\u0002\u0312\u0313\u0007N\u0002\u0002\u0313",
"\u0314\u0007U\u0002\u0002\u0314\u0315\u0007G\u0002\u0002\u0315l\u0003",
"\u0002\u0002\u0002\u0316\u0317\u0007G\u0002\u0002\u0317\u0318\u0007",
"P\u0002\u0002\u0318\u0319\u0007F\u0002\u0002\u0319n\u0003\u0002\u0002",
"\u0002\u031a\u031b\u0007G\u0002\u0002\u031b\u031c\u0007U\u0002\u0002",
"\u031c\u031d\u0007E\u0002\u0002\u031d\u031e\u0007C\u0002\u0002\u031e",
"\u031f\u0007R\u0002\u0002\u031f\u0320\u0007G\u0002\u0002\u0320p\u0003",
"\u0002\u0002\u0002\u0321\u0322\u0007G\u0002\u0002\u0322\u0323\u0007",
"Z\u0002\u0002\u0323\u0324\u0007E\u0002\u0002\u0324\u0325\u0007G\u0002",
"\u0002\u0325\u0326\u0007R\u0002\u0002\u0326\u0327\u0007V\u0002\u0002",
"\u0327r\u0003\u0002\u0002\u0002\u0328\u0329\u0007G\u0002\u0002\u0329",
"\u032a\u0007Z\u0002\u0002\u032a\u032b\u0007E\u0002\u0002\u032b\u032c",
"\u0007N\u0002\u0002\u032c\u032d\u0007W\u0002\u0002\u032d\u032e\u0007",
"F\u0002\u0002\u032e\u032f\u0007K\u0002\u0002\u032f\u0330\u0007P\u0002",
"\u0002\u0330\u0331\u0007I\u0002\u0002\u0331t\u0003\u0002\u0002\u0002",
"\u0332\u0333\u0007G\u0002\u0002\u0333\u0334\u0007Z\u0002\u0002\u0334",
"\u0335\u0007G\u0002\u0002\u0335\u0336\u0007E\u0002\u0002\u0336\u0337",
"\u0007W\u0002\u0002\u0337\u0338\u0007V\u0002\u0002\u0338\u0339\u0007",
"G\u0002\u0002\u0339v\u0003\u0002\u0002\u0002\u033a\u033b\u0007G\u0002",
"\u0002\u033b\u033c\u0007Z\u0002\u0002\u033c\u033d\u0007K\u0002\u0002",
"\u033d\u033e\u0007U\u0002\u0002\u033e\u033f\u0007V\u0002\u0002\u033f",
"\u0340\u0007U\u0002\u0002\u0340x\u0003\u0002\u0002\u0002\u0341\u0342",
"\u0007G\u0002\u0002\u0342\u0343\u0007Z\u0002\u0002\u0343\u0344\u0007",
"R\u0002\u0002\u0344\u0345\u0007N\u0002\u0002\u0345\u0346\u0007C\u0002",
"\u0002\u0346\u0347\u0007K\u0002\u0002\u0347\u0348\u0007P\u0002\u0002",
"\u0348z\u0003\u0002\u0002\u0002\u0349\u034a\u0007G\u0002\u0002\u034a",
"\u034b\u0007Z\u0002\u0002\u034b\u034c\u0007V\u0002\u0002\u034c\u034d",
"\u0007T\u0002\u0002\u034d\u034e\u0007C\u0002\u0002\u034e\u034f\u0007",
"E\u0002\u0002\u034f\u0350\u0007V\u0002\u0002\u0350|\u0003\u0002\u0002",
"\u0002\u0351\u0352\u0007H\u0002\u0002\u0352\u0353\u0007C\u0002\u0002",
"\u0353\u0354\u0007N\u0002\u0002\u0354\u0355\u0007U\u0002\u0002\u0355",
"\u0356\u0007G\u0002\u0002\u0356~\u0003\u0002\u0002\u0002\u0357\u0358",
"\u0007H\u0002\u0002\u0358\u0359\u0007K\u0002\u0002\u0359\u035a\u0007",
"N\u0002\u0002\u035a\u035b\u0007V\u0002\u0002\u035b\u035c\u0007G\u0002",
"\u0002\u035c\u035d\u0007T\u0002\u0002\u035d\u0080\u0003\u0002\u0002",
"\u0002\u035e\u035f\u0007H\u0002\u0002\u035f\u0360\u0007K\u0002\u0002",
"\u0360\u0361\u0007T\u0002\u0002\u0361\u0362\u0007U\u0002\u0002\u0362",
"\u0363\u0007V\u0002\u0002\u0363\u0082\u0003\u0002\u0002\u0002\u0364",
"\u0365\u0007H\u0002\u0002\u0365\u0366\u0007Q\u0002\u0002\u0366\u0367",
"\u0007N\u0002\u0002\u0367\u0368\u0007N\u0002\u0002\u0368\u0369\u0007",
"Q\u0002\u0002\u0369\u036a\u0007Y\u0002\u0002\u036a\u036b\u0007K\u0002",
"\u0002\u036b\u036c\u0007P\u0002\u0002\u036c\u036d\u0007I\u0002\u0002",
"\u036d\u0084\u0003\u0002\u0002\u0002\u036e\u036f\u0007H\u0002\u0002",
"\u036f\u0370\u0007Q\u0002\u0002\u0370\u0371\u0007T\u0002\u0002\u0371",
"\u0086\u0003\u0002\u0002\u0002\u0372\u0373\u0007H\u0002\u0002\u0373",
"\u0374\u0007Q\u0002\u0002\u0374\u0375\u0007T\u0002\u0002\u0375\u0376",
"\u0007O\u0002\u0002\u0376\u0377\u0007C\u0002\u0002\u0377\u0378\u0007",
"V\u0002\u0002\u0378\u0088\u0003\u0002\u0002\u0002\u0379\u037a\u0007",
"H\u0002\u0002\u037a\u037b\u0007T\u0002\u0002\u037b\u037c\u0007Q\u0002",
"\u0002\u037c\u037d\u0007O\u0002\u0002\u037d\u008a\u0003\u0002\u0002",
"\u0002\u037e\u037f\u0007H\u0002\u0002\u037f\u0380\u0007W\u0002\u0002",
"\u0380\u0381\u0007N\u0002\u0002\u0381\u0382\u0007N\u0002\u0002\u0382",
"\u008c\u0003\u0002\u0002\u0002\u0383\u0384\u0007H\u0002\u0002\u0384",
"\u0385\u0007W\u0002\u0002\u0385\u0386\u0007P\u0002\u0002\u0386\u0387",
"\u0007E\u0002\u0002\u0387\u0388\u0007V\u0002\u0002\u0388\u0389\u0007",
"K\u0002\u0002\u0389\u038a\u0007Q\u0002\u0002\u038a\u038b\u0007P\u0002",
"\u0002\u038b\u038c\u0007U\u0002\u0002\u038c\u008e\u0003\u0002\u0002",
"\u0002\u038d\u038e\u0007I\u0002\u0002\u038e\u038f\u0007T\u0002\u0002",
"\u038f\u0390\u0007C\u0002\u0002\u0390\u0391\u0007P\u0002\u0002\u0391",
"\u0392\u0007V\u0002\u0002\u0392\u0090\u0003\u0002\u0002\u0002\u0393",
"\u0394\u0007I\u0002\u0002\u0394\u0395\u0007T\u0002\u0002\u0395\u0396",
"\u0007C\u0002\u0002\u0396\u0397\u0007P\u0002\u0002\u0397\u0398\u0007",
"V\u0002\u0002\u0398\u0399\u0007U\u0002\u0002\u0399\u0092\u0003\u0002",
"\u0002\u0002\u039a\u039b\u0007I\u0002\u0002\u039b\u039c\u0007T\u0002",
"\u0002\u039c\u039d\u0007C\u0002\u0002\u039d\u039e\u0007R\u0002\u0002",
"\u039e\u039f\u0007J\u0002\u0002\u039f\u03a0\u0007X\u0002\u0002\u03a0",
"\u03a1\u0007K\u0002\u0002\u03a1\u03a2\u0007\\\u0002\u0002\u03a2\u0094",
"\u0003\u0002\u0002\u0002\u03a3\u03a4\u0007I\u0002\u0002\u03a4\u03a5",
"\u0007T\u0002\u0002\u03a5\u03a6\u0007Q\u0002\u0002\u03a6\u03a7\u0007",
"W\u0002\u0002\u03a7\u03a8\u0007R\u0002\u0002\u03a8\u0096\u0003\u0002",
"\u0002\u0002\u03a9\u03aa\u0007I\u0002\u0002\u03aa\u03ab\u0007T\u0002",
"\u0002\u03ab\u03ac\u0007Q\u0002\u0002\u03ac\u03ad\u0007W\u0002\u0002",
"\u03ad\u03ae\u0007R\u0002\u0002\u03ae\u03af\u0007K\u0002\u0002\u03af",
"\u03b0\u0007P\u0002\u0002\u03b0\u03b1\u0007I\u0002\u0002\u03b1\u0098",
"\u0003\u0002\u0002\u0002\u03b2\u03b3\u0007J\u0002\u0002\u03b3\u03b4",
"\u0007C\u0002\u0002\u03b4\u03b5\u0007X\u0002\u0002\u03b5\u03b6\u0007",
"K\u0002\u0002\u03b6\u03b7\u0007P\u0002\u0002\u03b7\u03b8\u0007I\u0002",
"\u0002\u03b8\u009a\u0003\u0002\u0002\u0002\u03b9\u03ba\u0007J\u0002",
"\u0002\u03ba\u03bb\u0007Q\u0002\u0002\u03bb\u03bc\u0007W\u0002\u0002",
"\u03bc\u03bd\u0007T\u0002\u0002\u03bd\u009c\u0003\u0002\u0002\u0002",
"\u03be\u03bf\u0007K\u0002\u0002\u03bf\u03c0\u0007H\u0002\u0002\u03c0",
"\u009e\u0003\u0002\u0002\u0002\u03c1\u03c2\u0007K\u0002\u0002\u03c2",
"\u03c3\u0007P\u0002\u0002\u03c3\u00a0\u0003\u0002\u0002\u0002\u03c4",
"\u03c5\u0007K\u0002\u0002\u03c5\u03c6\u0007P\u0002\u0002\u03c6\u03c7",
"\u0007E\u0002\u0002\u03c7\u03c8\u0007N\u0002\u0002\u03c8\u03c9\u0007",
"W\u0002\u0002\u03c9\u03ca\u0007F\u0002\u0002\u03ca\u03cb\u0007K\u0002",
"\u0002\u03cb\u03cc\u0007P\u0002\u0002\u03cc\u03cd\u0007I\u0002\u0002",
"\u03cd\u00a2\u0003\u0002\u0002\u0002\u03ce\u03cf\u0007K\u0002\u0002",
"\u03cf\u03d0\u0007P\u0002\u0002\u03d0\u03d1\u0007P\u0002\u0002\u03d1",
"\u03d2\u0007G\u0002\u0002\u03d2\u03d3\u0007T\u0002\u0002\u03d3\u00a4",
"\u0003\u0002\u0002\u0002\u03d4\u03d5\u0007K\u0002\u0002\u03d5\u03d6",
"\u0007P\u0002\u0002\u03d6\u03d7\u0007R\u0002\u0002\u03d7\u03d8\u0007",
"W\u0002\u0002\u03d8\u03d9\u0007V\u0002\u0002\u03d9\u00a6\u0003\u0002",
"\u0002\u0002\u03da\u03db\u0007K\u0002\u0002\u03db\u03dc\u0007P\u0002",
"\u0002\u03dc\u03dd\u0007U\u0002\u0002\u03dd\u03de\u0007G\u0002\u0002",
"\u03de\u03df\u0007T\u0002\u0002\u03df\u03e0\u0007V\u0002\u0002\u03e0",
"\u00a8\u0003\u0002\u0002\u0002\u03e1\u03e2\u0007K\u0002\u0002\u03e2",
"\u03e3\u0007P\u0002\u0002\u03e3\u03e4\u0007V\u0002\u0002\u03e4\u03e5",
"\u0007G\u0002\u0002\u03e5\u03e6\u0007T\u0002\u0002\u03e6\u03e7\u0007",
"U\u0002\u0002\u03e7\u03e8\u0007G\u0002\u0002\u03e8\u03e9\u0007E\u0002",
"\u0002\u03e9\u03ea\u0007V\u0002\u0002\u03ea\u00aa\u0003\u0002\u0002",
"\u0002\u03eb\u03ec\u0007K\u0002\u0002\u03ec\u03ed\u0007P\u0002\u0002",
"\u03ed\u03ee\u0007V\u0002\u0002\u03ee\u03ef\u0007G\u0002\u0002\u03ef",
"\u03f0\u0007T\u0002\u0002\u03f0\u03f1\u0007X\u0002\u0002\u03f1\u03f2",
"\u0007C\u0002\u0002\u03f2\u03f3\u0007N\u0002\u0002\u03f3\u00ac\u0003",
"\u0002\u0002\u0002\u03f4\u03f5\u0007K\u0002\u0002\u03f5\u03f6\u0007",
"P\u0002\u0002\u03f6\u03f7\u0007V\u0002\u0002\u03f7\u03f8\u0007Q\u0002",
"\u0002\u03f8\u00ae\u0003\u0002\u0002\u0002\u03f9\u03fa\u0007K\u0002",
"\u0002\u03fa\u03fb\u0007Q\u0002\u0002\u03fb\u00b0\u0003\u0002\u0002",
"\u0002\u03fc\u03fd\u0007K\u0002\u0002\u03fd\u03fe\u0007U\u0002\u0002",
"\u03fe\u00b2\u0003\u0002\u0002\u0002\u03ff\u0400\u0007K\u0002\u0002",
"\u0400\u0401\u0007U\u0002\u0002\u0401\u0402\u0007Q\u0002\u0002\u0402",
"\u0403\u0007N\u0002\u0002\u0403\u0404\u0007C\u0002\u0002\u0404\u0405",
"\u0007V\u0002\u0002\u0405\u0406\u0007K\u0002\u0002\u0406\u0407\u0007",
"Q\u0002\u0002\u0407\u0408\u0007P\u0002\u0002\u0408\u00b4\u0003\u0002",
"\u0002\u0002\u0409\u040a\u0007L\u0002\u0002\u040a\u040b\u0007U\u0002",
"\u0002\u040b\u040c\u0007Q\u0002\u0002\u040c\u040d\u0007P\u0002\u0002",
"\u040d\u00b6\u0003\u0002\u0002\u0002\u040e\u040f\u0007L\u0002\u0002",
"\u040f\u0410\u0007Q\u0002\u0002\u0410\u0411\u0007K\u0002\u0002\u0411",
"\u0412\u0007P\u0002\u0002\u0412\u00b8\u0003\u0002\u0002\u0002\u0413",
"\u0414\u0007N\u0002\u0002\u0414\u0415\u0007C\u0002\u0002\u0415\u0416",
"\u0007U\u0002\u0002\u0416\u0417\u0007V\u0002\u0002\u0417\u00ba\u0003",
"\u0002\u0002\u0002\u0418\u0419\u0007N\u0002\u0002\u0419\u041a\u0007",
"C\u0002\u0002\u041a\u041b\u0007V\u0002\u0002\u041b\u041c\u0007G\u0002",
"\u0002\u041c\u041d\u0007T\u0002\u0002\u041d\u041e\u0007C\u0002\u0002",
"\u041e\u041f\u0007N\u0002\u0002\u041f\u00bc\u0003\u0002\u0002\u0002",
"\u0420\u0421\u0007N\u0002\u0002\u0421\u0422\u0007G\u0002\u0002\u0422",
"\u0423\u0007H\u0002\u0002\u0423\u0424\u0007V\u0002\u0002\u0424\u00be",
"\u0003\u0002\u0002\u0002\u0425\u0426\u0007N\u0002\u0002\u0426\u0427",
"\u0007G\u0002\u0002\u0427\u0428\u0007X\u0002\u0002\u0428\u0429\u0007",
"G\u0002\u0002\u0429\u042a\u0007N\u0002\u0002\u042a\u00c0\u0003\u0002",
"\u0002\u0002\u042b\u042c\u0007N\u0002\u0002\u042c\u042d\u0007K\u0002",
"\u0002\u042d\u042e\u0007M\u0002\u0002\u042e\u042f\u0007G\u0002\u0002",
"\u042f\u00c2\u0003\u0002\u0002\u0002\u0430\u0431\u0007N\u0002\u0002",
"\u0431\u0432\u0007K\u0002\u0002\u0432\u0433\u0007O\u0002\u0002\u0433",
"\u0434\u0007K\u0002\u0002\u0434\u0435\u0007V\u0002\u0002\u0435\u00c4",
"\u0003\u0002\u0002\u0002\u0436\u0437\u0007N\u0002\u0002\u0437\u0438",
"\u0007Q\u0002\u0002\u0438\u0439\u0007E\u0002\u0002\u0439\u043a\u0007",
"C\u0002\u0002\u043a\u043b\u0007N\u0002\u0002\u043b\u043c\u0007V\u0002",
"\u0002\u043c\u043d\u0007K\u0002\u0002\u043d\u043e\u0007O\u0002\u0002",
"\u043e\u043f\u0007G\u0002\u0002\u043f\u00c6\u0003\u0002\u0002\u0002",
"\u0440\u0441\u0007N\u0002\u0002\u0441\u0442\u0007Q\u0002\u0002\u0442",
"\u0443\u0007E\u0002\u0002\u0443\u0444\u0007C\u0002\u0002\u0444\u0445",
"\u0007N\u0002\u0002\u0445\u0446\u0007V\u0002\u0002\u0446\u0447\u0007",
"K\u0002\u0002\u0447\u0448\u0007O\u0002\u0002\u0448\u0449\u0007G\u0002",
"\u0002\u0449\u044a\u0007U\u0002\u0002\u044a\u044b\u0007V\u0002\u0002",
"\u044b\u044c\u0007C\u0002\u0002\u044c\u044d\u0007O\u0002\u0002\u044d",
"\u044e\u0007R\u0002\u0002\u044e\u00c8\u0003\u0002\u0002\u0002\u044f",
"\u0450\u0007N\u0002\u0002\u0450\u0451\u0007Q\u0002\u0002\u0451\u0452",
"\u0007I\u0002\u0002\u0452\u0453\u0007K\u0002\u0002\u0453\u0454\u0007",
"E\u0002\u0002\u0454\u0455\u0007C\u0002\u0002\u0455\u0456\u0007N\u0002",
"\u0002\u0456\u00ca\u0003\u0002\u0002\u0002\u0457\u0458\u0007O\u0002",
"\u0002\u0458\u0459\u0007C\u0002\u0002\u0459\u045a\u0007R\u0002\u0002",
"\u045a\u00cc\u0003\u0002\u0002\u0002\u045b\u045c\u0007O\u0002\u0002",
"\u045c\u045d\u0007K\u0002\u0002\u045d\u045e\u0007P\u0002\u0002\u045e",
"\u045f\u0007W\u0002\u0002\u045f\u0460\u0007V\u0002\u0002\u0460\u0461",
"\u0007G\u0002\u0002\u0461\u00ce\u0003\u0002\u0002\u0002\u0462\u0463",
"\u0007O\u0002\u0002\u0463\u0464\u0007Q\u0002\u0002\u0464\u0465\u0007",
"P\u0002\u0002\u0465\u0466\u0007V\u0002\u0002\u0466\u0467\u0007J\u0002",
"\u0002\u0467\u00d0\u0003\u0002\u0002\u0002\u0468\u0469\u0007P\u0002",
"\u0002\u0469\u046a\u0007C\u0002\u0002\u046a\u046b\u0007V\u0002\u0002",
"\u046b\u046c\u0007W\u0002\u0002\u046c\u046d\u0007T\u0002\u0002\u046d",
"\u046e\u0007C\u0002\u0002\u046e\u046f\u0007N\u0002\u0002\u046f\u00d2",
"\u0003\u0002\u0002\u0002\u0470\u0471\u0007P\u0002\u0002\u0471\u0472",
"\u0007H\u0002\u0002\u0472\u0473\u0007E\u0002\u0002\u0473\u00d4\u0003",
"\u0002\u0002\u0002\u0474\u0475\u0007P\u0002\u0002\u0475\u0476\u0007",
"H\u0002\u0002\u0476\u0477\u0007F\u0002\u0002\u0477\u00d6\u0003\u0002",
"\u0002\u0002\u0478\u0479\u0007P\u0002\u0002\u0479\u047a\u0007H\u0002",
"\u0002\u047a\u047b\u0007M\u0002\u0002\u047b\u047c\u0007E\u0002\u0002",
"\u047c\u00d8\u0003\u0002\u0002\u0002\u047d\u047e\u0007P\u0002\u0002",
"\u047e\u047f\u0007H\u0002\u0002\u047f\u0480\u0007M\u0002\u0002\u0480",
"\u0481\u0007F\u0002\u0002\u0481\u00da\u0003\u0002\u0002\u0002\u0482",
"\u0483\u0007P\u0002\u0002\u0483\u0484\u0007Q\u0002\u0002\u0484\u00dc",
"\u0003\u0002\u0002\u0002\u0485\u0486\u0007P\u0002\u0002\u0486\u0487",
"\u0007Q\u0002\u0002\u0487\u0488\u0007T\u0002\u0002\u0488\u0489\u0007",
"O\u0002\u0002\u0489\u048a\u0007C\u0002\u0002\u048a\u048b\u0007N\u0002",
"\u0002\u048b\u048c\u0007K\u0002\u0002\u048c\u048d\u0007\\\u0002\u0002",
"\u048d\u048e\u0007G\u0002\u0002\u048e\u00de\u0003\u0002\u0002\u0002",
"\u048f\u0490\u0007P\u0002\u0002\u0490\u0491\u0007Q\u0002\u0002\u0491",
"\u0492\u0007V\u0002\u0002\u0492\u00e0\u0003\u0002\u0002\u0002\u0493",
"\u0494\u0007P\u0002\u0002\u0494\u0495\u0007W\u0002\u0002\u0495\u0496",
"\u0007N\u0002\u0002\u0496\u0497\u0007N\u0002\u0002\u0497\u00e2\u0003",
"\u0002\u0002\u0002\u0498\u0499\u0007P\u0002\u0002\u0499\u049a\u0007",
"W\u0002\u0002\u049a\u049b\u0007N\u0002\u0002\u049b\u049c\u0007N\u0002",
"\u0002\u049c\u049d\u0007K\u0002\u0002\u049d\u049e\u0007H\u0002\u0002",
"\u049e\u00e4\u0003\u0002\u0002\u0002\u049f\u04a0\u0007P\u0002\u0002",
"\u04a0\u04a1\u0007W\u0002\u0002\u04a1\u04a2\u0007N\u0002\u0002\u04a2",
"\u04a3\u0007N\u0002\u0002\u04a3\u04a4\u0007U\u0002\u0002\u04a4\u00e6",
"\u0003\u0002\u0002\u0002\u04a5\u04a6\u0007Q\u0002\u0002\u04a6\u04a7",
"\u0007P\u0002\u0002\u04a7\u00e8\u0003\u0002\u0002\u0002\u04a8\u04a9",
"\u0007Q\u0002\u0002\u04a9\u04aa\u0007P\u0002\u0002\u04aa\u04ab\u0007",
"N\u0002\u0002\u04ab\u04ac\u0007[\u0002\u0002\u04ac\u00ea\u0003\u0002",
"\u0002\u0002\u04ad\u04ae\u0007Q\u0002\u0002\u04ae\u04af\u0007R\u0002",
"\u0002\u04af\u04b0\u0007V\u0002\u0002\u04b0\u04b1\u0007K\u0002\u0002",
"\u04b1\u04b2\u0007Q\u0002\u0002\u04b2\u04b3\u0007P\u0002\u0002\u04b3",
"\u00ec\u0003\u0002\u0002\u0002\u04b4\u04b5\u0007Q\u0002\u0002\u04b5",
"\u04b6\u0007T\u0002\u0002\u04b6\u00ee\u0003\u0002\u0002\u0002\u04b7",
"\u04b8\u0007Q\u0002\u0002\u04b8\u04b9\u0007T\u0002\u0002\u04b9\u04ba",
"\u0007F\u0002\u0002\u04ba\u04bb\u0007G\u0002\u0002\u04bb\u04bc\u0007",
"T\u0002\u0002\u04bc\u00f0\u0003\u0002\u0002\u0002\u04bd\u04be\u0007",
"Q\u0002\u0002\u04be\u04bf\u0007T\u0002\u0002\u04bf\u04c0\u0007F\u0002",
"\u0002\u04c0\u04c1\u0007K\u0002\u0002\u04c1\u04c2\u0007P\u0002\u0002",
"\u04c2\u04c3\u0007C\u0002\u0002\u04c3\u04c4\u0007N\u0002\u0002\u04c4",
"\u04c5\u0007K\u0002\u0002\u04c5\u04c6\u0007V\u0002\u0002\u04c6\u04c7",
"\u0007[\u0002\u0002\u04c7\u00f2\u0003\u0002\u0002\u0002\u04c8\u04c9",
"\u0007Q\u0002\u0002\u04c9\u04ca\u0007W\u0002\u0002\u04ca\u04cb\u0007",
"V\u0002\u0002\u04cb\u04cc\u0007G\u0002\u0002\u04cc\u04cd\u0007T\u0002",
"\u0002\u04cd\u00f4\u0003\u0002\u0002\u0002\u04ce\u04cf\u0007Q\u0002",
"\u0002\u04cf\u04d0\u0007W\u0002\u0002\u04d0\u04d1\u0007V\u0002\u0002",
"\u04d1\u04d2\u0007R\u0002\u0002\u04d2\u04d3\u0007W\u0002\u0002\u04d3",
"\u04d4\u0007V\u0002\u0002\u04d4\u00f6\u0003\u0002\u0002\u0002\u04d5",
"\u04d6\u0007Q\u0002\u0002\u04d6\u04d7\u0007X\u0002\u0002\u04d7\u04d8",
"\u0007G\u0002\u0002\u04d8\u04d9\u0007T\u0002\u0002\u04d9\u00f8\u0003",
"\u0002\u0002\u0002\u04da\u04db\u0007R\u0002\u0002\u04db\u04dc\u0007",
"C\u0002\u0002\u04dc\u04dd\u0007T\u0002\u0002\u04dd\u04de\u0007V\u0002",
"\u0002\u04de\u04df\u0007K\u0002\u0002\u04df\u04e0\u0007V\u0002\u0002",
"\u04e0\u04e1\u0007K\u0002\u0002\u04e1\u04e2\u0007Q\u0002\u0002\u04e2",
"\u04e3\u0007P\u0002\u0002\u04e3\u00fa\u0003\u0002\u0002\u0002\u04e4",
"\u04e5\u0007R\u0002\u0002\u04e5\u04e6\u0007C\u0002\u0002\u04e6\u04e7",
"\u0007T\u0002\u0002\u04e7\u04e8\u0007V\u0002\u0002\u04e8\u04e9\u0007",
"K\u0002\u0002\u04e9\u04ea\u0007V\u0002\u0002\u04ea\u04eb\u0007K\u0002",
"\u0002\u04eb\u04ec\u0007Q\u0002\u0002\u04ec\u04ed\u0007P\u0002\u0002",
"\u04ed\u04ee\u0007U\u0002\u0002\u04ee\u00fc\u0003\u0002\u0002\u0002",
"\u04ef\u04f0\u0007R\u0002\u0002\u04f0\u04f1\u0007C\u0002\u0002\u04f1",
"\u04f2\u0007V\u0002\u0002\u04f2\u04f3\u0007J\u0002\u0002\u04f3\u00fe",
"\u0003\u0002\u0002\u0002\u04f4\u04f5\u0007R\u0002\u0002\u04f5\u04f6",
"\u0007Q\u0002\u0002\u04f6\u04f7\u0007U\u0002\u0002\u04f7\u04f8\u0007",
"K\u0002\u0002\u04f8\u04f9\u0007V\u0002\u0002\u04f9\u04fa\u0007K\u0002",
"\u0002\u04fa\u04fb\u0007Q\u0002\u0002\u04fb\u04fc\u0007P\u0002\u0002",
"\u04fc\u0100\u0003\u0002\u0002\u0002\u04fd\u04fe\u0007R\u0002\u0002",
"\u04fe\u04ff\u0007T\u0002\u0002\u04ff\u0500\u0007G\u0002\u0002\u0500",
"\u0501\u0007E\u0002\u0002\u0501\u0502\u0007G\u0002\u0002\u0502\u0503",
"\u0007F\u0002\u0002\u0503\u0504\u0007K\u0002\u0002\u0504\u0505\u0007",
"P\u0002\u0002\u0505\u0506\u0007I\u0002\u0002\u0506\u0102\u0003\u0002",
"\u0002\u0002\u0507\u0508\u0007R\u0002\u0002\u0508\u0509\u0007T\u0002",
"\u0002\u0509\u050a\u0007G\u0002\u0002\u050a\u050b\u0007R\u0002\u0002",
"\u050b\u050c\u0007C\u0002\u0002\u050c\u050d\u0007T\u0002\u0002\u050d",
"\u050e\u0007G\u0002\u0002\u050e\u0104\u0003\u0002\u0002\u0002\u050f",
"\u0510\u0007R\u0002\u0002\u0510\u0511\u0007T\u0002\u0002\u0511\u0512",
"\u0007K\u0002\u0002\u0512\u0513\u0007X\u0002\u0002\u0513\u0514\u0007",
"K\u0002\u0002\u0514\u0515\u0007N\u0002\u0002\u0515\u0516\u0007G\u0002",
"\u0002\u0516\u0517\u0007I\u0002\u0002\u0517\u0518\u0007G\u0002\u0002",
"\u0518\u0519\u0007U\u0002\u0002\u0519\u0106\u0003\u0002\u0002\u0002",
"\u051a\u051b\u0007R\u0002\u0002\u051b\u051c\u0007T\u0002\u0002\u051c",
"\u051d\u0007Q\u0002\u0002\u051d\u051e\u0007R\u0002\u0002\u051e\u051f",
"\u0007G\u0002\u0002\u051f\u0520\u0007T\u0002\u0002\u0520\u0521\u0007",
"V\u0002\u0002\u0521\u0522\u0007K\u0002\u0002\u0522\u0523\u0007G\u0002",
"\u0002\u0523\u0524\u0007U\u0002\u0002\u0524\u0108\u0003\u0002\u0002",
"\u0002\u0525\u0526\u0007R\u0002\u0002\u0526\u0527\u0007W\u0002\u0002",
"\u0527\u0528\u0007D\u0002\u0002\u0528\u0529\u0007N\u0002\u0002\u0529",
"\u052a\u0007K\u0002\u0002\u052a\u052b\u0007E\u0002\u0002\u052b\u010a",
"\u0003\u0002\u0002\u0002\u052c\u052d\u0007T\u0002\u0002\u052d\u052e",
"\u0007C\u0002\u0002\u052e\u052f\u0007P\u0002\u0002\u052f\u0530\u0007",
"I\u0002\u0002\u0530\u0531\u0007G\u0002\u0002\u0531\u010c\u0003\u0002",
"\u0002\u0002\u0532\u0533\u0007T\u0002\u0002\u0533\u0534\u0007G\u0002",
"\u0002\u0534\u0535\u0007C\u0002\u0002\u0535\u0536\u0007F\u0002\u0002",
"\u0536\u010e\u0003\u0002\u0002\u0002\u0537\u0538\u0007T\u0002\u0002",
"\u0538\u0539\u0007G\u0002\u0002\u0539\u053a\u0007E\u0002\u0002\u053a",
"\u053b\u0007W\u0002\u0002\u053b\u053c\u0007T\u0002\u0002\u053c\u053d",
"\u0007U\u0002\u0002\u053d\u053e\u0007K\u0002\u0002\u053e\u053f\u0007",
"X\u0002\u0002\u053f\u0540\u0007G\u0002\u0002\u0540\u0110\u0003\u0002",
"\u0002\u0002\u0541\u0542\u0007T\u0002\u0002\u0542\u0543\u0007G\u0002",
"\u0002\u0543\u0544\u0007P\u0002\u0002\u0544\u0545\u0007C\u0002\u0002",
"\u0545\u0546\u0007O\u0002\u0002\u0546\u0547\u0007G\u0002\u0002\u0547",
"\u0112\u0003\u0002\u0002\u0002\u0548\u0549\u0007T\u0002\u0002\u0549",
"\u054a\u0007G\u0002\u0002\u054a\u054b\u0007R\u0002\u0002\u054b\u054c",
"\u0007G\u0002\u0002\u054c\u054d\u0007C\u0002\u0002\u054d\u054e\u0007",
"V\u0002\u0002\u054e\u054f\u0007C\u0002\u0002\u054f\u0550\u0007D\u0002",
"\u0002\u0550\u0551\u0007N\u0002\u0002\u0551\u0552\u0007G\u0002\u0002",
"\u0552\u0114\u0003\u0002\u0002\u0002\u0553\u0554\u0007T\u0002\u0002",
"\u0554\u0555\u0007G\u0002\u0002\u0555\u0556\u0007R\u0002\u0002\u0556",
"\u0557\u0007N\u0002\u0002\u0557\u0558\u0007C\u0002\u0002\u0558\u0559",
"\u0007E\u0002\u0002\u0559\u055a\u0007G\u0002\u0002\u055a\u0116\u0003",
"\u0002\u0002\u0002\u055b\u055c\u0007T\u0002\u0002\u055c\u055d\u0007",
"G\u0002\u0002\u055d\u055e\u0007U\u0002\u0002\u055e\u055f\u0007G\u0002",
"\u0002\u055f\u0560\u0007V\u0002\u0002\u0560\u0118\u0003\u0002\u0002",
"\u0002\u0561\u0562\u0007T\u0002\u0002\u0562\u0563\u0007G\u0002\u0002",
"\u0563\u0564\u0007U\u0002\u0002\u0564\u0565\u0007V\u0002\u0002\u0565",
"\u0566\u0007T\u0002\u0002\u0566\u0567\u0007K\u0002\u0002\u0567\u0568",
"\u0007E\u0002\u0002\u0568\u0569\u0007V\u0002\u0002\u0569\u011a\u0003",
"\u0002\u0002\u0002\u056a\u056b\u0007T\u0002\u0002\u056b\u056c\u0007",
"G\u0002\u0002\u056c\u056d\u0007X\u0002\u0002\u056d\u056e\u0007Q\u0002",
"\u0002\u056e\u056f\u0007M\u0002\u0002\u056f\u0570\u0007G\u0002\u0002",
"\u0570\u011c\u0003\u0002\u0002\u0002\u0571\u0572\u0007T\u0002\u0002",
"\u0572\u0573\u0007K\u0002\u0002\u0573\u0574\u0007I\u0002\u0002\u0574",
"\u0575\u0007J\u0002\u0002\u0575\u0576\u0007V\u0002\u0002\u0576\u011e",
"\u0003\u0002\u0002\u0002\u0577\u0578\u0007T\u0002\u0002\u0578\u0579",
"\u0007Q\u0002\u0002\u0579\u057a\u0007N\u0002\u0002\u057a\u057b\u0007",
"N\u0002\u0002\u057b\u057c\u0007D\u0002\u0002\u057c\u057d\u0007C\u0002",
"\u0002\u057d\u057e\u0007E\u0002\u0002\u057e\u057f\u0007M\u0002\u0002",
"\u057f\u0120\u0003\u0002\u0002\u0002\u0580\u0581\u0007T\u0002\u0002",
"\u0581\u0582\u0007Q\u0002\u0002\u0582\u0583\u0007N\u0002\u0002\u0583",
"\u0584\u0007N\u0002\u0002\u0584\u0585\u0007W\u0002\u0002\u0585\u0586",
"\u0007R\u0002\u0002\u0586\u0122\u0003\u0002\u0002\u0002\u0587\u0588",
"\u0007T\u0002\u0002\u0588\u0589\u0007Q\u0002\u0002\u0589\u058a\u0007",
"Y\u0002\u0002\u058a\u0124\u0003\u0002\u0002\u0002\u058b\u058c\u0007",
"T\u0002\u0002\u058c\u058d\u0007Q\u0002\u0002\u058d\u058e\u0007Y\u0002",
"\u0002\u058e\u058f\u0007U\u0002\u0002\u058f\u0126\u0003\u0002\u0002",
"\u0002\u0590\u0591\u0007U\u0002\u0002\u0591\u0592\u0007E\u0002\u0002",
"\u0592\u0593\u0007J\u0002\u0002\u0593\u0594\u0007G\u0002\u0002\u0594",
"\u0595\u0007O\u0002\u0002\u0595\u0596\u0007C\u0002\u0002\u0596\u0128",
"\u0003\u0002\u0002\u0002\u0597\u0598\u0007U\u0002\u0002\u0598\u0599",
"\u0007E\u0002\u0002\u0599\u059a\u0007J\u0002\u0002\u059a\u059b\u0007",
"G\u0002\u0002\u059b\u059c\u0007O\u0002\u0002\u059c\u059d\u0007C\u0002",
"\u0002\u059d\u059e\u0007U\u0002\u0002\u059e\u012a\u0003\u0002\u0002",
"\u0002\u059f\u05a0\u0007U\u0002\u0002\u05a0\u05a1\u0007G\u0002\u0002",
"\u05a1\u05a2\u0007E\u0002\u0002\u05a2\u05a3\u0007Q\u0002\u0002\u05a3",
"\u05a4\u0007P\u0002\u0002\u05a4\u05a5\u0007F\u0002\u0002\u05a5\u012c",
"\u0003\u0002\u0002\u0002\u05a6\u05a7\u0007U\u0002\u0002\u05a7\u05a8",
"\u0007G\u0002\u0002\u05a8\u05a9\u0007N\u0002\u0002\u05a9\u05aa\u0007",
"G\u0002\u0002\u05aa\u05ab\u0007E\u0002\u0002\u05ab\u05ac\u0007V\u0002",
"\u0002\u05ac\u012e\u0003\u0002\u0002\u0002\u05ad\u05ae\u0007U\u0002",
"\u0002\u05ae\u05af\u0007G\u0002\u0002\u05af\u05b0\u0007T\u0002\u0002",
"\u05b0\u05b1\u0007K\u0002\u0002\u05b1\u05b2\u0007C\u0002\u0002\u05b2",
"\u05b3\u0007N\u0002\u0002\u05b3\u05b4\u0007K\u0002\u0002\u05b4\u05b5",
"\u0007\\\u0002\u0002\u05b5\u05b6\u0007C\u0002\u0002\u05b6\u05b7\u0007",
"D\u0002\u0002\u05b7\u05b8\u0007N\u0002\u0002\u05b8\u05b9\u0007G\u0002",
"\u0002\u05b9\u0130\u0003\u0002\u0002\u0002\u05ba\u05bb\u0007U\u0002",
"\u0002\u05bb\u05bc\u0007G\u0002\u0002\u05bc\u05bd\u0007U\u0002\u0002",
"\u05bd\u05be\u0007U\u0002\u0002\u05be\u05bf\u0007K\u0002\u0002\u05bf",
"\u05c0\u0007Q\u0002\u0002\u05c0\u05c1\u0007P\u0002\u0002\u05c1\u0132",
"\u0003\u0002\u0002\u0002\u05c2\u05c3\u0007U\u0002\u0002\u05c3\u05c4",
"\u0007G\u0002\u0002\u05c4\u05c5\u0007V\u0002\u0002\u05c5\u0134\u0003",
"\u0002\u0002\u0002\u05c6\u05c7\u0007U\u0002\u0002\u05c7\u05c8\u0007",
"G\u0002\u0002\u05c8\u05c9\u0007V\u0002\u0002\u05c9\u05ca\u0007U\u0002",
"\u0002\u05ca\u0136\u0003\u0002\u0002\u0002\u05cb\u05cc\u0007U\u0002",
"\u0002\u05cc\u05cd\u0007J\u0002\u0002\u05cd\u05ce\u0007Q\u0002\u0002",
"\u05ce\u05cf\u0007Y\u0002\u0002\u05cf\u0138\u0003\u0002\u0002\u0002",
"\u05d0\u05d1\u0007U\u0002\u0002\u05d1\u05d2\u0007Q\u0002\u0002\u05d2",
"\u05d3\u0007O\u0002\u0002\u05d3\u05d4\u0007G\u0002\u0002\u05d4\u013a",
"\u0003\u0002\u0002\u0002\u05d5\u05d6\u0007U\u0002\u0002\u05d6\u05d7",
"\u0007V\u0002\u0002\u05d7\u05d8\u0007C\u0002\u0002\u05d8\u05d9\u0007",
"T\u0002\u0002\u05d9\u05da\u0007V\u0002\u0002\u05da\u013c\u0003\u0002",
"\u0002\u0002\u05db\u05dc\u0007U\u0002\u0002\u05dc\u05dd\u0007V\u0002",
"\u0002\u05dd\u05de\u0007C\u0002\u0002\u05de\u05df\u0007V\u0002\u0002",
"\u05df\u05e0\u0007U\u0002\u0002\u05e0\u013e\u0003\u0002\u0002\u0002",
"\u05e1\u05e2\u0007U\u0002\u0002\u05e2\u05e3\u0007W\u0002\u0002\u05e3",
"\u05e4\u0007D\u0002\u0002\u05e4\u05e5\u0007U\u0002\u0002\u05e5\u05e6",
"\u0007V\u0002\u0002\u05e6\u05e7\u0007T\u0002\u0002\u05e7\u05e8\u0007",
"K\u0002\u0002\u05e8\u05e9\u0007P\u0002\u0002\u05e9\u05ea\u0007I\u0002",
"\u0002\u05ea\u0140\u0003\u0002\u0002\u0002\u05eb\u05ec\u0007U\u0002",
"\u0002\u05ec\u05ed\u0007[\u0002\u0002\u05ed\u05ee\u0007U\u0002\u0002",
"\u05ee\u05ef\u0007V\u0002\u0002\u05ef\u05f0\u0007G\u0002\u0002\u05f0",
"\u05f1\u0007O\u0002\u0002\u05f1\u0142\u0003\u0002\u0002\u0002\u05f2",
"\u05f3\u0007V\u0002\u0002\u05f3\u05f4\u0007C\u0002\u0002\u05f4\u05f5",
"\u0007D\u0002\u0002\u05f5\u05f6\u0007N\u0002\u0002\u05f6\u05f7\u0007",
"G\u0002\u0002\u05f7\u0144\u0003\u0002\u0002\u0002\u05f8\u05f9\u0007",
"V\u0002\u0002\u05f9\u05fa\u0007C\u0002\u0002\u05fa\u05fb\u0007D\u0002",
"\u0002\u05fb\u05fc\u0007N\u0002\u0002\u05fc\u05fd\u0007G\u0002\u0002",
"\u05fd\u05fe\u0007U\u0002\u0002\u05fe\u0146\u0003\u0002\u0002\u0002",
"\u05ff\u0600\u0007V\u0002\u0002\u0600\u0601\u0007C\u0002\u0002\u0601",
"\u0602\u0007D\u0002\u0002\u0602\u0603\u0007N\u0002\u0002\u0603\u0604",
"\u0007G\u0002\u0002\u0604\u0605\u0007U\u0002\u0002\u0605\u0606\u0007",
"C\u0002\u0002\u0606\u0607\u0007O\u0002\u0002\u0607\u0608\u0007R\u0002",
"\u0002\u0608\u0609\u0007N\u0002\u0002\u0609\u060a\u0007G\u0002\u0002",
"\u060a\u0148\u0003\u0002\u0002\u0002\u060b\u060c\u0007V\u0002\u0002",
"\u060c\u060d\u0007G\u0002\u0002\u060d\u060e\u0007Z\u0002\u0002\u060e",
"\u060f\u0007V\u0002\u0002\u060f\u014a\u0003\u0002\u0002\u0002\u0610",
"\u0611\u0007V\u0002\u0002\u0611\u0612\u0007J\u0002\u0002\u0612\u0613",
"\u0007G\u0002\u0002\u0613\u0614\u0007P\u0002\u0002\u0614\u014c\u0003",
"\u0002\u0002\u0002\u0615\u0616\u0007V\u0002\u0002\u0616\u0617\u0007",
"K\u0002\u0002\u0617\u0618\u0007O\u0002\u0002\u0618\u0619\u0007G\u0002",
"\u0002\u0619\u014e\u0003\u0002\u0002\u0002\u061a\u061b\u0007V\u0002",
"\u0002\u061b\u061c\u0007K\u0002\u0002\u061c\u061d\u0007O\u0002\u0002",
"\u061d\u061e\u0007G\u0002\u0002\u061e\u061f\u0007U\u0002\u0002\u061f",
"\u0620\u0007V\u0002\u0002\u0620\u0621\u0007C\u0002\u0002\u0621\u0622",
"\u0007O\u0002\u0002\u0622\u0623\u0007R\u0002\u0002\u0623\u0150\u0003",
"\u0002\u0002\u0002\u0624\u0625\u0007V\u0002\u0002\u0625\u0626\u0007",
"Q\u0002\u0002\u0626\u0152\u0003\u0002\u0002\u0002\u0627\u0628\u0007",
"V\u0002\u0002\u0628\u0629\u0007T\u0002\u0002\u0629\u062a\u0007C\u0002",
"\u0002\u062a\u062b\u0007P\u0002\u0002\u062b\u062c\u0007U\u0002\u0002",
"\u062c\u062d\u0007C\u0002\u0002\u062d\u062e\u0007E\u0002\u0002\u062e",
"\u062f\u0007V\u0002\u0002\u062f\u0630\u0007K\u0002\u0002\u0630\u0631",
"\u0007Q\u0002\u0002\u0631\u0632\u0007P\u0002\u0002\u0632\u0154\u0003",
"\u0002\u0002\u0002\u0633\u0634\u0007V\u0002\u0002\u0634\u0635\u0007",
"T\u0002\u0002\u0635\u0636\u0007W\u0002\u0002\u0636\u0637\u0007G\u0002",
"\u0002\u0637\u0156\u0003\u0002\u0002\u0002\u0638\u0639\u0007V\u0002",
"\u0002\u0639\u063a\u0007T\u0002\u0002\u063a\u063b\u0007[\u0002\u0002",
"\u063b\u063c\u0007a\u0002\u0002\u063c\u063d\u0007E\u0002\u0002\u063d",
"\u063e\u0007C\u0002\u0002\u063e\u063f\u0007U\u0002\u0002\u063f\u0640",
"\u0007V\u0002\u0002\u0640\u0158\u0003\u0002\u0002\u0002\u0641\u0642",
"\u0007V\u0002\u0002\u0642\u0643\u0007[\u0002\u0002\u0643\u0644\u0007",
"R\u0002\u0002\u0644\u0645\u0007G\u0002\u0002\u0645\u015a\u0003\u0002",
"\u0002\u0002\u0646\u0647\u0007W\u0002\u0002\u0647\u0648\u0007G\u0002",
"\u0002\u0648\u0649\u0007U\u0002\u0002\u0649\u064a\u0007E\u0002\u0002",
"\u064a\u064b\u0007C\u0002\u0002\u064b\u064c\u0007R\u0002\u0002\u064c",
"\u064d\u0007G\u0002\u0002\u064d\u015c\u0003\u0002\u0002\u0002\u064e",
"\u064f\u0007W\u0002\u0002\u064f\u0650\u0007P\u0002\u0002\u0650\u0651",
"\u0007D\u0002\u0002\u0651\u0652\u0007Q\u0002\u0002\u0652\u0653\u0007",
"W\u0002\u0002\u0653\u0654\u0007P\u0002\u0002\u0654\u0655\u0007F\u0002",
"\u0002\u0655\u0656\u0007G\u0002\u0002\u0656\u0657\u0007F\u0002\u0002",
"\u0657\u015e\u0003\u0002\u0002\u0002\u0658\u0659\u0007W\u0002\u0002",
"\u0659\u065a\u0007P\u0002\u0002\u065a\u065b\u0007E\u0002\u0002\u065b",
"\u065c\u0007Q\u0002\u0002\u065c\u065d\u0007O\u0002\u0002\u065d\u065e",
"\u0007O\u0002\u0002\u065e\u065f\u0007K\u0002\u0002\u065f\u0660\u0007",
"V\u0002\u0002\u0660\u0661\u0007V\u0002\u0002\u0661\u0662\u0007G\u0002",
"\u0002\u0662\u0663\u0007F\u0002\u0002\u0663\u0160\u0003\u0002\u0002",
"\u0002\u0664\u0665\u0007W\u0002\u0002\u0665\u0666\u0007P\u0002\u0002",
"\u0666\u0667\u0007K\u0002\u0002\u0667\u0668\u0007Q\u0002\u0002\u0668",
"\u0669\u0007P\u0002\u0002\u0669\u0162\u0003\u0002\u0002\u0002\u066a",
"\u066b\u0007W\u0002\u0002\u066b\u066c\u0007P\u0002\u0002\u066c\u066d",
"\u0007P\u0002\u0002\u066d\u066e\u0007G\u0002\u0002\u066e\u066f\u0007",
"U\u0002\u0002\u066f\u0670\u0007V\u0002\u0002\u0670\u0164\u0003\u0002",
"\u0002\u0002\u0671\u0672\u0007W\u0002\u0002\u0672\u0673\u0007U\u0002",
"\u0002\u0673\u0674\u0007G\u0002\u0002\u0674\u0166\u0003\u0002\u0002",
"\u0002\u0675\u0676\u0007W\u0002\u0002\u0676\u0677\u0007U\u0002\u0002",
"\u0677\u0678\u0007K\u0002\u0002\u0678\u0679\u0007P\u0002\u0002\u0679",
"\u067a\u0007I\u0002\u0002\u067a\u0168\u0003\u0002\u0002\u0002\u067b",
"\u067c\u0007X\u0002\u0002\u067c\u067d\u0007C\u0002\u0002\u067d\u067e",
"\u0007N\u0002\u0002\u067e\u067f\u0007K\u0002\u0002\u067f\u0680\u0007",
"F\u0002\u0002\u0680\u0681\u0007C\u0002\u0002\u0681\u0682\u0007V\u0002",
"\u0002\u0682\u0683\u0007G\u0002\u0002\u0683\u016a\u0003\u0002\u0002",
"\u0002\u0684\u0685\u0007X\u0002\u0002\u0685\u0686\u0007C\u0002\u0002",
"\u0686\u0687\u0007N\u0002\u0002\u0687\u0688\u0007W\u0002\u0002\u0688",
"\u0689\u0007G\u0002\u0002\u0689\u068a\u0007U\u0002\u0002\u068a\u016c",
"\u0003\u0002\u0002\u0002\u068b\u068c\u0007X\u0002\u0002\u068c\u068d",
"\u0007G\u0002\u0002\u068d\u068e\u0007T\u0002\u0002\u068e\u068f\u0007",
"D\u0002\u0002\u068f\u0690\u0007Q\u0002\u0002\u0690\u0691\u0007U\u0002",
"\u0002\u0691\u0692\u0007G\u0002\u0002\u0692\u016e\u0003\u0002\u0002",
"\u0002\u0693\u0694\u0007X\u0002\u0002\u0694\u0695\u0007K\u0002\u0002",
"\u0695\u0696\u0007G\u0002\u0002\u0696\u0697\u0007Y\u0002\u0002\u0697",
"\u0170\u0003\u0002\u0002\u0002\u0698\u0699\u0007Y\u0002\u0002\u0699",
"\u069a\u0007J\u0002\u0002\u069a\u069b\u0007G\u0002\u0002\u069b\u069c",
"\u0007P\u0002\u0002\u069c\u0172\u0003\u0002\u0002\u0002\u069d\u069e",
"\u0007Y\u0002\u0002\u069e\u069f\u0007J\u0002\u0002\u069f\u06a0\u0007",
"G\u0002\u0002\u06a0\u06a1\u0007T\u0002\u0002\u06a1\u06a2\u0007G\u0002",
"\u0002\u06a2\u0174\u0003\u0002\u0002\u0002\u06a3\u06a4\u0007Y\u0002",
"\u0002\u06a4\u06a5\u0007K\u0002\u0002\u06a5\u06a6\u0007V\u0002\u0002",
"\u06a6\u06a7\u0007J\u0002\u0002\u06a7\u0176\u0003\u0002\u0002\u0002",
"\u06a8\u06a9\u0007Y\u0002\u0002\u06a9\u06aa\u0007Q\u0002\u0002\u06aa",
"\u06ab\u0007T\u0002\u0002\u06ab\u06ac\u0007M\u0002\u0002\u06ac\u0178",
"\u0003\u0002\u0002\u0002\u06ad\u06ae\u0007Y\u0002\u0002\u06ae\u06af",
"\u0007T\u0002\u0002\u06af\u06b0\u0007K\u0002\u0002\u06b0\u06b1\u0007",
"V\u0002\u0002\u06b1\u06b2\u0007G\u0002\u0002\u06b2\u017a\u0003\u0002",
"\u0002\u0002\u06b3\u06b4\u0007[\u0002\u0002\u06b4\u06b5\u0007G\u0002",
"\u0002\u06b5\u06b6\u0007C\u0002\u0002\u06b6\u06b7\u0007T\u0002\u0002",
"\u06b7\u017c\u0003\u0002\u0002\u0002\u06b8\u06b9\u0007\\\u0002\u0002",
"\u06b9\u06ba\u0007Q\u0002\u0002\u06ba\u06bb\u0007P\u0002\u0002\u06bb",
"\u06bc\u0007G\u0002\u0002\u06bc\u017e\u0003\u0002\u0002\u0002\u06bd",
"\u06be\u0007?\u0002\u0002\u06be\u0180\u0003\u0002\u0002\u0002\u06bf",
"\u06c0\u0007>\u0002\u0002\u06c0\u06c4\u0007@\u0002\u0002\u06c1\u06c2",
"\u0007#\u0002\u0002\u06c2\u06c4\u0007?\u0002\u0002\u06c3\u06bf\u0003",
"\u0002\u0002\u0002\u06c3\u06c1\u0003\u0002\u0002\u0002\u06c4\u0182\u0003",
"\u0002\u0002\u0002\u06c5\u06c6\u0007>\u0002\u0002\u06c6\u0184\u0003",
"\u0002\u0002\u0002\u06c7\u06c8\u0007>\u0002\u0002\u06c8\u06c9\u0007",
"?\u0002\u0002\u06c9\u0186\u0003\u0002\u0002\u0002\u06ca\u06cb\u0007",
"@\u0002\u0002\u06cb\u0188\u0003\u0002\u0002\u0002\u06cc\u06cd\u0007",
"@\u0002\u0002\u06cd\u06ce\u0007?\u0002\u0002\u06ce\u018a\u0003\u0002",
"\u0002\u0002\u06cf\u06d0\u0007-\u0002\u0002\u06d0\u018c\u0003\u0002",
"\u0002\u0002\u06d1\u06d2\u0007/\u0002\u0002\u06d2\u018e\u0003\u0002",
"\u0002\u0002\u06d3\u06d4\u0007,\u0002\u0002\u06d4\u0190\u0003\u0002",
"\u0002\u0002\u06d5\u06d6\u00071\u0002\u0002\u06d6\u0192\u0003\u0002",
"\u0002\u0002\u06d7\u06d8\u0007\'\u0002\u0002\u06d8\u0194\u0003\u0002",
"\u0002\u0002\u06d9\u06da\u0007~\u0002\u0002\u06da\u06db\u0007~\u0002",
"\u0002\u06db\u0196\u0003\u0002\u0002\u0002\u06dc\u06e2\u0007)\u0002",
"\u0002\u06dd\u06e1\n\u0002\u0002\u0002\u06de\u06df\u0007)\u0002\u0002",
"\u06df\u06e1\u0007)\u0002\u0002\u06e0\u06dd\u0003\u0002\u0002\u0002",
"\u06e0\u06de\u0003\u0002\u0002\u0002\u06e1\u06e4\u0003\u0002\u0002\u0002",
"\u06e2\u06e0\u0003\u0002\u0002\u0002\u06e2\u06e3\u0003\u0002\u0002\u0002",
"\u06e3\u06e5\u0003\u0002\u0002\u0002\u06e4\u06e2\u0003\u0002\u0002\u0002",
"\u06e5\u06e6\u0007)\u0002\u0002\u06e6\u0198\u0003\u0002\u0002\u0002",
"\u06e7\u06e8\u0007W\u0002\u0002\u06e8\u06e9\u0007(\u0002\u0002\u06e9",
"\u06ea\u0007)\u0002\u0002\u06ea\u06f0\u0003\u0002\u0002\u0002\u06eb",
"\u06ef\n\u0002\u0002\u0002\u06ec\u06ed\u0007)\u0002\u0002\u06ed\u06ef",
"\u0007)\u0002\u0002\u06ee\u06eb\u0003\u0002\u0002\u0002\u06ee\u06ec",
"\u0003\u0002\u0002\u0002\u06ef\u06f2\u0003\u0002\u0002\u0002\u06f0\u06ee",
"\u0003\u0002\u0002\u0002\u06f0\u06f1\u0003\u0002\u0002\u0002\u06f1\u06f3",
"\u0003\u0002\u0002\u0002\u06f2\u06f0\u0003\u0002\u0002\u0002\u06f3\u06f4",
"\u0007)\u0002\u0002\u06f4\u019a\u0003\u0002\u0002\u0002\u06f5\u06f6",
"\u0007Z\u0002\u0002\u06f6\u06f7\u0007)\u0002\u0002\u06f7\u06fb\u0003",
"\u0002\u0002\u0002\u06f8\u06fa\n\u0002\u0002\u0002\u06f9\u06f8\u0003",
"\u0002\u0002\u0002\u06fa\u06fd\u0003\u0002\u0002\u0002\u06fb\u06f9\u0003",
"\u0002\u0002\u0002\u06fb\u06fc\u0003\u0002\u0002\u0002\u06fc\u06fe\u0003",
"\u0002\u0002\u0002\u06fd\u06fb\u0003\u0002\u0002\u0002\u06fe\u06ff\u0007",
")\u0002\u0002\u06ff\u019c\u0003\u0002\u0002\u0002\u0700\u0702\u0005",
"\u01b3\u00da\u0002\u0701\u0700\u0003\u0002\u0002\u0002\u0702\u0703\u0003",
"\u0002\u0002\u0002\u0703\u0701\u0003\u0002\u0002\u0002\u0703\u0704\u0003",
"\u0002\u0002\u0002\u0704\u019e\u0003\u0002\u0002\u0002\u0705\u0707\u0005",
"\u01b3\u00da\u0002\u0706\u0705\u0003\u0002\u0002\u0002\u0707\u0708\u0003",
"\u0002\u0002\u0002\u0708\u0706\u0003\u0002\u0002\u0002\u0708\u0709\u0003",
"\u0002\u0002\u0002\u0709\u070a\u0003\u0002\u0002\u0002\u070a\u070e\u0007",
"0\u0002\u0002\u070b\u070d\u0005\u01b3\u00da\u0002\u070c\u070b\u0003",
"\u0002\u0002\u0002\u070d\u0710\u0003\u0002\u0002\u0002\u070e\u070c\u0003",
"\u0002\u0002\u0002\u070e\u070f\u0003\u0002\u0002\u0002\u070f\u0718\u0003",
"\u0002\u0002\u0002\u0710\u070e\u0003\u0002\u0002\u0002\u0711\u0713\u0007",
"0\u0002\u0002\u0712\u0714\u0005\u01b3\u00da\u0002\u0713\u0712\u0003",
"\u0002\u0002\u0002\u0714\u0715\u0003\u0002\u0002\u0002\u0715\u0713\u0003",
"\u0002\u0002\u0002\u0715\u0716\u0003\u0002\u0002\u0002\u0716\u0718\u0003",
"\u0002\u0002\u0002\u0717\u0706\u0003\u0002\u0002\u0002\u0717\u0711\u0003",
"\u0002\u0002\u0002\u0718\u01a0\u0003\u0002\u0002\u0002\u0719\u071b\u0005",
"\u01b3\u00da\u0002\u071a\u0719\u0003\u0002\u0002\u0002\u071b\u071c\u0003",
"\u0002\u0002\u0002\u071c\u071a\u0003\u0002\u0002\u0002\u071c\u071d\u0003",
"\u0002\u0002\u0002\u071d\u0725\u0003\u0002\u0002\u0002\u071e\u0722\u0007",
"0\u0002\u0002\u071f\u0721\u0005\u01b3\u00da\u0002\u0720\u071f\u0003",
"\u0002\u0002\u0002\u0721\u0724\u0003\u0002\u0002\u0002\u0722\u0720\u0003",
"\u0002\u0002\u0002\u0722\u0723\u0003\u0002\u0002\u0002\u0723\u0726\u0003",
"\u0002\u0002\u0002\u0724\u0722\u0003\u0002\u0002\u0002\u0725\u071e\u0003",
"\u0002\u0002\u0002\u0725\u0726\u0003\u0002\u0002\u0002\u0726\u0727\u0003",
"\u0002\u0002\u0002\u0727\u0728\u0005\u01b1\u00d9\u0002\u0728\u0732\u0003",
"\u0002\u0002\u0002\u0729\u072b\u00070\u0002\u0002\u072a\u072c\u0005",
"\u01b3\u00da\u0002\u072b\u072a\u0003\u0002\u0002\u0002\u072c\u072d\u0003",
"\u0002\u0002\u0002\u072d\u072b\u0003\u0002\u0002\u0002\u072d\u072e\u0003",
"\u0002\u0002\u0002\u072e\u072f\u0003\u0002\u0002\u0002\u072f\u0730\u0005",
"\u01b1\u00d9\u0002\u0730\u0732\u0003\u0002\u0002\u0002\u0731\u071a\u0003",
"\u0002\u0002\u0002\u0731\u0729\u0003\u0002\u0002\u0002\u0732\u01a2\u0003",
"\u0002\u0002\u0002\u0733\u0736\u0005\u01b5\u00db\u0002\u0734\u0736\u0007",
"a\u0002\u0002\u0735\u0733\u0003\u0002\u0002\u0002\u0735\u0734\u0003",
"\u0002\u0002\u0002\u0736\u073c\u0003\u0002\u0002\u0002\u0737\u073b\u0005",
"\u01b5\u00db\u0002\u0738\u073b\u0005\u01b3\u00da\u0002\u0739\u073b\t",
"\u0003\u0002\u0002\u073a\u0737\u0003\u0002\u0002\u0002\u073a\u0738\u0003",
"\u0002\u0002\u0002\u073a\u0739\u0003\u0002\u0002\u0002\u073b\u073e\u0003",
"\u0002\u0002\u0002\u073c\u073a\u0003\u0002\u0002\u0002\u073c\u073d\u0003",
"\u0002\u0002\u0002\u073d\u01a4\u0003\u0002\u0002\u0002\u073e\u073c\u0003",
"\u0002\u0002\u0002\u073f\u0743\u0005\u01b3\u00da\u0002\u0740\u0744\u0005",
"\u01b5\u00db\u0002\u0741\u0744\u0005\u01b3\u00da\u0002\u0742\u0744\t",
"\u0003\u0002\u0002\u0743\u0740\u0003\u0002\u0002\u0002\u0743\u0741\u0003",
"\u0002\u0002\u0002\u0743\u0742\u0003\u0002\u0002\u0002\u0744\u0745\u0003",
"\u0002\u0002\u0002\u0745\u0743\u0003\u0002\u0002\u0002\u0745\u0746\u0003",
"\u0002\u0002\u0002\u0746\u01a6\u0003\u0002\u0002\u0002\u0747\u074d\u0007",
"$\u0002\u0002\u0748\u074c\n\u0004\u0002\u0002\u0749\u074a\u0007$\u0002",
"\u0002\u074a\u074c\u0007$\u0002\u0002\u074b\u0748\u0003\u0002\u0002",
"\u0002\u074b\u0749\u0003\u0002\u0002\u0002\u074c\u074f\u0003\u0002\u0002",
"\u0002\u074d\u074b\u0003\u0002\u0002\u0002\u074d\u074e\u0003\u0002\u0002",
"\u0002\u074e\u0750\u0003\u0002\u0002\u0002\u074f\u074d\u0003\u0002\u0002",
"\u0002\u0750\u0751\u0007$\u0002\u0002\u0751\u01a8\u0003\u0002\u0002",
"\u0002\u0752\u0758\u0007b\u0002\u0002\u0753\u0757\n\u0005\u0002\u0002",
"\u0754\u0755\u0007b\u0002\u0002\u0755\u0757\u0007b\u0002\u0002\u0756",
"\u0753\u0003\u0002\u0002\u0002\u0756\u0754\u0003\u0002\u0002\u0002\u0757",
"\u075a\u0003\u0002\u0002\u0002\u0758\u0756\u0003\u0002\u0002\u0002\u0758",
"\u0759\u0003\u0002\u0002\u0002\u0759\u075b\u0003\u0002\u0002\u0002\u075a",
"\u0758\u0003\u0002\u0002\u0002\u075b\u075c\u0007b\u0002\u0002\u075c",
"\u01aa\u0003\u0002\u0002\u0002\u075d\u075e\u0007V\u0002\u0002\u075e",
"\u075f\u0007K\u0002\u0002\u075f\u0760\u0007O\u0002\u0002\u0760\u0761",
"\u0007G\u0002\u0002\u0761\u0762\u0003\u0002\u0002\u0002\u0762\u0763",
"\u0005\u01bb\u00de\u0002\u0763\u0764\u0007Y\u0002\u0002\u0764\u0765",
"\u0007K\u0002\u0002\u0765\u0766\u0007V\u0002\u0002\u0766\u0767\u0007",
"J\u0002\u0002\u0767\u0768\u0003\u0002\u0002\u0002\u0768\u0769\u0005",
"\u01bb\u00de\u0002\u0769\u076a\u0007V\u0002\u0002\u076a\u076b\u0007",
"K\u0002\u0002\u076b\u076c\u0007O\u0002\u0002\u076c\u076d\u0007G\u0002",
"\u0002\u076d\u076e\u0003\u0002\u0002\u0002\u076e\u076f\u0005\u01bb\u00de",
"\u0002\u076f\u0770\u0007\\\u0002\u0002\u0770\u0771\u0007Q\u0002\u0002",
"\u0771\u0772\u0007P\u0002\u0002\u0772\u0773\u0007G\u0002\u0002\u0773",
"\u01ac\u0003\u0002\u0002\u0002\u0774\u0775\u0007V\u0002\u0002\u0775",
"\u0776\u0007K\u0002\u0002\u0776\u0777\u0007O\u0002\u0002\u0777\u0778",
"\u0007G\u0002\u0002\u0778\u0779\u0007U\u0002\u0002\u0779\u077a\u0007",
"V\u0002\u0002\u077a\u077b\u0007C\u0002\u0002\u077b\u077c\u0007O\u0002",
"\u0002\u077c\u077d\u0007R\u0002\u0002\u077d\u077e\u0003\u0002\u0002",
"\u0002\u077e\u077f\u0005\u01bb\u00de\u0002\u077f\u0780\u0007Y\u0002",
"\u0002\u0780\u0781\u0007K\u0002\u0002\u0781\u0782\u0007V\u0002\u0002",
"\u0782\u0783\u0007J\u0002\u0002\u0783\u0784\u0003\u0002\u0002\u0002",
"\u0784\u0785\u0005\u01bb\u00de\u0002\u0785\u0786\u0007V\u0002\u0002",
"\u0786\u0787\u0007K\u0002\u0002\u0787\u0788\u0007O\u0002\u0002\u0788",
"\u0789\u0007G\u0002\u0002\u0789\u078a\u0003\u0002\u0002\u0002\u078a",
"\u078b\u0005\u01bb\u00de\u0002\u078b\u078c\u0007\\\u0002\u0002\u078c",
"\u078d\u0007Q\u0002\u0002\u078d\u078e\u0007P\u0002\u0002\u078e\u078f",
"\u0007G\u0002\u0002\u078f\u01ae\u0003\u0002\u0002\u0002\u0790\u0791",
"\u0007F\u0002\u0002\u0791\u0792\u0007Q\u0002\u0002\u0792\u0793\u0007",
"W\u0002\u0002\u0793\u0794\u0007D\u0002\u0002\u0794\u0795\u0007N\u0002",
"\u0002\u0795\u0796\u0007G\u0002\u0002\u0796\u0797\u0003\u0002\u0002",
"\u0002\u0797\u0798\u0005\u01bb\u00de\u0002\u0798\u0799\u0007R\u0002",
"\u0002\u0799\u079a\u0007T\u0002\u0002\u079a\u079b\u0007G\u0002\u0002",
"\u079b\u079c\u0007E\u0002\u0002\u079c\u079d\u0007K\u0002\u0002\u079d",
"\u079e\u0007U\u0002\u0002\u079e\u079f\u0007K\u0002\u0002\u079f\u07a0",
"\u0007Q\u0002\u0002\u07a0\u07a1\u0007P\u0002\u0002\u07a1\u01b0\u0003",
"\u0002\u0002\u0002\u07a2\u07a4\u0007G\u0002\u0002\u07a3\u07a5\t\u0006",
"\u0002\u0002\u07a4\u07a3\u0003\u0002\u0002\u0002\u07a4\u07a5\u0003\u0002",
"\u0002\u0002\u07a5\u07a7\u0003\u0002\u0002\u0002\u07a6\u07a8\u0005\u01b3",
"\u00da\u0002\u07a7\u07a6\u0003\u0002\u0002\u0002\u07a8\u07a9\u0003\u0002",
"\u0002\u0002\u07a9\u07a7\u0003\u0002\u0002\u0002\u07a9\u07aa\u0003\u0002",
"\u0002\u0002\u07aa\u01b2\u0003\u0002\u0002\u0002\u07ab\u07ac\t\u0007",
"\u0002\u0002\u07ac\u01b4\u0003\u0002\u0002\u0002\u07ad\u07ae\t\b\u0002",
"\u0002\u07ae\u01b6\u0003\u0002\u0002\u0002\u07af\u07b0\u0007/\u0002",
"\u0002\u07b0\u07b1\u0007/\u0002\u0002\u07b1\u07b5\u0003\u0002\u0002",
"\u0002\u07b2\u07b4\n\t\u0002\u0002\u07b3\u07b2\u0003\u0002\u0002\u0002",
"\u07b4\u07b7\u0003\u0002\u0002\u0002\u07b5\u07b3\u0003\u0002\u0002\u0002",
"\u07b5\u07b6\u0003\u0002\u0002\u0002\u07b6\u07b9\u0003\u0002\u0002\u0002",
"\u07b7\u07b5\u0003\u0002\u0002\u0002\u07b8\u07ba\u0007\u000f\u0002\u0002",
"\u07b9\u07b8\u0003\u0002\u0002\u0002\u07b9\u07ba\u0003\u0002\u0002\u0002",
"\u07ba\u07bc\u0003\u0002\u0002\u0002\u07bb\u07bd\u0007\f\u0002\u0002",
"\u07bc\u07bb\u0003\u0002\u0002\u0002\u07bc\u07bd\u0003\u0002\u0002\u0002",
"\u07bd\u07be\u0003\u0002\u0002\u0002\u07be\u07bf\b\u00dc\u0002\u0002",
"\u07bf\u01b8\u0003\u0002\u0002\u0002\u07c0\u07c1\u00071\u0002\u0002",
"\u07c1\u07c2\u0007,\u0002\u0002\u07c2\u07c6\u0003\u0002\u0002\u0002",
"\u07c3\u07c5\u000b\u0002\u0002\u0002\u07c4\u07c3\u0003\u0002\u0002\u0002",
"\u07c5\u07c8\u0003\u0002\u0002\u0002\u07c6\u07c7\u0003\u0002\u0002\u0002",
"\u07c6\u07c4\u0003\u0002\u0002\u0002\u07c7\u07c9\u0003\u0002\u0002\u0002",
"\u07c8\u07c6\u0003\u0002\u0002\u0002\u07c9\u07ca\u0007,\u0002\u0002",
"\u07ca\u07cb\u00071\u0002\u0002\u07cb\u07cc\u0003\u0002\u0002\u0002",
"\u07cc\u07cd\b\u00dd\u0002\u0002\u07cd\u01ba\u0003\u0002\u0002\u0002",
"\u07ce\u07d0\t\n\u0002\u0002\u07cf\u07ce\u0003\u0002\u0002\u0002\u07d0",
"\u07d1\u0003\u0002\u0002\u0002\u07d1\u07cf\u0003\u0002\u0002\u0002\u07d1",
"\u07d2\u0003\u0002\u0002\u0002\u07d2\u07d3\u0003\u0002\u0002\u0002\u07d3",
"\u07d4\b\u00de\u0002\u0002\u07d4\u01bc\u0003\u0002\u0002\u0002\u07d5",
"\u07d6\u000b\u0002\u0002\u0002\u07d6\u01be\u0003\u0002\u0002\u0002#",
"\u0002\u06c3\u06e0\u06e2\u06ee\u06f0\u06fb\u0703\u0708\u070e\u0715\u0717",
"\u071c\u0722\u0725\u072d\u0731\u0735\u073a\u073c\u0743\u0745\u074b\u074d",
"\u0756\u0758\u07a4\u07a9\u07b5\u07b9\u07bc\u07c6\u07d1\u0003\u0002\u0003",
"\u0002"].join("");
var atn = new antlr4.atn.ATNDeserializer().deserialize(serializedATN);
var decisionsToDFA = atn.decisionToState.map( function(ds, index) { return new antlr4.dfa.DFA(ds, index); });
function SqlBaseLexer(input) {
antlr4.Lexer.call(this, input);
this._interp = new antlr4.atn.LexerATNSimulator(this, atn, decisionsToDFA, new antlr4.PredictionContextCache());
return this;
}
SqlBaseLexer.prototype = Object.create(antlr4.Lexer.prototype);
SqlBaseLexer.prototype.constructor = SqlBaseLexer;
Object.defineProperty(SqlBaseLexer.prototype, "atn", {
get : function() {
return atn;
}
});
SqlBaseLexer.EOF = antlr4.Token.EOF;
SqlBaseLexer.T__0 = 1;
SqlBaseLexer.T__1 = 2;
SqlBaseLexer.T__2 = 3;
SqlBaseLexer.T__3 = 4;
SqlBaseLexer.T__4 = 5;
SqlBaseLexer.T__5 = 6;
SqlBaseLexer.T__6 = 7;
SqlBaseLexer.T__7 = 8;
SqlBaseLexer.T__8 = 9;
SqlBaseLexer.ADD = 10;
SqlBaseLexer.ALL = 11;
SqlBaseLexer.ALTER = 12;
SqlBaseLexer.ANALYZE = 13;
SqlBaseLexer.AND = 14;
SqlBaseLexer.ANY = 15;
SqlBaseLexer.ARRAY = 16;
SqlBaseLexer.AS = 17;
SqlBaseLexer.ASC = 18;
SqlBaseLexer.AT = 19;
SqlBaseLexer.BERNOULLI = 20;
SqlBaseLexer.BETWEEN = 21;
SqlBaseLexer.BY = 22;
SqlBaseLexer.CALL = 23;
SqlBaseLexer.CASCADE = 24;
SqlBaseLexer.CASE = 25;
SqlBaseLexer.CAST = 26;
SqlBaseLexer.CATALOGS = 27;
SqlBaseLexer.COLUMN = 28;
SqlBaseLexer.COLUMNS = 29;
SqlBaseLexer.COMMENT = 30;
SqlBaseLexer.COMMIT = 31;
SqlBaseLexer.COMMITTED = 32;
SqlBaseLexer.CONSTRAINT = 33;
SqlBaseLexer.CREATE = 34;
SqlBaseLexer.CROSS = 35;
SqlBaseLexer.CUBE = 36;
SqlBaseLexer.CURRENT = 37;
SqlBaseLexer.CURRENT_DATE = 38;
SqlBaseLexer.CURRENT_PATH = 39;
SqlBaseLexer.CURRENT_TIME = 40;
SqlBaseLexer.CURRENT_TIMESTAMP = 41;
SqlBaseLexer.CURRENT_USER = 42;
SqlBaseLexer.DATA = 43;
SqlBaseLexer.DATE = 44;
SqlBaseLexer.DAY = 45;
SqlBaseLexer.DEALLOCATE = 46;
SqlBaseLexer.DELETE = 47;
SqlBaseLexer.DESC = 48;
SqlBaseLexer.DESCRIBE = 49;
SqlBaseLexer.DISTINCT = 50;
SqlBaseLexer.DISTRIBUTED = 51;
SqlBaseLexer.DROP = 52;
SqlBaseLexer.ELSE = 53;
SqlBaseLexer.END = 54;
SqlBaseLexer.ESCAPE = 55;
SqlBaseLexer.EXCEPT = 56;
SqlBaseLexer.EXCLUDING = 57;
SqlBaseLexer.EXECUTE = 58;
SqlBaseLexer.EXISTS = 59;
SqlBaseLexer.EXPLAIN = 60;
SqlBaseLexer.EXTRACT = 61;
SqlBaseLexer.FALSE = 62;
SqlBaseLexer.FILTER = 63;
SqlBaseLexer.FIRST = 64;
SqlBaseLexer.FOLLOWING = 65;
SqlBaseLexer.FOR = 66;
SqlBaseLexer.FORMAT = 67;
SqlBaseLexer.FROM = 68;
SqlBaseLexer.FULL = 69;
SqlBaseLexer.FUNCTIONS = 70;
SqlBaseLexer.GRANT = 71;
SqlBaseLexer.GRANTS = 72;
SqlBaseLexer.GRAPHVIZ = 73;
SqlBaseLexer.GROUP = 74;
SqlBaseLexer.GROUPING = 75;
SqlBaseLexer.HAVING = 76;
SqlBaseLexer.HOUR = 77;
SqlBaseLexer.IF = 78;
SqlBaseLexer.IN = 79;
SqlBaseLexer.INCLUDING = 80;
SqlBaseLexer.INNER = 81;
SqlBaseLexer.INPUT = 82;
SqlBaseLexer.INSERT = 83;
SqlBaseLexer.INTERSECT = 84;
SqlBaseLexer.INTERVAL = 85;
SqlBaseLexer.INTO = 86;
SqlBaseLexer.IO = 87;
SqlBaseLexer.IS = 88;
SqlBaseLexer.ISOLATION = 89;
SqlBaseLexer.JSON = 90;
SqlBaseLexer.JOIN = 91;
SqlBaseLexer.LAST = 92;
SqlBaseLexer.LATERAL = 93;
SqlBaseLexer.LEFT = 94;
SqlBaseLexer.LEVEL = 95;
SqlBaseLexer.LIKE = 96;
SqlBaseLexer.LIMIT = 97;
SqlBaseLexer.LOCALTIME = 98;
SqlBaseLexer.LOCALTIMESTAMP = 99;
SqlBaseLexer.LOGICAL = 100;
SqlBaseLexer.MAP = 101;
SqlBaseLexer.MINUTE = 102;
SqlBaseLexer.MONTH = 103;
SqlBaseLexer.NATURAL = 104;
SqlBaseLexer.NFC = 105;
SqlBaseLexer.NFD = 106;
SqlBaseLexer.NFKC = 107;
SqlBaseLexer.NFKD = 108;
SqlBaseLexer.NO = 109;
SqlBaseLexer.NORMALIZE = 110;
SqlBaseLexer.NOT = 111;
SqlBaseLexer.NULL = 112;
SqlBaseLexer.NULLIF = 113;
SqlBaseLexer.NULLS = 114;
SqlBaseLexer.ON = 115;
SqlBaseLexer.ONLY = 116;
SqlBaseLexer.OPTION = 117;
SqlBaseLexer.OR = 118;
SqlBaseLexer.ORDER = 119;
SqlBaseLexer.ORDINALITY = 120;
SqlBaseLexer.OUTER = 121;
SqlBaseLexer.OUTPUT = 122;
SqlBaseLexer.OVER = 123;
SqlBaseLexer.PARTITION = 124;
SqlBaseLexer.PARTITIONS = 125;
SqlBaseLexer.PATH = 126;
SqlBaseLexer.POSITION = 127;
SqlBaseLexer.PRECEDING = 128;
SqlBaseLexer.PREPARE = 129;
SqlBaseLexer.PRIVILEGES = 130;
SqlBaseLexer.PROPERTIES = 131;
SqlBaseLexer.PUBLIC = 132;
SqlBaseLexer.RANGE = 133;
SqlBaseLexer.READ = 134;
SqlBaseLexer.RECURSIVE = 135;
SqlBaseLexer.RENAME = 136;
SqlBaseLexer.REPEATABLE = 137;
SqlBaseLexer.REPLACE = 138;
SqlBaseLexer.RESET = 139;
SqlBaseLexer.RESTRICT = 140;
SqlBaseLexer.REVOKE = 141;
SqlBaseLexer.RIGHT = 142;
SqlBaseLexer.ROLLBACK = 143;
SqlBaseLexer.ROLLUP = 144;
SqlBaseLexer.ROW = 145;
SqlBaseLexer.ROWS = 146;
SqlBaseLexer.SCHEMA = 147;
SqlBaseLexer.SCHEMAS = 148;
SqlBaseLexer.SECOND = 149;
SqlBaseLexer.SELECT = 150;
SqlBaseLexer.SERIALIZABLE = 151;
SqlBaseLexer.SESSION = 152;
SqlBaseLexer.SET = 153;
SqlBaseLexer.SETS = 154;
SqlBaseLexer.SHOW = 155;
SqlBaseLexer.SOME = 156;
SqlBaseLexer.START = 157;
SqlBaseLexer.STATS = 158;
SqlBaseLexer.SUBSTRING = 159;
SqlBaseLexer.SYSTEM = 160;
SqlBaseLexer.TABLE = 161;
SqlBaseLexer.TABLES = 162;
SqlBaseLexer.TABLESAMPLE = 163;
SqlBaseLexer.TEXT = 164;
SqlBaseLexer.THEN = 165;
SqlBaseLexer.TIME = 166;
SqlBaseLexer.TIMESTAMP = 167;
SqlBaseLexer.TO = 168;
SqlBaseLexer.TRANSACTION = 169;
SqlBaseLexer.TRUE = 170;
SqlBaseLexer.TRY_CAST = 171;
SqlBaseLexer.TYPE = 172;
SqlBaseLexer.UESCAPE = 173;
SqlBaseLexer.UNBOUNDED = 174;
SqlBaseLexer.UNCOMMITTED = 175;
SqlBaseLexer.UNION = 176;
SqlBaseLexer.UNNEST = 177;
SqlBaseLexer.USE = 178;
SqlBaseLexer.USING = 179;
SqlBaseLexer.VALIDATE = 180;
SqlBaseLexer.VALUES = 181;
SqlBaseLexer.VERBOSE = 182;
SqlBaseLexer.VIEW = 183;
SqlBaseLexer.WHEN = 184;
SqlBaseLexer.WHERE = 185;
SqlBaseLexer.WITH = 186;
SqlBaseLexer.WORK = 187;
SqlBaseLexer.WRITE = 188;
SqlBaseLexer.YEAR = 189;
SqlBaseLexer.ZONE = 190;
SqlBaseLexer.EQ = 191;
SqlBaseLexer.NEQ = 192;
SqlBaseLexer.LT = 193;
SqlBaseLexer.LTE = 194;
SqlBaseLexer.GT = 195;
SqlBaseLexer.GTE = 196;
SqlBaseLexer.PLUS = 197;
SqlBaseLexer.MINUS = 198;
SqlBaseLexer.ASTERISK = 199;
SqlBaseLexer.SLASH = 200;
SqlBaseLexer.PERCENT = 201;
SqlBaseLexer.CONCAT = 202;
SqlBaseLexer.STRING = 203;
SqlBaseLexer.UNICODE_STRING = 204;
SqlBaseLexer.BINARY_LITERAL = 205;
SqlBaseLexer.INTEGER_VALUE = 206;
SqlBaseLexer.DECIMAL_VALUE = 207;
SqlBaseLexer.DOUBLE_VALUE = 208;
SqlBaseLexer.IDENTIFIER = 209;
SqlBaseLexer.DIGIT_IDENTIFIER = 210;
SqlBaseLexer.QUOTED_IDENTIFIER = 211;
SqlBaseLexer.BACKQUOTED_IDENTIFIER = 212;
SqlBaseLexer.TIME_WITH_TIME_ZONE = 213;
SqlBaseLexer.TIMESTAMP_WITH_TIME_ZONE = 214;
SqlBaseLexer.DOUBLE_PRECISION = 215;
SqlBaseLexer.SIMPLE_COMMENT = 216;
SqlBaseLexer.BRACKETED_COMMENT = 217;
SqlBaseLexer.WS = 218;
SqlBaseLexer.UNRECOGNIZED = 219;
SqlBaseLexer.prototype.channelNames = [ "DEFAULT_TOKEN_CHANNEL", "HIDDEN" ];
SqlBaseLexer.prototype.modeNames = [ "DEFAULT_MODE" ];
SqlBaseLexer.prototype.literalNames = [ null, "'.'", "'('", "')'", "','",
"'?'", "'->'", "'['", "']'", "'=>'",
"'ADD'", "'ALL'", "'ALTER'", "'ANALYZE'",
"'AND'", "'ANY'", "'ARRAY'", "'AS'",
"'ASC'", "'AT'", "'BERNOULLI'",
"'BETWEEN'", "'BY'", "'CALL'", "'CASCADE'",
"'CASE'", "'CAST'", "'CATALOGS'",
"'COLUMN'", "'COLUMNS'", "'COMMENT'",
"'COMMIT'", "'COMMITTED'", "'CONSTRAINT'",
"'CREATE'", "'CROSS'", "'CUBE'",
"'CURRENT'", "'CURRENT_DATE'", "'CURRENT_PATH'",
"'CURRENT_TIME'", "'CURRENT_TIMESTAMP'",
"'CURRENT_USER'", "'DATA'", "'DATE'",
"'DAY'", "'DEALLOCATE'", "'DELETE'",
"'DESC'", "'DESCRIBE'", "'DISTINCT'",
"'DISTRIBUTED'", "'DROP'", "'ELSE'",
"'END'", "'ESCAPE'", "'EXCEPT'",
"'EXCLUDING'", "'EXECUTE'", "'EXISTS'",
"'EXPLAIN'", "'EXTRACT'", "'FALSE'",
"'FILTER'", "'FIRST'", "'FOLLOWING'",
"'FOR'", "'FORMAT'", "'FROM'", "'FULL'",
"'FUNCTIONS'", "'GRANT'", "'GRANTS'",
"'GRAPHVIZ'", "'GROUP'", "'GROUPING'",
"'HAVING'", "'HOUR'", "'IF'", "'IN'",
"'INCLUDING'", "'INNER'", "'INPUT'",
"'INSERT'", "'INTERSECT'", "'INTERVAL'",
"'INTO'", "'IO'", "'IS'", "'ISOLATION'",
"'JSON'", "'JOIN'", "'LAST'", "'LATERAL'",
"'LEFT'", "'LEVEL'", "'LIKE'", "'LIMIT'",
"'LOCALTIME'", "'LOCALTIMESTAMP'",
"'LOGICAL'", "'MAP'", "'MINUTE'",
"'MONTH'", "'NATURAL'", "'NFC'",
"'NFD'", "'NFKC'", "'NFKD'", "'NO'",
"'NORMALIZE'", "'NOT'", "'NULL'",
"'NULLIF'", "'NULLS'", "'ON'", "'ONLY'",
"'OPTION'", "'OR'", "'ORDER'", "'ORDINALITY'",
"'OUTER'", "'OUTPUT'", "'OVER'",
"'PARTITION'", "'PARTITIONS'", "'PATH'",
"'POSITION'", "'PRECEDING'", "'PREPARE'",
"'PRIVILEGES'", "'PROPERTIES'",
"'PUBLIC'", "'RANGE'", "'READ'",
"'RECURSIVE'", "'RENAME'", "'REPEATABLE'",
"'REPLACE'", "'RESET'", "'RESTRICT'",
"'REVOKE'", "'RIGHT'", "'ROLLBACK'",
"'ROLLUP'", "'ROW'", "'ROWS'", "'SCHEMA'",
"'SCHEMAS'", "'SECOND'", "'SELECT'",
"'SERIALIZABLE'", "'SESSION'", "'SET'",
"'SETS'", "'SHOW'", "'SOME'", "'START'",
"'STATS'", "'SUBSTRING'", "'SYSTEM'",
"'TABLE'", "'TABLES'", "'TABLESAMPLE'",
"'TEXT'", "'THEN'", "'TIME'", "'TIMESTAMP'",
"'TO'", "'TRANSACTION'", "'TRUE'",
"'TRY_CAST'", "'TYPE'", "'UESCAPE'",
"'UNBOUNDED'", "'UNCOMMITTED'",
"'UNION'", "'UNNEST'", "'USE'",
"'USING'", "'VALIDATE'", "'VALUES'",
"'VERBOSE'", "'VIEW'", "'WHEN'",
"'WHERE'", "'WITH'", "'WORK'", "'WRITE'",
"'YEAR'", "'ZONE'", "'='", null,
"'<'", "'<='", "'>'", "'>='", "'+'",
"'-'", "'*'", "'/'", "'%'", "'||'" ];
SqlBaseLexer.prototype.symbolicNames = [ null, null, null, null, null, null,
null, null, null, null, "ADD",
"ALL", "ALTER", "ANALYZE", "AND",
"ANY", "ARRAY", "AS", "ASC", "AT",
"BERNOULLI", "BETWEEN", "BY", "CALL",
"CASCADE", "CASE", "CAST", "CATALOGS",
"COLUMN", "COLUMNS", "COMMENT",
"COMMIT", "COMMITTED", "CONSTRAINT",
"CREATE", "CROSS", "CUBE", "CURRENT",
"CURRENT_DATE", "CURRENT_PATH",
"CURRENT_TIME", "CURRENT_TIMESTAMP",
"CURRENT_USER", "DATA", "DATE",
"DAY", "DEALLOCATE", "DELETE",
"DESC", "DESCRIBE", "DISTINCT",
"DISTRIBUTED", "DROP", "ELSE",
"END", "ESCAPE", "EXCEPT", "EXCLUDING",
"EXECUTE", "EXISTS", "EXPLAIN",
"EXTRACT", "FALSE", "FILTER", "FIRST",
"FOLLOWING", "FOR", "FORMAT", "FROM",
"FULL", "FUNCTIONS", "GRANT", "GRANTS",
"GRAPHVIZ", "GROUP", "GROUPING",
"HAVING", "HOUR", "IF", "IN", "INCLUDING",
"INNER", "INPUT", "INSERT", "INTERSECT",
"INTERVAL", "INTO", "IO", "IS",
"ISOLATION", "JSON", "JOIN", "LAST",
"LATERAL", "LEFT", "LEVEL", "LIKE",
"LIMIT", "LOCALTIME", "LOCALTIMESTAMP",
"LOGICAL", "MAP", "MINUTE", "MONTH",
"NATURAL", "NFC", "NFD", "NFKC",
"NFKD", "NO", "NORMALIZE", "NOT",
"NULL", "NULLIF", "NULLS", "ON",
"ONLY", "OPTION", "OR", "ORDER",
"ORDINALITY", "OUTER", "OUTPUT",
"OVER", "PARTITION", "PARTITIONS",
"PATH", "POSITION", "PRECEDING",
"PREPARE", "PRIVILEGES", "PROPERTIES",
"PUBLIC", "RANGE", "READ", "RECURSIVE",
"RENAME", "REPEATABLE", "REPLACE",
"RESET", "RESTRICT", "REVOKE",
"RIGHT", "ROLLBACK", "ROLLUP",
"ROW", "ROWS", "SCHEMA", "SCHEMAS",
"SECOND", "SELECT", "SERIALIZABLE",
"SESSION", "SET", "SETS", "SHOW",
"SOME", "START", "STATS", "SUBSTRING",
"SYSTEM", "TABLE", "TABLES", "TABLESAMPLE",
"TEXT", "THEN", "TIME", "TIMESTAMP",
"TO", "TRANSACTION", "TRUE", "TRY_CAST",
"TYPE", "UESCAPE", "UNBOUNDED",
"UNCOMMITTED", "UNION", "UNNEST",
"USE", "USING", "VALIDATE", "VALUES",
"VERBOSE", "VIEW", "WHEN", "WHERE",
"WITH", "WORK", "WRITE", "YEAR",
"ZONE", "EQ", "NEQ", "LT", "LTE",
"GT", "GTE", "PLUS", "MINUS", "ASTERISK",
"SLASH", "PERCENT", "CONCAT", "STRING",
"UNICODE_STRING", "BINARY_LITERAL",
"INTEGER_VALUE", "DECIMAL_VALUE",
"DOUBLE_VALUE", "IDENTIFIER", "DIGIT_IDENTIFIER",
"QUOTED_IDENTIFIER", "BACKQUOTED_IDENTIFIER",
"TIME_WITH_TIME_ZONE", "TIMESTAMP_WITH_TIME_ZONE",
"DOUBLE_PRECISION", "SIMPLE_COMMENT",
"BRACKETED_COMMENT", "WS", "UNRECOGNIZED" ];
SqlBaseLexer.prototype.ruleNames = [ "T__0", "T__1", "T__2", "T__3", "T__4",
"T__5", "T__6", "T__7", "T__8", "ADD",
"ALL", "ALTER", "ANALYZE", "AND", "ANY",
"ARRAY", "AS", "ASC", "AT", "BERNOULLI",
"BETWEEN", "BY", "CALL", "CASCADE",
"CASE", "CAST", "CATALOGS", "COLUMN",
"COLUMNS", "COMMENT", "COMMIT", "COMMITTED",
"CONSTRAINT", "CREATE", "CROSS", "CUBE",
"CURRENT", "CURRENT_DATE", "CURRENT_PATH",
"CURRENT_TIME", "CURRENT_TIMESTAMP",
"CURRENT_USER", "DATA", "DATE", "DAY",
"DEALLOCATE", "DELETE", "DESC", "DESCRIBE",
"DISTINCT", "DISTRIBUTED", "DROP",
"ELSE", "END", "ESCAPE", "EXCEPT",
"EXCLUDING", "EXECUTE", "EXISTS", "EXPLAIN",
"EXTRACT", "FALSE", "FILTER", "FIRST",
"FOLLOWING", "FOR", "FORMAT", "FROM",
"FULL", "FUNCTIONS", "GRANT", "GRANTS",
"GRAPHVIZ", "GROUP", "GROUPING", "HAVING",
"HOUR", "IF", "IN", "INCLUDING", "INNER",
"INPUT", "INSERT", "INTERSECT", "INTERVAL",
"INTO", "IO", "IS", "ISOLATION", "JSON",
"JOIN", "LAST", "LATERAL", "LEFT",
"LEVEL", "LIKE", "LIMIT", "LOCALTIME",
"LOCALTIMESTAMP", "LOGICAL", "MAP",
"MINUTE", "MONTH", "NATURAL", "NFC",
"NFD", "NFKC", "NFKD", "NO", "NORMALIZE",
"NOT", "NULL", "NULLIF", "NULLS", "ON",
"ONLY", "OPTION", "OR", "ORDER", "ORDINALITY",
"OUTER", "OUTPUT", "OVER", "PARTITION",
"PARTITIONS", "PATH", "POSITION", "PRECEDING",
"PREPARE", "PRIVILEGES", "PROPERTIES",
"PUBLIC", "RANGE", "READ", "RECURSIVE",
"RENAME", "REPEATABLE", "REPLACE",
"RESET", "RESTRICT", "REVOKE", "RIGHT",
"ROLLBACK", "ROLLUP", "ROW", "ROWS",
"SCHEMA", "SCHEMAS", "SECOND", "SELECT",
"SERIALIZABLE", "SESSION", "SET", "SETS",
"SHOW", "SOME", "START", "STATS", "SUBSTRING",
"SYSTEM", "TABLE", "TABLES", "TABLESAMPLE",
"TEXT", "THEN", "TIME", "TIMESTAMP",
"TO", "TRANSACTION", "TRUE", "TRY_CAST",
"TYPE", "UESCAPE", "UNBOUNDED", "UNCOMMITTED",
"UNION", "UNNEST", "USE", "USING",
"VALIDATE", "VALUES", "VERBOSE", "VIEW",
"WHEN", "WHERE", "WITH", "WORK", "WRITE",
"YEAR", "ZONE", "EQ", "NEQ", "LT",
"LTE", "GT", "GTE", "PLUS", "MINUS",
"ASTERISK", "SLASH", "PERCENT", "CONCAT",
"STRING", "UNICODE_STRING", "BINARY_LITERAL",
"INTEGER_VALUE", "DECIMAL_VALUE", "DOUBLE_VALUE",
"IDENTIFIER", "DIGIT_IDENTIFIER", "QUOTED_IDENTIFIER",
"BACKQUOTED_IDENTIFIER", "TIME_WITH_TIME_ZONE",
"TIMESTAMP_WITH_TIME_ZONE", "DOUBLE_PRECISION",
"EXPONENT", "DIGIT", "LETTER", "SIMPLE_COMMENT",
"BRACKETED_COMMENT", "WS", "UNRECOGNIZED" ];
SqlBaseLexer.prototype.grammarFileName = "SqlBase.g4";
exports.SqlBaseLexer = SqlBaseLexer;
},{"antlr4/index":45}],2:[function(require,module,exports){
// Generated from SqlBase.g4 by ANTLR 4.7.1
// jshint ignore: start
var antlr4 = require('antlr4/index');
// This class defines a complete listener for a parse tree produced by SqlBaseParser.
function SqlBaseListener() {
antlr4.tree.ParseTreeListener.call(this);
return this;
}
SqlBaseListener.prototype = Object.create(antlr4.tree.ParseTreeListener.prototype);
SqlBaseListener.prototype.constructor = SqlBaseListener;
// Enter a parse tree produced by SqlBaseParser#singleStatement.
SqlBaseListener.prototype.enterSingleStatement = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#singleStatement.
SqlBaseListener.prototype.exitSingleStatement = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#standaloneExpression.
SqlBaseListener.prototype.enterStandaloneExpression = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#standaloneExpression.
SqlBaseListener.prototype.exitStandaloneExpression = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#standalonePathSpecification.
SqlBaseListener.prototype.enterStandalonePathSpecification = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#standalonePathSpecification.
SqlBaseListener.prototype.exitStandalonePathSpecification = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#statementDefault.
SqlBaseListener.prototype.enterStatementDefault = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#statementDefault.
SqlBaseListener.prototype.exitStatementDefault = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#use.
SqlBaseListener.prototype.enterUse = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#use.
SqlBaseListener.prototype.exitUse = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#createSchema.
SqlBaseListener.prototype.enterCreateSchema = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#createSchema.
SqlBaseListener.prototype.exitCreateSchema = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#dropSchema.
SqlBaseListener.prototype.enterDropSchema = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#dropSchema.
SqlBaseListener.prototype.exitDropSchema = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#renameSchema.
SqlBaseListener.prototype.enterRenameSchema = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#renameSchema.
SqlBaseListener.prototype.exitRenameSchema = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#createTableAsSelect.
SqlBaseListener.prototype.enterCreateTableAsSelect = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#createTableAsSelect.
SqlBaseListener.prototype.exitCreateTableAsSelect = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#createTable.
SqlBaseListener.prototype.enterCreateTable = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#createTable.
SqlBaseListener.prototype.exitCreateTable = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#dropTable.
SqlBaseListener.prototype.enterDropTable = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#dropTable.
SqlBaseListener.prototype.exitDropTable = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#insertInto.
SqlBaseListener.prototype.enterInsertInto = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#insertInto.
SqlBaseListener.prototype.exitInsertInto = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#delete.
SqlBaseListener.prototype.enterDelete = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#delete.
SqlBaseListener.prototype.exitDelete = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#renameTable.
SqlBaseListener.prototype.enterRenameTable = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#renameTable.
SqlBaseListener.prototype.exitRenameTable = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#renameColumn.
SqlBaseListener.prototype.enterRenameColumn = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#renameColumn.
SqlBaseListener.prototype.exitRenameColumn = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#dropColumn.
SqlBaseListener.prototype.enterDropColumn = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#dropColumn.
SqlBaseListener.prototype.exitDropColumn = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#addColumn.
SqlBaseListener.prototype.enterAddColumn = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#addColumn.
SqlBaseListener.prototype.exitAddColumn = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#createView.
SqlBaseListener.prototype.enterCreateView = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#createView.
SqlBaseListener.prototype.exitCreateView = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#dropView.
SqlBaseListener.prototype.enterDropView = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#dropView.
SqlBaseListener.prototype.exitDropView = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#call.
SqlBaseListener.prototype.enterCall = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#call.
SqlBaseListener.prototype.exitCall = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#grant.
SqlBaseListener.prototype.enterGrant = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#grant.
SqlBaseListener.prototype.exitGrant = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#revoke.
SqlBaseListener.prototype.enterRevoke = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#revoke.
SqlBaseListener.prototype.exitRevoke = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#showGrants.
SqlBaseListener.prototype.enterShowGrants = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#showGrants.
SqlBaseListener.prototype.exitShowGrants = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#explain.
SqlBaseListener.prototype.enterExplain = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#explain.
SqlBaseListener.prototype.exitExplain = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#showCreateTable.
SqlBaseListener.prototype.enterShowCreateTable = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#showCreateTable.
SqlBaseListener.prototype.exitShowCreateTable = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#showCreateView.
SqlBaseListener.prototype.enterShowCreateView = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#showCreateView.
SqlBaseListener.prototype.exitShowCreateView = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#showTables.
SqlBaseListener.prototype.enterShowTables = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#showTables.
SqlBaseListener.prototype.exitShowTables = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#showSchemas.
SqlBaseListener.prototype.enterShowSchemas = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#showSchemas.
SqlBaseListener.prototype.exitShowSchemas = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#showCatalogs.
SqlBaseListener.prototype.enterShowCatalogs = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#showCatalogs.
SqlBaseListener.prototype.exitShowCatalogs = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#showColumns.
SqlBaseListener.prototype.enterShowColumns = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#showColumns.
SqlBaseListener.prototype.exitShowColumns = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#showStats.
SqlBaseListener.prototype.enterShowStats = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#showStats.
SqlBaseListener.prototype.exitShowStats = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#showStatsForQuery.
SqlBaseListener.prototype.enterShowStatsForQuery = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#showStatsForQuery.
SqlBaseListener.prototype.exitShowStatsForQuery = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#showFunctions.
SqlBaseListener.prototype.enterShowFunctions = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#showFunctions.
SqlBaseListener.prototype.exitShowFunctions = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#showSession.
SqlBaseListener.prototype.enterShowSession = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#showSession.
SqlBaseListener.prototype.exitShowSession = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#setSession.
SqlBaseListener.prototype.enterSetSession = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#setSession.
SqlBaseListener.prototype.exitSetSession = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#resetSession.
SqlBaseListener.prototype.enterResetSession = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#resetSession.
SqlBaseListener.prototype.exitResetSession = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#startTransaction.
SqlBaseListener.prototype.enterStartTransaction = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#startTransaction.
SqlBaseListener.prototype.exitStartTransaction = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#commit.
SqlBaseListener.prototype.enterCommit = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#commit.
SqlBaseListener.prototype.exitCommit = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#rollback.
SqlBaseListener.prototype.enterRollback = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#rollback.
SqlBaseListener.prototype.exitRollback = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#prepare.
SqlBaseListener.prototype.enterPrepare = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#prepare.
SqlBaseListener.prototype.exitPrepare = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#deallocate.
SqlBaseListener.prototype.enterDeallocate = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#deallocate.
SqlBaseListener.prototype.exitDeallocate = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#execute.
SqlBaseListener.prototype.enterExecute = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#execute.
SqlBaseListener.prototype.exitExecute = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#describeInput.
SqlBaseListener.prototype.enterDescribeInput = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#describeInput.
SqlBaseListener.prototype.exitDescribeInput = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#describeOutput.
SqlBaseListener.prototype.enterDescribeOutput = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#describeOutput.
SqlBaseListener.prototype.exitDescribeOutput = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#setPath.
SqlBaseListener.prototype.enterSetPath = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#setPath.
SqlBaseListener.prototype.exitSetPath = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#query.
SqlBaseListener.prototype.enterQuery = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#query.
SqlBaseListener.prototype.exitQuery = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#renamedwith.
SqlBaseListener.prototype.enterRenamedwith = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#renamedwith.
SqlBaseListener.prototype.exitRenamedwith = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#tableElement.
SqlBaseListener.prototype.enterTableElement = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#tableElement.
SqlBaseListener.prototype.exitTableElement = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#columnDefinition.
SqlBaseListener.prototype.enterColumnDefinition = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#columnDefinition.
SqlBaseListener.prototype.exitColumnDefinition = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#likeClause.
SqlBaseListener.prototype.enterLikeClause = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#likeClause.
SqlBaseListener.prototype.exitLikeClause = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#properties.
SqlBaseListener.prototype.enterProperties = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#properties.
SqlBaseListener.prototype.exitProperties = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#property.
SqlBaseListener.prototype.enterProperty = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#property.
SqlBaseListener.prototype.exitProperty = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#queryNoWith.
SqlBaseListener.prototype.enterQueryNoWith = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#queryNoWith.
SqlBaseListener.prototype.exitQueryNoWith = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#queryTermDefault.
SqlBaseListener.prototype.enterQueryTermDefault = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#queryTermDefault.
SqlBaseListener.prototype.exitQueryTermDefault = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#setOperation.
SqlBaseListener.prototype.enterSetOperation = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#setOperation.
SqlBaseListener.prototype.exitSetOperation = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#queryPrimaryDefault.
SqlBaseListener.prototype.enterQueryPrimaryDefault = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#queryPrimaryDefault.
SqlBaseListener.prototype.exitQueryPrimaryDefault = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#table.
SqlBaseListener.prototype.enterTable = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#table.
SqlBaseListener.prototype.exitTable = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#inlineTable.
SqlBaseListener.prototype.enterInlineTable = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#inlineTable.
SqlBaseListener.prototype.exitInlineTable = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#subquery.
SqlBaseListener.prototype.enterSubquery = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#subquery.
SqlBaseListener.prototype.exitSubquery = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#sortItem.
SqlBaseListener.prototype.enterSortItem = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#sortItem.
SqlBaseListener.prototype.exitSortItem = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#querySpecification.
SqlBaseListener.prototype.enterQuerySpecification = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#querySpecification.
SqlBaseListener.prototype.exitQuerySpecification = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#groupBy.
SqlBaseListener.prototype.enterGroupBy = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#groupBy.
SqlBaseListener.prototype.exitGroupBy = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#singleGroupingSet.
SqlBaseListener.prototype.enterSingleGroupingSet = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#singleGroupingSet.
SqlBaseListener.prototype.exitSingleGroupingSet = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#rollup.
SqlBaseListener.prototype.enterRollup = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#rollup.
SqlBaseListener.prototype.exitRollup = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#cube.
SqlBaseListener.prototype.enterCube = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#cube.
SqlBaseListener.prototype.exitCube = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#multipleGroupingSets.
SqlBaseListener.prototype.enterMultipleGroupingSets = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#multipleGroupingSets.
SqlBaseListener.prototype.exitMultipleGroupingSets = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#groupingSet.
SqlBaseListener.prototype.enterGroupingSet = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#groupingSet.
SqlBaseListener.prototype.exitGroupingSet = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#namedQuery.
SqlBaseListener.prototype.enterNamedQuery = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#namedQuery.
SqlBaseListener.prototype.exitNamedQuery = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#setQuantifier.
SqlBaseListener.prototype.enterSetQuantifier = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#setQuantifier.
SqlBaseListener.prototype.exitSetQuantifier = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#selectSingle.
SqlBaseListener.prototype.enterSelectSingle = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#selectSingle.
SqlBaseListener.prototype.exitSelectSingle = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#selectAll.
SqlBaseListener.prototype.enterSelectAll = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#selectAll.
SqlBaseListener.prototype.exitSelectAll = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#relationDefault.
SqlBaseListener.prototype.enterRelationDefault = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#relationDefault.
SqlBaseListener.prototype.exitRelationDefault = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#joinRelation.
SqlBaseListener.prototype.enterJoinRelation = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#joinRelation.
SqlBaseListener.prototype.exitJoinRelation = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#joinType.
SqlBaseListener.prototype.enterJoinType = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#joinType.
SqlBaseListener.prototype.exitJoinType = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#joinCriteria.
SqlBaseListener.prototype.enterJoinCriteria = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#joinCriteria.
SqlBaseListener.prototype.exitJoinCriteria = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#sampledRelation.
SqlBaseListener.prototype.enterSampledRelation = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#sampledRelation.
SqlBaseListener.prototype.exitSampledRelation = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#sampleType.
SqlBaseListener.prototype.enterSampleType = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#sampleType.
SqlBaseListener.prototype.exitSampleType = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#aliasedRelation.
SqlBaseListener.prototype.enterAliasedRelation = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#aliasedRelation.
SqlBaseListener.prototype.exitAliasedRelation = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#columnAliases.
SqlBaseListener.prototype.enterColumnAliases = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#columnAliases.
SqlBaseListener.prototype.exitColumnAliases = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#tableName.
SqlBaseListener.prototype.enterTableName = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#tableName.
SqlBaseListener.prototype.exitTableName = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#subqueryRelation.
SqlBaseListener.prototype.enterSubqueryRelation = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#subqueryRelation.
SqlBaseListener.prototype.exitSubqueryRelation = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#unnest.
SqlBaseListener.prototype.enterUnnest = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#unnest.
SqlBaseListener.prototype.exitUnnest = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#lateral.
SqlBaseListener.prototype.enterLateral = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#lateral.
SqlBaseListener.prototype.exitLateral = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#parenthesizedRelation.
SqlBaseListener.prototype.enterParenthesizedRelation = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#parenthesizedRelation.
SqlBaseListener.prototype.exitParenthesizedRelation = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#expression.
SqlBaseListener.prototype.enterExpression = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#expression.
SqlBaseListener.prototype.exitExpression = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#logicalNot.
SqlBaseListener.prototype.enterLogicalNot = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#logicalNot.
SqlBaseListener.prototype.exitLogicalNot = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#predicated.
SqlBaseListener.prototype.enterPredicated = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#predicated.
SqlBaseListener.prototype.exitPredicated = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#logicalBinary.
SqlBaseListener.prototype.enterLogicalBinary = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#logicalBinary.
SqlBaseListener.prototype.exitLogicalBinary = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#comparison.
SqlBaseListener.prototype.enterComparison = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#comparison.
SqlBaseListener.prototype.exitComparison = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#quantifiedComparison.
SqlBaseListener.prototype.enterQuantifiedComparison = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#quantifiedComparison.
SqlBaseListener.prototype.exitQuantifiedComparison = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#between.
SqlBaseListener.prototype.enterBetween = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#between.
SqlBaseListener.prototype.exitBetween = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#inList.
SqlBaseListener.prototype.enterInList = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#inList.
SqlBaseListener.prototype.exitInList = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#inSubquery.
SqlBaseListener.prototype.enterInSubquery = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#inSubquery.
SqlBaseListener.prototype.exitInSubquery = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#like.
SqlBaseListener.prototype.enterLike = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#like.
SqlBaseListener.prototype.exitLike = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#nullPredicate.
SqlBaseListener.prototype.enterNullPredicate = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#nullPredicate.
SqlBaseListener.prototype.exitNullPredicate = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#distinctFrom.
SqlBaseListener.prototype.enterDistinctFrom = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#distinctFrom.
SqlBaseListener.prototype.exitDistinctFrom = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#valueExpressionDefault.
SqlBaseListener.prototype.enterValueExpressionDefault = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#valueExpressionDefault.
SqlBaseListener.prototype.exitValueExpressionDefault = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#concatenation.
SqlBaseListener.prototype.enterConcatenation = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#concatenation.
SqlBaseListener.prototype.exitConcatenation = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#arithmeticBinary.
SqlBaseListener.prototype.enterArithmeticBinary = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#arithmeticBinary.
SqlBaseListener.prototype.exitArithmeticBinary = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#arithmeticUnary.
SqlBaseListener.prototype.enterArithmeticUnary = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#arithmeticUnary.
SqlBaseListener.prototype.exitArithmeticUnary = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#atTimeZone.
SqlBaseListener.prototype.enterAtTimeZone = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#atTimeZone.
SqlBaseListener.prototype.exitAtTimeZone = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#dereference.
SqlBaseListener.prototype.enterDereference = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#dereference.
SqlBaseListener.prototype.exitDereference = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#typeConstructor.
SqlBaseListener.prototype.enterTypeConstructor = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#typeConstructor.
SqlBaseListener.prototype.exitTypeConstructor = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#specialDateTimeFunction.
SqlBaseListener.prototype.enterSpecialDateTimeFunction = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#specialDateTimeFunction.
SqlBaseListener.prototype.exitSpecialDateTimeFunction = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#substring.
SqlBaseListener.prototype.enterSubstring = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#substring.
SqlBaseListener.prototype.exitSubstring = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#cast.
SqlBaseListener.prototype.enterCast = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#cast.
SqlBaseListener.prototype.exitCast = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#lambda.
SqlBaseListener.prototype.enterLambda = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#lambda.
SqlBaseListener.prototype.exitLambda = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#parenthesizedExpression.
SqlBaseListener.prototype.enterParenthesizedExpression = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#parenthesizedExpression.
SqlBaseListener.prototype.exitParenthesizedExpression = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#parameter.
SqlBaseListener.prototype.enterParameter = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#parameter.
SqlBaseListener.prototype.exitParameter = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#normalize.
SqlBaseListener.prototype.enterNormalize = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#normalize.
SqlBaseListener.prototype.exitNormalize = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#intervalLiteral.
SqlBaseListener.prototype.enterIntervalLiteral = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#intervalLiteral.
SqlBaseListener.prototype.exitIntervalLiteral = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#numericLiteral.
SqlBaseListener.prototype.enterNumericLiteral = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#numericLiteral.
SqlBaseListener.prototype.exitNumericLiteral = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#booleanLiteral.
SqlBaseListener.prototype.enterBooleanLiteral = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#booleanLiteral.
SqlBaseListener.prototype.exitBooleanLiteral = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#simpleCase.
SqlBaseListener.prototype.enterSimpleCase = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#simpleCase.
SqlBaseListener.prototype.exitSimpleCase = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#columnReference.
SqlBaseListener.prototype.enterColumnReference = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#columnReference.
SqlBaseListener.prototype.exitColumnReference = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#nullLiteral.
SqlBaseListener.prototype.enterNullLiteral = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#nullLiteral.
SqlBaseListener.prototype.exitNullLiteral = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#rowConstructor.
SqlBaseListener.prototype.enterRowConstructor = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#rowConstructor.
SqlBaseListener.prototype.exitRowConstructor = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#subscript.
SqlBaseListener.prototype.enterSubscript = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#subscript.
SqlBaseListener.prototype.exitSubscript = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#currentPath.
SqlBaseListener.prototype.enterCurrentPath = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#currentPath.
SqlBaseListener.prototype.exitCurrentPath = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#subqueryExpression.
SqlBaseListener.prototype.enterSubqueryExpression = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#subqueryExpression.
SqlBaseListener.prototype.exitSubqueryExpression = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#binaryLiteral.
SqlBaseListener.prototype.enterBinaryLiteral = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#binaryLiteral.
SqlBaseListener.prototype.exitBinaryLiteral = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#currentUser.
SqlBaseListener.prototype.enterCurrentUser = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#currentUser.
SqlBaseListener.prototype.exitCurrentUser = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#extract.
SqlBaseListener.prototype.enterExtract = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#extract.
SqlBaseListener.prototype.exitExtract = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#stringLiteral.
SqlBaseListener.prototype.enterStringLiteral = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#stringLiteral.
SqlBaseListener.prototype.exitStringLiteral = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#arrayConstructor.
SqlBaseListener.prototype.enterArrayConstructor = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#arrayConstructor.
SqlBaseListener.prototype.exitArrayConstructor = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#functionCall.
SqlBaseListener.prototype.enterFunctionCall = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#functionCall.
SqlBaseListener.prototype.exitFunctionCall = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#exists.
SqlBaseListener.prototype.enterExists = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#exists.
SqlBaseListener.prototype.exitExists = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#position.
SqlBaseListener.prototype.enterPosition = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#position.
SqlBaseListener.prototype.exitPosition = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#searchedCase.
SqlBaseListener.prototype.enterSearchedCase = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#searchedCase.
SqlBaseListener.prototype.exitSearchedCase = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#groupingOperation.
SqlBaseListener.prototype.enterGroupingOperation = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#groupingOperation.
SqlBaseListener.prototype.exitGroupingOperation = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#basicStringLiteral.
SqlBaseListener.prototype.enterBasicStringLiteral = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#basicStringLiteral.
SqlBaseListener.prototype.exitBasicStringLiteral = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#unicodeStringLiteral.
SqlBaseListener.prototype.enterUnicodeStringLiteral = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#unicodeStringLiteral.
SqlBaseListener.prototype.exitUnicodeStringLiteral = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#timeZoneInterval.
SqlBaseListener.prototype.enterTimeZoneInterval = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#timeZoneInterval.
SqlBaseListener.prototype.exitTimeZoneInterval = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#timeZoneString.
SqlBaseListener.prototype.enterTimeZoneString = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#timeZoneString.
SqlBaseListener.prototype.exitTimeZoneString = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#comparisonOperator.
SqlBaseListener.prototype.enterComparisonOperator = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#comparisonOperator.
SqlBaseListener.prototype.exitComparisonOperator = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#comparisonQuantifier.
SqlBaseListener.prototype.enterComparisonQuantifier = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#comparisonQuantifier.
SqlBaseListener.prototype.exitComparisonQuantifier = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#booleanValue.
SqlBaseListener.prototype.enterBooleanValue = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#booleanValue.
SqlBaseListener.prototype.exitBooleanValue = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#interval.
SqlBaseListener.prototype.enterInterval = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#interval.
SqlBaseListener.prototype.exitInterval = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#intervalField.
SqlBaseListener.prototype.enterIntervalField = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#intervalField.
SqlBaseListener.prototype.exitIntervalField = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#normalForm.
SqlBaseListener.prototype.enterNormalForm = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#normalForm.
SqlBaseListener.prototype.exitNormalForm = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#type.
SqlBaseListener.prototype.enterType = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#type.
SqlBaseListener.prototype.exitType = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#typeParameter.
SqlBaseListener.prototype.enterTypeParameter = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#typeParameter.
SqlBaseListener.prototype.exitTypeParameter = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#baseType.
SqlBaseListener.prototype.enterBaseType = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#baseType.
SqlBaseListener.prototype.exitBaseType = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#whenClause.
SqlBaseListener.prototype.enterWhenClause = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#whenClause.
SqlBaseListener.prototype.exitWhenClause = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#filter.
SqlBaseListener.prototype.enterFilter = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#filter.
SqlBaseListener.prototype.exitFilter = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#over.
SqlBaseListener.prototype.enterOver = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#over.
SqlBaseListener.prototype.exitOver = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#windowFrame.
SqlBaseListener.prototype.enterWindowFrame = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#windowFrame.
SqlBaseListener.prototype.exitWindowFrame = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#unboundedFrame.
SqlBaseListener.prototype.enterUnboundedFrame = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#unboundedFrame.
SqlBaseListener.prototype.exitUnboundedFrame = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#currentRowBound.
SqlBaseListener.prototype.enterCurrentRowBound = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#currentRowBound.
SqlBaseListener.prototype.exitCurrentRowBound = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#boundedFrame.
SqlBaseListener.prototype.enterBoundedFrame = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#boundedFrame.
SqlBaseListener.prototype.exitBoundedFrame = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#explainFormat.
SqlBaseListener.prototype.enterExplainFormat = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#explainFormat.
SqlBaseListener.prototype.exitExplainFormat = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#explainType.
SqlBaseListener.prototype.enterExplainType = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#explainType.
SqlBaseListener.prototype.exitExplainType = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#isolationLevel.
SqlBaseListener.prototype.enterIsolationLevel = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#isolationLevel.
SqlBaseListener.prototype.exitIsolationLevel = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#transactionAccessMode.
SqlBaseListener.prototype.enterTransactionAccessMode = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#transactionAccessMode.
SqlBaseListener.prototype.exitTransactionAccessMode = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#readUncommitted.
SqlBaseListener.prototype.enterReadUncommitted = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#readUncommitted.
SqlBaseListener.prototype.exitReadUncommitted = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#readCommitted.
SqlBaseListener.prototype.enterReadCommitted = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#readCommitted.
SqlBaseListener.prototype.exitReadCommitted = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#repeatableRead.
SqlBaseListener.prototype.enterRepeatableRead = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#repeatableRead.
SqlBaseListener.prototype.exitRepeatableRead = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#serializable.
SqlBaseListener.prototype.enterSerializable = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#serializable.
SqlBaseListener.prototype.exitSerializable = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#positionalArgument.
SqlBaseListener.prototype.enterPositionalArgument = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#positionalArgument.
SqlBaseListener.prototype.exitPositionalArgument = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#namedArgument.
SqlBaseListener.prototype.enterNamedArgument = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#namedArgument.
SqlBaseListener.prototype.exitNamedArgument = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#qualifiedArgument.
SqlBaseListener.prototype.enterQualifiedArgument = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#qualifiedArgument.
SqlBaseListener.prototype.exitQualifiedArgument = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#unqualifiedArgument.
SqlBaseListener.prototype.enterUnqualifiedArgument = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#unqualifiedArgument.
SqlBaseListener.prototype.exitUnqualifiedArgument = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#pathSpecification.
SqlBaseListener.prototype.enterPathSpecification = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#pathSpecification.
SqlBaseListener.prototype.exitPathSpecification = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#privilege.
SqlBaseListener.prototype.enterPrivilege = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#privilege.
SqlBaseListener.prototype.exitPrivilege = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#qualifiedName.
SqlBaseListener.prototype.enterQualifiedName = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#qualifiedName.
SqlBaseListener.prototype.exitQualifiedName = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#unquotedIdentifier.
SqlBaseListener.prototype.enterUnquotedIdentifier = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#unquotedIdentifier.
SqlBaseListener.prototype.exitUnquotedIdentifier = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#quotedIdentifier.
SqlBaseListener.prototype.enterQuotedIdentifier = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#quotedIdentifier.
SqlBaseListener.prototype.exitQuotedIdentifier = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#backQuotedIdentifier.
SqlBaseListener.prototype.enterBackQuotedIdentifier = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#backQuotedIdentifier.
SqlBaseListener.prototype.exitBackQuotedIdentifier = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#digitIdentifier.
SqlBaseListener.prototype.enterDigitIdentifier = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#digitIdentifier.
SqlBaseListener.prototype.exitDigitIdentifier = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#decimalLiteral.
SqlBaseListener.prototype.enterDecimalLiteral = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#decimalLiteral.
SqlBaseListener.prototype.exitDecimalLiteral = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#doubleLiteral.
SqlBaseListener.prototype.enterDoubleLiteral = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#doubleLiteral.
SqlBaseListener.prototype.exitDoubleLiteral = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#integerLiteral.
SqlBaseListener.prototype.enterIntegerLiteral = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#integerLiteral.
SqlBaseListener.prototype.exitIntegerLiteral = function(ctx) {
};
// Enter a parse tree produced by SqlBaseParser#nonReserved.
SqlBaseListener.prototype.enterNonReserved = function(ctx) {
};
// Exit a parse tree produced by SqlBaseParser#nonReserved.
SqlBaseListener.prototype.exitNonReserved = function(ctx) {
};
exports.SqlBaseListener = SqlBaseListener;
},{"antlr4/index":45}],3:[function(require,module,exports){
// Generated from SqlBase.g4 by ANTLR 4.7.1
// jshint ignore: start
var antlr4 = require('antlr4/index');
var SqlBaseListener = require('./SqlBaseListener').SqlBaseListener;
var grammarFileName = "SqlBase.g4";
var serializedATN = ["\u0003\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964",
"\u0003\u00de\u05d5\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?\u0003",
"\u0002\u0003\u0002\u0003\u0002\u0003\u0003\u0003\u0003\u0003\u0003\u0003",
"\u0004\u0003\u0004\u0003\u0004\u0003\u0005\u0003\u0005\u0003\u0005\u0003",
"\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003",
"\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0005\u0005\u0095\n\u0005",
"\u0003\u0005\u0003\u0005\u0003\u0005\u0005\u0005\u009a\n\u0005\u0003",
"\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0005\u0005\u00a0\n\u0005",
"\u0003\u0005\u0003\u0005\u0005\u0005\u00a4\n\u0005\u0003\u0005\u0003",
"\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003",
"\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0005\u0005\u00b2",
"\n\u0005\u0003\u0005\u0003\u0005\u0005\u0005\u00b6\n\u0005\u0003\u0005",
"\u0003\u0005\u0005\u0005\u00ba\n\u0005\u0003\u0005\u0003\u0005\u0005",
"\u0005\u00be\n\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005",
"\u0003\u0005\u0003\u0005\u0005\u0005\u00c6\n\u0005\u0003\u0005\u0003",
"\u0005\u0005\u0005\u00ca\n\u0005\u0003\u0005\u0005\u0005\u00cd\n\u0005",
"\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0005\u0005",
"\u00d4\n\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003",
"\u0005\u0007\u0005\u00db\n\u0005\f\u0005\u000e\u0005\u00de\u000b\u0005",
"\u0003\u0005\u0003\u0005\u0003\u0005\u0005\u0005\u00e3\n\u0005\u0003",
"\u0005\u0003\u0005\u0005\u0005\u00e7\n\u0005\u0003\u0005\u0003\u0005",
"\u0003\u0005\u0003\u0005\u0005\u0005\u00ed\n\u0005\u0003\u0005\u0003",
"\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0005\u0005\u00f4\n\u0005",
"\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005",
"\u0003\u0005\u0005\u0005\u00fd\n\u0005\u0003\u0005\u0003\u0005\u0003",
"\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003",
"\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003",
"\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003",
"\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003",
"\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003",
"\u0005\u0005\u0005\u0120\n\u0005\u0003\u0005\u0003\u0005\u0003\u0005",
"\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005",
"\u0005\u0005\u012b\n\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003",
"\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0007\u0005\u0134\n\u0005",
"\f\u0005\u000e\u0005\u0137\u000b\u0005\u0005\u0005\u0139\n\u0005\u0003",
"\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0007",
"\u0005\u0141\n\u0005\f\u0005\u000e\u0005\u0144\u000b\u0005\u0003\u0005",
"\u0003\u0005\u0005\u0005\u0148\n\u0005\u0003\u0005\u0003\u0005\u0005",
"\u0005\u014c\n\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005",
"\u0003\u0005\u0003\u0005\u0005\u0005\u0154\n\u0005\u0003\u0005\u0003",
"\u0005\u0003\u0005\u0003\u0005\u0005\u0005\u015a\n\u0005\u0003\u0005",
"\u0003\u0005\u0003\u0005\u0007\u0005\u015f\n\u0005\f\u0005\u000e\u0005",
"\u0162\u000b\u0005\u0003\u0005\u0003\u0005\u0005\u0005\u0166\n\u0005",
"\u0003\u0005\u0003\u0005\u0005\u0005\u016a\n\u0005\u0003\u0005\u0003",
"\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003",
"\u0005\u0005\u0005\u0174\n\u0005\u0003\u0005\u0005\u0005\u0177\n\u0005",
"\u0003\u0005\u0003\u0005\u0005\u0005\u017b\n\u0005\u0003\u0005\u0005",
"\u0005\u017e\n\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005",
"\u0007\u0005\u0184\n\u0005\f\u0005\u000e\u0005\u0187\u000b\u0005\u0003",
"\u0005\u0003\u0005\u0005\u0005\u018b\n\u0005\u0003\u0005\u0003\u0005",
"\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005",
"\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0005\u0005",
"\u019a\n\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0005",
"\u0005\u01a0\n\u0005\u0005\u0005\u01a2\n\u0005\u0003\u0005\u0003\u0005",
"\u0003\u0005\u0003\u0005\u0005\u0005\u01a8\n\u0005\u0003\u0005\u0003",
"\u0005\u0003\u0005\u0003\u0005\u0005\u0005\u01ae\n\u0005\u0005\u0005",
"\u01b0\n\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0005",
"\u0005\u01b6\n\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005",
"\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005",
"\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005",
"\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005",
"\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005",
"\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005",
"\u0003\u0005\u0003\u0005\u0003\u0005\u0007\u0005\u01dd\n\u0005\f\u0005",
"\u000e\u0005\u01e0\u000b\u0005\u0005\u0005\u01e2\n\u0005\u0003\u0005",
"\u0003\u0005\u0005\u0005\u01e6\n\u0005\u0003\u0005\u0003\u0005\u0005",
"\u0005\u01ea\n\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005",
"\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005",
"\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0007\u0005\u01fa\n",
"\u0005\f\u0005\u000e\u0005\u01fd\u000b\u0005\u0005\u0005\u01ff\n\u0005",
"\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005",
"\u0003\u0005\u0003\u0005\u0003\u0005\u0005\u0005\u020a\n\u0005\u0003",
"\u0006\u0005\u0006\u020d\n\u0006\u0003\u0006\u0003\u0006\u0003\u0007",
"\u0003\u0007\u0005\u0007\u0213\n\u0007\u0003\u0007\u0003\u0007\u0003",
"\u0007\u0007\u0007\u0218\n\u0007\f\u0007\u000e\u0007\u021b\u000b\u0007",
"\u0003\b\u0003\b\u0005\b\u021f\n\b\u0003\t\u0003\t\u0003\t\u0003\t\u0005",
"\t\u0225\n\t\u0003\t\u0003\t\u0005\t\u0229\n\t\u0003\n\u0003\n\u0003",
"\n\u0003\n\u0005\n\u022f\n\n\u0003\u000b\u0003\u000b\u0003\u000b\u0003",
"\u000b\u0007\u000b\u0235\n\u000b\f\u000b\u000e\u000b\u0238\u000b\u000b",
"\u0003\u000b\u0003\u000b\u0003\f\u0003\f\u0003\f\u0003\f\u0003\r\u0003",
"\r\u0003\r\u0003\r\u0003\r\u0003\r\u0007\r\u0246\n\r\f\r\u000e\r\u0249",
"\u000b\r\u0005\r\u024b\n\r\u0003\r\u0003\r\u0005\r\u024f\n\r\u0003\u000e",
"\u0003\u000e\u0003\u000e\u0003\u000e\u0003\u000e\u0003\u000e\u0005\u000e",
"\u0257\n\u000e\u0003\u000e\u0003\u000e\u0003\u000e\u0003\u000e\u0005",
"\u000e\u025d\n\u000e\u0003\u000e\u0007\u000e\u0260\n\u000e\f\u000e\u000e",
"\u000e\u0263\u000b\u000e\u0003\u000f\u0003\u000f\u0003\u000f\u0003\u000f",
"\u0003\u000f\u0003\u000f\u0003\u000f\u0007\u000f\u026c\n\u000f\f\u000f",
"\u000e\u000f\u026f\u000b\u000f\u0003\u000f\u0003\u000f\u0003\u000f\u0003",
"\u000f\u0005\u000f\u0275\n\u000f\u0003\u0010\u0003\u0010\u0005\u0010",
"\u0279\n\u0010\u0003\u0010\u0003\u0010\u0005\u0010\u027d\n\u0010\u0003",
"\u0011\u0003\u0011\u0005\u0011\u0281\n\u0011\u0003\u0011\u0003\u0011",
"\u0003\u0011\u0007\u0011\u0286\n\u0011\f\u0011\u000e\u0011\u0289\u000b",
"\u0011\u0003\u0011\u0003\u0011\u0003\u0011\u0003\u0011\u0007\u0011\u028f",
"\n\u0011\f\u0011\u000e\u0011\u0292\u000b\u0011\u0005\u0011\u0294\n\u0011",
"\u0003\u0011\u0003\u0011\u0005\u0011\u0298\n\u0011\u0003\u0011\u0003",
"\u0011\u0003\u0011\u0005\u0011\u029d\n\u0011\u0003\u0011\u0003\u0011",
"\u0005\u0011\u02a1\n\u0011\u0003\u0012\u0005\u0012\u02a4\n\u0012\u0003",
"\u0012\u0003\u0012\u0003\u0012\u0007\u0012\u02a9\n\u0012\f\u0012\u000e",
"\u0012\u02ac\u000b\u0012\u0003\u0013\u0003\u0013\u0003\u0013\u0003\u0013",
"\u0003\u0013\u0003\u0013\u0007\u0013\u02b4\n\u0013\f\u0013\u000e\u0013",
"\u02b7\u000b\u0013\u0005\u0013\u02b9\n\u0013\u0003\u0013\u0003\u0013",
"\u0003\u0013\u0003\u0013\u0003\u0013\u0003\u0013\u0007\u0013\u02c1\n",
"\u0013\f\u0013\u000e\u0013\u02c4\u000b\u0013\u0005\u0013\u02c6\n\u0013",
"\u0003\u0013\u0003\u0013\u0003\u0013\u0003\u0013\u0003\u0013\u0003\u0013",
"\u0003\u0013\u0007\u0013\u02cf\n\u0013\f\u0013\u000e\u0013\u02d2\u000b",
"\u0013\u0003\u0013\u0003\u0013\u0005\u0013\u02d6\n\u0013\u0003\u0014",
"\u0003\u0014\u0003\u0014\u0003\u0014\u0007\u0014\u02dc\n\u0014\f\u0014",
"\u000e\u0014\u02df\u000b\u0014\u0005\u0014\u02e1\n\u0014\u0003\u0014",
"\u0003\u0014\u0005\u0014\u02e5\n\u0014\u0003\u0015\u0003\u0015\u0005",
"\u0015\u02e9\n\u0015\u0003\u0015\u0003\u0015\u0003\u0015\u0003\u0015",
"\u0003\u0015\u0003\u0016\u0003\u0016\u0003\u0017\u0003\u0017\u0005\u0017",
"\u02f4\n\u0017\u0003\u0017\u0005\u0017\u02f7\n\u0017\u0003\u0017\u0003",
"\u0017\u0003\u0017\u0003\u0017\u0003\u0017\u0005\u0017\u02fe\n\u0017",
"\u0003\u0018\u0003\u0018\u0003\u0018\u0003\u0018\u0003\u0018\u0003\u0018",
"\u0003\u0018\u0003\u0018\u0003\u0018\u0003\u0018\u0003\u0018\u0003\u0018",
"\u0003\u0018\u0003\u0018\u0003\u0018\u0003\u0018\u0003\u0018\u0005\u0018",
"\u0311\n\u0018\u0007\u0018\u0313\n\u0018\f\u0018\u000e\u0018\u0316\u000b",
"\u0018\u0003\u0019\u0005\u0019\u0319\n\u0019\u0003\u0019\u0003\u0019",
"\u0005\u0019\u031d\n\u0019\u0003\u0019\u0003\u0019\u0005\u0019\u0321",
"\n\u0019\u0003\u0019\u0003\u0019\u0005\u0019\u0325\n\u0019\u0005\u0019",
"\u0327\n\u0019\u0003\u001a\u0003\u001a\u0003\u001a\u0003\u001a\u0003",
"\u001a\u0003\u001a\u0003\u001a\u0007\u001a\u0330\n\u001a\f\u001a\u000e",
"\u001a\u0333\u000b\u001a\u0003\u001a\u0003\u001a\u0005\u001a\u0337\n",
"\u001a\u0003\u001b\u0003\u001b\u0003\u001b\u0003\u001b\u0003\u001b\u0003",
"\u001b\u0003\u001b\u0005\u001b\u0340\n\u001b\u0003\u001c\u0003\u001c",
"\u0003\u001d\u0003\u001d\u0005\u001d\u0346\n\u001d\u0003\u001d\u0003",
"\u001d\u0005\u001d\u034a\n\u001d\u0005\u001d\u034c\n\u001d\u0003\u001e",
"\u0003\u001e\u0003\u001e\u0003\u001e\u0007\u001e\u0352\n\u001e\f\u001e",
"\u000e\u001e\u0355\u000b\u001e\u0003\u001e\u0003\u001e\u0003\u001f\u0003",
"\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003",
"\u001f\u0003\u001f\u0003\u001f\u0007\u001f\u0363\n\u001f\f\u001f\u000e",
"\u001f\u0366\u000b\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0005\u001f",
"\u036b\n\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003",
"\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0005\u001f\u0376",
"\n\u001f\u0003 \u0003 \u0003!\u0003!\u0003!\u0005!\u037d\n!\u0003!\u0003",
"!\u0005!\u0381\n!\u0003!\u0003!\u0003!\u0003!\u0003!\u0003!\u0007!\u0389",
"\n!\f!\u000e!\u038c\u000b!\u0003\"\u0003\"\u0003\"\u0003\"\u0003\"\u0003",
"\"\u0003\"\u0003\"\u0003\"\u0003\"\u0005\"\u0398\n\"\u0003\"\u0003\"",
"\u0003\"\u0003\"\u0003\"\u0003\"\u0005\"\u03a0\n\"\u0003\"\u0003\"\u0003",
"\"\u0003\"\u0003\"\u0007\"\u03a7\n\"\f\"\u000e\"\u03aa\u000b\"\u0003",
"\"\u0003\"\u0003\"\u0005\"\u03af\n\"\u0003\"\u0003\"\u0003\"\u0003\"",
"\u0003\"\u0003\"\u0005\"\u03b7\n\"\u0003\"\u0003\"\u0003\"\u0003\"\u0005",
"\"\u03bd\n\"\u0003\"\u0003\"\u0005\"\u03c1\n\"\u0003\"\u0003\"\u0003",
"\"\u0005\"\u03c6\n\"\u0003\"\u0003\"\u0003\"\u0005\"\u03cb\n\"\u0003",
"#\u0003#\u0003#\u0003#\u0005#\u03d1\n#\u0003#\u0003#\u0003#\u0003#\u0003",
"#\u0003#\u0003#\u0003#\u0003#\u0003#\u0003#\u0003#\u0007#\u03df\n#\f",
"#\u000e#\u03e2\u000b#\u0003$\u0003$\u0003$\u0003$\u0003$\u0003$\u0003",
"$\u0003$\u0003$\u0003$\u0003$\u0003$\u0003$\u0003$\u0003$\u0003$\u0003",
"$\u0003$\u0003$\u0003$\u0003$\u0003$\u0003$\u0003$\u0006$\u03fc\n$\r",
"$\u000e$\u03fd\u0003$\u0003$\u0003$\u0003$\u0003$\u0003$\u0003$\u0007",
"$\u0407\n$\f$\u000e$\u040a\u000b$\u0003$\u0003$\u0003$\u0003$\u0003",
"$\u0003$\u0003$\u0005$\u0413\n$\u0003$\u0005$\u0416\n$\u0003$\u0003",
"$\u0003$\u0005$\u041b\n$\u0003$\u0003$\u0003$\u0007$\u0420\n$\f$\u000e",
"$\u0423\u000b$\u0005$\u0425\n$\u0003$\u0003$\u0003$\u0003$\u0003$\u0007",
"$\u042c\n$\f$\u000e$\u042f\u000b$\u0005$\u0431\n$\u0003$\u0003$\u0005",
"$\u0435\n$\u0003$\u0005$\u0438\n$\u0003$\u0003$\u0003$\u0003$\u0003",
"$\u0003$\u0003$\u0003$\u0007$\u0442\n$\f$\u000e$\u0445\u000b$\u0005",
"$\u0447\n$\u0003$\u0003$\u0003$\u0003$\u0003$\u0003$\u0003$\u0003$\u0003",
"$\u0003$\u0003$\u0003$\u0003$\u0003$\u0003$\u0006$\u0458\n$\r$\u000e",
"$\u0459\u0003$\u0003$\u0005$\u045e\n$\u0003$\u0003$\u0003$\u0003$\u0006",
"$\u0464\n$\r$\u000e$\u0465\u0003$\u0003$\u0005$\u046a\n$\u0003$\u0003",
"$\u0003$\u0003$\u0003$\u0003$\u0003$\u0003$\u0003$\u0003$\u0003$\u0003",
"$\u0003$\u0003$\u0003$\u0003$\u0003$\u0003$\u0003$\u0003$\u0003$\u0007",
"$\u0481\n$\f$\u000e$\u0484\u000b$\u0005$\u0486\n$\u0003$\u0003$\u0003",
"$\u0003$\u0003$\u0003$\u0003$\u0005$\u048f\n$\u0003$\u0003$\u0003$\u0003",
"$\u0005$\u0495\n$\u0003$\u0003$\u0003$\u0003$\u0005$\u049b\n$\u0003",
"$\u0003$\u0003$\u0003$\u0005$\u04a1\n$\u0003$\u0003$\u0003$\u0003$\u0003",
"$\u0003$\u0003$\u0003$\u0003$\u0005$\u04ac\n$\u0003$\u0003$\u0003$\u0003",
"$\u0003$\u0003$\u0003$\u0005$\u04b5\n$\u0003$\u0003$\u0003$\u0003$\u0003",
"$\u0003$\u0003$\u0003$\u0003$\u0003$\u0003$\u0003$\u0003$\u0003$\u0003",
"$\u0003$\u0003$\u0003$\u0007$\u04c9\n$\f$\u000e$\u04cc\u000b$\u0005",
"$\u04ce\n$\u0003$\u0005$\u04d1\n$\u0003$\u0003$\u0003$\u0003$\u0003",
"$\u0003$\u0003$\u0003$\u0007$\u04db\n$\f$\u000e$\u04de\u000b$\u0003",
"%\u0003%\u0003%\u0003%\u0005%\u04e4\n%\u0005%\u04e6\n%\u0003&\u0003",
"&\u0003&\u0003&\u0003&\u0003&\u0005&\u04ee\n&\u0003\'\u0003\'\u0003",
"(\u0003(\u0003)\u0003)\u0003*\u0003*\u0005*\u04f8\n*\u0003*\u0003*\u0003",
"*\u0003*\u0005*\u04fe\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-\u0007-\u0519",
"\n-\f-\u000e-\u051c\u000b-\u0003-\u0003-\u0003-\u0003-\u0003-\u0003",
"-\u0003-\u0007-\u0525\n-\f-\u000e-\u0528\u000b-\u0003-\u0003-\u0005",
"-\u052c\n-\u0003-\u0003-\u0003-\u0003-\u0003-\u0005-\u0533\n-\u0003",
"-\u0003-\u0007-\u0537\n-\f-\u000e-\u053a\u000b-\u0003.\u0003.\u0005",
".\u053e\n.\u0003/\u0003/\u0003/\u0003/\u0005/\u0544\n/\u00030\u0003",
"0\u00030\u00030\u00030\u00031\u00031\u00031\u00031\u00031\u00031\u0003",
"2\u00032\u00032\u00032\u00032\u00032\u00032\u00072\u0558\n2\f2\u000e",
"2\u055b\u000b2\u00052\u055d\n2\u00032\u00032\u00032\u00032\u00032\u0007",
"2\u0564\n2\f2\u000e2\u0567\u000b2\u00052\u0569\n2\u00032\u00052\u056c",
"\n2\u00032\u00032\u00033\u00033\u00033\u00033\u00033\u00033\u00033\u0003",
"3\u00033\u00033\u00033\u00033\u00033\u00033\u00033\u00033\u00053\u0580",
"\n3\u00034\u00034\u00034\u00034\u00034\u00034\u00034\u00034\u00034\u0005",
"4\u058b\n4\u00035\u00035\u00035\u00035\u00055\u0591\n5\u00036\u0003",
"6\u00036\u00036\u00036\u00056\u0598\n6\u00037\u00037\u00037\u00037\u0003",
"7\u00037\u00037\u00057\u05a1\n7\u00038\u00038\u00038\u00038\u00038\u0005",
"8\u05a8\n8\u00039\u00039\u00039\u00039\u00039\u00059\u05af\n9\u0003",
":\u0003:\u0003:\u0007:\u05b4\n:\f:\u000e:\u05b7\u000b:\u0003;\u0003",
";\u0003;\u0003;\u0005;\u05bd\n;\u0003<\u0003<\u0003<\u0007<\u05c2\n",
"<\f<\u000e<\u05c5\u000b<\u0003=\u0003=\u0003=\u0003=\u0003=\u0005=\u05cc",
"\n=\u0003>\u0003>\u0003>\u0005>\u05d1\n>\u0003?\u0003?\u0003?\u0002",
"\b\u001a.@DFX@\u0002\u0004\u0006\b\n\f\u000e\u0010\u0012\u0014\u0016",
"\u0018\u001a\u001c\u001e \"$&(*,.02468:<>@BDFHJLNPRTVXZ\\^`bdfhjlnp",
"rtvxz|\u0002\u0018\u0004\u0002\u001a\u001a\u008e\u008e\u0004\u0002F",
"FQQ\u0004\u0002DDuu\u0004\u0002;;RR\u0004\u0002\r\r\u00d0\u00d0\u0004",
"\u0002::\u00b2\u00b2\u0004\u0002\u0014\u001422\u0004\u0002BB^^\u0004",
"\u0002\r\r44\u0004\u0002\u0016\u0016\u00a2\u00a2\u0003\u0002\u00c7\u00c8",
"\u0003\u0002\u00c9\u00cb\u0003\u0002\u00c1\u00c6\u0005\u0002\r\r\u0011",
"\u0011\u009e\u009e\u0004\u0002@@\u00ac\u00ac\u0007\u0002//OOhi\u0097",
"\u0097\u00bf\u00bf\u0003\u0002kn\u0004\u0002CC\u0082\u0082\u0005\u0002",
"KK\\\\\u00a6\u00a6\u0006\u000255YYff\u00b6\u00b6\u0004\u0002vv\u00be",
"\u00be-\u0002\f\r\u000f\u000f\u0011\u0012\u0014\u0016\u0019\u001a\u001d",
"\"\'\'-/2255;;>>ACEEHKOPRRTTWWYY[\\^_aaccfikostvwzz|\u0082\u0084\u0088",
"\u008a\u008f\u0091\u0091\u0093\u0097\u0099\u00a2\u00a4\u00a6\u00a8\u00ab",
"\u00ad\u00ae\u00b0\u00b1\u00b4\u00b4\u00b6\u00b6\u00b8\u00b9\u00bd\u00c0",
"\u0002\u06be\u0002~\u0003\u0002\u0002\u0002\u0004\u0081\u0003\u0002",
"\u0002\u0002\u0006\u0084\u0003\u0002\u0002\u0002\b\u0209\u0003\u0002",
"\u0002\u0002\n\u020c\u0003\u0002\u0002\u0002\f\u0210\u0003\u0002\u0002",
"\u0002\u000e\u021e\u0003\u0002\u0002\u0002\u0010\u0220\u0003\u0002\u0002",
"\u0002\u0012\u022a\u0003\u0002\u0002\u0002\u0014\u0230\u0003\u0002\u0002",
"\u0002\u0016\u023b\u0003\u0002\u0002\u0002\u0018\u023f\u0003\u0002\u0002",
"\u0002\u001a\u0250\u0003\u0002\u0002\u0002\u001c\u0274\u0003\u0002\u0002",
"\u0002\u001e\u0276\u0003\u0002\u0002\u0002 \u027e\u0003\u0002\u0002",
"\u0002\"\u02a3\u0003\u0002\u0002\u0002$\u02d5\u0003\u0002\u0002\u0002",
"&\u02e4\u0003\u0002\u0002\u0002(\u02e6\u0003\u0002\u0002\u0002*\u02ef",
"\u0003\u0002\u0002\u0002,\u02fd\u0003\u0002\u0002\u0002.\u02ff\u0003",
"\u0002\u0002\u00020\u0326\u0003\u0002\u0002\u00022\u0336\u0003\u0002",
"\u0002\u00024\u0338\u0003\u0002\u0002\u00026\u0341\u0003\u0002\u0002",
"\u00028\u0343\u0003\u0002\u0002\u0002:\u034d\u0003\u0002\u0002\u0002",
"<\u0375\u0003\u0002\u0002\u0002>\u0377\u0003\u0002\u0002\u0002@\u0380",
"\u0003\u0002\u0002\u0002B\u03ca\u0003\u0002\u0002\u0002D\u03d0\u0003",
"\u0002\u0002\u0002F\u04d0\u0003\u0002\u0002\u0002H\u04e5\u0003\u0002",
"\u0002\u0002J\u04ed\u0003\u0002\u0002\u0002L\u04ef\u0003\u0002\u0002",
"\u0002N\u04f1\u0003\u0002\u0002\u0002P\u04f3\u0003\u0002\u0002\u0002",
"R\u04f5\u0003\u0002\u0002\u0002T\u04ff\u0003\u0002\u0002\u0002V\u0501",
"\u0003\u0002\u0002\u0002X\u0532\u0003\u0002\u0002\u0002Z\u053d\u0003",
"\u0002\u0002\u0002\\\u0543\u0003\u0002\u0002\u0002^\u0545\u0003\u0002",
"\u0002\u0002`\u054a\u0003\u0002\u0002\u0002b\u0550\u0003\u0002\u0002",
"\u0002d\u057f\u0003\u0002\u0002\u0002f\u058a\u0003\u0002\u0002\u0002",
"h\u0590\u0003\u0002\u0002\u0002j\u0597\u0003\u0002\u0002\u0002l\u05a0",
"\u0003\u0002\u0002\u0002n\u05a7\u0003\u0002\u0002\u0002p\u05ae\u0003",
"\u0002\u0002\u0002r\u05b0\u0003\u0002\u0002\u0002t\u05bc\u0003\u0002",
"\u0002\u0002v\u05be\u0003\u0002\u0002\u0002x\u05cb\u0003\u0002\u0002",
"\u0002z\u05d0\u0003\u0002\u0002\u0002|\u05d2\u0003\u0002\u0002\u0002",
"~\u007f\u0005\b\u0005\u0002\u007f\u0080\u0007\u0002\u0002\u0003\u0080",
"\u0003\u0003\u0002\u0002\u0002\u0081\u0082\u0005> \u0002\u0082\u0083",
"\u0007\u0002\u0002\u0003\u0083\u0005\u0003\u0002\u0002\u0002\u0084\u0085",
"\u0005r:\u0002\u0085\u0086\u0007\u0002\u0002\u0003\u0086\u0007\u0003",
"\u0002\u0002\u0002\u0087\u020a\u0005\n\u0006\u0002\u0088\u0089\u0007",
"\u00b4\u0002\u0002\u0089\u020a\u0005x=\u0002\u008a\u008b\u0007\u00b4",
"\u0002\u0002\u008b\u008c\u0005x=\u0002\u008c\u008d\u0007\u0003\u0002",
"\u0002\u008d\u008e\u0005x=\u0002\u008e\u020a\u0003\u0002\u0002\u0002",
"\u008f\u0090\u0007$\u0002\u0002\u0090\u0094\u0007\u0095\u0002\u0002",
"\u0091\u0092\u0007P\u0002\u0002\u0092\u0093\u0007q\u0002\u0002\u0093",
"\u0095\u0007=\u0002\u0002\u0094\u0091\u0003\u0002\u0002\u0002\u0094",
"\u0095\u0003\u0002\u0002\u0002\u0095\u0096\u0003\u0002\u0002\u0002\u0096",
"\u0099\u0005v<\u0002\u0097\u0098\u0007\u00bc\u0002\u0002\u0098\u009a",
"\u0005\u0014\u000b\u0002\u0099\u0097\u0003\u0002\u0002\u0002\u0099\u009a",
"\u0003\u0002\u0002\u0002\u009a\u020a\u0003\u0002\u0002\u0002\u009b\u009c",
"\u00076\u0002\u0002\u009c\u009f\u0007\u0095\u0002\u0002\u009d\u009e",
"\u0007P\u0002\u0002\u009e\u00a0\u0007=\u0002\u0002\u009f\u009d\u0003",
"\u0002\u0002\u0002\u009f\u00a0\u0003\u0002\u0002\u0002\u00a0\u00a1\u0003",
"\u0002\u0002\u0002\u00a1\u00a3\u0005v<\u0002\u00a2\u00a4\t\u0002\u0002",
"\u0002\u00a3\u00a2\u0003\u0002\u0002\u0002\u00a3\u00a4\u0003\u0002\u0002",
"\u0002\u00a4\u020a\u0003\u0002\u0002\u0002\u00a5\u00a6\u0007\u000e\u0002",
"\u0002\u00a6\u00a7\u0007\u0095\u0002\u0002\u00a7\u00a8\u0005v<\u0002",
"\u00a8\u00a9\u0007\u008a\u0002\u0002\u00a9\u00aa\u0007\u00aa\u0002\u0002",
"\u00aa\u00ab\u0005x=\u0002\u00ab\u020a\u0003\u0002\u0002\u0002\u00ac",
"\u00ad\u0007$\u0002\u0002\u00ad\u00b1\u0007\u00a3\u0002\u0002\u00ae",
"\u00af\u0007P\u0002\u0002\u00af\u00b0\u0007q\u0002\u0002\u00b0\u00b2",
"\u0007=\u0002\u0002\u00b1\u00ae\u0003\u0002\u0002\u0002\u00b1\u00b2",
"\u0003\u0002\u0002\u0002\u00b2\u00b3\u0003\u0002\u0002\u0002\u00b3\u00b5",
"\u0005v<\u0002\u00b4\u00b6\u0005:\u001e\u0002\u00b5\u00b4\u0003\u0002",
"\u0002\u0002\u00b5\u00b6\u0003\u0002\u0002\u0002\u00b6\u00b9\u0003\u0002",
"\u0002\u0002\u00b7\u00b8\u0007 \u0002\u0002\u00b8\u00ba\u0005H%\u0002",
"\u00b9\u00b7\u0003\u0002\u0002\u0002\u00b9\u00ba\u0003\u0002\u0002\u0002",
"\u00ba\u00bd\u0003\u0002\u0002\u0002\u00bb\u00bc\u0007\u00bc\u0002\u0002",
"\u00bc\u00be\u0005\u0014\u000b\u0002\u00bd\u00bb\u0003\u0002\u0002\u0002",
"\u00bd\u00be\u0003\u0002\u0002\u0002\u00be\u00bf\u0003\u0002\u0002\u0002",
"\u00bf\u00c5\u0007\u0013\u0002\u0002\u00c0\u00c6\u0005\n\u0006\u0002",
"\u00c1\u00c2\u0007\u0004\u0002\u0002\u00c2\u00c3\u0005\n\u0006\u0002",
"\u00c3\u00c4\u0007\u0005\u0002\u0002\u00c4\u00c6\u0003\u0002\u0002\u0002",
"\u00c5\u00c0\u0003\u0002\u0002\u0002\u00c5\u00c1\u0003\u0002\u0002\u0002",
"\u00c6\u00cc\u0003\u0002\u0002\u0002\u00c7\u00c9\u0007\u00bc\u0002\u0002",
"\u00c8\u00ca\u0007o\u0002\u0002\u00c9\u00c8\u0003\u0002\u0002\u0002",
"\u00c9\u00ca\u0003\u0002\u0002\u0002\u00ca\u00cb\u0003\u0002\u0002\u0002",
"\u00cb\u00cd\u0007-\u0002\u0002\u00cc\u00c7\u0003\u0002\u0002\u0002",
"\u00cc\u00cd\u0003\u0002\u0002\u0002\u00cd\u020a\u0003\u0002\u0002\u0002",
"\u00ce\u00cf\u0007$\u0002\u0002\u00cf\u00d3\u0007\u00a3\u0002\u0002",
"\u00d0\u00d1\u0007P\u0002\u0002\u00d1\u00d2\u0007q\u0002\u0002\u00d2",
"\u00d4\u0007=\u0002\u0002\u00d3\u00d0\u0003\u0002\u0002\u0002\u00d3",
"\u00d4\u0003\u0002\u0002\u0002\u00d4\u00d5\u0003\u0002\u0002\u0002\u00d5",
"\u00d6\u0005v<\u0002\u00d6\u00d7\u0007\u0004\u0002\u0002\u00d7\u00dc",
"\u0005\u000e\b\u0002\u00d8\u00d9\u0007\u0006\u0002\u0002\u00d9\u00db",
"\u0005\u000e\b\u0002\u00da\u00d8\u0003\u0002\u0002\u0002\u00db\u00de",
"\u0003\u0002\u0002\u0002\u00dc\u00da\u0003\u0002\u0002\u0002\u00dc\u00dd",
"\u0003\u0002\u0002\u0002\u00dd\u00df\u0003\u0002\u0002\u0002\u00de\u00dc",
"\u0003\u0002\u0002\u0002\u00df\u00e2\u0007\u0005\u0002\u0002\u00e0\u00e1",
"\u0007 \u0002\u0002\u00e1\u00e3\u0005H%\u0002\u00e2\u00e0\u0003\u0002",
"\u0002\u0002\u00e2\u00e3\u0003\u0002\u0002\u0002\u00e3\u00e6\u0003\u0002",
"\u0002\u0002\u00e4\u00e5\u0007\u00bc\u0002\u0002\u00e5\u00e7\u0005\u0014",
"\u000b\u0002\u00e6\u00e4\u0003\u0002\u0002\u0002\u00e6\u00e7\u0003\u0002",
"\u0002\u0002\u00e7\u020a\u0003\u0002\u0002\u0002\u00e8\u00e9\u00076",
"\u0002\u0002\u00e9\u00ec\u0007\u00a3\u0002\u0002\u00ea\u00eb\u0007P",
"\u0002\u0002\u00eb\u00ed\u0007=\u0002\u0002\u00ec\u00ea\u0003\u0002",
"\u0002\u0002\u00ec\u00ed\u0003\u0002\u0002\u0002\u00ed\u00ee\u0003\u0002",
"\u0002\u0002\u00ee\u020a\u0005v<\u0002\u00ef\u00f0\u0007U\u0002\u0002",
"\u00f0\u00f1\u0007X\u0002\u0002\u00f1\u00f3\u0005v<\u0002\u00f2\u00f4",
"\u0005:\u001e\u0002\u00f3\u00f2\u0003\u0002\u0002\u0002\u00f3\u00f4",
"\u0003\u0002\u0002\u0002\u00f4\u00f5\u0003\u0002\u0002\u0002\u00f5\u00f6",
"\u0005\n\u0006\u0002\u00f6\u020a\u0003\u0002\u0002\u0002\u00f7\u00f8",
"\u00071\u0002\u0002\u00f8\u00f9\u0007F\u0002\u0002\u00f9\u00fc\u0005",
"v<\u0002\u00fa\u00fb\u0007\u00bb\u0002\u0002\u00fb\u00fd\u0005@!\u0002",
"\u00fc\u00fa\u0003\u0002\u0002\u0002\u00fc\u00fd\u0003\u0002\u0002\u0002",
"\u00fd\u020a\u0003\u0002\u0002\u0002\u00fe\u00ff\u0007\u000e\u0002\u0002",
"\u00ff\u0100\u0007\u00a3\u0002\u0002\u0100\u0101\u0005v<\u0002\u0101",
"\u0102\u0007\u008a\u0002\u0002\u0102\u0103\u0007\u00aa\u0002\u0002\u0103",
"\u0104\u0005v<\u0002\u0104\u020a\u0003\u0002\u0002\u0002\u0105\u0106",
"\u0007\u000e\u0002\u0002\u0106\u0107\u0007\u00a3\u0002\u0002\u0107\u0108",
"\u0005v<\u0002\u0108\u0109\u0007\u008a\u0002\u0002\u0109\u010a\u0007",
"\u001e\u0002\u0002\u010a\u010b\u0005x=\u0002\u010b\u010c\u0007\u00aa",
"\u0002\u0002\u010c\u010d\u0005x=\u0002\u010d\u020a\u0003\u0002\u0002",
"\u0002\u010e\u010f\u0007\u000e\u0002\u0002\u010f\u0110\u0007\u00a3\u0002",
"\u0002\u0110\u0111\u0005v<\u0002\u0111\u0112\u00076\u0002\u0002\u0112",
"\u0113\u0007\u001e\u0002\u0002\u0113\u0114\u0005v<\u0002\u0114\u020a",
"\u0003\u0002\u0002\u0002\u0115\u0116\u0007\u000e\u0002\u0002\u0116\u0117",
"\u0007\u00a3\u0002\u0002\u0117\u0118\u0005v<\u0002\u0118\u0119\u0007",
"\f\u0002\u0002\u0119\u011a\u0007\u001e\u0002\u0002\u011a\u011b\u0005",
"\u0010\t\u0002\u011b\u020a\u0003\u0002\u0002\u0002\u011c\u011f\u0007",
"$\u0002\u0002\u011d\u011e\u0007x\u0002\u0002\u011e\u0120\u0007\u008c",
"\u0002\u0002\u011f\u011d\u0003\u0002\u0002\u0002\u011f\u0120\u0003\u0002",
"\u0002\u0002\u0120\u0121\u0003\u0002\u0002\u0002\u0121\u0122\u0007\u00b9",
"\u0002\u0002\u0122\u0123\u0005v<\u0002\u0123\u0124\u0007\u0013\u0002",
"\u0002\u0124\u0125\u0005\n\u0006\u0002\u0125\u020a\u0003\u0002\u0002",
"\u0002\u0126\u0127\u00076\u0002\u0002\u0127\u012a\u0007\u00b9\u0002",
"\u0002\u0128\u0129\u0007P\u0002\u0002\u0129\u012b\u0007=\u0002\u0002",
"\u012a\u0128\u0003\u0002\u0002\u0002\u012a\u012b\u0003\u0002\u0002\u0002",
"\u012b\u012c\u0003\u0002\u0002\u0002\u012c\u020a\u0005v<\u0002\u012d",
"\u012e\u0007\u0019\u0002\u0002\u012e\u012f\u0005v<\u0002\u012f\u0138",
"\u0007\u0004\u0002\u0002\u0130\u0135\u0005n8\u0002\u0131\u0132\u0007",
"\u0006\u0002\u0002\u0132\u0134\u0005n8\u0002\u0133\u0131\u0003\u0002",
"\u0002\u0002\u0134\u0137\u0003\u0002\u0002\u0002\u0135\u0133\u0003\u0002",
"\u0002\u0002\u0135\u0136\u0003\u0002\u0002\u0002\u0136\u0139\u0003\u0002",
"\u0002\u0002\u0137\u0135\u0003\u0002\u0002\u0002\u0138\u0130\u0003\u0002",
"\u0002\u0002\u0138\u0139\u0003\u0002\u0002\u0002\u0139\u013a\u0003\u0002",
"\u0002\u0002\u013a\u013b\u0007\u0005\u0002\u0002\u013b\u020a\u0003\u0002",
"\u0002\u0002\u013c\u0147\u0007I\u0002\u0002\u013d\u0142\u0005t;\u0002",
"\u013e\u013f\u0007\u0006\u0002\u0002\u013f\u0141\u0005t;\u0002\u0140",
"\u013e\u0003\u0002\u0002\u0002\u0141\u0144\u0003\u0002\u0002\u0002\u0142",
"\u0140\u0003\u0002\u0002\u0002\u0142\u0143\u0003\u0002\u0002\u0002\u0143",
"\u0148\u0003\u0002\u0002\u0002\u0144\u0142\u0003\u0002\u0002\u0002\u0145",
"\u0146\u0007\r\u0002\u0002\u0146\u0148\u0007\u0084\u0002\u0002\u0147",
"\u013d\u0003\u0002\u0002\u0002\u0147\u0145\u0003\u0002\u0002\u0002\u0148",
"\u0149\u0003\u0002\u0002\u0002\u0149\u014b\u0007u\u0002\u0002\u014a",
"\u014c\u0007\u00a3\u0002\u0002\u014b\u014a\u0003\u0002\u0002\u0002\u014b",
"\u014c\u0003\u0002\u0002\u0002\u014c\u014d\u0003\u0002\u0002\u0002\u014d",
"\u014e\u0005v<\u0002\u014e\u014f\u0007\u00aa\u0002\u0002\u014f\u0153",
"\u0005x=\u0002\u0150\u0151\u0007\u00bc\u0002\u0002\u0151\u0152\u0007",
"I\u0002\u0002\u0152\u0154\u0007w\u0002\u0002\u0153\u0150\u0003\u0002",
"\u0002\u0002\u0153\u0154\u0003\u0002\u0002\u0002\u0154\u020a\u0003\u0002",
"\u0002\u0002\u0155\u0159\u0007\u008f\u0002\u0002\u0156\u0157\u0007I",
"\u0002\u0002\u0157\u0158\u0007w\u0002\u0002\u0158\u015a\u0007D\u0002",
"\u0002\u0159\u0156\u0003\u0002\u0002\u0002\u0159\u015a\u0003\u0002\u0002",
"\u0002\u015a\u0165\u0003\u0002\u0002\u0002\u015b\u0160\u0005t;\u0002",
"\u015c\u015d\u0007\u0006\u0002\u0002\u015d\u015f\u0005t;\u0002\u015e",
"\u015c\u0003\u0002\u0002\u0002\u015f\u0162\u0003\u0002\u0002\u0002\u0160",
"\u015e\u0003\u0002\u0002\u0002\u0160\u0161\u0003\u0002\u0002\u0002\u0161",
"\u0166\u0003\u0002\u0002\u0002\u0162\u0160\u0003\u0002\u0002\u0002\u0163",
"\u0164\u0007\r\u0002\u0002\u0164\u0166\u0007\u0084\u0002\u0002\u0165",
"\u015b\u0003\u0002\u0002\u0002\u0165\u0163\u0003\u0002\u0002\u0002\u0166",
"\u0167\u0003\u0002\u0002\u0002\u0167\u0169\u0007u\u0002\u0002\u0168",
"\u016a\u0007\u00a3\u0002\u0002\u0169\u0168\u0003\u0002\u0002\u0002\u0169",
"\u016a\u0003\u0002\u0002\u0002\u016a\u016b\u0003\u0002\u0002\u0002\u016b",
"\u016c\u0005v<\u0002\u016c\u016d\u0007F\u0002\u0002\u016d\u016e\u0005",
"x=\u0002\u016e\u020a\u0003\u0002\u0002\u0002\u016f\u0170\u0007\u009d",
"\u0002\u0002\u0170\u0176\u0007J\u0002\u0002\u0171\u0173\u0007u\u0002",
"\u0002\u0172\u0174\u0007\u00a3\u0002\u0002\u0173\u0172\u0003\u0002\u0002",
"\u0002\u0173\u0174\u0003\u0002\u0002\u0002\u0174\u0175\u0003\u0002\u0002",
"\u0002\u0175\u0177\u0005v<\u0002\u0176\u0171\u0003\u0002\u0002\u0002",
"\u0176\u0177\u0003\u0002\u0002\u0002\u0177\u020a\u0003\u0002\u0002\u0002",
"\u0178\u017a\u0007>\u0002\u0002\u0179\u017b\u0007\u000f\u0002\u0002",
"\u017a\u0179\u0003\u0002\u0002\u0002\u017a\u017b\u0003\u0002\u0002\u0002",
"\u017b\u017d\u0003\u0002\u0002\u0002\u017c\u017e\u0007\u00b8\u0002\u0002",
"\u017d\u017c\u0003\u0002\u0002\u0002\u017d\u017e\u0003\u0002\u0002\u0002",
"\u017e\u018a\u0003\u0002\u0002\u0002\u017f\u0180\u0007\u0004\u0002\u0002",
"\u0180\u0185\u0005h5\u0002\u0181\u0182\u0007\u0006\u0002\u0002\u0182",
"\u0184\u0005h5\u0002\u0183\u0181\u0003\u0002\u0002\u0002\u0184\u0187",
"\u0003\u0002\u0002\u0002\u0185\u0183\u0003\u0002\u0002\u0002\u0185\u0186",
"\u0003\u0002\u0002\u0002\u0186\u0188\u0003\u0002\u0002\u0002\u0187\u0185",
"\u0003\u0002\u0002\u0002\u0188\u0189\u0007\u0005\u0002\u0002\u0189\u018b",
"\u0003\u0002\u0002\u0002\u018a\u017f\u0003\u0002\u0002\u0002\u018a\u018b",
"\u0003\u0002\u0002\u0002\u018b\u018c\u0003\u0002\u0002\u0002\u018c\u020a",
"\u0005\b\u0005\u0002\u018d\u018e\u0007\u009d\u0002\u0002\u018e\u018f",
"\u0007$\u0002\u0002\u018f\u0190\u0007\u00a3\u0002\u0002\u0190\u020a",
"\u0005v<\u0002\u0191\u0192\u0007\u009d\u0002\u0002\u0192\u0193\u0007",
"$\u0002\u0002\u0193\u0194\u0007\u00b9\u0002\u0002\u0194\u020a\u0005",
"v<\u0002\u0195\u0196\u0007\u009d\u0002\u0002\u0196\u0199\u0007\u00a4",
"\u0002\u0002\u0197\u0198\t\u0003\u0002\u0002\u0198\u019a\u0005v<\u0002",
"\u0199\u0197\u0003\u0002\u0002\u0002\u0199\u019a\u0003\u0002\u0002\u0002",
"\u019a\u01a1\u0003\u0002\u0002\u0002\u019b\u019c\u0007b\u0002\u0002",
"\u019c\u019f\u0005H%\u0002\u019d\u019e\u00079\u0002\u0002\u019e\u01a0",
"\u0005H%\u0002\u019f\u019d\u0003\u0002\u0002\u0002\u019f\u01a0\u0003",
"\u0002\u0002\u0002\u01a0\u01a2\u0003\u0002\u0002\u0002\u01a1\u019b\u0003",
"\u0002\u0002\u0002\u01a1\u01a2\u0003\u0002\u0002\u0002\u01a2\u020a\u0003",
"\u0002\u0002\u0002\u01a3\u01a4\u0007\u009d\u0002\u0002\u01a4\u01a7\u0007",
"\u0096\u0002\u0002\u01a5\u01a6\t\u0003\u0002\u0002\u01a6\u01a8\u0005",
"x=\u0002\u01a7\u01a5\u0003\u0002\u0002\u0002\u01a7\u01a8\u0003\u0002",
"\u0002\u0002\u01a8\u01af\u0003\u0002\u0002\u0002\u01a9\u01aa\u0007b",
"\u0002\u0002\u01aa\u01ad\u0005H%\u0002\u01ab\u01ac\u00079\u0002\u0002",
"\u01ac\u01ae\u0005H%\u0002\u01ad\u01ab\u0003\u0002\u0002\u0002\u01ad",
"\u01ae\u0003\u0002\u0002\u0002\u01ae\u01b0\u0003\u0002\u0002\u0002\u01af",
"\u01a9\u0003\u0002\u0002\u0002\u01af\u01b0\u0003\u0002\u0002\u0002\u01b0",
"\u020a\u0003\u0002\u0002\u0002\u01b1\u01b2\u0007\u009d\u0002\u0002\u01b2",
"\u01b5\u0007\u001d\u0002\u0002\u01b3\u01b4\u0007b\u0002\u0002\u01b4",
"\u01b6\u0005H%\u0002\u01b5\u01b3\u0003\u0002\u0002\u0002\u01b5\u01b6",
"\u0003\u0002\u0002\u0002\u01b6\u020a\u0003\u0002\u0002\u0002\u01b7\u01b8",
"\u0007\u009d\u0002\u0002\u01b8\u01b9\u0007\u001f\u0002\u0002\u01b9\u01ba",
"\t\u0003\u0002\u0002\u01ba\u020a\u0005v<\u0002\u01bb\u01bc\u0007\u009d",
"\u0002\u0002\u01bc\u01bd\u0007\u00a0\u0002\u0002\u01bd\u01be\t\u0004",
"\u0002\u0002\u01be\u020a\u0005v<\u0002\u01bf\u01c0\u0007\u009d\u0002",
"\u0002\u01c0\u01c1\u0007\u00a0\u0002\u0002\u01c1\u01c2\u0007D\u0002",
"\u0002\u01c2\u01c3\u0007\u0004\u0002\u0002\u01c3\u01c4\u0005 \u0011",
"\u0002\u01c4\u01c5\u0007\u0005\u0002\u0002\u01c5\u020a\u0003\u0002\u0002",
"\u0002\u01c6\u01c7\u00073\u0002\u0002\u01c7\u020a\u0005v<\u0002\u01c8",
"\u01c9\u00072\u0002\u0002\u01c9\u020a\u0005v<\u0002\u01ca\u01cb\u0007",
"\u009d\u0002\u0002\u01cb\u020a\u0007H\u0002\u0002\u01cc\u01cd\u0007",
"\u009d\u0002\u0002\u01cd\u020a\u0007\u009a\u0002\u0002\u01ce\u01cf\u0007",
"\u009b\u0002\u0002\u01cf\u01d0\u0007\u009a\u0002\u0002\u01d0\u01d1\u0005",
"v<\u0002\u01d1\u01d2\u0007\u00c1\u0002\u0002\u01d2\u01d3\u0005> \u0002",
"\u01d3\u020a\u0003\u0002\u0002\u0002\u01d4\u01d5\u0007\u008d\u0002\u0002",
"\u01d5\u01d6\u0007\u009a\u0002\u0002\u01d6\u020a\u0005v<\u0002\u01d7",
"\u01d8\u0007\u009f\u0002\u0002\u01d8\u01e1\u0007\u00ab\u0002\u0002\u01d9",
"\u01de\u0005j6\u0002\u01da\u01db\u0007\u0006\u0002\u0002\u01db\u01dd",
"\u0005j6\u0002\u01dc\u01da\u0003\u0002\u0002\u0002\u01dd\u01e0\u0003",
"\u0002\u0002\u0002\u01de\u01dc\u0003\u0002\u0002\u0002\u01de\u01df\u0003",
"\u0002\u0002\u0002\u01df\u01e2\u0003\u0002\u0002\u0002\u01e0\u01de\u0003",
"\u0002\u0002\u0002\u01e1\u01d9\u0003\u0002\u0002\u0002\u01e1\u01e2\u0003",
"\u0002\u0002\u0002\u01e2\u020a\u0003\u0002\u0002\u0002\u01e3\u01e5\u0007",
"!\u0002\u0002\u01e4\u01e6\u0007\u00bd\u0002\u0002\u01e5\u01e4\u0003",
"\u0002\u0002\u0002\u01e5\u01e6\u0003\u0002\u0002\u0002\u01e6\u020a\u0003",
"\u0002\u0002\u0002\u01e7\u01e9\u0007\u0091\u0002\u0002\u01e8\u01ea\u0007",
"\u00bd\u0002\u0002\u01e9\u01e8\u0003\u0002\u0002\u0002\u01e9\u01ea\u0003",
"\u0002\u0002\u0002\u01ea\u020a\u0003\u0002\u0002\u0002\u01eb\u01ec\u0007",
"\u0083\u0002\u0002\u01ec\u01ed\u0005x=\u0002\u01ed\u01ee\u0007F\u0002",
"\u0002\u01ee\u01ef\u0005\b\u0005\u0002\u01ef\u020a\u0003\u0002\u0002",
"\u0002\u01f0\u01f1\u00070\u0002\u0002\u01f1\u01f2\u0007\u0083\u0002",
"\u0002\u01f2\u020a\u0005x=\u0002\u01f3\u01f4\u0007<\u0002\u0002\u01f4",
"\u01fe\u0005x=\u0002\u01f5\u01f6\u0007\u00b5\u0002\u0002\u01f6\u01fb",
"\u0005> \u0002\u01f7\u01f8\u0007\u0006\u0002\u0002\u01f8\u01fa\u0005",
"> \u0002\u01f9\u01f7\u0003\u0002\u0002\u0002\u01fa\u01fd\u0003\u0002",
"\u0002\u0002\u01fb\u01f9\u0003\u0002\u0002\u0002\u01fb\u01fc\u0003\u0002",
"\u0002\u0002\u01fc\u01ff\u0003\u0002\u0002\u0002\u01fd\u01fb\u0003\u0002",
"\u0002\u0002\u01fe\u01f5\u0003\u0002\u0002\u0002\u01fe\u01ff\u0003\u0002",
"\u0002\u0002\u01ff\u020a\u0003\u0002\u0002\u0002\u0200\u0201\u00073",
"\u0002\u0002\u0201\u0202\u0007T\u0002\u0002\u0202\u020a\u0005x=\u0002",
"\u0203\u0204\u00073\u0002\u0002\u0204\u0205\u0007|\u0002\u0002\u0205",
"\u020a\u0005x=\u0002\u0206\u0207\u0007\u009b\u0002\u0002\u0207\u0208",
"\u0007\u0080\u0002\u0002\u0208\u020a\u0005r:\u0002\u0209\u0087\u0003",
"\u0002\u0002\u0002\u0209\u0088\u0003\u0002\u0002\u0002\u0209\u008a\u0003",
"\u0002\u0002\u0002\u0209\u008f\u0003\u0002\u0002\u0002\u0209\u009b\u0003",
"\u0002\u0002\u0002\u0209\u00a5\u0003\u0002\u0002\u0002\u0209\u00ac\u0003",
"\u0002\u0002\u0002\u0209\u00ce\u0003\u0002\u0002\u0002\u0209\u00e8\u0003",
"\u0002\u0002\u0002\u0209\u00ef\u0003\u0002\u0002\u0002\u0209\u00f7\u0003",
"\u0002\u0002\u0002\u0209\u00fe\u0003\u0002\u0002\u0002\u0209\u0105\u0003",
"\u0002\u0002\u0002\u0209\u010e\u0003\u0002\u0002\u0002\u0209\u0115\u0003",
"\u0002\u0002\u0002\u0209\u011c\u0003\u0002\u0002\u0002\u0209\u0126\u0003",
"\u0002\u0002\u0002\u0209\u012d\u0003\u0002\u0002\u0002\u0209\u013c\u0003",
"\u0002\u0002\u0002\u0209\u0155\u0003\u0002\u0002\u0002\u0209\u016f\u0003",
"\u0002\u0002\u0002\u0209\u0178\u0003\u0002\u0002\u0002\u0209\u018d\u0003",
"\u0002\u0002\u0002\u0209\u0191\u0003\u0002\u0002\u0002\u0209\u0195\u0003",
"\u0002\u0002\u0002\u0209\u01a3\u0003\u0002\u0002\u0002\u0209\u01b1\u0003",
"\u0002\u0002\u0002\u0209\u01b7\u0003\u0002\u0002\u0002\u0209\u01bb\u0003",
"\u0002\u0002\u0002\u0209\u01bf\u0003\u0002\u0002\u0002\u0209\u01c6\u0003",
"\u0002\u0002\u0002\u0209\u01c8\u0003\u0002\u0002\u0002\u0209\u01ca\u0003",
"\u0002\u0002\u0002\u0209\u01cc\u0003\u0002\u0002\u0002\u0209\u01ce\u0003",
"\u0002\u0002\u0002\u0209\u01d4\u0003\u0002\u0002\u0002\u0209\u01d7\u0003",
"\u0002\u0002\u0002\u0209\u01e3\u0003\u0002\u0002\u0002\u0209\u01e7\u0003",
"\u0002\u0002\u0002\u0209\u01eb\u0003\u0002\u0002\u0002\u0209\u01f0\u0003",
"\u0002\u0002\u0002\u0209\u01f3\u0003\u0002\u0002\u0002\u0209\u0200\u0003",
"\u0002\u0002\u0002\u0209\u0203\u0003\u0002\u0002\u0002\u0209\u0206\u0003",
"\u0002\u0002\u0002\u020a\t\u0003\u0002\u0002\u0002\u020b\u020d\u0005",
"\f\u0007\u0002\u020c\u020b\u0003\u0002\u0002\u0002\u020c\u020d\u0003",
"\u0002\u0002\u0002\u020d\u020e\u0003\u0002\u0002\u0002\u020e\u020f\u0005",
"\u0018\r\u0002\u020f\u000b\u0003\u0002\u0002\u0002\u0210\u0212\u0007",
"\u00bc\u0002\u0002\u0211\u0213\u0007\u0089\u0002\u0002\u0212\u0211\u0003",
"\u0002\u0002\u0002\u0212\u0213\u0003\u0002\u0002\u0002\u0213\u0214\u0003",
"\u0002\u0002\u0002\u0214\u0219\u0005(\u0015\u0002\u0215\u0216\u0007",
"\u0006\u0002\u0002\u0216\u0218\u0005(\u0015\u0002\u0217\u0215\u0003",
"\u0002\u0002\u0002\u0218\u021b\u0003\u0002\u0002\u0002\u0219\u0217\u0003",
"\u0002\u0002\u0002\u0219\u021a\u0003\u0002\u0002\u0002\u021a\r\u0003",
"\u0002\u0002\u0002\u021b\u0219\u0003\u0002\u0002\u0002\u021c\u021f\u0005",
"\u0010\t\u0002\u021d\u021f\u0005\u0012\n\u0002\u021e\u021c\u0003\u0002",
"\u0002\u0002\u021e\u021d\u0003\u0002\u0002\u0002\u021f\u000f\u0003\u0002",
"\u0002\u0002\u0220\u0221\u0005x=\u0002\u0221\u0224\u0005X-\u0002\u0222",
"\u0223\u0007 \u0002\u0002\u0223\u0225\u0005H%\u0002\u0224\u0222\u0003",
"\u0002\u0002\u0002\u0224\u0225\u0003\u0002\u0002\u0002\u0225\u0228\u0003",
"\u0002\u0002\u0002\u0226\u0227\u0007\u00bc\u0002\u0002\u0227\u0229\u0005",
"\u0014\u000b\u0002\u0228\u0226\u0003\u0002\u0002\u0002\u0228\u0229\u0003",
"\u0002\u0002\u0002\u0229\u0011\u0003\u0002\u0002\u0002\u022a\u022b\u0007",
"b\u0002\u0002\u022b\u022e\u0005v<\u0002\u022c\u022d\t\u0005\u0002\u0002",
"\u022d\u022f\u0007\u0085\u0002\u0002\u022e\u022c\u0003\u0002\u0002\u0002",
"\u022e\u022f\u0003\u0002\u0002\u0002\u022f\u0013\u0003\u0002\u0002\u0002",
"\u0230\u0231\u0007\u0004\u0002\u0002\u0231\u0236\u0005\u0016\f\u0002",
"\u0232\u0233\u0007\u0006\u0002\u0002\u0233\u0235\u0005\u0016\f\u0002",
"\u0234\u0232\u0003\u0002\u0002\u0002\u0235\u0238\u0003\u0002\u0002\u0002",
"\u0236\u0234\u0003\u0002\u0002\u0002\u0236\u0237\u0003\u0002\u0002\u0002",
"\u0237\u0239\u0003\u0002\u0002\u0002\u0238\u0236\u0003\u0002\u0002\u0002",
"\u0239\u023a\u0007\u0005\u0002\u0002\u023a\u0015\u0003\u0002\u0002\u0002",
"\u023b\u023c\u0005x=\u0002\u023c\u023d\u0007\u00c1\u0002\u0002\u023d",
"\u023e\u0005> \u0002\u023e\u0017\u0003\u0002\u0002\u0002\u023f\u024a",
"\u0005\u001a\u000e\u0002\u0240\u0241\u0007y\u0002\u0002\u0241\u0242",
"\u0007\u0018\u0002\u0002\u0242\u0247\u0005\u001e\u0010\u0002\u0243\u0244",
"\u0007\u0006\u0002\u0002\u0244\u0246\u0005\u001e\u0010\u0002\u0245\u0243",
"\u0003\u0002\u0002\u0002\u0246\u0249\u0003\u0002\u0002\u0002\u0247\u0245",
"\u0003\u0002\u0002\u0002\u0247\u0248\u0003\u0002\u0002\u0002\u0248\u024b",
"\u0003\u0002\u0002\u0002\u0249\u0247\u0003\u0002\u0002\u0002\u024a\u0240",
"\u0003\u0002\u0002\u0002\u024a\u024b\u0003\u0002\u0002\u0002\u024b\u024e",
"\u0003\u0002\u0002\u0002\u024c\u024d\u0007c\u0002\u0002\u024d\u024f",
"\t\u0006\u0002\u0002\u024e\u024c\u0003\u0002\u0002\u0002\u024e\u024f",
"\u0003\u0002\u0002\u0002\u024f\u0019\u0003\u0002\u0002\u0002\u0250\u0251",
"\b\u000e\u0001\u0002\u0251\u0252\u0005\u001c\u000f\u0002\u0252\u0261",
"\u0003\u0002\u0002\u0002\u0253\u0254\f\u0004\u0002\u0002\u0254\u0256",
"\u0007V\u0002\u0002\u0255\u0257\u0005*\u0016\u0002\u0256\u0255\u0003",
"\u0002\u0002\u0002\u0256\u0257\u0003\u0002\u0002\u0002\u0257\u0258\u0003",
"\u0002\u0002\u0002\u0258\u0260\u0005\u001a\u000e\u0005\u0259\u025a\f",
"\u0003\u0002\u0002\u025a\u025c\t\u0007\u0002\u0002\u025b\u025d\u0005",
"*\u0016\u0002\u025c\u025b\u0003\u0002\u0002\u0002\u025c\u025d\u0003",
"\u0002\u0002\u0002\u025d\u025e\u0003\u0002\u0002\u0002\u025e\u0260\u0005",
"\u001a\u000e\u0004\u025f\u0253\u0003\u0002\u0002\u0002\u025f\u0259\u0003",
"\u0002\u0002\u0002\u0260\u0263\u0003\u0002\u0002\u0002\u0261\u025f\u0003",
"\u0002\u0002\u0002\u0261\u0262\u0003\u0002\u0002\u0002\u0262\u001b\u0003",
"\u0002\u0002\u0002\u0263\u0261\u0003\u0002\u0002\u0002\u0264\u0275\u0005",
" \u0011\u0002\u0265\u0266\u0007\u00a3\u0002\u0002\u0266\u0275\u0005",
"v<\u0002\u0267\u0268\u0007\u00b7\u0002\u0002\u0268\u026d\u0005> \u0002",
"\u0269\u026a\u0007\u0006\u0002\u0002\u026a\u026c\u0005> \u0002\u026b",
"\u0269\u0003\u0002\u0002\u0002\u026c\u026f\u0003\u0002\u0002\u0002\u026d",
"\u026b\u0003\u0002\u0002\u0002\u026d\u026e\u0003\u0002\u0002\u0002\u026e",
"\u0275\u0003\u0002\u0002\u0002\u026f\u026d\u0003\u0002\u0002\u0002\u0270",
"\u0271\u0007\u0004\u0002\u0002\u0271\u0272\u0005\u0018\r\u0002\u0272",
"\u0273\u0007\u0005\u0002\u0002\u0273\u0275\u0003\u0002\u0002\u0002\u0274",
"\u0264\u0003\u0002\u0002\u0002\u0274\u0265\u0003\u0002\u0002\u0002\u0274",
"\u0267\u0003\u0002\u0002\u0002\u0274\u0270\u0003\u0002\u0002\u0002\u0275",
"\u001d\u0003\u0002\u0002\u0002\u0276\u0278\u0005> \u0002\u0277\u0279",
"\t\b\u0002\u0002\u0278\u0277\u0003\u0002\u0002\u0002\u0278\u0279\u0003",
"\u0002\u0002\u0002\u0279\u027c\u0003\u0002\u0002\u0002\u027a\u027b\u0007",
"t\u0002\u0002\u027b\u027d\t\t\u0002\u0002\u027c\u027a\u0003\u0002\u0002",
"\u0002\u027c\u027d\u0003\u0002\u0002\u0002\u027d\u001f\u0003\u0002\u0002",
"\u0002\u027e\u0280\u0007\u0098\u0002\u0002\u027f\u0281\u0005*\u0016",
"\u0002\u0280\u027f\u0003\u0002\u0002\u0002\u0280\u0281\u0003\u0002\u0002",
"\u0002\u0281\u0282\u0003\u0002\u0002\u0002\u0282\u0287\u0005,\u0017",
"\u0002\u0283\u0284\u0007\u0006\u0002\u0002\u0284\u0286\u0005,\u0017",
"\u0002\u0285\u0283\u0003\u0002\u0002\u0002\u0286\u0289\u0003\u0002\u0002",
"\u0002\u0287\u0285\u0003\u0002\u0002\u0002\u0287\u0288\u0003\u0002\u0002",
"\u0002\u0288\u0293\u0003\u0002\u0002\u0002\u0289\u0287\u0003\u0002\u0002",
"\u0002\u028a\u028b\u0007F\u0002\u0002\u028b\u0290\u0005.\u0018\u0002",
"\u028c\u028d\u0007\u0006\u0002\u0002\u028d\u028f\u0005.\u0018\u0002",
"\u028e\u028c\u0003\u0002\u0002\u0002\u028f\u0292\u0003\u0002\u0002\u0002",
"\u0290\u028e\u0003\u0002\u0002\u0002\u0290\u0291\u0003\u0002\u0002\u0002",
"\u0291\u0294\u0003\u0002\u0002\u0002\u0292\u0290\u0003\u0002\u0002\u0002",
"\u0293\u028a\u0003\u0002\u0002\u0002\u0293\u0294\u0003\u0002\u0002\u0002",
"\u0294\u0297\u0003\u0002\u0002\u0002\u0295\u0296\u0007\u00bb\u0002\u0002",
"\u0296\u0298\u0005@!\u0002\u0297\u0295\u0003\u0002\u0002\u0002\u0297",
"\u0298\u0003\u0002\u0002\u0002\u0298\u029c\u0003\u0002\u0002\u0002\u0299",
"\u029a\u0007L\u0002\u0002\u029a\u029b\u0007\u0018\u0002\u0002\u029b",
"\u029d\u0005\"\u0012\u0002\u029c\u0299\u0003\u0002\u0002\u0002\u029c",
"\u029d\u0003\u0002\u0002\u0002\u029d\u02a0\u0003\u0002\u0002\u0002\u029e",
"\u029f\u0007N\u0002\u0002\u029f\u02a1\u0005@!\u0002\u02a0\u029e\u0003",
"\u0002\u0002\u0002\u02a0\u02a1\u0003\u0002\u0002\u0002\u02a1!\u0003",
"\u0002\u0002\u0002\u02a2\u02a4\u0005*\u0016\u0002\u02a3\u02a2\u0003",
"\u0002\u0002\u0002\u02a3\u02a4\u0003\u0002\u0002\u0002\u02a4\u02a5\u0003",
"\u0002\u0002\u0002\u02a5\u02aa\u0005$\u0013\u0002\u02a6\u02a7\u0007",
"\u0006\u0002\u0002\u02a7\u02a9\u0005$\u0013\u0002\u02a8\u02a6\u0003",
"\u0002\u0002\u0002\u02a9\u02ac\u0003\u0002\u0002\u0002\u02aa\u02a8\u0003",
"\u0002\u0002\u0002\u02aa\u02ab\u0003\u0002\u0002\u0002\u02ab#\u0003",
"\u0002\u0002\u0002\u02ac\u02aa\u0003\u0002\u0002\u0002\u02ad\u02d6\u0005",
"&\u0014\u0002\u02ae\u02af\u0007\u0092\u0002\u0002\u02af\u02b8\u0007",
"\u0004\u0002\u0002\u02b0\u02b5\u0005> \u0002\u02b1\u02b2\u0007\u0006",
"\u0002\u0002\u02b2\u02b4\u0005> \u0002\u02b3\u02b1\u0003\u0002\u0002",
"\u0002\u02b4\u02b7\u0003\u0002\u0002\u0002\u02b5\u02b3\u0003\u0002\u0002",
"\u0002\u02b5\u02b6\u0003\u0002\u0002\u0002\u02b6\u02b9\u0003\u0002\u0002",
"\u0002\u02b7\u02b5\u0003\u0002\u0002\u0002\u02b8\u02b0\u0003\u0002\u0002",
"\u0002\u02b8\u02b9\u0003\u0002\u0002\u0002\u02b9\u02ba\u0003\u0002\u0002",
"\u0002\u02ba\u02d6\u0007\u0005\u0002\u0002\u02bb\u02bc\u0007&\u0002",
"\u0002\u02bc\u02c5\u0007\u0004\u0002\u0002\u02bd\u02c2\u0005> \u0002",
"\u02be\u02bf\u0007\u0006\u0002\u0002\u02bf\u02c1\u0005> \u0002\u02c0",
"\u02be\u0003\u0002\u0002\u0002\u02c1\u02c4\u0003\u0002\u0002\u0002\u02c2",
"\u02c0\u0003\u0002\u0002\u0002\u02c2\u02c3\u0003\u0002\u0002\u0002\u02c3",
"\u02c6\u0003\u0002\u0002\u0002\u02c4\u02c2\u0003\u0002\u0002\u0002\u02c5",
"\u02bd\u0003\u0002\u0002\u0002\u02c5\u02c6\u0003\u0002\u0002\u0002\u02c6",
"\u02c7\u0003\u0002\u0002\u0002\u02c7\u02d6\u0007\u0005\u0002\u0002\u02c8",
"\u02c9\u0007M\u0002\u0002\u02c9\u02ca\u0007\u009c\u0002\u0002\u02ca",
"\u02cb\u0007\u0004\u0002\u0002\u02cb\u02d0\u0005&\u0014\u0002\u02cc",
"\u02cd\u0007\u0006\u0002\u0002\u02cd\u02cf\u0005&\u0014\u0002\u02ce",
"\u02cc\u0003\u0002\u0002\u0002\u02cf\u02d2\u0003\u0002\u0002\u0002\u02d0",
"\u02ce\u0003\u0002\u0002\u0002\u02d0\u02d1\u0003\u0002\u0002\u0002\u02d1",
"\u02d3\u0003\u0002\u0002\u0002\u02d2\u02d0\u0003\u0002\u0002\u0002\u02d3",
"\u02d4\u0007\u0005\u0002\u0002\u02d4\u02d6\u0003\u0002\u0002\u0002\u02d5",
"\u02ad\u0003\u0002\u0002\u0002\u02d5\u02ae\u0003\u0002\u0002\u0002\u02d5",
"\u02bb\u0003\u0002\u0002\u0002\u02d5\u02c8\u0003\u0002\u0002\u0002\u02d6",
"%\u0003\u0002\u0002\u0002\u02d7\u02e0\u0007\u0004\u0002\u0002\u02d8",
"\u02dd\u0005> \u0002\u02d9\u02da\u0007\u0006\u0002\u0002\u02da\u02dc",
"\u0005> \u0002\u02db\u02d9\u0003\u0002\u0002\u0002\u02dc\u02df\u0003",
"\u0002\u0002\u0002\u02dd\u02db\u0003\u0002\u0002\u0002\u02dd\u02de\u0003",
"\u0002\u0002\u0002\u02de\u02e1\u0003\u0002\u0002\u0002\u02df\u02dd\u0003",
"\u0002\u0002\u0002\u02e0\u02d8\u0003\u0002\u0002\u0002\u02e0\u02e1\u0003",
"\u0002\u0002\u0002\u02e1\u02e2\u0003\u0002\u0002\u0002\u02e2\u02e5\u0007",
"\u0005\u0002\u0002\u02e3\u02e5\u0005> \u0002\u02e4\u02d7\u0003\u0002",
"\u0002\u0002\u02e4\u02e3\u0003\u0002\u0002\u0002\u02e5\'\u0003\u0002",
"\u0002\u0002\u02e6\u02e8\u0005x=\u0002\u02e7\u02e9\u0005:\u001e\u0002",
"\u02e8\u02e7\u0003\u0002\u0002\u0002\u02e8\u02e9\u0003\u0002\u0002\u0002",
"\u02e9\u02ea\u0003\u0002\u0002\u0002\u02ea\u02eb\u0007\u0013\u0002\u0002",
"\u02eb\u02ec\u0007\u0004\u0002\u0002\u02ec\u02ed\u0005\n\u0006\u0002",
"\u02ed\u02ee\u0007\u0005\u0002\u0002\u02ee)\u0003\u0002\u0002\u0002",
"\u02ef\u02f0\t\n\u0002\u0002\u02f0+\u0003\u0002\u0002\u0002\u02f1\u02f6",
"\u0005> \u0002\u02f2\u02f4\u0007\u0013\u0002\u0002\u02f3\u02f2\u0003",
"\u0002\u0002\u0002\u02f3\u02f4\u0003\u0002\u0002\u0002\u02f4\u02f5\u0003",
"\u0002\u0002\u0002\u02f5\u02f7\u0005x=\u0002\u02f6\u02f3\u0003\u0002",
"\u0002\u0002\u02f6\u02f7\u0003\u0002\u0002\u0002\u02f7\u02fe\u0003\u0002",
"\u0002\u0002\u02f8\u02f9\u0005v<\u0002\u02f9\u02fa\u0007\u0003\u0002",
"\u0002\u02fa\u02fb\u0007\u00c9\u0002\u0002\u02fb\u02fe\u0003\u0002\u0002",
"\u0002\u02fc\u02fe\u0007\u00c9\u0002\u0002\u02fd\u02f1\u0003\u0002\u0002",
"\u0002\u02fd\u02f8\u0003\u0002\u0002\u0002\u02fd\u02fc\u0003\u0002\u0002",
"\u0002\u02fe-\u0003\u0002\u0002\u0002\u02ff\u0300\b\u0018\u0001\u0002",
"\u0300\u0301\u00054\u001b\u0002\u0301\u0314\u0003\u0002\u0002\u0002",
"\u0302\u0310\f\u0004\u0002\u0002\u0303\u0304\u0007%\u0002\u0002\u0304",
"\u0305\u0007]\u0002\u0002\u0305\u0311\u00054\u001b\u0002\u0306\u0307",
"\u00050\u0019\u0002\u0307\u0308\u0007]\u0002\u0002\u0308\u0309\u0005",
".\u0018\u0002\u0309\u030a\u00052\u001a\u0002\u030a\u0311\u0003\u0002",
"\u0002\u0002\u030b\u030c\u0007j\u0002\u0002\u030c\u030d\u00050\u0019",
"\u0002\u030d\u030e\u0007]\u0002\u0002\u030e\u030f\u00054\u001b\u0002",
"\u030f\u0311\u0003\u0002\u0002\u0002\u0310\u0303\u0003\u0002\u0002\u0002",
"\u0310\u0306\u0003\u0002\u0002\u0002\u0310\u030b\u0003\u0002\u0002\u0002",
"\u0311\u0313\u0003\u0002\u0002\u0002\u0312\u0302\u0003\u0002\u0002\u0002",
"\u0313\u0316\u0003\u0002\u0002\u0002\u0314\u0312\u0003\u0002\u0002\u0002",
"\u0314\u0315\u0003\u0002\u0002\u0002\u0315/\u0003\u0002\u0002\u0002",
"\u0316\u0314\u0003\u0002\u0002\u0002\u0317\u0319\u0007S\u0002\u0002",
"\u0318\u0317\u0003\u0002\u0002\u0002\u0318\u0319\u0003\u0002\u0002\u0002",
"\u0319\u0327\u0003\u0002\u0002\u0002\u031a\u031c\u0007`\u0002\u0002",
"\u031b\u031d\u0007{\u0002\u0002\u031c\u031b\u0003\u0002\u0002\u0002",
"\u031c\u031d\u0003\u0002\u0002\u0002\u031d\u0327\u0003\u0002\u0002\u0002",
"\u031e\u0320\u0007\u0090\u0002\u0002\u031f\u0321\u0007{\u0002\u0002",
"\u0320\u031f\u0003\u0002\u0002\u0002\u0320\u0321\u0003\u0002\u0002\u0002",
"\u0321\u0327\u0003\u0002\u0002\u0002\u0322\u0324\u0007G\u0002\u0002",
"\u0323\u0325\u0007{\u0002\u0002\u0324\u0323\u0003\u0002\u0002\u0002",
"\u0324\u0325\u0003\u0002\u0002\u0002\u0325\u0327\u0003\u0002\u0002\u0002",
"\u0326\u0318\u0003\u0002\u0002\u0002\u0326\u031a\u0003\u0002\u0002\u0002",
"\u0326\u031e\u0003\u0002\u0002\u0002\u0326\u0322\u0003\u0002\u0002\u0002",
"\u03271\u0003\u0002\u0002\u0002\u0328\u0329\u0007u\u0002\u0002\u0329",
"\u0337\u0005@!\u0002\u032a\u032b\u0007\u00b5\u0002\u0002\u032b\u032c",
"\u0007\u0004\u0002\u0002\u032c\u0331\u0005x=\u0002\u032d\u032e\u0007",
"\u0006\u0002\u0002\u032e\u0330\u0005x=\u0002\u032f\u032d\u0003\u0002",
"\u0002\u0002\u0330\u0333\u0003\u0002\u0002\u0002\u0331\u032f\u0003\u0002",
"\u0002\u0002\u0331\u0332\u0003\u0002\u0002\u0002\u0332\u0334\u0003\u0002",
"\u0002\u0002\u0333\u0331\u0003\u0002\u0002\u0002\u0334\u0335\u0007\u0005",
"\u0002\u0002\u0335\u0337\u0003\u0002\u0002\u0002\u0336\u0328\u0003\u0002",
"\u0002\u0002\u0336\u032a\u0003\u0002\u0002\u0002\u03373\u0003\u0002",
"\u0002\u0002\u0338\u033f\u00058\u001d\u0002\u0339\u033a\u0007\u00a5",
"\u0002\u0002\u033a\u033b\u00056\u001c\u0002\u033b\u033c\u0007\u0004",
"\u0002\u0002\u033c\u033d\u0005> \u0002\u033d\u033e\u0007\u0005\u0002",
"\u0002\u033e\u0340\u0003\u0002\u0002\u0002\u033f\u0339\u0003\u0002\u0002",
"\u0002\u033f\u0340\u0003\u0002\u0002\u0002\u03405\u0003\u0002\u0002",
"\u0002\u0341\u0342\t\u000b\u0002\u0002\u03427\u0003\u0002\u0002\u0002",
"\u0343\u034b\u0005<\u001f\u0002\u0344\u0346\u0007\u0013\u0002\u0002",
"\u0345\u0344\u0003\u0002\u0002\u0002\u0345\u0346\u0003\u0002\u0002\u0002",
"\u0346\u0347\u0003\u0002\u0002\u0002\u0347\u0349\u0005x=\u0002\u0348",
"\u034a\u0005:\u001e\u0002\u0349\u0348\u0003\u0002\u0002\u0002\u0349",
"\u034a\u0003\u0002\u0002\u0002\u034a\u034c\u0003\u0002\u0002\u0002\u034b",
"\u0345\u0003\u0002\u0002\u0002\u034b\u034c\u0003\u0002\u0002\u0002\u034c",
"9\u0003\u0002\u0002\u0002\u034d\u034e\u0007\u0004\u0002\u0002\u034e",
"\u0353\u0005x=\u0002\u034f\u0350\u0007\u0006\u0002\u0002\u0350\u0352",
"\u0005x=\u0002\u0351\u034f\u0003\u0002\u0002\u0002\u0352\u0355\u0003",
"\u0002\u0002\u0002\u0353\u0351\u0003\u0002\u0002\u0002\u0353\u0354\u0003",
"\u0002\u0002\u0002\u0354\u0356\u0003\u0002\u0002\u0002\u0355\u0353\u0003",
"\u0002\u0002\u0002\u0356\u0357\u0007\u0005\u0002\u0002\u0357;\u0003",
"\u0002\u0002\u0002\u0358\u0376\u0005v<\u0002\u0359\u035a\u0007\u0004",
"\u0002\u0002\u035a\u035b\u0005\n\u0006\u0002\u035b\u035c\u0007\u0005",
"\u0002\u0002\u035c\u0376\u0003\u0002\u0002\u0002\u035d\u035e\u0007\u00b3",
"\u0002\u0002\u035e\u035f\u0007\u0004\u0002\u0002\u035f\u0364\u0005>",
" \u0002\u0360\u0361\u0007\u0006\u0002\u0002\u0361\u0363\u0005> \u0002",
"\u0362\u0360\u0003\u0002\u0002\u0002\u0363\u0366\u0003\u0002\u0002\u0002",
"\u0364\u0362\u0003\u0002\u0002\u0002\u0364\u0365\u0003\u0002\u0002\u0002",
"\u0365\u0367\u0003\u0002\u0002\u0002\u0366\u0364\u0003\u0002\u0002\u0002",
"\u0367\u036a\u0007\u0005\u0002\u0002\u0368\u0369\u0007\u00bc\u0002\u0002",
"\u0369\u036b\u0007z\u0002\u0002\u036a\u0368\u0003\u0002\u0002\u0002",
"\u036a\u036b\u0003\u0002\u0002\u0002\u036b\u0376\u0003\u0002\u0002\u0002",
"\u036c\u036d\u0007_\u0002\u0002\u036d\u036e\u0007\u0004\u0002\u0002",
"\u036e\u036f\u0005\n\u0006\u0002\u036f\u0370\u0007\u0005\u0002\u0002",
"\u0370\u0376\u0003\u0002\u0002\u0002\u0371\u0372\u0007\u0004\u0002\u0002",
"\u0372\u0373\u0005.\u0018\u0002\u0373\u0374\u0007\u0005\u0002\u0002",
"\u0374\u0376\u0003\u0002\u0002\u0002\u0375\u0358\u0003\u0002\u0002\u0002",
"\u0375\u0359\u0003\u0002\u0002\u0002\u0375\u035d\u0003\u0002\u0002\u0002",
"\u0375\u036c\u0003\u0002\u0002\u0002\u0375\u0371\u0003\u0002\u0002\u0002",
"\u0376=\u0003\u0002\u0002\u0002\u0377\u0378\u0005@!\u0002\u0378?\u0003",
"\u0002\u0002\u0002\u0379\u037a\b!\u0001\u0002\u037a\u037c\u0005D#\u0002",
"\u037b\u037d\u0005B\"\u0002\u037c\u037b\u0003\u0002\u0002\u0002\u037c",
"\u037d\u0003\u0002\u0002\u0002\u037d\u0381\u0003\u0002\u0002\u0002\u037e",
"\u037f\u0007q\u0002\u0002\u037f\u0381\u0005@!\u0005\u0380\u0379\u0003",
"\u0002\u0002\u0002\u0380\u037e\u0003\u0002\u0002\u0002\u0381\u038a\u0003",
"\u0002\u0002\u0002\u0382\u0383\f\u0004\u0002\u0002\u0383\u0384\u0007",
"\u0010\u0002\u0002\u0384\u0389\u0005@!\u0005\u0385\u0386\f\u0003\u0002",
"\u0002\u0386\u0387\u0007x\u0002\u0002\u0387\u0389\u0005@!\u0004\u0388",
"\u0382\u0003\u0002\u0002\u0002\u0388\u0385\u0003\u0002\u0002\u0002\u0389",
"\u038c\u0003\u0002\u0002\u0002\u038a\u0388\u0003\u0002\u0002\u0002\u038a",
"\u038b\u0003\u0002\u0002\u0002\u038bA\u0003\u0002\u0002\u0002\u038c",
"\u038a\u0003\u0002\u0002\u0002\u038d\u038e\u0005L\'\u0002\u038e\u038f",
"\u0005D#\u0002\u038f\u03cb\u0003\u0002\u0002\u0002\u0390\u0391\u0005",
"L\'\u0002\u0391\u0392\u0005N(\u0002\u0392\u0393\u0007\u0004\u0002\u0002",
"\u0393\u0394\u0005\n\u0006\u0002\u0394\u0395\u0007\u0005\u0002\u0002",
"\u0395\u03cb\u0003\u0002\u0002\u0002\u0396\u0398\u0007q\u0002\u0002",
"\u0397\u0396\u0003\u0002\u0002\u0002\u0397\u0398\u0003\u0002\u0002\u0002",
"\u0398\u0399\u0003\u0002\u0002\u0002\u0399\u039a\u0007\u0017\u0002\u0002",
"\u039a\u039b\u0005D#\u0002\u039b\u039c\u0007\u0010\u0002\u0002\u039c",
"\u039d\u0005D#\u0002\u039d\u03cb\u0003\u0002\u0002\u0002\u039e\u03a0",
"\u0007q\u0002\u0002\u039f\u039e\u0003\u0002\u0002\u0002\u039f\u03a0",
"\u0003\u0002\u0002\u0002\u03a0\u03a1\u0003\u0002\u0002\u0002\u03a1\u03a2",
"\u0007Q\u0002\u0002\u03a2\u03a3\u0007\u0004\u0002\u0002\u03a3\u03a8",
"\u0005> \u0002\u03a4\u03a5\u0007\u0006\u0002\u0002\u03a5\u03a7\u0005",
"> \u0002\u03a6\u03a4\u0003\u0002\u0002\u0002\u03a7\u03aa\u0003\u0002",
"\u0002\u0002\u03a8\u03a6\u0003\u0002\u0002\u0002\u03a8\u03a9\u0003\u0002",
"\u0002\u0002\u03a9\u03ab\u0003\u0002\u0002\u0002\u03aa\u03a8\u0003\u0002",
"\u0002\u0002\u03ab\u03ac\u0007\u0005\u0002\u0002\u03ac\u03cb\u0003\u0002",
"\u0002\u0002\u03ad\u03af\u0007q\u0002\u0002\u03ae\u03ad\u0003\u0002",
"\u0002\u0002\u03ae\u03af\u0003\u0002\u0002\u0002\u03af\u03b0\u0003\u0002",
"\u0002\u0002\u03b0\u03b1\u0007Q\u0002\u0002\u03b1\u03b2\u0007\u0004",
"\u0002\u0002\u03b2\u03b3\u0005\n\u0006\u0002\u03b3\u03b4\u0007\u0005",
"\u0002\u0002\u03b4\u03cb\u0003\u0002\u0002\u0002\u03b5\u03b7\u0007q",
"\u0002\u0002\u03b6\u03b5\u0003\u0002\u0002\u0002\u03b6\u03b7\u0003\u0002",
"\u0002\u0002\u03b7\u03b8\u0003\u0002\u0002\u0002\u03b8\u03b9\u0007b",
"\u0002\u0002\u03b9\u03bc\u0005D#\u0002\u03ba\u03bb\u00079\u0002\u0002",
"\u03bb\u03bd\u0005D#\u0002\u03bc\u03ba\u0003\u0002\u0002\u0002\u03bc",
"\u03bd\u0003\u0002\u0002\u0002\u03bd\u03cb\u0003\u0002\u0002\u0002\u03be",
"\u03c0\u0007Z\u0002\u0002\u03bf\u03c1\u0007q\u0002\u0002\u03c0\u03bf",
"\u0003\u0002\u0002\u0002\u03c0\u03c1\u0003\u0002\u0002\u0002\u03c1\u03c2",
"\u0003\u0002\u0002\u0002\u03c2\u03cb\u0007r\u0002\u0002\u03c3\u03c5",
"\u0007Z\u0002\u0002\u03c4\u03c6\u0007q\u0002\u0002\u03c5\u03c4\u0003",
"\u0002\u0002\u0002\u03c5\u03c6\u0003\u0002\u0002\u0002\u03c6\u03c7\u0003",
"\u0002\u0002\u0002\u03c7\u03c8\u00074\u0002\u0002\u03c8\u03c9\u0007",
"F\u0002\u0002\u03c9\u03cb\u0005D#\u0002\u03ca\u038d\u0003\u0002\u0002",
"\u0002\u03ca\u0390\u0003\u0002\u0002\u0002\u03ca\u0397\u0003\u0002\u0002",
"\u0002\u03ca\u039f\u0003\u0002\u0002\u0002\u03ca\u03ae\u0003\u0002\u0002",
"\u0002\u03ca\u03b6\u0003\u0002\u0002\u0002\u03ca\u03be\u0003\u0002\u0002",
"\u0002\u03ca\u03c3\u0003\u0002\u0002\u0002\u03cbC\u0003\u0002\u0002",
"\u0002\u03cc\u03cd\b#\u0001\u0002\u03cd\u03d1\u0005F$\u0002\u03ce\u03cf",
"\t\f\u0002\u0002\u03cf\u03d1\u0005D#\u0006\u03d0\u03cc\u0003\u0002\u0002",
"\u0002\u03d0\u03ce\u0003\u0002\u0002\u0002\u03d1\u03e0\u0003\u0002\u0002",
"\u0002\u03d2\u03d3\f\u0005\u0002\u0002\u03d3\u03d4\t\r\u0002\u0002\u03d4",
"\u03df\u0005D#\u0006\u03d5\u03d6\f\u0004\u0002\u0002\u03d6\u03d7\t\f",
"\u0002\u0002\u03d7\u03df\u0005D#\u0005\u03d8\u03d9\f\u0003\u0002\u0002",
"\u03d9\u03da\u0007\u00cc\u0002\u0002\u03da\u03df\u0005D#\u0004\u03db",
"\u03dc\f\u0007\u0002\u0002\u03dc\u03dd\u0007\u0015\u0002\u0002\u03dd",
"\u03df\u0005J&\u0002\u03de\u03d2\u0003\u0002\u0002\u0002\u03de\u03d5",
"\u0003\u0002\u0002\u0002\u03de\u03d8\u0003\u0002\u0002\u0002\u03de\u03db",
"\u0003\u0002\u0002\u0002\u03df\u03e2\u0003\u0002\u0002\u0002\u03e0\u03de",
"\u0003\u0002\u0002\u0002\u03e0\u03e1\u0003\u0002\u0002\u0002\u03e1E",
"\u0003\u0002\u0002\u0002\u03e2\u03e0\u0003\u0002\u0002\u0002\u03e3\u03e4",
"\b$\u0001\u0002\u03e4\u04d1\u0007r\u0002\u0002\u03e5\u04d1\u0005R*\u0002",
"\u03e6\u03e7\u0005x=\u0002\u03e7\u03e8\u0005H%\u0002\u03e8\u04d1\u0003",
"\u0002\u0002\u0002\u03e9\u03ea\u0007\u00d9\u0002\u0002\u03ea\u04d1\u0005",
"H%\u0002\u03eb\u04d1\u0005z>\u0002\u03ec\u04d1\u0005P)\u0002\u03ed\u04d1",
"\u0005H%\u0002\u03ee\u04d1\u0007\u00cf\u0002\u0002\u03ef\u04d1\u0007",
"\u0007\u0002\u0002\u03f0\u03f1\u0007\u0081\u0002\u0002\u03f1\u03f2\u0007",
"\u0004\u0002\u0002\u03f2\u03f3\u0005D#\u0002\u03f3\u03f4\u0007Q\u0002",
"\u0002\u03f4\u03f5\u0005D#\u0002\u03f5\u03f6\u0007\u0005\u0002\u0002",
"\u03f6\u04d1\u0003\u0002\u0002\u0002\u03f7\u03f8\u0007\u0004\u0002\u0002",
"\u03f8\u03fb\u0005> \u0002\u03f9\u03fa\u0007\u0006\u0002\u0002\u03fa",
"\u03fc\u0005> \u0002\u03fb\u03f9\u0003\u0002\u0002\u0002\u03fc\u03fd",
"\u0003\u0002\u0002\u0002\u03fd\u03fb\u0003\u0002\u0002\u0002\u03fd\u03fe",
"\u0003\u0002\u0002\u0002\u03fe\u03ff\u0003\u0002\u0002\u0002\u03ff\u0400",
"\u0007\u0005\u0002\u0002\u0400\u04d1\u0003\u0002\u0002\u0002\u0401\u0402",
"\u0007\u0093\u0002\u0002\u0402\u0403\u0007\u0004\u0002\u0002\u0403\u0408",
"\u0005> \u0002\u0404\u0405\u0007\u0006\u0002\u0002\u0405\u0407\u0005",
"> \u0002\u0406\u0404\u0003\u0002\u0002\u0002\u0407\u040a\u0003\u0002",
"\u0002\u0002\u0408\u0406\u0003\u0002\u0002\u0002\u0408\u0409\u0003\u0002",
"\u0002\u0002\u0409\u040b\u0003\u0002\u0002\u0002\u040a\u0408\u0003\u0002",
"\u0002\u0002\u040b\u040c\u0007\u0005\u0002\u0002\u040c\u04d1\u0003\u0002",
"\u0002\u0002\u040d\u040e\u0005v<\u0002\u040e\u040f\u0007\u0004\u0002",
"\u0002\u040f\u0410\u0007\u00c9\u0002\u0002\u0410\u0412\u0007\u0005\u0002",
"\u0002\u0411\u0413\u0005`1\u0002\u0412\u0411\u0003\u0002\u0002\u0002",
"\u0412\u0413\u0003\u0002\u0002\u0002\u0413\u0415\u0003\u0002\u0002\u0002",
"\u0414\u0416\u0005b2\u0002\u0415\u0414\u0003\u0002\u0002\u0002\u0415",
"\u0416\u0003\u0002\u0002\u0002\u0416\u04d1\u0003\u0002\u0002\u0002\u0417",
"\u0418\u0005v<\u0002\u0418\u0424\u0007\u0004\u0002\u0002\u0419\u041b",
"\u0005*\u0016\u0002\u041a\u0419\u0003\u0002\u0002\u0002\u041a\u041b",
"\u0003\u0002\u0002\u0002\u041b\u041c\u0003\u0002\u0002\u0002\u041c\u0421",
"\u0005> \u0002\u041d\u041e\u0007\u0006\u0002\u0002\u041e\u0420\u0005",
"> \u0002\u041f\u041d\u0003\u0002\u0002\u0002\u0420\u0423\u0003\u0002",
"\u0002\u0002\u0421\u041f\u0003\u0002\u0002\u0002\u0421\u0422\u0003\u0002",
"\u0002\u0002\u0422\u0425\u0003\u0002\u0002\u0002\u0423\u0421\u0003\u0002",
"\u0002\u0002\u0424\u041a\u0003\u0002\u0002\u0002\u0424\u0425\u0003\u0002",
"\u0002\u0002\u0425\u0430\u0003\u0002\u0002\u0002\u0426\u0427\u0007y",
"\u0002\u0002\u0427\u0428\u0007\u0018\u0002\u0002\u0428\u042d\u0005\u001e",
"\u0010\u0002\u0429\u042a\u0007\u0006\u0002\u0002\u042a\u042c\u0005\u001e",
"\u0010\u0002\u042b\u0429\u0003\u0002\u0002\u0002\u042c\u042f\u0003\u0002",
"\u0002\u0002\u042d\u042b\u0003\u0002\u0002\u0002\u042d\u042e\u0003\u0002",
"\u0002\u0002\u042e\u0431\u0003\u0002\u0002\u0002\u042f\u042d\u0003\u0002",
"\u0002\u0002\u0430\u0426\u0003\u0002\u0002\u0002\u0430\u0431\u0003\u0002",
"\u0002\u0002\u0431\u0432\u0003\u0002\u0002\u0002\u0432\u0434\u0007\u0005",
"\u0002\u0002\u0433\u0435\u0005`1\u0002\u0434\u0433\u0003\u0002\u0002",
"\u0002\u0434\u0435\u0003\u0002\u0002\u0002\u0435\u0437\u0003\u0002\u0002",
"\u0002\u0436\u0438\u0005b2\u0002\u0437\u0436\u0003\u0002\u0002\u0002",
"\u0437\u0438\u0003\u0002\u0002\u0002\u0438\u04d1\u0003\u0002\u0002\u0002",
"\u0439\u043a\u0005x=\u0002\u043a\u043b\u0007\b\u0002\u0002\u043b\u043c",
"\u0005> \u0002\u043c\u04d1\u0003\u0002\u0002\u0002\u043d\u0446\u0007",
"\u0004\u0002\u0002\u043e\u0443\u0005x=\u0002\u043f\u0440\u0007\u0006",
"\u0002\u0002\u0440\u0442\u0005x=\u0002\u0441\u043f\u0003\u0002\u0002",
"\u0002\u0442\u0445\u0003\u0002\u0002\u0002\u0443\u0441\u0003\u0002\u0002",
"\u0002\u0443\u0444\u0003\u0002\u0002\u0002\u0444\u0447\u0003\u0002\u0002",
"\u0002\u0445\u0443\u0003\u0002\u0002\u0002\u0446\u043e\u0003\u0002\u0002",
"\u0002\u0446\u0447\u0003\u0002\u0002\u0002\u0447\u0448\u0003\u0002\u0002",
"\u0002\u0448\u0449\u0007\u0005\u0002\u0002\u0449\u044a\u0007\b\u0002",
"\u0002\u044a\u04d1\u0005> \u0002\u044b\u044c\u0007\u0004\u0002\u0002",
"\u044c\u044d\u0005\n\u0006\u0002\u044d\u044e\u0007\u0005\u0002\u0002",
"\u044e\u04d1\u0003\u0002\u0002\u0002\u044f\u0450\u0007=\u0002\u0002",
"\u0450\u0451\u0007\u0004\u0002\u0002\u0451\u0452\u0005\n\u0006\u0002",
"\u0452\u0453\u0007\u0005\u0002\u0002\u0453\u04d1\u0003\u0002\u0002\u0002",
"\u0454\u0455\u0007\u001b\u0002\u0002\u0455\u0457\u0005D#\u0002\u0456",
"\u0458\u0005^0\u0002\u0457\u0456\u0003\u0002\u0002\u0002\u0458\u0459",
"\u0003\u0002\u0002\u0002\u0459\u0457\u0003\u0002\u0002\u0002\u0459\u045a",
"\u0003\u0002\u0002\u0002\u045a\u045d\u0003\u0002\u0002\u0002\u045b\u045c",
"\u00077\u0002\u0002\u045c\u045e\u0005> \u0002\u045d\u045b\u0003\u0002",
"\u0002\u0002\u045d\u045e\u0003\u0002\u0002\u0002\u045e\u045f\u0003\u0002",
"\u0002\u0002\u045f\u0460\u00078\u0002\u0002\u0460\u04d1\u0003\u0002",
"\u0002\u0002\u0461\u0463\u0007\u001b\u0002\u0002\u0462\u0464\u0005^",
"0\u0002\u0463\u0462\u0003\u0002\u0002\u0002\u0464\u0465\u0003\u0002",
"\u0002\u0002\u0465\u0463\u0003\u0002\u0002\u0002\u0465\u0466\u0003\u0002",
"\u0002\u0002\u0466\u0469\u0003\u0002\u0002\u0002\u0467\u0468\u00077",
"\u0002\u0002\u0468\u046a\u0005> \u0002\u0469\u0467\u0003\u0002\u0002",
"\u0002\u0469\u046a\u0003\u0002\u0002\u0002\u046a\u046b\u0003\u0002\u0002",
"\u0002\u046b\u046c\u00078\u0002\u0002\u046c\u04d1\u0003\u0002\u0002",
"\u0002\u046d\u046e\u0007\u001c\u0002\u0002\u046e\u046f\u0007\u0004\u0002",
"\u0002\u046f\u0470\u0005> \u0002\u0470\u0471\u0007\u0013\u0002\u0002",
"\u0471\u0472\u0005X-\u0002\u0472\u0473\u0007\u0005\u0002\u0002\u0473",
"\u04d1\u0003\u0002\u0002\u0002\u0474\u0475\u0007\u00ad\u0002\u0002\u0475",
"\u0476\u0007\u0004\u0002\u0002\u0476\u0477\u0005> \u0002\u0477\u0478",
"\u0007\u0013\u0002\u0002\u0478\u0479\u0005X-\u0002\u0479\u047a\u0007",
"\u0005\u0002\u0002\u047a\u04d1\u0003\u0002\u0002\u0002\u047b\u047c\u0007",
"\u0012\u0002\u0002\u047c\u0485\u0007\t\u0002\u0002\u047d\u0482\u0005",
"> \u0002\u047e\u047f\u0007\u0006\u0002\u0002\u047f\u0481\u0005> \u0002",
"\u0480\u047e\u0003\u0002\u0002\u0002\u0481\u0484\u0003\u0002\u0002\u0002",
"\u0482\u0480\u0003\u0002\u0002\u0002\u0482\u0483\u0003\u0002\u0002\u0002",
"\u0483\u0486\u0003\u0002\u0002\u0002\u0484\u0482\u0003\u0002\u0002\u0002",
"\u0485\u047d\u0003\u0002\u0002\u0002\u0485\u0486\u0003\u0002\u0002\u0002",
"\u0486\u0487\u0003\u0002\u0002\u0002\u0487\u04d1\u0007\n\u0002\u0002",
"\u0488\u04d1\u0005x=\u0002\u0489\u04d1\u0007(\u0002\u0002\u048a\u048e",
"\u0007*\u0002\u0002\u048b\u048c\u0007\u0004\u0002\u0002\u048c\u048d",
"\u0007\u00d0\u0002\u0002\u048d\u048f\u0007\u0005\u0002\u0002\u048e\u048b",
"\u0003\u0002\u0002\u0002\u048e\u048f\u0003\u0002\u0002\u0002\u048f\u04d1",
"\u0003\u0002\u0002\u0002\u0490\u0494\u0007+\u0002\u0002\u0491\u0492",
"\u0007\u0004\u0002\u0002\u0492\u0493\u0007\u00d0\u0002\u0002\u0493\u0495",
"\u0007\u0005\u0002\u0002\u0494\u0491\u0003\u0002\u0002\u0002\u0494\u0495",
"\u0003\u0002\u0002\u0002\u0495\u04d1\u0003\u0002\u0002\u0002\u0496\u049a",
"\u0007d\u0002\u0002\u0497\u0498\u0007\u0004\u0002\u0002\u0498\u0499",
"\u0007\u00d0\u0002\u0002\u0499\u049b\u0007\u0005\u0002\u0002\u049a\u0497",
"\u0003\u0002\u0002\u0002\u049a\u049b\u0003\u0002\u0002\u0002\u049b\u04d1",
"\u0003\u0002\u0002\u0002\u049c\u04a0\u0007e\u0002\u0002\u049d\u049e",
"\u0007\u0004\u0002\u0002\u049e\u049f\u0007\u00d0\u0002\u0002\u049f\u04a1",
"\u0007\u0005\u0002\u0002\u04a0\u049d\u0003\u0002\u0002\u0002\u04a0\u04a1",
"\u0003\u0002\u0002\u0002\u04a1\u04d1\u0003\u0002\u0002\u0002\u04a2\u04d1",
"\u0007,\u0002\u0002\u04a3\u04d1\u0007)\u0002\u0002\u04a4\u04a5\u0007",
"\u00a1\u0002\u0002\u04a5\u04a6\u0007\u0004\u0002\u0002\u04a6\u04a7\u0005",
"D#\u0002\u04a7\u04a8\u0007F\u0002\u0002\u04a8\u04ab\u0005D#\u0002\u04a9",
"\u04aa\u0007D\u0002\u0002\u04aa\u04ac\u0005D#\u0002\u04ab\u04a9\u0003",
"\u0002\u0002\u0002\u04ab\u04ac\u0003\u0002\u0002\u0002\u04ac\u04ad\u0003",
"\u0002\u0002\u0002\u04ad\u04ae\u0007\u0005\u0002\u0002\u04ae\u04d1\u0003",
"\u0002\u0002\u0002\u04af\u04b0\u0007p\u0002\u0002\u04b0\u04b1\u0007",
"\u0004\u0002\u0002\u04b1\u04b4\u0005D#\u0002\u04b2\u04b3\u0007\u0006",
"\u0002\u0002\u04b3\u04b5\u0005V,\u0002\u04b4\u04b2\u0003\u0002\u0002",
"\u0002\u04b4\u04b5\u0003\u0002\u0002\u0002\u04b5\u04b6\u0003\u0002\u0002",
"\u0002\u04b6\u04b7\u0007\u0005\u0002\u0002\u04b7\u04d1\u0003\u0002\u0002",
"\u0002\u04b8\u04b9\u0007?\u0002\u0002\u04b9\u04ba\u0007\u0004\u0002",
"\u0002\u04ba\u04bb\u0005x=\u0002\u04bb\u04bc\u0007F\u0002\u0002\u04bc",
"\u04bd\u0005D#\u0002\u04bd\u04be\u0007\u0005\u0002\u0002\u04be\u04d1",
"\u0003\u0002\u0002\u0002\u04bf\u04c0\u0007\u0004\u0002\u0002\u04c0\u04c1",
"\u0005> \u0002\u04c1\u04c2\u0007\u0005\u0002\u0002\u04c2\u04d1\u0003",
"\u0002\u0002\u0002\u04c3\u04c4\u0007M\u0002\u0002\u04c4\u04cd\u0007",
"\u0004\u0002\u0002\u04c5\u04ca\u0005v<\u0002\u04c6\u04c7\u0007\u0006",
"\u0002\u0002\u04c7\u04c9\u0005v<\u0002\u04c8\u04c6\u0003\u0002\u0002",
"\u0002\u04c9\u04cc\u0003\u0002\u0002\u0002\u04ca\u04c8\u0003\u0002\u0002",
"\u0002\u04ca\u04cb\u0003\u0002\u0002\u0002\u04cb\u04ce\u0003\u0002\u0002",
"\u0002\u04cc\u04ca\u0003\u0002\u0002\u0002\u04cd\u04c5\u0003\u0002\u0002",
"\u0002\u04cd\u04ce\u0003\u0002\u0002\u0002\u04ce\u04cf\u0003\u0002\u0002",
"\u0002\u04cf\u04d1\u0007\u0005\u0002\u0002\u04d0\u03e3\u0003\u0002\u0002",
"\u0002\u04d0\u03e5\u0003\u0002\u0002\u0002\u04d0\u03e6\u0003\u0002\u0002",
"\u0002\u04d0\u03e9\u0003\u0002\u0002\u0002\u04d0\u03eb\u0003\u0002\u0002",
"\u0002\u04d0\u03ec\u0003\u0002\u0002\u0002\u04d0\u03ed\u0003\u0002\u0002",
"\u0002\u04d0\u03ee\u0003\u0002\u0002\u0002\u04d0\u03ef\u0003\u0002\u0002",
"\u0002\u04d0\u03f0\u0003\u0002\u0002\u0002\u04d0\u03f7\u0003\u0002\u0002",
"\u0002\u04d0\u0401\u0003\u0002\u0002\u0002\u04d0\u040d\u0003\u0002\u0002",
"\u0002\u04d0\u0417\u0003\u0002\u0002\u0002\u04d0\u0439\u0003\u0002\u0002",
"\u0002\u04d0\u043d\u0003\u0002\u0002\u0002\u04d0\u044b\u0003\u0002\u0002",
"\u0002\u04d0\u044f\u0003\u0002\u0002\u0002\u04d0\u0454\u0003\u0002\u0002",
"\u0002\u04d0\u0461\u0003\u0002\u0002\u0002\u04d0\u046d\u0003\u0002\u0002",
"\u0002\u04d0\u0474\u0003\u0002\u0002\u0002\u04d0\u047b\u0003\u0002\u0002",
"\u0002\u04d0\u0488\u0003\u0002\u0002\u0002\u04d0\u0489\u0003\u0002\u0002",
"\u0002\u04d0\u048a\u0003\u0002\u0002\u0002\u04d0\u0490\u0003\u0002\u0002",
"\u0002\u04d0\u0496\u0003\u0002\u0002\u0002\u04d0\u049c\u0003\u0002\u0002",
"\u0002\u04d0\u04a2\u0003\u0002\u0002\u0002\u04d0\u04a3\u0003\u0002\u0002",
"\u0002\u04d0\u04a4\u0003\u0002\u0002\u0002\u04d0\u04af\u0003\u0002\u0002",
"\u0002\u04d0\u04b8\u0003\u0002\u0002\u0002\u04d0\u04bf\u0003\u0002\u0002",
"\u0002\u04d0\u04c3\u0003\u0002\u0002\u0002\u04d1\u04dc\u0003\u0002\u0002",
"\u0002\u04d2\u04d3\f\u0011\u0002\u0002\u04d3\u04d4\u0007\t\u0002\u0002",
"\u04d4\u04d5\u0005D#\u0002\u04d5\u04d6\u0007\n\u0002\u0002\u04d6\u04db",
"\u0003\u0002\u0002\u0002\u04d7\u04d8\f\u000f\u0002\u0002\u04d8\u04d9",
"\u0007\u0003\u0002\u0002\u04d9\u04db\u0005x=\u0002\u04da\u04d2\u0003",
"\u0002\u0002\u0002\u04da\u04d7\u0003\u0002\u0002\u0002\u04db\u04de\u0003",
"\u0002\u0002\u0002\u04dc\u04da\u0003\u0002\u0002\u0002\u04dc\u04dd\u0003",
"\u0002\u0002\u0002\u04ddG\u0003\u0002\u0002\u0002\u04de\u04dc\u0003",
"\u0002\u0002\u0002\u04df\u04e6\u0007\u00cd\u0002\u0002\u04e0\u04e3\u0007",
"\u00ce\u0002\u0002\u04e1\u04e2\u0007\u00af\u0002\u0002\u04e2\u04e4\u0007",
"\u00cd\u0002\u0002\u04e3\u04e1\u0003\u0002\u0002\u0002\u04e3\u04e4\u0003",
"\u0002\u0002\u0002\u04e4\u04e6\u0003\u0002\u0002\u0002\u04e5\u04df\u0003",
"\u0002\u0002\u0002\u04e5\u04e0\u0003\u0002\u0002\u0002\u04e6I\u0003",
"\u0002\u0002\u0002\u04e7\u04e8\u0007\u00a8\u0002\u0002\u04e8\u04e9\u0007",
"\u00c0\u0002\u0002\u04e9\u04ee\u0005R*\u0002\u04ea\u04eb\u0007\u00a8",
"\u0002\u0002\u04eb\u04ec\u0007\u00c0\u0002\u0002\u04ec\u04ee\u0005H",
"%\u0002\u04ed\u04e7\u0003\u0002\u0002\u0002\u04ed\u04ea\u0003\u0002",
"\u0002\u0002\u04eeK\u0003\u0002\u0002\u0002\u04ef\u04f0\t\u000e\u0002",
"\u0002\u04f0M\u0003\u0002\u0002\u0002\u04f1\u04f2\t\u000f\u0002\u0002",
"\u04f2O\u0003\u0002\u0002\u0002\u04f3\u04f4\t\u0010\u0002\u0002\u04f4",
"Q\u0003\u0002\u0002\u0002\u04f5\u04f7\u0007W\u0002\u0002\u04f6\u04f8",
"\t\f\u0002\u0002\u04f7\u04f6\u0003\u0002\u0002\u0002\u04f7\u04f8\u0003",
"\u0002\u0002\u0002\u04f8\u04f9\u0003\u0002\u0002\u0002\u04f9\u04fa\u0005",
"H%\u0002\u04fa\u04fd\u0005T+\u0002\u04fb\u04fc\u0007\u00aa\u0002\u0002",
"\u04fc\u04fe\u0005T+\u0002\u04fd\u04fb\u0003\u0002\u0002\u0002\u04fd",
"\u04fe\u0003\u0002\u0002\u0002\u04feS\u0003\u0002\u0002\u0002\u04ff",
"\u0500\t\u0011\u0002\u0002\u0500U\u0003\u0002\u0002\u0002\u0501\u0502",
"\t\u0012\u0002\u0002\u0502W\u0003\u0002\u0002\u0002\u0503\u0504\b-\u0001",
"\u0002\u0504\u0505\u0007\u0012\u0002\u0002\u0505\u0506\u0007\u00c3\u0002",
"\u0002\u0506\u0507\u0005X-\u0002\u0507\u0508\u0007\u00c5\u0002\u0002",
"\u0508\u0533\u0003\u0002\u0002\u0002\u0509\u050a\u0007g\u0002\u0002",
"\u050a\u050b\u0007\u00c3\u0002\u0002\u050b\u050c\u0005X-\u0002\u050c",
"\u050d\u0007\u0006\u0002\u0002\u050d\u050e\u0005X-\u0002\u050e\u050f",
"\u0007\u00c5\u0002\u0002\u050f\u0533\u0003\u0002\u0002\u0002\u0510\u0511",
"\u0007\u0093\u0002\u0002\u0511\u0512\u0007\u0004\u0002\u0002\u0512\u0513",
"\u0005x=\u0002\u0513\u051a\u0005X-\u0002\u0514\u0515\u0007\u0006\u0002",
"\u0002\u0515\u0516\u0005x=\u0002\u0516\u0517\u0005X-\u0002\u0517\u0519",
"\u0003\u0002\u0002\u0002\u0518\u0514\u0003\u0002\u0002\u0002\u0519\u051c",
"\u0003\u0002\u0002\u0002\u051a\u0518\u0003\u0002\u0002\u0002\u051a\u051b",
"\u0003\u0002\u0002\u0002\u051b\u051d\u0003\u0002\u0002\u0002\u051c\u051a",
"\u0003\u0002\u0002\u0002\u051d\u051e\u0007\u0005\u0002\u0002\u051e\u0533",
"\u0003\u0002\u0002\u0002\u051f\u052b\u0005\\/\u0002\u0520\u0521\u0007",
"\u0004\u0002\u0002\u0521\u0526\u0005Z.\u0002\u0522\u0523\u0007\u0006",
"\u0002\u0002\u0523\u0525\u0005Z.\u0002\u0524\u0522\u0003\u0002\u0002",
"\u0002\u0525\u0528\u0003\u0002\u0002\u0002\u0526\u0524\u0003\u0002\u0002",
"\u0002\u0526\u0527\u0003\u0002\u0002\u0002\u0527\u0529\u0003\u0002\u0002",
"\u0002\u0528\u0526\u0003\u0002\u0002\u0002\u0529\u052a\u0007\u0005\u0002",
"\u0002\u052a\u052c\u0003\u0002\u0002\u0002\u052b\u0520\u0003\u0002\u0002",
"\u0002\u052b\u052c\u0003\u0002\u0002\u0002\u052c\u0533\u0003\u0002\u0002",
"\u0002\u052d\u052e\u0007W\u0002\u0002\u052e\u052f\u0005T+\u0002\u052f",
"\u0530\u0007\u00aa\u0002\u0002\u0530\u0531\u0005T+\u0002\u0531\u0533",
"\u0003\u0002\u0002\u0002\u0532\u0503\u0003\u0002\u0002\u0002\u0532\u0509",
"\u0003\u0002\u0002\u0002\u0532\u0510\u0003\u0002\u0002\u0002\u0532\u051f",
"\u0003\u0002\u0002\u0002\u0532\u052d\u0003\u0002\u0002\u0002\u0533\u0538",
"\u0003\u0002\u0002\u0002\u0534\u0535\f\b\u0002\u0002\u0535\u0537\u0007",
"\u0012\u0002\u0002\u0536\u0534\u0003\u0002\u0002\u0002\u0537\u053a\u0003",
"\u0002\u0002\u0002\u0538\u0536\u0003\u0002\u0002\u0002\u0538\u0539\u0003",
"\u0002\u0002\u0002\u0539Y\u0003\u0002\u0002\u0002\u053a\u0538\u0003",
"\u0002\u0002\u0002\u053b\u053e\u0007\u00d0\u0002\u0002\u053c\u053e\u0005",
"X-\u0002\u053d\u053b\u0003\u0002\u0002\u0002\u053d\u053c\u0003\u0002",
"\u0002\u0002\u053e[\u0003\u0002\u0002\u0002\u053f\u0544\u0007\u00d7",
"\u0002\u0002\u0540\u0544\u0007\u00d8\u0002\u0002\u0541\u0544\u0007\u00d9",
"\u0002\u0002\u0542\u0544\u0005x=\u0002\u0543\u053f\u0003\u0002\u0002",
"\u0002\u0543\u0540\u0003\u0002\u0002\u0002\u0543\u0541\u0003\u0002\u0002",
"\u0002\u0543\u0542\u0003\u0002\u0002\u0002\u0544]\u0003\u0002\u0002",
"\u0002\u0545\u0546\u0007\u00ba\u0002\u0002\u0546\u0547\u0005> \u0002",
"\u0547\u0548\u0007\u00a7\u0002\u0002\u0548\u0549\u0005> \u0002\u0549",
"_\u0003\u0002\u0002\u0002\u054a\u054b\u0007A\u0002\u0002\u054b\u054c",
"\u0007\u0004\u0002\u0002\u054c\u054d\u0007\u00bb\u0002\u0002\u054d\u054e",
"\u0005@!\u0002\u054e\u054f\u0007\u0005\u0002\u0002\u054fa\u0003\u0002",
"\u0002\u0002\u0550\u0551\u0007}\u0002\u0002\u0551\u055c\u0007\u0004",
"\u0002\u0002\u0552\u0553\u0007~\u0002\u0002\u0553\u0554\u0007\u0018",
"\u0002\u0002\u0554\u0559\u0005> \u0002\u0555\u0556\u0007\u0006\u0002",
"\u0002\u0556\u0558\u0005> \u0002\u0557\u0555\u0003\u0002\u0002\u0002",
"\u0558\u055b\u0003\u0002\u0002\u0002\u0559\u0557\u0003\u0002\u0002\u0002",
"\u0559\u055a\u0003\u0002\u0002\u0002\u055a\u055d\u0003\u0002\u0002\u0002",
"\u055b\u0559\u0003\u0002\u0002\u0002\u055c\u0552\u0003\u0002\u0002\u0002",
"\u055c\u055d\u0003\u0002\u0002\u0002\u055d\u0568\u0003\u0002\u0002\u0002",
"\u055e\u055f\u0007y\u0002\u0002\u055f\u0560\u0007\u0018\u0002\u0002",
"\u0560\u0565\u0005\u001e\u0010\u0002\u0561\u0562\u0007\u0006\u0002\u0002",
"\u0562\u0564\u0005\u001e\u0010\u0002\u0563\u0561\u0003\u0002\u0002\u0002",
"\u0564\u0567\u0003\u0002\u0002\u0002\u0565\u0563\u0003\u0002\u0002\u0002",
"\u0565\u0566\u0003\u0002\u0002\u0002\u0566\u0569\u0003\u0002\u0002\u0002",
"\u0567\u0565\u0003\u0002\u0002\u0002\u0568\u055e\u0003\u0002\u0002\u0002",
"\u0568\u0569\u0003\u0002\u0002\u0002\u0569\u056b\u0003\u0002\u0002\u0002",
"\u056a\u056c\u0005d3\u0002\u056b\u056a\u0003\u0002\u0002\u0002\u056b",
"\u056c\u0003\u0002\u0002\u0002\u056c\u056d\u0003\u0002\u0002\u0002\u056d",
"\u056e\u0007\u0005\u0002\u0002\u056ec\u0003\u0002\u0002\u0002\u056f",
"\u0570\u0007\u0087\u0002\u0002\u0570\u0580\u0005f4\u0002\u0571\u0572",
"\u0007\u0094\u0002\u0002\u0572\u0580\u0005f4\u0002\u0573\u0574\u0007",
"\u0087\u0002\u0002\u0574\u0575\u0007\u0017\u0002\u0002\u0575\u0576\u0005",
"f4\u0002\u0576\u0577\u0007\u0010\u0002\u0002\u0577\u0578\u0005f4\u0002",
"\u0578\u0580\u0003\u0002\u0002\u0002\u0579\u057a\u0007\u0094\u0002\u0002",
"\u057a\u057b\u0007\u0017\u0002\u0002\u057b\u057c\u0005f4\u0002\u057c",
"\u057d\u0007\u0010\u0002\u0002\u057d\u057e\u0005f4\u0002\u057e\u0580",
"\u0003\u0002\u0002\u0002\u057f\u056f\u0003\u0002\u0002\u0002\u057f\u0571",
"\u0003\u0002\u0002\u0002\u057f\u0573\u0003\u0002\u0002\u0002\u057f\u0579",
"\u0003\u0002\u0002\u0002\u0580e\u0003\u0002\u0002\u0002\u0581\u0582",
"\u0007\u00b0\u0002\u0002\u0582\u058b\u0007\u0082\u0002\u0002\u0583\u0584",
"\u0007\u00b0\u0002\u0002\u0584\u058b\u0007C\u0002\u0002\u0585\u0586",
"\u0007\'\u0002\u0002\u0586\u058b\u0007\u0093\u0002\u0002\u0587\u0588",
"\u0005> \u0002\u0588\u0589\t\u0013\u0002\u0002\u0589\u058b\u0003\u0002",
"\u0002\u0002\u058a\u0581\u0003\u0002\u0002\u0002\u058a\u0583\u0003\u0002",
"\u0002\u0002\u058a\u0585\u0003\u0002\u0002\u0002\u058a\u0587\u0003\u0002",
"\u0002\u0002\u058bg\u0003\u0002\u0002\u0002\u058c\u058d\u0007E\u0002",
"\u0002\u058d\u0591\t\u0014\u0002\u0002\u058e\u058f\u0007\u00ae\u0002",
"\u0002\u058f\u0591\t\u0015\u0002\u0002\u0590\u058c\u0003\u0002\u0002",
"\u0002\u0590\u058e\u0003\u0002\u0002\u0002\u0591i\u0003\u0002\u0002",
"\u0002\u0592\u0593\u0007[\u0002\u0002\u0593\u0594\u0007a\u0002\u0002",
"\u0594\u0598\u0005l7\u0002\u0595\u0596\u0007\u0088\u0002\u0002\u0596",
"\u0598\t\u0016\u0002\u0002\u0597\u0592\u0003\u0002\u0002\u0002\u0597",
"\u0595\u0003\u0002\u0002\u0002\u0598k\u0003\u0002\u0002\u0002\u0599",
"\u059a\u0007\u0088\u0002\u0002\u059a\u05a1\u0007\u00b1\u0002\u0002\u059b",
"\u059c\u0007\u0088\u0002\u0002\u059c\u05a1\u0007\"\u0002\u0002\u059d",
"\u059e\u0007\u008b\u0002\u0002\u059e\u05a1\u0007\u0088\u0002\u0002\u059f",
"\u05a1\u0007\u0099\u0002\u0002\u05a0\u0599\u0003\u0002\u0002\u0002\u05a0",
"\u059b\u0003\u0002\u0002\u0002\u05a0\u059d\u0003\u0002\u0002\u0002\u05a0",
"\u059f\u0003\u0002\u0002\u0002\u05a1m\u0003\u0002\u0002\u0002\u05a2",
"\u05a8\u0005> \u0002\u05a3\u05a4\u0005x=\u0002\u05a4\u05a5\u0007\u000b",
"\u0002\u0002\u05a5\u05a6\u0005> \u0002\u05a6\u05a8\u0003\u0002\u0002",
"\u0002\u05a7\u05a2\u0003\u0002\u0002\u0002\u05a7\u05a3\u0003\u0002\u0002",
"\u0002\u05a8o\u0003\u0002\u0002\u0002\u05a9\u05aa\u0005x=\u0002\u05aa",
"\u05ab\u0007\u0003\u0002\u0002\u05ab\u05ac\u0005x=\u0002\u05ac\u05af",
"\u0003\u0002\u0002\u0002\u05ad\u05af\u0005x=\u0002\u05ae\u05a9\u0003",
"\u0002\u0002\u0002\u05ae\u05ad\u0003\u0002\u0002\u0002\u05afq\u0003",
"\u0002\u0002\u0002\u05b0\u05b5\u0005p9\u0002\u05b1\u05b2\u0007\u0006",
"\u0002\u0002\u05b2\u05b4\u0005p9\u0002\u05b3\u05b1\u0003\u0002\u0002",
"\u0002\u05b4\u05b7\u0003\u0002\u0002\u0002\u05b5\u05b3\u0003\u0002\u0002",
"\u0002\u05b5\u05b6\u0003\u0002\u0002\u0002\u05b6s\u0003\u0002\u0002",
"\u0002\u05b7\u05b5\u0003\u0002\u0002\u0002\u05b8\u05bd\u0007\u0098\u0002",
"\u0002\u05b9\u05bd\u00071\u0002\u0002\u05ba\u05bd\u0007U\u0002\u0002",
"\u05bb\u05bd\u0005x=\u0002\u05bc\u05b8\u0003\u0002\u0002\u0002\u05bc",
"\u05b9\u0003\u0002\u0002\u0002\u05bc\u05ba\u0003\u0002\u0002\u0002\u05bc",
"\u05bb\u0003\u0002\u0002\u0002\u05bdu\u0003\u0002\u0002\u0002\u05be",
"\u05c3\u0005x=\u0002\u05bf\u05c0\u0007\u0003\u0002\u0002\u05c0\u05c2",
"\u0005x=\u0002\u05c1\u05bf\u0003\u0002\u0002\u0002\u05c2\u05c5\u0003",
"\u0002\u0002\u0002\u05c3\u05c1\u0003\u0002\u0002\u0002\u05c3\u05c4\u0003",
"\u0002\u0002\u0002\u05c4w\u0003\u0002\u0002\u0002\u05c5\u05c3\u0003",
"\u0002\u0002\u0002\u05c6\u05cc\u0007\u00d3\u0002\u0002\u05c7\u05cc\u0007",
"\u00d5\u0002\u0002\u05c8\u05cc\u0005|?\u0002\u05c9\u05cc\u0007\u00d6",
"\u0002\u0002\u05ca\u05cc\u0007\u00d4\u0002\u0002\u05cb\u05c6\u0003\u0002",
"\u0002\u0002\u05cb\u05c7\u0003\u0002\u0002\u0002\u05cb\u05c8\u0003\u0002",
"\u0002\u0002\u05cb\u05c9\u0003\u0002\u0002\u0002\u05cb\u05ca\u0003\u0002",
"\u0002\u0002\u05ccy\u0003\u0002\u0002\u0002\u05cd\u05d1\u0007\u00d1",
"\u0002\u0002\u05ce\u05d1\u0007\u00d2\u0002\u0002\u05cf\u05d1\u0007\u00d0",
"\u0002\u0002\u05d0\u05cd\u0003\u0002\u0002\u0002\u05d0\u05ce\u0003\u0002",
"\u0002\u0002\u05d0\u05cf\u0003\u0002\u0002\u0002\u05d1{\u0003\u0002",
"\u0002\u0002\u05d2\u05d3\t\u0017\u0002\u0002\u05d3}\u0003\u0002\u0002",
"\u0002\u00b9\u0094\u0099\u009f\u00a3\u00b1\u00b5\u00b9\u00bd\u00c5\u00c9",
"\u00cc\u00d3\u00dc\u00e2\u00e6\u00ec\u00f3\u00fc\u011f\u012a\u0135\u0138",
"\u0142\u0147\u014b\u0153\u0159\u0160\u0165\u0169\u0173\u0176\u017a\u017d",
"\u0185\u018a\u0199\u019f\u01a1\u01a7\u01ad\u01af\u01b5\u01de\u01e1\u01e5",
"\u01e9\u01fb\u01fe\u0209\u020c\u0212\u0219\u021e\u0224\u0228\u022e\u0236",
"\u0247\u024a\u024e\u0256\u025c\u025f\u0261\u026d\u0274\u0278\u027c\u0280",
"\u0287\u0290\u0293\u0297\u029c\u02a0\u02a3\u02aa\u02b5\u02b8\u02c2\u02c5",
"\u02d0\u02d5\u02dd\u02e0\u02e4\u02e8\u02f3\u02f6\u02fd\u0310\u0314\u0318",
"\u031c\u0320\u0324\u0326\u0331\u0336\u033f\u0345\u0349\u034b\u0353\u0364",
"\u036a\u0375\u037c\u0380\u0388\u038a\u0397\u039f\u03a8\u03ae\u03b6\u03bc",
"\u03c0\u03c5\u03ca\u03d0\u03de\u03e0\u03fd\u0408\u0412\u0415\u041a\u0421",
"\u0424\u042d\u0430\u0434\u0437\u0443\u0446\u0459\u045d\u0465\u0469\u0482",
"\u0485\u048e\u0494\u049a\u04a0\u04ab\u04b4\u04ca\u04cd\u04d0\u04da\u04dc",
"\u04e3\u04e5\u04ed\u04f7\u04fd\u051a\u0526\u052b\u0532\u0538\u053d\u0543",
"\u0559\u055c\u0565\u0568\u056b\u057f\u058a\u0590\u0597\u05a0\u05a7\u05ae",
"\u05b5\u05bc\u05c3\u05cb\u05d0"].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, "'.'", "'('", "')'", "','", "'?'", "'->'", "'['",
"']'", "'=>'", "'ADD'", "'ALL'", "'ALTER'", "'ANALYZE'",
"'AND'", "'ANY'", "'ARRAY'", "'AS'", "'ASC'", "'AT'",
"'BERNOULLI'", "'BETWEEN'", "'BY'", "'CALL'", "'CASCADE'",
"'CASE'", "'CAST'", "'CATALOGS'", "'COLUMN'", "'COLUMNS'",
"'COMMENT'", "'COMMIT'", "'COMMITTED'", "'CONSTRAINT'",
"'CREATE'", "'CROSS'", "'CUBE'", "'CURRENT'", "'CURRENT_DATE'",
"'CURRENT_PATH'", "'CURRENT_TIME'", "'CURRENT_TIMESTAMP'",
"'CURRENT_USER'", "'DATA'", "'DATE'", "'DAY'", "'DEALLOCATE'",
"'DELETE'", "'DESC'", "'DESCRIBE'", "'DISTINCT'", "'DISTRIBUTED'",
"'DROP'", "'ELSE'", "'END'", "'ESCAPE'", "'EXCEPT'",
"'EXCLUDING'", "'EXECUTE'", "'EXISTS'", "'EXPLAIN'",
"'EXTRACT'", "'FALSE'", "'FILTER'", "'FIRST'", "'FOLLOWING'",
"'FOR'", "'FORMAT'", "'FROM'", "'FULL'", "'FUNCTIONS'",
"'GRANT'", "'GRANTS'", "'GRAPHVIZ'", "'GROUP'", "'GROUPING'",
"'HAVING'", "'HOUR'", "'IF'", "'IN'", "'INCLUDING'",
"'INNER'", "'INPUT'", "'INSERT'", "'INTERSECT'", "'INTERVAL'",
"'INTO'", "'IO'", "'IS'", "'ISOLATION'", "'JSON'",
"'JOIN'", "'LAST'", "'LATERAL'", "'LEFT'", "'LEVEL'",
"'LIKE'", "'LIMIT'", "'LOCALTIME'", "'LOCALTIMESTAMP'",
"'LOGICAL'", "'MAP'", "'MINUTE'", "'MONTH'", "'NATURAL'",
"'NFC'", "'NFD'", "'NFKC'", "'NFKD'", "'NO'", "'NORMALIZE'",
"'NOT'", "'NULL'", "'NULLIF'", "'NULLS'", "'ON'", "'ONLY'",
"'OPTION'", "'OR'", "'ORDER'", "'ORDINALITY'", "'OUTER'",
"'OUTPUT'", "'OVER'", "'PARTITION'", "'PARTITIONS'",
"'PATH'", "'POSITION'", "'PRECEDING'", "'PREPARE'",
"'PRIVILEGES'", "'PROPERTIES'", "'PUBLIC'", "'RANGE'",
"'READ'", "'RECURSIVE'", "'RENAME'", "'REPEATABLE'",
"'REPLACE'", "'RESET'", "'RESTRICT'", "'REVOKE'", "'RIGHT'",
"'ROLLBACK'", "'ROLLUP'", "'ROW'", "'ROWS'", "'SCHEMA'",
"'SCHEMAS'", "'SECOND'", "'SELECT'", "'SERIALIZABLE'",
"'SESSION'", "'SET'", "'SETS'", "'SHOW'", "'SOME'",
"'START'", "'STATS'", "'SUBSTRING'", "'SYSTEM'", "'TABLE'",
"'TABLES'", "'TABLESAMPLE'", "'TEXT'", "'THEN'", "'TIME'",
"'TIMESTAMP'", "'TO'", "'TRANSACTION'", "'TRUE'", "'TRY_CAST'",
"'TYPE'", "'UESCAPE'", "'UNBOUNDED'", "'UNCOMMITTED'",
"'UNION'", "'UNNEST'", "'USE'", "'USING'", "'VALIDATE'",
"'VALUES'", "'VERBOSE'", "'VIEW'", "'WHEN'", "'WHERE'",
"'WITH'", "'WORK'", "'WRITE'", "'YEAR'", "'ZONE'",
"'='", null, "'<'", "'<='", "'>'", "'>='", "'+'", "'-'",
"'*'", "'/'", "'%'", "'||'" ];
var symbolicNames = [ null, null, null, null, null, null, null, null, null,
null, "ADD", "ALL", "ALTER", "ANALYZE", "AND", "ANY",
"ARRAY", "AS", "ASC", "AT", "BERNOULLI", "BETWEEN",
"BY", "CALL", "CASCADE", "CASE", "CAST", "CATALOGS",
"COLUMN", "COLUMNS", "COMMENT", "COMMIT", "COMMITTED",
"CONSTRAINT", "CREATE", "CROSS", "CUBE", "CURRENT",
"CURRENT_DATE", "CURRENT_PATH", "CURRENT_TIME", "CURRENT_TIMESTAMP",
"CURRENT_USER", "DATA", "DATE", "DAY", "DEALLOCATE",
"DELETE", "DESC", "DESCRIBE", "DISTINCT", "DISTRIBUTED",
"DROP", "ELSE", "END", "ESCAPE", "EXCEPT", "EXCLUDING",
"EXECUTE", "EXISTS", "EXPLAIN", "EXTRACT", "FALSE",
"FILTER", "FIRST", "FOLLOWING", "FOR", "FORMAT", "FROM",
"FULL", "FUNCTIONS", "GRANT", "GRANTS", "GRAPHVIZ",
"GROUP", "GROUPING", "HAVING", "HOUR", "IF", "IN",
"INCLUDING", "INNER", "INPUT", "INSERT", "INTERSECT",
"INTERVAL", "INTO", "IO", "IS", "ISOLATION", "JSON",
"JOIN", "LAST", "LATERAL", "LEFT", "LEVEL", "LIKE",
"LIMIT", "LOCALTIME", "LOCALTIMESTAMP", "LOGICAL",
"MAP", "MINUTE", "MONTH", "NATURAL", "NFC", "NFD",
"NFKC", "NFKD", "NO", "NORMALIZE", "NOT", "NULL",
"NULLIF", "NULLS", "ON", "ONLY", "OPTION", "OR", "ORDER",
"ORDINALITY", "OUTER", "OUTPUT", "OVER", "PARTITION",
"PARTITIONS", "PATH", "POSITION", "PRECEDING", "PREPARE",
"PRIVILEGES", "PROPERTIES", "PUBLIC", "RANGE", "READ",
"RECURSIVE", "RENAME", "REPEATABLE", "REPLACE", "RESET",
"RESTRICT", "REVOKE", "RIGHT", "ROLLBACK", "ROLLUP",
"ROW", "ROWS", "SCHEMA", "SCHEMAS", "SECOND", "SELECT",
"SERIALIZABLE", "SESSION", "SET", "SETS", "SHOW",
"SOME", "START", "STATS", "SUBSTRING", "SYSTEM", "TABLE",
"TABLES", "TABLESAMPLE", "TEXT", "THEN", "TIME", "TIMESTAMP",
"TO", "TRANSACTION", "TRUE", "TRY_CAST", "TYPE", "UESCAPE",
"UNBOUNDED", "UNCOMMITTED", "UNION", "UNNEST", "USE",
"USING", "VALIDATE", "VALUES", "VERBOSE", "VIEW",
"WHEN", "WHERE", "WITH", "WORK", "WRITE", "YEAR",
"ZONE", "EQ", "NEQ", "LT", "LTE", "GT", "GTE", "PLUS",
"MINUS", "ASTERISK", "SLASH", "PERCENT", "CONCAT",
"STRING", "UNICODE_STRING", "BINARY_LITERAL", "INTEGER_VALUE",
"DECIMAL_VALUE", "DOUBLE_VALUE", "IDENTIFIER", "DIGIT_IDENTIFIER",
"QUOTED_IDENTIFIER", "BACKQUOTED_IDENTIFIER", "TIME_WITH_TIME_ZONE",
"TIMESTAMP_WITH_TIME_ZONE", "DOUBLE_PRECISION", "SIMPLE_COMMENT",
"BRACKETED_COMMENT", "WS", "UNRECOGNIZED", "DELIMITER" ];
var ruleNames = [ "singleStatement", "standaloneExpression", "standalonePathSpecification",
"statement", "query", "renamedwith", "tableElement",
"columnDefinition", "likeClause", "properties", "property",
"queryNoWith", "queryTerm", "queryPrimary", "sortItem",
"querySpecification", "groupBy", "groupingElement", "groupingSet",
"namedQuery", "setQuantifier", "selectItem", "relation",
"joinType", "joinCriteria", "sampledRelation", "sampleType",
"aliasedRelation", "columnAliases", "relationPrimary",
"expression", "booleanExpression", "predicate", "valueExpression",
"primaryExpression", "string", "timeZoneSpecifier", "comparisonOperator",
"comparisonQuantifier", "booleanValue", "interval", "intervalField",
"normalForm", "type", "typeParameter", "baseType", "whenClause",
"filter", "over", "windowFrame", "frameBound", "explainOption",
"transactionMode", "levelOfIsolation", "callArgument",
"pathElement", "pathSpecification", "privilege", "qualifiedName",
"identifier", "number", "nonReserved" ];
function SqlBaseParser (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;
}
SqlBaseParser.prototype = Object.create(antlr4.Parser.prototype);
SqlBaseParser.prototype.constructor = SqlBaseParser;
Object.defineProperty(SqlBaseParser.prototype, "atn", {
get : function() {
return atn;
}
});
SqlBaseParser.EOF = antlr4.Token.EOF;
SqlBaseParser.T__0 = 1;
SqlBaseParser.T__1 = 2;
SqlBaseParser.T__2 = 3;
SqlBaseParser.T__3 = 4;
SqlBaseParser.T__4 = 5;
SqlBaseParser.T__5 = 6;
SqlBaseParser.T__6 = 7;
SqlBaseParser.T__7 = 8;
SqlBaseParser.T__8 = 9;
SqlBaseParser.ADD = 10;
SqlBaseParser.ALL = 11;
SqlBaseParser.ALTER = 12;
SqlBaseParser.ANALYZE = 13;
SqlBaseParser.AND = 14;
SqlBaseParser.ANY = 15;
SqlBaseParser.ARRAY = 16;
SqlBaseParser.AS = 17;
SqlBaseParser.ASC = 18;
SqlBaseParser.AT = 19;
SqlBaseParser.BERNOULLI = 20;
SqlBaseParser.BETWEEN = 21;
SqlBaseParser.BY = 22;
SqlBaseParser.CALL = 23;
SqlBaseParser.CASCADE = 24;
SqlBaseParser.CASE = 25;
SqlBaseParser.CAST = 26;
SqlBaseParser.CATALOGS = 27;
SqlBaseParser.COLUMN = 28;
SqlBaseParser.COLUMNS = 29;
SqlBaseParser.COMMENT = 30;
SqlBaseParser.COMMIT = 31;
SqlBaseParser.COMMITTED = 32;
SqlBaseParser.CONSTRAINT = 33;
SqlBaseParser.CREATE = 34;
SqlBaseParser.CROSS = 35;
SqlBaseParser.CUBE = 36;
SqlBaseParser.CURRENT = 37;
SqlBaseParser.CURRENT_DATE = 38;
SqlBaseParser.CURRENT_PATH = 39;
SqlBaseParser.CURRENT_TIME = 40;
SqlBaseParser.CURRENT_TIMESTAMP = 41;
SqlBaseParser.CURRENT_USER = 42;
SqlBaseParser.DATA = 43;
SqlBaseParser.DATE = 44;
SqlBaseParser.DAY = 45;
SqlBaseParser.DEALLOCATE = 46;
SqlBaseParser.DELETE = 47;
SqlBaseParser.DESC = 48;
SqlBaseParser.DESCRIBE = 49;
SqlBaseParser.DISTINCT = 50;
SqlBaseParser.DISTRIBUTED = 51;
SqlBaseParser.DROP = 52;
SqlBaseParser.ELSE = 53;
SqlBaseParser.END = 54;
SqlBaseParser.ESCAPE = 55;
SqlBaseParser.EXCEPT = 56;
SqlBaseParser.EXCLUDING = 57;
SqlBaseParser.EXECUTE = 58;
SqlBaseParser.EXISTS = 59;
SqlBaseParser.EXPLAIN = 60;
SqlBaseParser.EXTRACT = 61;
SqlBaseParser.FALSE = 62;
SqlBaseParser.FILTER = 63;
SqlBaseParser.FIRST = 64;
SqlBaseParser.FOLLOWING = 65;
SqlBaseParser.FOR = 66;
SqlBaseParser.FORMAT = 67;
SqlBaseParser.FROM = 68;
SqlBaseParser.FULL = 69;
SqlBaseParser.FUNCTIONS = 70;
SqlBaseParser.GRANT = 71;
SqlBaseParser.GRANTS = 72;
SqlBaseParser.GRAPHVIZ = 73;
SqlBaseParser.GROUP = 74;
SqlBaseParser.GROUPING = 75;
SqlBaseParser.HAVING = 76;
SqlBaseParser.HOUR = 77;
SqlBaseParser.IF = 78;
SqlBaseParser.IN = 79;
SqlBaseParser.INCLUDING = 80;
SqlBaseParser.INNER = 81;
SqlBaseParser.INPUT = 82;
SqlBaseParser.INSERT = 83;
SqlBaseParser.INTERSECT = 84;
SqlBaseParser.INTERVAL = 85;
SqlBaseParser.INTO = 86;
SqlBaseParser.IO = 87;
SqlBaseParser.IS = 88;
SqlBaseParser.ISOLATION = 89;
SqlBaseParser.JSON = 90;
SqlBaseParser.JOIN = 91;
SqlBaseParser.LAST = 92;
SqlBaseParser.LATERAL = 93;
SqlBaseParser.LEFT = 94;
SqlBaseParser.LEVEL = 95;
SqlBaseParser.LIKE = 96;
SqlBaseParser.LIMIT = 97;
SqlBaseParser.LOCALTIME = 98;
SqlBaseParser.LOCALTIMESTAMP = 99;
SqlBaseParser.LOGICAL = 100;
SqlBaseParser.MAP = 101;
SqlBaseParser.MINUTE = 102;
SqlBaseParser.MONTH = 103;
SqlBaseParser.NATURAL = 104;
SqlBaseParser.NFC = 105;
SqlBaseParser.NFD = 106;
SqlBaseParser.NFKC = 107;
SqlBaseParser.NFKD = 108;
SqlBaseParser.NO = 109;
SqlBaseParser.NORMALIZE = 110;
SqlBaseParser.NOT = 111;
SqlBaseParser.NULL = 112;
SqlBaseParser.NULLIF = 113;
SqlBaseParser.NULLS = 114;
SqlBaseParser.ON = 115;
SqlBaseParser.ONLY = 116;
SqlBaseParser.OPTION = 117;
SqlBaseParser.OR = 118;
SqlBaseParser.ORDER = 119;
SqlBaseParser.ORDINALITY = 120;
SqlBaseParser.OUTER = 121;
SqlBaseParser.OUTPUT = 122;
SqlBaseParser.OVER = 123;
SqlBaseParser.PARTITION = 124;
SqlBaseParser.PARTITIONS = 125;
SqlBaseParser.PATH = 126;
SqlBaseParser.POSITION = 127;
SqlBaseParser.PRECEDING = 128;
SqlBaseParser.PREPARE = 129;
SqlBaseParser.PRIVILEGES = 130;
SqlBaseParser.PROPERTIES = 131;
SqlBaseParser.PUBLIC = 132;
SqlBaseParser.RANGE = 133;
SqlBaseParser.READ = 134;
SqlBaseParser.RECURSIVE = 135;
SqlBaseParser.RENAME = 136;
SqlBaseParser.REPEATABLE = 137;
SqlBaseParser.REPLACE = 138;
SqlBaseParser.RESET = 139;
SqlBaseParser.RESTRICT = 140;
SqlBaseParser.REVOKE = 141;
SqlBaseParser.RIGHT = 142;
SqlBaseParser.ROLLBACK = 143;
SqlBaseParser.ROLLUP = 144;
SqlBaseParser.ROW = 145;
SqlBaseParser.ROWS = 146;
SqlBaseParser.SCHEMA = 147;
SqlBaseParser.SCHEMAS = 148;
SqlBaseParser.SECOND = 149;
SqlBaseParser.SELECT = 150;
SqlBaseParser.SERIALIZABLE = 151;
SqlBaseParser.SESSION = 152;
SqlBaseParser.SET = 153;
SqlBaseParser.SETS = 154;
SqlBaseParser.SHOW = 155;
SqlBaseParser.SOME = 156;
SqlBaseParser.START = 157;
SqlBaseParser.STATS = 158;
SqlBaseParser.SUBSTRING = 159;
SqlBaseParser.SYSTEM = 160;
SqlBaseParser.TABLE = 161;
SqlBaseParser.TABLES = 162;
SqlBaseParser.TABLESAMPLE = 163;
SqlBaseParser.TEXT = 164;
SqlBaseParser.THEN = 165;
SqlBaseParser.TIME = 166;
SqlBaseParser.TIMESTAMP = 167;
SqlBaseParser.TO = 168;
SqlBaseParser.TRANSACTION = 169;
SqlBaseParser.TRUE = 170;
SqlBaseParser.TRY_CAST = 171;
SqlBaseParser.TYPE = 172;
SqlBaseParser.UESCAPE = 173;
SqlBaseParser.UNBOUNDED = 174;
SqlBaseParser.UNCOMMITTED = 175;
SqlBaseParser.UNION = 176;
SqlBaseParser.UNNEST = 177;
SqlBaseParser.USE = 178;
SqlBaseParser.USING = 179;
SqlBaseParser.VALIDATE = 180;
SqlBaseParser.VALUES = 181;
SqlBaseParser.VERBOSE = 182;
SqlBaseParser.VIEW = 183;
SqlBaseParser.WHEN = 184;
SqlBaseParser.WHERE = 185;
SqlBaseParser.WITH = 186;
SqlBaseParser.WORK = 187;
SqlBaseParser.WRITE = 188;
SqlBaseParser.YEAR = 189;
SqlBaseParser.ZONE = 190;
SqlBaseParser.EQ = 191;
SqlBaseParser.NEQ = 192;
SqlBaseParser.LT = 193;
SqlBaseParser.LTE = 194;
SqlBaseParser.GT = 195;
SqlBaseParser.GTE = 196;
SqlBaseParser.PLUS = 197;
SqlBaseParser.MINUS = 198;
SqlBaseParser.ASTERISK = 199;
SqlBaseParser.SLASH = 200;
SqlBaseParser.PERCENT = 201;
SqlBaseParser.CONCAT = 202;
SqlBaseParser.STRING = 203;
SqlBaseParser.UNICODE_STRING = 204;
SqlBaseParser.BINARY_LITERAL = 205;
SqlBaseParser.INTEGER_VALUE = 206;
SqlBaseParser.DECIMAL_VALUE = 207;
SqlBaseParser.DOUBLE_VALUE = 208;
SqlBaseParser.IDENTIFIER = 209;
SqlBaseParser.DIGIT_IDENTIFIER = 210;
SqlBaseParser.QUOTED_IDENTIFIER = 211;
SqlBaseParser.BACKQUOTED_IDENTIFIER = 212;
SqlBaseParser.TIME_WITH_TIME_ZONE = 213;
SqlBaseParser.TIMESTAMP_WITH_TIME_ZONE = 214;
SqlBaseParser.DOUBLE_PRECISION = 215;
SqlBaseParser.SIMPLE_COMMENT = 216;
SqlBaseParser.BRACKETED_COMMENT = 217;
SqlBaseParser.WS = 218;
SqlBaseParser.UNRECOGNIZED = 219;
SqlBaseParser.DELIMITER = 220;
SqlBaseParser.RULE_singleStatement = 0;
SqlBaseParser.RULE_standaloneExpression = 1;
SqlBaseParser.RULE_standalonePathSpecification = 2;
SqlBaseParser.RULE_statement = 3;
SqlBaseParser.RULE_query = 4;
SqlBaseParser.RULE_renamedwith = 5;
SqlBaseParser.RULE_tableElement = 6;
SqlBaseParser.RULE_columnDefinition = 7;
SqlBaseParser.RULE_likeClause = 8;
SqlBaseParser.RULE_properties = 9;
SqlBaseParser.RULE_property = 10;
SqlBaseParser.RULE_queryNoWith = 11;
SqlBaseParser.RULE_queryTerm = 12;
SqlBaseParser.RULE_queryPrimary = 13;
SqlBaseParser.RULE_sortItem = 14;
SqlBaseParser.RULE_querySpecification = 15;
SqlBaseParser.RULE_groupBy = 16;
SqlBaseParser.RULE_groupingElement = 17;
SqlBaseParser.RULE_groupingSet = 18;
SqlBaseParser.RULE_namedQuery = 19;
SqlBaseParser.RULE_setQuantifier = 20;
SqlBaseParser.RULE_selectItem = 21;
SqlBaseParser.RULE_relation = 22;
SqlBaseParser.RULE_joinType = 23;
SqlBaseParser.RULE_joinCriteria = 24;
SqlBaseParser.RULE_sampledRelation = 25;
SqlBaseParser.RULE_sampleType = 26;
SqlBaseParser.RULE_aliasedRelation = 27;
SqlBaseParser.RULE_columnAliases = 28;
SqlBaseParser.RULE_relationPrimary = 29;
SqlBaseParser.RULE_expression = 30;
SqlBaseParser.RULE_booleanExpression = 31;
SqlBaseParser.RULE_predicate = 32;
SqlBaseParser.RULE_valueExpression = 33;
SqlBaseParser.RULE_primaryExpression = 34;
SqlBaseParser.RULE_string = 35;
SqlBaseParser.RULE_timeZoneSpecifier = 36;
SqlBaseParser.RULE_comparisonOperator = 37;
SqlBaseParser.RULE_comparisonQuantifier = 38;
SqlBaseParser.RULE_booleanValue = 39;
SqlBaseParser.RULE_interval = 40;
SqlBaseParser.RULE_intervalField = 41;
SqlBaseParser.RULE_normalForm = 42;
SqlBaseParser.RULE_type = 43;
SqlBaseParser.RULE_typeParameter = 44;
SqlBaseParser.RULE_baseType = 45;
SqlBaseParser.RULE_whenClause = 46;
SqlBaseParser.RULE_filter = 47;
SqlBaseParser.RULE_over = 48;
SqlBaseParser.RULE_windowFrame = 49;
SqlBaseParser.RULE_frameBound = 50;
SqlBaseParser.RULE_explainOption = 51;
SqlBaseParser.RULE_transactionMode = 52;
SqlBaseParser.RULE_levelOfIsolation = 53;
SqlBaseParser.RULE_callArgument = 54;
SqlBaseParser.RULE_pathElement = 55;
SqlBaseParser.RULE_pathSpecification = 56;
SqlBaseParser.RULE_privilege = 57;
SqlBaseParser.RULE_qualifiedName = 58;
SqlBaseParser.RULE_identifier = 59;
SqlBaseParser.RULE_number = 60;
SqlBaseParser.RULE_nonReserved = 61;
function SingleStatementContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_singleStatement;
return this;
}
SingleStatementContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
SingleStatementContext.prototype.constructor = SingleStatementContext;
SingleStatementContext.prototype.statement = function() {
return this.getTypedRuleContext(StatementContext,0);
};
SingleStatementContext.prototype.EOF = function() {
return this.getToken(SqlBaseParser.EOF, 0);
};
SingleStatementContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterSingleStatement(this);
}
};
SingleStatementContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitSingleStatement(this);
}
};
SqlBaseParser.SingleStatementContext = SingleStatementContext;
SqlBaseParser.prototype.singleStatement = function() {
var localctx = new SingleStatementContext(this, this._ctx, this.state);
this.enterRule(localctx, 0, SqlBaseParser.RULE_singleStatement);
try {
this.enterOuterAlt(localctx, 1);
this.state = 124;
this.statement();
this.state = 125;
this.match(SqlBaseParser.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 StandaloneExpressionContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_standaloneExpression;
return this;
}
StandaloneExpressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
StandaloneExpressionContext.prototype.constructor = StandaloneExpressionContext;
StandaloneExpressionContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
StandaloneExpressionContext.prototype.EOF = function() {
return this.getToken(SqlBaseParser.EOF, 0);
};
StandaloneExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterStandaloneExpression(this);
}
};
StandaloneExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitStandaloneExpression(this);
}
};
SqlBaseParser.StandaloneExpressionContext = StandaloneExpressionContext;
SqlBaseParser.prototype.standaloneExpression = function() {
var localctx = new StandaloneExpressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 2, SqlBaseParser.RULE_standaloneExpression);
try {
this.enterOuterAlt(localctx, 1);
this.state = 127;
this.expression();
this.state = 128;
this.match(SqlBaseParser.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 StandalonePathSpecificationContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_standalonePathSpecification;
return this;
}
StandalonePathSpecificationContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
StandalonePathSpecificationContext.prototype.constructor = StandalonePathSpecificationContext;
StandalonePathSpecificationContext.prototype.pathSpecification = function() {
return this.getTypedRuleContext(PathSpecificationContext,0);
};
StandalonePathSpecificationContext.prototype.EOF = function() {
return this.getToken(SqlBaseParser.EOF, 0);
};
StandalonePathSpecificationContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterStandalonePathSpecification(this);
}
};
StandalonePathSpecificationContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitStandalonePathSpecification(this);
}
};
SqlBaseParser.StandalonePathSpecificationContext = StandalonePathSpecificationContext;
SqlBaseParser.prototype.standalonePathSpecification = function() {
var localctx = new StandalonePathSpecificationContext(this, this._ctx, this.state);
this.enterRule(localctx, 4, SqlBaseParser.RULE_standalonePathSpecification);
try {
this.enterOuterAlt(localctx, 1);
this.state = 130;
this.pathSpecification();
this.state = 131;
this.match(SqlBaseParser.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 StatementContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_statement;
return this;
}
StatementContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
StatementContext.prototype.constructor = StatementContext;
StatementContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function ExplainContext(parser, ctx) {
StatementContext.call(this, parser);
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
ExplainContext.prototype = Object.create(StatementContext.prototype);
ExplainContext.prototype.constructor = ExplainContext;
SqlBaseParser.ExplainContext = ExplainContext;
ExplainContext.prototype.EXPLAIN = function() {
return this.getToken(SqlBaseParser.EXPLAIN, 0);
};
ExplainContext.prototype.statement = function() {
return this.getTypedRuleContext(StatementContext,0);
};
ExplainContext.prototype.ANALYZE = function() {
return this.getToken(SqlBaseParser.ANALYZE, 0);
};
ExplainContext.prototype.VERBOSE = function() {
return this.getToken(SqlBaseParser.VERBOSE, 0);
};
ExplainContext.prototype.explainOption = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ExplainOptionContext);
} else {
return this.getTypedRuleContext(ExplainOptionContext,i);
}
};
ExplainContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterExplain(this);
}
};
ExplainContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitExplain(this);
}
};
function PrepareContext(parser, ctx) {
StatementContext.call(this, parser);
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
PrepareContext.prototype = Object.create(StatementContext.prototype);
PrepareContext.prototype.constructor = PrepareContext;
SqlBaseParser.PrepareContext = PrepareContext;
PrepareContext.prototype.PREPARE = function() {
return this.getToken(SqlBaseParser.PREPARE, 0);
};
PrepareContext.prototype.identifier = function() {
return this.getTypedRuleContext(IdentifierContext,0);
};
PrepareContext.prototype.FROM = function() {
return this.getToken(SqlBaseParser.FROM, 0);
};
PrepareContext.prototype.statement = function() {
return this.getTypedRuleContext(StatementContext,0);
};
PrepareContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterPrepare(this);
}
};
PrepareContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitPrepare(this);
}
};
function CreateTableContext(parser, ctx) {
StatementContext.call(this, parser);
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
CreateTableContext.prototype = Object.create(StatementContext.prototype);
CreateTableContext.prototype.constructor = CreateTableContext;
SqlBaseParser.CreateTableContext = CreateTableContext;
CreateTableContext.prototype.CREATE = function() {
return this.getToken(SqlBaseParser.CREATE, 0);
};
CreateTableContext.prototype.TABLE = function() {
return this.getToken(SqlBaseParser.TABLE, 0);
};
CreateTableContext.prototype.qualifiedName = function() {
return this.getTypedRuleContext(QualifiedNameContext,0);
};
CreateTableContext.prototype.tableElement = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(TableElementContext);
} else {
return this.getTypedRuleContext(TableElementContext,i);
}
};
CreateTableContext.prototype.IF = function() {
return this.getToken(SqlBaseParser.IF, 0);
};
CreateTableContext.prototype.NOT = function() {
return this.getToken(SqlBaseParser.NOT, 0);
};
CreateTableContext.prototype.EXISTS = function() {
return this.getToken(SqlBaseParser.EXISTS, 0);
};
CreateTableContext.prototype.COMMENT = function() {
return this.getToken(SqlBaseParser.COMMENT, 0);
};
CreateTableContext.prototype.string = function() {
return this.getTypedRuleContext(StringContext,0);
};
CreateTableContext.prototype.WITH = function() {
return this.getToken(SqlBaseParser.WITH, 0);
};
CreateTableContext.prototype.properties = function() {
return this.getTypedRuleContext(PropertiesContext,0);
};
CreateTableContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterCreateTable(this);
}
};
CreateTableContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitCreateTable(this);
}
};
function StartTransactionContext(parser, ctx) {
StatementContext.call(this, parser);
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
StartTransactionContext.prototype = Object.create(StatementContext.prototype);
StartTransactionContext.prototype.constructor = StartTransactionContext;
SqlBaseParser.StartTransactionContext = StartTransactionContext;
StartTransactionContext.prototype.START = function() {
return this.getToken(SqlBaseParser.START, 0);
};
StartTransactionContext.prototype.TRANSACTION = function() {
return this.getToken(SqlBaseParser.TRANSACTION, 0);
};
StartTransactionContext.prototype.transactionMode = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(TransactionModeContext);
} else {
return this.getTypedRuleContext(TransactionModeContext,i);
}
};
StartTransactionContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterStartTransaction(this);
}
};
StartTransactionContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitStartTransaction(this);
}
};
function CreateTableAsSelectContext(parser, ctx) {
StatementContext.call(this, parser);
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
CreateTableAsSelectContext.prototype = Object.create(StatementContext.prototype);
CreateTableAsSelectContext.prototype.constructor = CreateTableAsSelectContext;
SqlBaseParser.CreateTableAsSelectContext = CreateTableAsSelectContext;
CreateTableAsSelectContext.prototype.CREATE = function() {
return this.getToken(SqlBaseParser.CREATE, 0);
};
CreateTableAsSelectContext.prototype.TABLE = function() {
return this.getToken(SqlBaseParser.TABLE, 0);
};
CreateTableAsSelectContext.prototype.qualifiedName = function() {
return this.getTypedRuleContext(QualifiedNameContext,0);
};
CreateTableAsSelectContext.prototype.AS = function() {
return this.getToken(SqlBaseParser.AS, 0);
};
CreateTableAsSelectContext.prototype.query = function() {
return this.getTypedRuleContext(QueryContext,0);
};
CreateTableAsSelectContext.prototype.IF = function() {
return this.getToken(SqlBaseParser.IF, 0);
};
CreateTableAsSelectContext.prototype.NOT = function() {
return this.getToken(SqlBaseParser.NOT, 0);
};
CreateTableAsSelectContext.prototype.EXISTS = function() {
return this.getToken(SqlBaseParser.EXISTS, 0);
};
CreateTableAsSelectContext.prototype.columnAliases = function() {
return this.getTypedRuleContext(ColumnAliasesContext,0);
};
CreateTableAsSelectContext.prototype.COMMENT = function() {
return this.getToken(SqlBaseParser.COMMENT, 0);
};
CreateTableAsSelectContext.prototype.string = function() {
return this.getTypedRuleContext(StringContext,0);
};
CreateTableAsSelectContext.prototype.WITH = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(SqlBaseParser.WITH);
} else {
return this.getToken(SqlBaseParser.WITH, i);
}
};
CreateTableAsSelectContext.prototype.properties = function() {
return this.getTypedRuleContext(PropertiesContext,0);
};
CreateTableAsSelectContext.prototype.DATA = function() {
return this.getToken(SqlBaseParser.DATA, 0);
};
CreateTableAsSelectContext.prototype.NO = function() {
return this.getToken(SqlBaseParser.NO, 0);
};
CreateTableAsSelectContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterCreateTableAsSelect(this);
}
};
CreateTableAsSelectContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitCreateTableAsSelect(this);
}
};
function UseContext(parser, ctx) {
StatementContext.call(this, parser);
this.schema = null; // IdentifierContext;
this.catalog = null; // IdentifierContext;
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
UseContext.prototype = Object.create(StatementContext.prototype);
UseContext.prototype.constructor = UseContext;
SqlBaseParser.UseContext = UseContext;
UseContext.prototype.USE = function() {
return this.getToken(SqlBaseParser.USE, 0);
};
UseContext.prototype.identifier = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(IdentifierContext);
} else {
return this.getTypedRuleContext(IdentifierContext,i);
}
};
UseContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterUse(this);
}
};
UseContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitUse(this);
}
};
function ShowStatsContext(parser, ctx) {
StatementContext.call(this, parser);
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
ShowStatsContext.prototype = Object.create(StatementContext.prototype);
ShowStatsContext.prototype.constructor = ShowStatsContext;
SqlBaseParser.ShowStatsContext = ShowStatsContext;
ShowStatsContext.prototype.SHOW = function() {
return this.getToken(SqlBaseParser.SHOW, 0);
};
ShowStatsContext.prototype.STATS = function() {
return this.getToken(SqlBaseParser.STATS, 0);
};
ShowStatsContext.prototype.qualifiedName = function() {
return this.getTypedRuleContext(QualifiedNameContext,0);
};
ShowStatsContext.prototype.FOR = function() {
return this.getToken(SqlBaseParser.FOR, 0);
};
ShowStatsContext.prototype.ON = function() {
return this.getToken(SqlBaseParser.ON, 0);
};
ShowStatsContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterShowStats(this);
}
};
ShowStatsContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitShowStats(this);
}
};
function DeallocateContext(parser, ctx) {
StatementContext.call(this, parser);
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
DeallocateContext.prototype = Object.create(StatementContext.prototype);
DeallocateContext.prototype.constructor = DeallocateContext;
SqlBaseParser.DeallocateContext = DeallocateContext;
DeallocateContext.prototype.DEALLOCATE = function() {
return this.getToken(SqlBaseParser.DEALLOCATE, 0);
};
DeallocateContext.prototype.PREPARE = function() {
return this.getToken(SqlBaseParser.PREPARE, 0);
};
DeallocateContext.prototype.identifier = function() {
return this.getTypedRuleContext(IdentifierContext,0);
};
DeallocateContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterDeallocate(this);
}
};
DeallocateContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitDeallocate(this);
}
};
function RenameTableContext(parser, ctx) {
StatementContext.call(this, parser);
this.from = null; // QualifiedNameContext;
this.to = null; // QualifiedNameContext;
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
RenameTableContext.prototype = Object.create(StatementContext.prototype);
RenameTableContext.prototype.constructor = RenameTableContext;
SqlBaseParser.RenameTableContext = RenameTableContext;
RenameTableContext.prototype.ALTER = function() {
return this.getToken(SqlBaseParser.ALTER, 0);
};
RenameTableContext.prototype.TABLE = function() {
return this.getToken(SqlBaseParser.TABLE, 0);
};
RenameTableContext.prototype.RENAME = function() {
return this.getToken(SqlBaseParser.RENAME, 0);
};
RenameTableContext.prototype.TO = function() {
return this.getToken(SqlBaseParser.TO, 0);
};
RenameTableContext.prototype.qualifiedName = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(QualifiedNameContext);
} else {
return this.getTypedRuleContext(QualifiedNameContext,i);
}
};
RenameTableContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterRenameTable(this);
}
};
RenameTableContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitRenameTable(this);
}
};
function CommitContext(parser, ctx) {
StatementContext.call(this, parser);
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
CommitContext.prototype = Object.create(StatementContext.prototype);
CommitContext.prototype.constructor = CommitContext;
SqlBaseParser.CommitContext = CommitContext;
CommitContext.prototype.COMMIT = function() {
return this.getToken(SqlBaseParser.COMMIT, 0);
};
CommitContext.prototype.WORK = function() {
return this.getToken(SqlBaseParser.WORK, 0);
};
CommitContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterCommit(this);
}
};
CommitContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitCommit(this);
}
};
function RevokeContext(parser, ctx) {
StatementContext.call(this, parser);
this.grantee = null; // IdentifierContext;
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
RevokeContext.prototype = Object.create(StatementContext.prototype);
RevokeContext.prototype.constructor = RevokeContext;
SqlBaseParser.RevokeContext = RevokeContext;
RevokeContext.prototype.REVOKE = function() {
return this.getToken(SqlBaseParser.REVOKE, 0);
};
RevokeContext.prototype.ON = function() {
return this.getToken(SqlBaseParser.ON, 0);
};
RevokeContext.prototype.qualifiedName = function() {
return this.getTypedRuleContext(QualifiedNameContext,0);
};
RevokeContext.prototype.FROM = function() {
return this.getToken(SqlBaseParser.FROM, 0);
};
RevokeContext.prototype.identifier = function() {
return this.getTypedRuleContext(IdentifierContext,0);
};
RevokeContext.prototype.privilege = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(PrivilegeContext);
} else {
return this.getTypedRuleContext(PrivilegeContext,i);
}
};
RevokeContext.prototype.ALL = function() {
return this.getToken(SqlBaseParser.ALL, 0);
};
RevokeContext.prototype.PRIVILEGES = function() {
return this.getToken(SqlBaseParser.PRIVILEGES, 0);
};
RevokeContext.prototype.GRANT = function() {
return this.getToken(SqlBaseParser.GRANT, 0);
};
RevokeContext.prototype.OPTION = function() {
return this.getToken(SqlBaseParser.OPTION, 0);
};
RevokeContext.prototype.FOR = function() {
return this.getToken(SqlBaseParser.FOR, 0);
};
RevokeContext.prototype.TABLE = function() {
return this.getToken(SqlBaseParser.TABLE, 0);
};
RevokeContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterRevoke(this);
}
};
RevokeContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitRevoke(this);
}
};
function DropColumnContext(parser, ctx) {
StatementContext.call(this, parser);
this.tableName = null; // QualifiedNameContext;
this.column = null; // QualifiedNameContext;
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
DropColumnContext.prototype = Object.create(StatementContext.prototype);
DropColumnContext.prototype.constructor = DropColumnContext;
SqlBaseParser.DropColumnContext = DropColumnContext;
DropColumnContext.prototype.ALTER = function() {
return this.getToken(SqlBaseParser.ALTER, 0);
};
DropColumnContext.prototype.TABLE = function() {
return this.getToken(SqlBaseParser.TABLE, 0);
};
DropColumnContext.prototype.DROP = function() {
return this.getToken(SqlBaseParser.DROP, 0);
};
DropColumnContext.prototype.COLUMN = function() {
return this.getToken(SqlBaseParser.COLUMN, 0);
};
DropColumnContext.prototype.qualifiedName = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(QualifiedNameContext);
} else {
return this.getTypedRuleContext(QualifiedNameContext,i);
}
};
DropColumnContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterDropColumn(this);
}
};
DropColumnContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitDropColumn(this);
}
};
function DropViewContext(parser, ctx) {
StatementContext.call(this, parser);
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
DropViewContext.prototype = Object.create(StatementContext.prototype);
DropViewContext.prototype.constructor = DropViewContext;
SqlBaseParser.DropViewContext = DropViewContext;
DropViewContext.prototype.DROP = function() {
return this.getToken(SqlBaseParser.DROP, 0);
};
DropViewContext.prototype.VIEW = function() {
return this.getToken(SqlBaseParser.VIEW, 0);
};
DropViewContext.prototype.qualifiedName = function() {
return this.getTypedRuleContext(QualifiedNameContext,0);
};
DropViewContext.prototype.IF = function() {
return this.getToken(SqlBaseParser.IF, 0);
};
DropViewContext.prototype.EXISTS = function() {
return this.getToken(SqlBaseParser.EXISTS, 0);
};
DropViewContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterDropView(this);
}
};
DropViewContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitDropView(this);
}
};
function DeleteContext(parser, ctx) {
StatementContext.call(this, parser);
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
DeleteContext.prototype = Object.create(StatementContext.prototype);
DeleteContext.prototype.constructor = DeleteContext;
SqlBaseParser.DeleteContext = DeleteContext;
DeleteContext.prototype.DELETE = function() {
return this.getToken(SqlBaseParser.DELETE, 0);
};
DeleteContext.prototype.FROM = function() {
return this.getToken(SqlBaseParser.FROM, 0);
};
DeleteContext.prototype.qualifiedName = function() {
return this.getTypedRuleContext(QualifiedNameContext,0);
};
DeleteContext.prototype.WHERE = function() {
return this.getToken(SqlBaseParser.WHERE, 0);
};
DeleteContext.prototype.booleanExpression = function() {
return this.getTypedRuleContext(BooleanExpressionContext,0);
};
DeleteContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterDelete(this);
}
};
DeleteContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitDelete(this);
}
};
function ShowTablesContext(parser, ctx) {
StatementContext.call(this, parser);
this.pattern = null; // StringContext;
this.escape = null; // StringContext;
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
ShowTablesContext.prototype = Object.create(StatementContext.prototype);
ShowTablesContext.prototype.constructor = ShowTablesContext;
SqlBaseParser.ShowTablesContext = ShowTablesContext;
ShowTablesContext.prototype.SHOW = function() {
return this.getToken(SqlBaseParser.SHOW, 0);
};
ShowTablesContext.prototype.TABLES = function() {
return this.getToken(SqlBaseParser.TABLES, 0);
};
ShowTablesContext.prototype.qualifiedName = function() {
return this.getTypedRuleContext(QualifiedNameContext,0);
};
ShowTablesContext.prototype.LIKE = function() {
return this.getToken(SqlBaseParser.LIKE, 0);
};
ShowTablesContext.prototype.FROM = function() {
return this.getToken(SqlBaseParser.FROM, 0);
};
ShowTablesContext.prototype.IN = function() {
return this.getToken(SqlBaseParser.IN, 0);
};
ShowTablesContext.prototype.string = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(StringContext);
} else {
return this.getTypedRuleContext(StringContext,i);
}
};
ShowTablesContext.prototype.ESCAPE = function() {
return this.getToken(SqlBaseParser.ESCAPE, 0);
};
ShowTablesContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterShowTables(this);
}
};
ShowTablesContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitShowTables(this);
}
};
function DescribeInputContext(parser, ctx) {
StatementContext.call(this, parser);
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
DescribeInputContext.prototype = Object.create(StatementContext.prototype);
DescribeInputContext.prototype.constructor = DescribeInputContext;
SqlBaseParser.DescribeInputContext = DescribeInputContext;
DescribeInputContext.prototype.DESCRIBE = function() {
return this.getToken(SqlBaseParser.DESCRIBE, 0);
};
DescribeInputContext.prototype.INPUT = function() {
return this.getToken(SqlBaseParser.INPUT, 0);
};
DescribeInputContext.prototype.identifier = function() {
return this.getTypedRuleContext(IdentifierContext,0);
};
DescribeInputContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterDescribeInput(this);
}
};
DescribeInputContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitDescribeInput(this);
}
};
function ShowStatsForQueryContext(parser, ctx) {
StatementContext.call(this, parser);
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
ShowStatsForQueryContext.prototype = Object.create(StatementContext.prototype);
ShowStatsForQueryContext.prototype.constructor = ShowStatsForQueryContext;
SqlBaseParser.ShowStatsForQueryContext = ShowStatsForQueryContext;
ShowStatsForQueryContext.prototype.SHOW = function() {
return this.getToken(SqlBaseParser.SHOW, 0);
};
ShowStatsForQueryContext.prototype.STATS = function() {
return this.getToken(SqlBaseParser.STATS, 0);
};
ShowStatsForQueryContext.prototype.FOR = function() {
return this.getToken(SqlBaseParser.FOR, 0);
};
ShowStatsForQueryContext.prototype.querySpecification = function() {
return this.getTypedRuleContext(QuerySpecificationContext,0);
};
ShowStatsForQueryContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterShowStatsForQuery(this);
}
};
ShowStatsForQueryContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitShowStatsForQuery(this);
}
};
function ShowCatalogsContext(parser, ctx) {
StatementContext.call(this, parser);
this.pattern = null; // StringContext;
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
ShowCatalogsContext.prototype = Object.create(StatementContext.prototype);
ShowCatalogsContext.prototype.constructor = ShowCatalogsContext;
SqlBaseParser.ShowCatalogsContext = ShowCatalogsContext;
ShowCatalogsContext.prototype.SHOW = function() {
return this.getToken(SqlBaseParser.SHOW, 0);
};
ShowCatalogsContext.prototype.CATALOGS = function() {
return this.getToken(SqlBaseParser.CATALOGS, 0);
};
ShowCatalogsContext.prototype.LIKE = function() {
return this.getToken(SqlBaseParser.LIKE, 0);
};
ShowCatalogsContext.prototype.string = function() {
return this.getTypedRuleContext(StringContext,0);
};
ShowCatalogsContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterShowCatalogs(this);
}
};
ShowCatalogsContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitShowCatalogs(this);
}
};
function StatementDefaultContext(parser, ctx) {
StatementContext.call(this, parser);
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
StatementDefaultContext.prototype = Object.create(StatementContext.prototype);
StatementDefaultContext.prototype.constructor = StatementDefaultContext;
SqlBaseParser.StatementDefaultContext = StatementDefaultContext;
StatementDefaultContext.prototype.query = function() {
return this.getTypedRuleContext(QueryContext,0);
};
StatementDefaultContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterStatementDefault(this);
}
};
StatementDefaultContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitStatementDefault(this);
}
};
function RenameColumnContext(parser, ctx) {
StatementContext.call(this, parser);
this.tableName = null; // QualifiedNameContext;
this.from = null; // IdentifierContext;
this.to = null; // IdentifierContext;
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
RenameColumnContext.prototype = Object.create(StatementContext.prototype);
RenameColumnContext.prototype.constructor = RenameColumnContext;
SqlBaseParser.RenameColumnContext = RenameColumnContext;
RenameColumnContext.prototype.ALTER = function() {
return this.getToken(SqlBaseParser.ALTER, 0);
};
RenameColumnContext.prototype.TABLE = function() {
return this.getToken(SqlBaseParser.TABLE, 0);
};
RenameColumnContext.prototype.RENAME = function() {
return this.getToken(SqlBaseParser.RENAME, 0);
};
RenameColumnContext.prototype.COLUMN = function() {
return this.getToken(SqlBaseParser.COLUMN, 0);
};
RenameColumnContext.prototype.TO = function() {
return this.getToken(SqlBaseParser.TO, 0);
};
RenameColumnContext.prototype.qualifiedName = function() {
return this.getTypedRuleContext(QualifiedNameContext,0);
};
RenameColumnContext.prototype.identifier = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(IdentifierContext);
} else {
return this.getTypedRuleContext(IdentifierContext,i);
}
};
RenameColumnContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterRenameColumn(this);
}
};
RenameColumnContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitRenameColumn(this);
}
};
function SetSessionContext(parser, ctx) {
StatementContext.call(this, parser);
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
SetSessionContext.prototype = Object.create(StatementContext.prototype);
SetSessionContext.prototype.constructor = SetSessionContext;
SqlBaseParser.SetSessionContext = SetSessionContext;
SetSessionContext.prototype.SET = function() {
return this.getToken(SqlBaseParser.SET, 0);
};
SetSessionContext.prototype.SESSION = function() {
return this.getToken(SqlBaseParser.SESSION, 0);
};
SetSessionContext.prototype.qualifiedName = function() {
return this.getTypedRuleContext(QualifiedNameContext,0);
};
SetSessionContext.prototype.EQ = function() {
return this.getToken(SqlBaseParser.EQ, 0);
};
SetSessionContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
SetSessionContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterSetSession(this);
}
};
SetSessionContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitSetSession(this);
}
};
function CreateViewContext(parser, ctx) {
StatementContext.call(this, parser);
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
CreateViewContext.prototype = Object.create(StatementContext.prototype);
CreateViewContext.prototype.constructor = CreateViewContext;
SqlBaseParser.CreateViewContext = CreateViewContext;
CreateViewContext.prototype.CREATE = function() {
return this.getToken(SqlBaseParser.CREATE, 0);
};
CreateViewContext.prototype.VIEW = function() {
return this.getToken(SqlBaseParser.VIEW, 0);
};
CreateViewContext.prototype.qualifiedName = function() {
return this.getTypedRuleContext(QualifiedNameContext,0);
};
CreateViewContext.prototype.AS = function() {
return this.getToken(SqlBaseParser.AS, 0);
};
CreateViewContext.prototype.query = function() {
return this.getTypedRuleContext(QueryContext,0);
};
CreateViewContext.prototype.OR = function() {
return this.getToken(SqlBaseParser.OR, 0);
};
CreateViewContext.prototype.REPLACE = function() {
return this.getToken(SqlBaseParser.REPLACE, 0);
};
CreateViewContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterCreateView(this);
}
};
CreateViewContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitCreateView(this);
}
};
function ShowCreateTableContext(parser, ctx) {
StatementContext.call(this, parser);
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
ShowCreateTableContext.prototype = Object.create(StatementContext.prototype);
ShowCreateTableContext.prototype.constructor = ShowCreateTableContext;
SqlBaseParser.ShowCreateTableContext = ShowCreateTableContext;
ShowCreateTableContext.prototype.SHOW = function() {
return this.getToken(SqlBaseParser.SHOW, 0);
};
ShowCreateTableContext.prototype.CREATE = function() {
return this.getToken(SqlBaseParser.CREATE, 0);
};
ShowCreateTableContext.prototype.TABLE = function() {
return this.getToken(SqlBaseParser.TABLE, 0);
};
ShowCreateTableContext.prototype.qualifiedName = function() {
return this.getTypedRuleContext(QualifiedNameContext,0);
};
ShowCreateTableContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterShowCreateTable(this);
}
};
ShowCreateTableContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitShowCreateTable(this);
}
};
function ShowSchemasContext(parser, ctx) {
StatementContext.call(this, parser);
this.pattern = null; // StringContext;
this.escape = null; // StringContext;
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
ShowSchemasContext.prototype = Object.create(StatementContext.prototype);
ShowSchemasContext.prototype.constructor = ShowSchemasContext;
SqlBaseParser.ShowSchemasContext = ShowSchemasContext;
ShowSchemasContext.prototype.SHOW = function() {
return this.getToken(SqlBaseParser.SHOW, 0);
};
ShowSchemasContext.prototype.SCHEMAS = function() {
return this.getToken(SqlBaseParser.SCHEMAS, 0);
};
ShowSchemasContext.prototype.identifier = function() {
return this.getTypedRuleContext(IdentifierContext,0);
};
ShowSchemasContext.prototype.LIKE = function() {
return this.getToken(SqlBaseParser.LIKE, 0);
};
ShowSchemasContext.prototype.FROM = function() {
return this.getToken(SqlBaseParser.FROM, 0);
};
ShowSchemasContext.prototype.IN = function() {
return this.getToken(SqlBaseParser.IN, 0);
};
ShowSchemasContext.prototype.string = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(StringContext);
} else {
return this.getTypedRuleContext(StringContext,i);
}
};
ShowSchemasContext.prototype.ESCAPE = function() {
return this.getToken(SqlBaseParser.ESCAPE, 0);
};
ShowSchemasContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterShowSchemas(this);
}
};
ShowSchemasContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitShowSchemas(this);
}
};
function DropTableContext(parser, ctx) {
StatementContext.call(this, parser);
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
DropTableContext.prototype = Object.create(StatementContext.prototype);
DropTableContext.prototype.constructor = DropTableContext;
SqlBaseParser.DropTableContext = DropTableContext;
DropTableContext.prototype.DROP = function() {
return this.getToken(SqlBaseParser.DROP, 0);
};
DropTableContext.prototype.TABLE = function() {
return this.getToken(SqlBaseParser.TABLE, 0);
};
DropTableContext.prototype.qualifiedName = function() {
return this.getTypedRuleContext(QualifiedNameContext,0);
};
DropTableContext.prototype.IF = function() {
return this.getToken(SqlBaseParser.IF, 0);
};
DropTableContext.prototype.EXISTS = function() {
return this.getToken(SqlBaseParser.EXISTS, 0);
};
DropTableContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterDropTable(this);
}
};
DropTableContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitDropTable(this);
}
};
function ShowColumnsContext(parser, ctx) {
StatementContext.call(this, parser);
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
ShowColumnsContext.prototype = Object.create(StatementContext.prototype);
ShowColumnsContext.prototype.constructor = ShowColumnsContext;
SqlBaseParser.ShowColumnsContext = ShowColumnsContext;
ShowColumnsContext.prototype.SHOW = function() {
return this.getToken(SqlBaseParser.SHOW, 0);
};
ShowColumnsContext.prototype.COLUMNS = function() {
return this.getToken(SqlBaseParser.COLUMNS, 0);
};
ShowColumnsContext.prototype.qualifiedName = function() {
return this.getTypedRuleContext(QualifiedNameContext,0);
};
ShowColumnsContext.prototype.FROM = function() {
return this.getToken(SqlBaseParser.FROM, 0);
};
ShowColumnsContext.prototype.IN = function() {
return this.getToken(SqlBaseParser.IN, 0);
};
ShowColumnsContext.prototype.DESCRIBE = function() {
return this.getToken(SqlBaseParser.DESCRIBE, 0);
};
ShowColumnsContext.prototype.DESC = function() {
return this.getToken(SqlBaseParser.DESC, 0);
};
ShowColumnsContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterShowColumns(this);
}
};
ShowColumnsContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitShowColumns(this);
}
};
function RollbackContext(parser, ctx) {
StatementContext.call(this, parser);
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
RollbackContext.prototype = Object.create(StatementContext.prototype);
RollbackContext.prototype.constructor = RollbackContext;
SqlBaseParser.RollbackContext = RollbackContext;
RollbackContext.prototype.ROLLBACK = function() {
return this.getToken(SqlBaseParser.ROLLBACK, 0);
};
RollbackContext.prototype.WORK = function() {
return this.getToken(SqlBaseParser.WORK, 0);
};
RollbackContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterRollback(this);
}
};
RollbackContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitRollback(this);
}
};
function AddColumnContext(parser, ctx) {
StatementContext.call(this, parser);
this.tableName = null; // QualifiedNameContext;
this.column = null; // ColumnDefinitionContext;
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
AddColumnContext.prototype = Object.create(StatementContext.prototype);
AddColumnContext.prototype.constructor = AddColumnContext;
SqlBaseParser.AddColumnContext = AddColumnContext;
AddColumnContext.prototype.ALTER = function() {
return this.getToken(SqlBaseParser.ALTER, 0);
};
AddColumnContext.prototype.TABLE = function() {
return this.getToken(SqlBaseParser.TABLE, 0);
};
AddColumnContext.prototype.ADD = function() {
return this.getToken(SqlBaseParser.ADD, 0);
};
AddColumnContext.prototype.COLUMN = function() {
return this.getToken(SqlBaseParser.COLUMN, 0);
};
AddColumnContext.prototype.qualifiedName = function() {
return this.getTypedRuleContext(QualifiedNameContext,0);
};
AddColumnContext.prototype.columnDefinition = function() {
return this.getTypedRuleContext(ColumnDefinitionContext,0);
};
AddColumnContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterAddColumn(this);
}
};
AddColumnContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitAddColumn(this);
}
};
function ResetSessionContext(parser, ctx) {
StatementContext.call(this, parser);
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
ResetSessionContext.prototype = Object.create(StatementContext.prototype);
ResetSessionContext.prototype.constructor = ResetSessionContext;
SqlBaseParser.ResetSessionContext = ResetSessionContext;
ResetSessionContext.prototype.RESET = function() {
return this.getToken(SqlBaseParser.RESET, 0);
};
ResetSessionContext.prototype.SESSION = function() {
return this.getToken(SqlBaseParser.SESSION, 0);
};
ResetSessionContext.prototype.qualifiedName = function() {
return this.getTypedRuleContext(QualifiedNameContext,0);
};
ResetSessionContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterResetSession(this);
}
};
ResetSessionContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitResetSession(this);
}
};
function InsertIntoContext(parser, ctx) {
StatementContext.call(this, parser);
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
InsertIntoContext.prototype = Object.create(StatementContext.prototype);
InsertIntoContext.prototype.constructor = InsertIntoContext;
SqlBaseParser.InsertIntoContext = InsertIntoContext;
InsertIntoContext.prototype.INSERT = function() {
return this.getToken(SqlBaseParser.INSERT, 0);
};
InsertIntoContext.prototype.INTO = function() {
return this.getToken(SqlBaseParser.INTO, 0);
};
InsertIntoContext.prototype.qualifiedName = function() {
return this.getTypedRuleContext(QualifiedNameContext,0);
};
InsertIntoContext.prototype.query = function() {
return this.getTypedRuleContext(QueryContext,0);
};
InsertIntoContext.prototype.columnAliases = function() {
return this.getTypedRuleContext(ColumnAliasesContext,0);
};
InsertIntoContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterInsertInto(this);
}
};
InsertIntoContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitInsertInto(this);
}
};
function SetPathContext(parser, ctx) {
StatementContext.call(this, parser);
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
SetPathContext.prototype = Object.create(StatementContext.prototype);
SetPathContext.prototype.constructor = SetPathContext;
SqlBaseParser.SetPathContext = SetPathContext;
SetPathContext.prototype.SET = function() {
return this.getToken(SqlBaseParser.SET, 0);
};
SetPathContext.prototype.PATH = function() {
return this.getToken(SqlBaseParser.PATH, 0);
};
SetPathContext.prototype.pathSpecification = function() {
return this.getTypedRuleContext(PathSpecificationContext,0);
};
SetPathContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterSetPath(this);
}
};
SetPathContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitSetPath(this);
}
};
function ShowSessionContext(parser, ctx) {
StatementContext.call(this, parser);
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
ShowSessionContext.prototype = Object.create(StatementContext.prototype);
ShowSessionContext.prototype.constructor = ShowSessionContext;
SqlBaseParser.ShowSessionContext = ShowSessionContext;
ShowSessionContext.prototype.SHOW = function() {
return this.getToken(SqlBaseParser.SHOW, 0);
};
ShowSessionContext.prototype.SESSION = function() {
return this.getToken(SqlBaseParser.SESSION, 0);
};
ShowSessionContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterShowSession(this);
}
};
ShowSessionContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitShowSession(this);
}
};
function CreateSchemaContext(parser, ctx) {
StatementContext.call(this, parser);
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
CreateSchemaContext.prototype = Object.create(StatementContext.prototype);
CreateSchemaContext.prototype.constructor = CreateSchemaContext;
SqlBaseParser.CreateSchemaContext = CreateSchemaContext;
CreateSchemaContext.prototype.CREATE = function() {
return this.getToken(SqlBaseParser.CREATE, 0);
};
CreateSchemaContext.prototype.SCHEMA = function() {
return this.getToken(SqlBaseParser.SCHEMA, 0);
};
CreateSchemaContext.prototype.qualifiedName = function() {
return this.getTypedRuleContext(QualifiedNameContext,0);
};
CreateSchemaContext.prototype.IF = function() {
return this.getToken(SqlBaseParser.IF, 0);
};
CreateSchemaContext.prototype.NOT = function() {
return this.getToken(SqlBaseParser.NOT, 0);
};
CreateSchemaContext.prototype.EXISTS = function() {
return this.getToken(SqlBaseParser.EXISTS, 0);
};
CreateSchemaContext.prototype.WITH = function() {
return this.getToken(SqlBaseParser.WITH, 0);
};
CreateSchemaContext.prototype.properties = function() {
return this.getTypedRuleContext(PropertiesContext,0);
};
CreateSchemaContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterCreateSchema(this);
}
};
CreateSchemaContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitCreateSchema(this);
}
};
function ExecuteContext(parser, ctx) {
StatementContext.call(this, parser);
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
ExecuteContext.prototype = Object.create(StatementContext.prototype);
ExecuteContext.prototype.constructor = ExecuteContext;
SqlBaseParser.ExecuteContext = ExecuteContext;
ExecuteContext.prototype.EXECUTE = function() {
return this.getToken(SqlBaseParser.EXECUTE, 0);
};
ExecuteContext.prototype.identifier = function() {
return this.getTypedRuleContext(IdentifierContext,0);
};
ExecuteContext.prototype.USING = function() {
return this.getToken(SqlBaseParser.USING, 0);
};
ExecuteContext.prototype.expression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ExpressionContext);
} else {
return this.getTypedRuleContext(ExpressionContext,i);
}
};
ExecuteContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterExecute(this);
}
};
ExecuteContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitExecute(this);
}
};
function CallContext(parser, ctx) {
StatementContext.call(this, parser);
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
CallContext.prototype = Object.create(StatementContext.prototype);
CallContext.prototype.constructor = CallContext;
SqlBaseParser.CallContext = CallContext;
CallContext.prototype.CALL = function() {
return this.getToken(SqlBaseParser.CALL, 0);
};
CallContext.prototype.qualifiedName = function() {
return this.getTypedRuleContext(QualifiedNameContext,0);
};
CallContext.prototype.callArgument = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(CallArgumentContext);
} else {
return this.getTypedRuleContext(CallArgumentContext,i);
}
};
CallContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterCall(this);
}
};
CallContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitCall(this);
}
};
function RenameSchemaContext(parser, ctx) {
StatementContext.call(this, parser);
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
RenameSchemaContext.prototype = Object.create(StatementContext.prototype);
RenameSchemaContext.prototype.constructor = RenameSchemaContext;
SqlBaseParser.RenameSchemaContext = RenameSchemaContext;
RenameSchemaContext.prototype.ALTER = function() {
return this.getToken(SqlBaseParser.ALTER, 0);
};
RenameSchemaContext.prototype.SCHEMA = function() {
return this.getToken(SqlBaseParser.SCHEMA, 0);
};
RenameSchemaContext.prototype.qualifiedName = function() {
return this.getTypedRuleContext(QualifiedNameContext,0);
};
RenameSchemaContext.prototype.RENAME = function() {
return this.getToken(SqlBaseParser.RENAME, 0);
};
RenameSchemaContext.prototype.TO = function() {
return this.getToken(SqlBaseParser.TO, 0);
};
RenameSchemaContext.prototype.identifier = function() {
return this.getTypedRuleContext(IdentifierContext,0);
};
RenameSchemaContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterRenameSchema(this);
}
};
RenameSchemaContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitRenameSchema(this);
}
};
function ShowGrantsContext(parser, ctx) {
StatementContext.call(this, parser);
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
ShowGrantsContext.prototype = Object.create(StatementContext.prototype);
ShowGrantsContext.prototype.constructor = ShowGrantsContext;
SqlBaseParser.ShowGrantsContext = ShowGrantsContext;
ShowGrantsContext.prototype.SHOW = function() {
return this.getToken(SqlBaseParser.SHOW, 0);
};
ShowGrantsContext.prototype.GRANTS = function() {
return this.getToken(SqlBaseParser.GRANTS, 0);
};
ShowGrantsContext.prototype.ON = function() {
return this.getToken(SqlBaseParser.ON, 0);
};
ShowGrantsContext.prototype.qualifiedName = function() {
return this.getTypedRuleContext(QualifiedNameContext,0);
};
ShowGrantsContext.prototype.TABLE = function() {
return this.getToken(SqlBaseParser.TABLE, 0);
};
ShowGrantsContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterShowGrants(this);
}
};
ShowGrantsContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitShowGrants(this);
}
};
function ShowFunctionsContext(parser, ctx) {
StatementContext.call(this, parser);
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
ShowFunctionsContext.prototype = Object.create(StatementContext.prototype);
ShowFunctionsContext.prototype.constructor = ShowFunctionsContext;
SqlBaseParser.ShowFunctionsContext = ShowFunctionsContext;
ShowFunctionsContext.prototype.SHOW = function() {
return this.getToken(SqlBaseParser.SHOW, 0);
};
ShowFunctionsContext.prototype.FUNCTIONS = function() {
return this.getToken(SqlBaseParser.FUNCTIONS, 0);
};
ShowFunctionsContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterShowFunctions(this);
}
};
ShowFunctionsContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitShowFunctions(this);
}
};
function DescribeOutputContext(parser, ctx) {
StatementContext.call(this, parser);
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
DescribeOutputContext.prototype = Object.create(StatementContext.prototype);
DescribeOutputContext.prototype.constructor = DescribeOutputContext;
SqlBaseParser.DescribeOutputContext = DescribeOutputContext;
DescribeOutputContext.prototype.DESCRIBE = function() {
return this.getToken(SqlBaseParser.DESCRIBE, 0);
};
DescribeOutputContext.prototype.OUTPUT = function() {
return this.getToken(SqlBaseParser.OUTPUT, 0);
};
DescribeOutputContext.prototype.identifier = function() {
return this.getTypedRuleContext(IdentifierContext,0);
};
DescribeOutputContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterDescribeOutput(this);
}
};
DescribeOutputContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitDescribeOutput(this);
}
};
function DropSchemaContext(parser, ctx) {
StatementContext.call(this, parser);
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
DropSchemaContext.prototype = Object.create(StatementContext.prototype);
DropSchemaContext.prototype.constructor = DropSchemaContext;
SqlBaseParser.DropSchemaContext = DropSchemaContext;
DropSchemaContext.prototype.DROP = function() {
return this.getToken(SqlBaseParser.DROP, 0);
};
DropSchemaContext.prototype.SCHEMA = function() {
return this.getToken(SqlBaseParser.SCHEMA, 0);
};
DropSchemaContext.prototype.qualifiedName = function() {
return this.getTypedRuleContext(QualifiedNameContext,0);
};
DropSchemaContext.prototype.IF = function() {
return this.getToken(SqlBaseParser.IF, 0);
};
DropSchemaContext.prototype.EXISTS = function() {
return this.getToken(SqlBaseParser.EXISTS, 0);
};
DropSchemaContext.prototype.CASCADE = function() {
return this.getToken(SqlBaseParser.CASCADE, 0);
};
DropSchemaContext.prototype.RESTRICT = function() {
return this.getToken(SqlBaseParser.RESTRICT, 0);
};
DropSchemaContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterDropSchema(this);
}
};
DropSchemaContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitDropSchema(this);
}
};
function GrantContext(parser, ctx) {
StatementContext.call(this, parser);
this.grantee = null; // IdentifierContext;
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
GrantContext.prototype = Object.create(StatementContext.prototype);
GrantContext.prototype.constructor = GrantContext;
SqlBaseParser.GrantContext = GrantContext;
GrantContext.prototype.GRANT = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(SqlBaseParser.GRANT);
} else {
return this.getToken(SqlBaseParser.GRANT, i);
}
};
GrantContext.prototype.ON = function() {
return this.getToken(SqlBaseParser.ON, 0);
};
GrantContext.prototype.qualifiedName = function() {
return this.getTypedRuleContext(QualifiedNameContext,0);
};
GrantContext.prototype.TO = function() {
return this.getToken(SqlBaseParser.TO, 0);
};
GrantContext.prototype.identifier = function() {
return this.getTypedRuleContext(IdentifierContext,0);
};
GrantContext.prototype.privilege = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(PrivilegeContext);
} else {
return this.getTypedRuleContext(PrivilegeContext,i);
}
};
GrantContext.prototype.ALL = function() {
return this.getToken(SqlBaseParser.ALL, 0);
};
GrantContext.prototype.PRIVILEGES = function() {
return this.getToken(SqlBaseParser.PRIVILEGES, 0);
};
GrantContext.prototype.TABLE = function() {
return this.getToken(SqlBaseParser.TABLE, 0);
};
GrantContext.prototype.WITH = function() {
return this.getToken(SqlBaseParser.WITH, 0);
};
GrantContext.prototype.OPTION = function() {
return this.getToken(SqlBaseParser.OPTION, 0);
};
GrantContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterGrant(this);
}
};
GrantContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitGrant(this);
}
};
function ShowCreateViewContext(parser, ctx) {
StatementContext.call(this, parser);
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
ShowCreateViewContext.prototype = Object.create(StatementContext.prototype);
ShowCreateViewContext.prototype.constructor = ShowCreateViewContext;
SqlBaseParser.ShowCreateViewContext = ShowCreateViewContext;
ShowCreateViewContext.prototype.SHOW = function() {
return this.getToken(SqlBaseParser.SHOW, 0);
};
ShowCreateViewContext.prototype.CREATE = function() {
return this.getToken(SqlBaseParser.CREATE, 0);
};
ShowCreateViewContext.prototype.VIEW = function() {
return this.getToken(SqlBaseParser.VIEW, 0);
};
ShowCreateViewContext.prototype.qualifiedName = function() {
return this.getTypedRuleContext(QualifiedNameContext,0);
};
ShowCreateViewContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterShowCreateView(this);
}
};
ShowCreateViewContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitShowCreateView(this);
}
};
SqlBaseParser.StatementContext = StatementContext;
SqlBaseParser.prototype.statement = function() {
var localctx = new StatementContext(this, this._ctx, this.state);
this.enterRule(localctx, 6, SqlBaseParser.RULE_statement);
var _la = 0; // Token type
try {
this.state = 519;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,49,this._ctx);
switch(la_) {
case 1:
localctx = new StatementDefaultContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 133;
this.query();
break;
case 2:
localctx = new UseContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 134;
this.match(SqlBaseParser.USE);
this.state = 135;
localctx.schema = this.identifier();
break;
case 3:
localctx = new UseContext(this, localctx);
this.enterOuterAlt(localctx, 3);
this.state = 136;
this.match(SqlBaseParser.USE);
this.state = 137;
localctx.catalog = this.identifier();
this.state = 138;
this.match(SqlBaseParser.T__0);
this.state = 139;
localctx.schema = this.identifier();
break;
case 4:
localctx = new CreateSchemaContext(this, localctx);
this.enterOuterAlt(localctx, 4);
this.state = 141;
this.match(SqlBaseParser.CREATE);
this.state = 142;
this.match(SqlBaseParser.SCHEMA);
this.state = 146;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,0,this._ctx);
if(la_===1) {
this.state = 143;
this.match(SqlBaseParser.IF);
this.state = 144;
this.match(SqlBaseParser.NOT);
this.state = 145;
this.match(SqlBaseParser.EXISTS);
}
this.state = 148;
this.qualifiedName();
this.state = 151;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.WITH) {
this.state = 149;
this.match(SqlBaseParser.WITH);
this.state = 150;
this.properties();
}
break;
case 5:
localctx = new DropSchemaContext(this, localctx);
this.enterOuterAlt(localctx, 5);
this.state = 153;
this.match(SqlBaseParser.DROP);
this.state = 154;
this.match(SqlBaseParser.SCHEMA);
this.state = 157;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,2,this._ctx);
if(la_===1) {
this.state = 155;
this.match(SqlBaseParser.IF);
this.state = 156;
this.match(SqlBaseParser.EXISTS);
}
this.state = 159;
this.qualifiedName();
this.state = 161;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.CASCADE || _la===SqlBaseParser.RESTRICT) {
this.state = 160;
_la = this._input.LA(1);
if(!(_la===SqlBaseParser.CASCADE || _la===SqlBaseParser.RESTRICT)) {
this._errHandler.recoverInline(this);
}
else {
this._errHandler.reportMatch(this);
this.consume();
}
}
break;
case 6:
localctx = new RenameSchemaContext(this, localctx);
this.enterOuterAlt(localctx, 6);
this.state = 163;
this.match(SqlBaseParser.ALTER);
this.state = 164;
this.match(SqlBaseParser.SCHEMA);
this.state = 165;
this.qualifiedName();
this.state = 166;
this.match(SqlBaseParser.RENAME);
this.state = 167;
this.match(SqlBaseParser.TO);
this.state = 168;
this.identifier();
break;
case 7:
localctx = new CreateTableAsSelectContext(this, localctx);
this.enterOuterAlt(localctx, 7);
this.state = 170;
this.match(SqlBaseParser.CREATE);
this.state = 171;
this.match(SqlBaseParser.TABLE);
this.state = 175;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,4,this._ctx);
if(la_===1) {
this.state = 172;
this.match(SqlBaseParser.IF);
this.state = 173;
this.match(SqlBaseParser.NOT);
this.state = 174;
this.match(SqlBaseParser.EXISTS);
}
this.state = 177;
this.qualifiedName();
this.state = 179;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.T__1) {
this.state = 178;
this.columnAliases();
}
this.state = 183;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.COMMENT) {
this.state = 181;
this.match(SqlBaseParser.COMMENT);
this.state = 182;
this.string();
}
this.state = 187;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.WITH) {
this.state = 185;
this.match(SqlBaseParser.WITH);
this.state = 186;
this.properties();
}
this.state = 189;
this.match(SqlBaseParser.AS);
this.state = 195;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,8,this._ctx);
switch(la_) {
case 1:
this.state = 190;
this.query();
break;
case 2:
this.state = 191;
this.match(SqlBaseParser.T__1);
this.state = 192;
this.query();
this.state = 193;
this.match(SqlBaseParser.T__2);
break;
}
this.state = 202;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.WITH) {
this.state = 197;
this.match(SqlBaseParser.WITH);
this.state = 199;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.NO) {
this.state = 198;
this.match(SqlBaseParser.NO);
}
this.state = 201;
this.match(SqlBaseParser.DATA);
}
break;
case 8:
localctx = new CreateTableContext(this, localctx);
this.enterOuterAlt(localctx, 8);
this.state = 204;
this.match(SqlBaseParser.CREATE);
this.state = 205;
this.match(SqlBaseParser.TABLE);
this.state = 209;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,11,this._ctx);
if(la_===1) {
this.state = 206;
this.match(SqlBaseParser.IF);
this.state = 207;
this.match(SqlBaseParser.NOT);
this.state = 208;
this.match(SqlBaseParser.EXISTS);
}
this.state = 211;
this.qualifiedName();
this.state = 212;
this.match(SqlBaseParser.T__1);
this.state = 213;
this.tableElement();
this.state = 218;
this._errHandler.sync(this);
_la = this._input.LA(1);
while(_la===SqlBaseParser.T__3) {
this.state = 214;
this.match(SqlBaseParser.T__3);
this.state = 215;
this.tableElement();
this.state = 220;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
this.state = 221;
this.match(SqlBaseParser.T__2);
this.state = 224;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.COMMENT) {
this.state = 222;
this.match(SqlBaseParser.COMMENT);
this.state = 223;
this.string();
}
this.state = 228;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.WITH) {
this.state = 226;
this.match(SqlBaseParser.WITH);
this.state = 227;
this.properties();
}
break;
case 9:
localctx = new DropTableContext(this, localctx);
this.enterOuterAlt(localctx, 9);
this.state = 230;
this.match(SqlBaseParser.DROP);
this.state = 231;
this.match(SqlBaseParser.TABLE);
this.state = 234;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,15,this._ctx);
if(la_===1) {
this.state = 232;
this.match(SqlBaseParser.IF);
this.state = 233;
this.match(SqlBaseParser.EXISTS);
}
this.state = 236;
this.qualifiedName();
break;
case 10:
localctx = new InsertIntoContext(this, localctx);
this.enterOuterAlt(localctx, 10);
this.state = 237;
this.match(SqlBaseParser.INSERT);
this.state = 238;
this.match(SqlBaseParser.INTO);
this.state = 239;
this.qualifiedName();
this.state = 241;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,16,this._ctx);
if(la_===1) {
this.state = 240;
this.columnAliases();
}
this.state = 243;
this.query();
break;
case 11:
localctx = new DeleteContext(this, localctx);
this.enterOuterAlt(localctx, 11);
this.state = 245;
this.match(SqlBaseParser.DELETE);
this.state = 246;
this.match(SqlBaseParser.FROM);
this.state = 247;
this.qualifiedName();
this.state = 250;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.WHERE) {
this.state = 248;
this.match(SqlBaseParser.WHERE);
this.state = 249;
this.booleanExpression(0);
}
break;
case 12:
localctx = new RenameTableContext(this, localctx);
this.enterOuterAlt(localctx, 12);
this.state = 252;
this.match(SqlBaseParser.ALTER);
this.state = 253;
this.match(SqlBaseParser.TABLE);
this.state = 254;
localctx.from = this.qualifiedName();
this.state = 255;
this.match(SqlBaseParser.RENAME);
this.state = 256;
this.match(SqlBaseParser.TO);
this.state = 257;
localctx.to = this.qualifiedName();
break;
case 13:
localctx = new RenameColumnContext(this, localctx);
this.enterOuterAlt(localctx, 13);
this.state = 259;
this.match(SqlBaseParser.ALTER);
this.state = 260;
this.match(SqlBaseParser.TABLE);
this.state = 261;
localctx.tableName = this.qualifiedName();
this.state = 262;
this.match(SqlBaseParser.RENAME);
this.state = 263;
this.match(SqlBaseParser.COLUMN);
this.state = 264;
localctx.from = this.identifier();
this.state = 265;
this.match(SqlBaseParser.TO);
this.state = 266;
localctx.to = this.identifier();
break;
case 14:
localctx = new DropColumnContext(this, localctx);
this.enterOuterAlt(localctx, 14);
this.state = 268;
this.match(SqlBaseParser.ALTER);
this.state = 269;
this.match(SqlBaseParser.TABLE);
this.state = 270;
localctx.tableName = this.qualifiedName();
this.state = 271;
this.match(SqlBaseParser.DROP);
this.state = 272;
this.match(SqlBaseParser.COLUMN);
this.state = 273;
localctx.column = this.qualifiedName();
break;
case 15:
localctx = new AddColumnContext(this, localctx);
this.enterOuterAlt(localctx, 15);
this.state = 275;
this.match(SqlBaseParser.ALTER);
this.state = 276;
this.match(SqlBaseParser.TABLE);
this.state = 277;
localctx.tableName = this.qualifiedName();
this.state = 278;
this.match(SqlBaseParser.ADD);
this.state = 279;
this.match(SqlBaseParser.COLUMN);
this.state = 280;
localctx.column = this.columnDefinition();
break;
case 16:
localctx = new CreateViewContext(this, localctx);
this.enterOuterAlt(localctx, 16);
this.state = 282;
this.match(SqlBaseParser.CREATE);
this.state = 285;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.OR) {
this.state = 283;
this.match(SqlBaseParser.OR);
this.state = 284;
this.match(SqlBaseParser.REPLACE);
}
this.state = 287;
this.match(SqlBaseParser.VIEW);
this.state = 288;
this.qualifiedName();
this.state = 289;
this.match(SqlBaseParser.AS);
this.state = 290;
this.query();
break;
case 17:
localctx = new DropViewContext(this, localctx);
this.enterOuterAlt(localctx, 17);
this.state = 292;
this.match(SqlBaseParser.DROP);
this.state = 293;
this.match(SqlBaseParser.VIEW);
this.state = 296;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,19,this._ctx);
if(la_===1) {
this.state = 294;
this.match(SqlBaseParser.IF);
this.state = 295;
this.match(SqlBaseParser.EXISTS);
}
this.state = 298;
this.qualifiedName();
break;
case 18:
localctx = new CallContext(this, localctx);
this.enterOuterAlt(localctx, 18);
this.state = 299;
this.match(SqlBaseParser.CALL);
this.state = 300;
this.qualifiedName();
this.state = 301;
this.match(SqlBaseParser.T__1);
this.state = 310;
this._errHandler.sync(this);
_la = this._input.LA(1);
if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << SqlBaseParser.T__1) | (1 << SqlBaseParser.T__4) | (1 << SqlBaseParser.ADD) | (1 << SqlBaseParser.ALL) | (1 << SqlBaseParser.ANALYZE) | (1 << SqlBaseParser.ANY) | (1 << SqlBaseParser.ARRAY) | (1 << SqlBaseParser.ASC) | (1 << SqlBaseParser.AT) | (1 << SqlBaseParser.BERNOULLI) | (1 << SqlBaseParser.CALL) | (1 << SqlBaseParser.CASCADE) | (1 << SqlBaseParser.CASE) | (1 << SqlBaseParser.CAST) | (1 << SqlBaseParser.CATALOGS) | (1 << SqlBaseParser.COLUMN) | (1 << SqlBaseParser.COLUMNS) | (1 << SqlBaseParser.COMMENT) | (1 << SqlBaseParser.COMMIT))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (SqlBaseParser.COMMITTED - 32)) | (1 << (SqlBaseParser.CURRENT - 32)) | (1 << (SqlBaseParser.CURRENT_DATE - 32)) | (1 << (SqlBaseParser.CURRENT_PATH - 32)) | (1 << (SqlBaseParser.CURRENT_TIME - 32)) | (1 << (SqlBaseParser.CURRENT_TIMESTAMP - 32)) | (1 << (SqlBaseParser.CURRENT_USER - 32)) | (1 << (SqlBaseParser.DATA - 32)) | (1 << (SqlBaseParser.DATE - 32)) | (1 << (SqlBaseParser.DAY - 32)) | (1 << (SqlBaseParser.DESC - 32)) | (1 << (SqlBaseParser.DISTRIBUTED - 32)) | (1 << (SqlBaseParser.EXCLUDING - 32)) | (1 << (SqlBaseParser.EXISTS - 32)) | (1 << (SqlBaseParser.EXPLAIN - 32)) | (1 << (SqlBaseParser.EXTRACT - 32)) | (1 << (SqlBaseParser.FALSE - 32)) | (1 << (SqlBaseParser.FILTER - 32)))) !== 0) || ((((_la - 64)) & ~0x1f) == 0 && ((1 << (_la - 64)) & ((1 << (SqlBaseParser.FIRST - 64)) | (1 << (SqlBaseParser.FOLLOWING - 64)) | (1 << (SqlBaseParser.FORMAT - 64)) | (1 << (SqlBaseParser.FUNCTIONS - 64)) | (1 << (SqlBaseParser.GRANT - 64)) | (1 << (SqlBaseParser.GRANTS - 64)) | (1 << (SqlBaseParser.GRAPHVIZ - 64)) | (1 << (SqlBaseParser.GROUPING - 64)) | (1 << (SqlBaseParser.HOUR - 64)) | (1 << (SqlBaseParser.IF - 64)) | (1 << (SqlBaseParser.INCLUDING - 64)) | (1 << (SqlBaseParser.INPUT - 64)) | (1 << (SqlBaseParser.INTERVAL - 64)) | (1 << (SqlBaseParser.IO - 64)) | (1 << (SqlBaseParser.ISOLATION - 64)) | (1 << (SqlBaseParser.JSON - 64)) | (1 << (SqlBaseParser.LAST - 64)) | (1 << (SqlBaseParser.LATERAL - 64)) | (1 << (SqlBaseParser.LEVEL - 64)))) !== 0) || ((((_la - 97)) & ~0x1f) == 0 && ((1 << (_la - 97)) & ((1 << (SqlBaseParser.LIMIT - 97)) | (1 << (SqlBaseParser.LOCALTIME - 97)) | (1 << (SqlBaseParser.LOCALTIMESTAMP - 97)) | (1 << (SqlBaseParser.LOGICAL - 97)) | (1 << (SqlBaseParser.MAP - 97)) | (1 << (SqlBaseParser.MINUTE - 97)) | (1 << (SqlBaseParser.MONTH - 97)) | (1 << (SqlBaseParser.NFC - 97)) | (1 << (SqlBaseParser.NFD - 97)) | (1 << (SqlBaseParser.NFKC - 97)) | (1 << (SqlBaseParser.NFKD - 97)) | (1 << (SqlBaseParser.NO - 97)) | (1 << (SqlBaseParser.NORMALIZE - 97)) | (1 << (SqlBaseParser.NOT - 97)) | (1 << (SqlBaseParser.NULL - 97)) | (1 << (SqlBaseParser.NULLIF - 97)) | (1 << (SqlBaseParser.NULLS - 97)) | (1 << (SqlBaseParser.ONLY - 97)) | (1 << (SqlBaseParser.OPTION - 97)) | (1 << (SqlBaseParser.ORDINALITY - 97)) | (1 << (SqlBaseParser.OUTPUT - 97)) | (1 << (SqlBaseParser.OVER - 97)) | (1 << (SqlBaseParser.PARTITION - 97)) | (1 << (SqlBaseParser.PARTITIONS - 97)) | (1 << (SqlBaseParser.PATH - 97)) | (1 << (SqlBaseParser.POSITION - 97)) | (1 << (SqlBaseParser.PRECEDING - 97)))) !== 0) || ((((_la - 130)) & ~0x1f) == 0 && ((1 << (_la - 130)) & ((1 << (SqlBaseParser.PRIVILEGES - 130)) | (1 << (SqlBaseParser.PROPERTIES - 130)) | (1 << (SqlBaseParser.PUBLIC - 130)) | (1 << (SqlBaseParser.RANGE - 130)) | (1 << (SqlBaseParser.READ - 130)) | (1 << (SqlBaseParser.RENAME - 130)) | (1 << (SqlBaseParser.REPEATABLE - 130)) | (1 << (SqlBaseParser.REPLACE - 130)) | (1 << (SqlBaseParser.RESET - 130)) | (1 << (SqlBaseParser.RESTRICT - 130)) | (1 << (SqlBaseParser.REVOKE - 130)) | (1 << (SqlBaseParser.ROLLBACK - 130)) | (1 << (SqlBaseParser.ROW - 130)) | (1 << (SqlBaseParser.ROWS - 130)) | (1 << (SqlBaseParser.SCHEMA - 130)) | (1 << (SqlBaseParser.SCHEMAS - 130)) | (1 << (SqlBaseParser.SECOND - 130)) | (1 << (SqlBaseParser.SERIALIZABLE - 130)) | (1 << (SqlBaseParser.SESSION - 130)) | (1 << (SqlBaseParser.SET - 130)) | (1 << (SqlBaseParser.SETS - 130)) | (1 << (SqlBaseParser.SHOW - 130)) | (1 << (SqlBaseParser.SOME - 130)) | (1 << (SqlBaseParser.START - 130)) | (1 << (SqlBaseParser.STATS - 130)) | (1 << (SqlBaseParser.SUBSTRING - 130)) | (1 << (SqlBaseParser.SYSTEM - 130)))) !== 0) || ((((_la - 162)) & ~0x1f) == 0 && ((1 << (_la - 162)) & ((1 << (SqlBaseParser.TABLES - 162)) | (1 << (SqlBaseParser.TABLESAMPLE - 162)) | (1 << (SqlBaseParser.TEXT - 162)) | (1 << (SqlBaseParser.TIME - 162)) | (1 << (SqlBaseParser.TIMESTAMP - 162)) | (1 << (SqlBaseParser.TO - 162)) | (1 << (SqlBaseParser.TRANSACTION - 162)) | (1 << (SqlBaseParser.TRUE - 162)) | (1 << (SqlBaseParser.TRY_CAST - 162)) | (1 << (SqlBaseParser.TYPE - 162)) | (1 << (SqlBaseParser.UNBOUNDED - 162)) | (1 << (SqlBaseParser.UNCOMMITTED - 162)) | (1 << (SqlBaseParser.USE - 162)) | (1 << (SqlBaseParser.VALIDATE - 162)) | (1 << (SqlBaseParser.VERBOSE - 162)) | (1 << (SqlBaseParser.VIEW - 162)) | (1 << (SqlBaseParser.WORK - 162)) | (1 << (SqlBaseParser.WRITE - 162)) | (1 << (SqlBaseParser.YEAR - 162)) | (1 << (SqlBaseParser.ZONE - 162)))) !== 0) || ((((_la - 197)) & ~0x1f) == 0 && ((1 << (_la - 197)) & ((1 << (SqlBaseParser.PLUS - 197)) | (1 << (SqlBaseParser.MINUS - 197)) | (1 << (SqlBaseParser.STRING - 197)) | (1 << (SqlBaseParser.UNICODE_STRING - 197)) | (1 << (SqlBaseParser.BINARY_LITERAL - 197)) | (1 << (SqlBaseParser.INTEGER_VALUE - 197)) | (1 << (SqlBaseParser.DECIMAL_VALUE - 197)) | (1 << (SqlBaseParser.DOUBLE_VALUE - 197)) | (1 << (SqlBaseParser.IDENTIFIER - 197)) | (1 << (SqlBaseParser.DIGIT_IDENTIFIER - 197)) | (1 << (SqlBaseParser.QUOTED_IDENTIFIER - 197)) | (1 << (SqlBaseParser.BACKQUOTED_IDENTIFIER - 197)) | (1 << (SqlBaseParser.DOUBLE_PRECISION - 197)))) !== 0)) {
this.state = 302;
this.callArgument();
this.state = 307;
this._errHandler.sync(this);
_la = this._input.LA(1);
while(_la===SqlBaseParser.T__3) {
this.state = 303;
this.match(SqlBaseParser.T__3);
this.state = 304;
this.callArgument();
this.state = 309;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
}
this.state = 312;
this.match(SqlBaseParser.T__2);
break;
case 19:
localctx = new GrantContext(this, localctx);
this.enterOuterAlt(localctx, 19);
this.state = 314;
this.match(SqlBaseParser.GRANT);
this.state = 325;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,23,this._ctx);
switch(la_) {
case 1:
this.state = 315;
this.privilege();
this.state = 320;
this._errHandler.sync(this);
_la = this._input.LA(1);
while(_la===SqlBaseParser.T__3) {
this.state = 316;
this.match(SqlBaseParser.T__3);
this.state = 317;
this.privilege();
this.state = 322;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
break;
case 2:
this.state = 323;
this.match(SqlBaseParser.ALL);
this.state = 324;
this.match(SqlBaseParser.PRIVILEGES);
break;
}
this.state = 327;
this.match(SqlBaseParser.ON);
this.state = 329;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.TABLE) {
this.state = 328;
this.match(SqlBaseParser.TABLE);
}
this.state = 331;
this.qualifiedName();
this.state = 332;
this.match(SqlBaseParser.TO);
this.state = 333;
localctx.grantee = this.identifier();
this.state = 337;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.WITH) {
this.state = 334;
this.match(SqlBaseParser.WITH);
this.state = 335;
this.match(SqlBaseParser.GRANT);
this.state = 336;
this.match(SqlBaseParser.OPTION);
}
break;
case 20:
localctx = new RevokeContext(this, localctx);
this.enterOuterAlt(localctx, 20);
this.state = 339;
this.match(SqlBaseParser.REVOKE);
this.state = 343;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,26,this._ctx);
if(la_===1) {
this.state = 340;
this.match(SqlBaseParser.GRANT);
this.state = 341;
this.match(SqlBaseParser.OPTION);
this.state = 342;
this.match(SqlBaseParser.FOR);
}
this.state = 355;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,28,this._ctx);
switch(la_) {
case 1:
this.state = 345;
this.privilege();
this.state = 350;
this._errHandler.sync(this);
_la = this._input.LA(1);
while(_la===SqlBaseParser.T__3) {
this.state = 346;
this.match(SqlBaseParser.T__3);
this.state = 347;
this.privilege();
this.state = 352;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
break;
case 2:
this.state = 353;
this.match(SqlBaseParser.ALL);
this.state = 354;
this.match(SqlBaseParser.PRIVILEGES);
break;
}
this.state = 357;
this.match(SqlBaseParser.ON);
this.state = 359;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.TABLE) {
this.state = 358;
this.match(SqlBaseParser.TABLE);
}
this.state = 361;
this.qualifiedName();
this.state = 362;
this.match(SqlBaseParser.FROM);
this.state = 363;
localctx.grantee = this.identifier();
break;
case 21:
localctx = new ShowGrantsContext(this, localctx);
this.enterOuterAlt(localctx, 21);
this.state = 365;
this.match(SqlBaseParser.SHOW);
this.state = 366;
this.match(SqlBaseParser.GRANTS);
this.state = 372;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.ON) {
this.state = 367;
this.match(SqlBaseParser.ON);
this.state = 369;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.TABLE) {
this.state = 368;
this.match(SqlBaseParser.TABLE);
}
this.state = 371;
this.qualifiedName();
}
break;
case 22:
localctx = new ExplainContext(this, localctx);
this.enterOuterAlt(localctx, 22);
this.state = 374;
this.match(SqlBaseParser.EXPLAIN);
this.state = 376;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.ANALYZE) {
this.state = 375;
this.match(SqlBaseParser.ANALYZE);
}
this.state = 379;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.VERBOSE) {
this.state = 378;
this.match(SqlBaseParser.VERBOSE);
}
this.state = 392;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,35,this._ctx);
if(la_===1) {
this.state = 381;
this.match(SqlBaseParser.T__1);
this.state = 382;
this.explainOption();
this.state = 387;
this._errHandler.sync(this);
_la = this._input.LA(1);
while(_la===SqlBaseParser.T__3) {
this.state = 383;
this.match(SqlBaseParser.T__3);
this.state = 384;
this.explainOption();
this.state = 389;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
this.state = 390;
this.match(SqlBaseParser.T__2);
}
this.state = 394;
this.statement();
break;
case 23:
localctx = new ShowCreateTableContext(this, localctx);
this.enterOuterAlt(localctx, 23);
this.state = 395;
this.match(SqlBaseParser.SHOW);
this.state = 396;
this.match(SqlBaseParser.CREATE);
this.state = 397;
this.match(SqlBaseParser.TABLE);
this.state = 398;
this.qualifiedName();
break;
case 24:
localctx = new ShowCreateViewContext(this, localctx);
this.enterOuterAlt(localctx, 24);
this.state = 399;
this.match(SqlBaseParser.SHOW);
this.state = 400;
this.match(SqlBaseParser.CREATE);
this.state = 401;
this.match(SqlBaseParser.VIEW);
this.state = 402;
this.qualifiedName();
break;
case 25:
localctx = new ShowTablesContext(this, localctx);
this.enterOuterAlt(localctx, 25);
this.state = 403;
this.match(SqlBaseParser.SHOW);
this.state = 404;
this.match(SqlBaseParser.TABLES);
this.state = 407;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.FROM || _la===SqlBaseParser.IN) {
this.state = 405;
_la = this._input.LA(1);
if(!(_la===SqlBaseParser.FROM || _la===SqlBaseParser.IN)) {
this._errHandler.recoverInline(this);
}
else {
this._errHandler.reportMatch(this);
this.consume();
}
this.state = 406;
this.qualifiedName();
}
this.state = 415;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.LIKE) {
this.state = 409;
this.match(SqlBaseParser.LIKE);
this.state = 410;
localctx.pattern = this.string();
this.state = 413;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.ESCAPE) {
this.state = 411;
this.match(SqlBaseParser.ESCAPE);
this.state = 412;
localctx.escape = this.string();
}
}
break;
case 26:
localctx = new ShowSchemasContext(this, localctx);
this.enterOuterAlt(localctx, 26);
this.state = 417;
this.match(SqlBaseParser.SHOW);
this.state = 418;
this.match(SqlBaseParser.SCHEMAS);
this.state = 421;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.FROM || _la===SqlBaseParser.IN) {
this.state = 419;
_la = this._input.LA(1);
if(!(_la===SqlBaseParser.FROM || _la===SqlBaseParser.IN)) {
this._errHandler.recoverInline(this);
}
else {
this._errHandler.reportMatch(this);
this.consume();
}
this.state = 420;
this.identifier();
}
this.state = 429;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.LIKE) {
this.state = 423;
this.match(SqlBaseParser.LIKE);
this.state = 424;
localctx.pattern = this.string();
this.state = 427;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.ESCAPE) {
this.state = 425;
this.match(SqlBaseParser.ESCAPE);
this.state = 426;
localctx.escape = this.string();
}
}
break;
case 27:
localctx = new ShowCatalogsContext(this, localctx);
this.enterOuterAlt(localctx, 27);
this.state = 431;
this.match(SqlBaseParser.SHOW);
this.state = 432;
this.match(SqlBaseParser.CATALOGS);
this.state = 435;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.LIKE) {
this.state = 433;
this.match(SqlBaseParser.LIKE);
this.state = 434;
localctx.pattern = this.string();
}
break;
case 28:
localctx = new ShowColumnsContext(this, localctx);
this.enterOuterAlt(localctx, 28);
this.state = 437;
this.match(SqlBaseParser.SHOW);
this.state = 438;
this.match(SqlBaseParser.COLUMNS);
this.state = 439;
_la = this._input.LA(1);
if(!(_la===SqlBaseParser.FROM || _la===SqlBaseParser.IN)) {
this._errHandler.recoverInline(this);
}
else {
this._errHandler.reportMatch(this);
this.consume();
}
this.state = 440;
this.qualifiedName();
break;
case 29:
localctx = new ShowStatsContext(this, localctx);
this.enterOuterAlt(localctx, 29);
this.state = 441;
this.match(SqlBaseParser.SHOW);
this.state = 442;
this.match(SqlBaseParser.STATS);
this.state = 443;
_la = this._input.LA(1);
if(!(_la===SqlBaseParser.FOR || _la===SqlBaseParser.ON)) {
this._errHandler.recoverInline(this);
}
else {
this._errHandler.reportMatch(this);
this.consume();
}
this.state = 444;
this.qualifiedName();
break;
case 30:
localctx = new ShowStatsForQueryContext(this, localctx);
this.enterOuterAlt(localctx, 30);
this.state = 445;
this.match(SqlBaseParser.SHOW);
this.state = 446;
this.match(SqlBaseParser.STATS);
this.state = 447;
this.match(SqlBaseParser.FOR);
this.state = 448;
this.match(SqlBaseParser.T__1);
this.state = 449;
this.querySpecification();
this.state = 450;
this.match(SqlBaseParser.T__2);
break;
case 31:
localctx = new ShowColumnsContext(this, localctx);
this.enterOuterAlt(localctx, 31);
this.state = 452;
this.match(SqlBaseParser.DESCRIBE);
this.state = 453;
this.qualifiedName();
break;
case 32:
localctx = new ShowColumnsContext(this, localctx);
this.enterOuterAlt(localctx, 32);
this.state = 454;
this.match(SqlBaseParser.DESC);
this.state = 455;
this.qualifiedName();
break;
case 33:
localctx = new ShowFunctionsContext(this, localctx);
this.enterOuterAlt(localctx, 33);
this.state = 456;
this.match(SqlBaseParser.SHOW);
this.state = 457;
this.match(SqlBaseParser.FUNCTIONS);
break;
case 34:
localctx = new ShowSessionContext(this, localctx);
this.enterOuterAlt(localctx, 34);
this.state = 458;
this.match(SqlBaseParser.SHOW);
this.state = 459;
this.match(SqlBaseParser.SESSION);
break;
case 35:
localctx = new SetSessionContext(this, localctx);
this.enterOuterAlt(localctx, 35);
this.state = 460;
this.match(SqlBaseParser.SET);
this.state = 461;
this.match(SqlBaseParser.SESSION);
this.state = 462;
this.qualifiedName();
this.state = 463;
this.match(SqlBaseParser.EQ);
this.state = 464;
this.expression();
break;
case 36:
localctx = new ResetSessionContext(this, localctx);
this.enterOuterAlt(localctx, 36);
this.state = 466;
this.match(SqlBaseParser.RESET);
this.state = 467;
this.match(SqlBaseParser.SESSION);
this.state = 468;
this.qualifiedName();
break;
case 37:
localctx = new StartTransactionContext(this, localctx);
this.enterOuterAlt(localctx, 37);
this.state = 469;
this.match(SqlBaseParser.START);
this.state = 470;
this.match(SqlBaseParser.TRANSACTION);
this.state = 479;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.ISOLATION || _la===SqlBaseParser.READ) {
this.state = 471;
this.transactionMode();
this.state = 476;
this._errHandler.sync(this);
_la = this._input.LA(1);
while(_la===SqlBaseParser.T__3) {
this.state = 472;
this.match(SqlBaseParser.T__3);
this.state = 473;
this.transactionMode();
this.state = 478;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
}
break;
case 38:
localctx = new CommitContext(this, localctx);
this.enterOuterAlt(localctx, 38);
this.state = 481;
this.match(SqlBaseParser.COMMIT);
this.state = 483;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.WORK) {
this.state = 482;
this.match(SqlBaseParser.WORK);
}
break;
case 39:
localctx = new RollbackContext(this, localctx);
this.enterOuterAlt(localctx, 39);
this.state = 485;
this.match(SqlBaseParser.ROLLBACK);
this.state = 487;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.WORK) {
this.state = 486;
this.match(SqlBaseParser.WORK);
}
break;
case 40:
localctx = new PrepareContext(this, localctx);
this.enterOuterAlt(localctx, 40);
this.state = 489;
this.match(SqlBaseParser.PREPARE);
this.state = 490;
this.identifier();
this.state = 491;
this.match(SqlBaseParser.FROM);
this.state = 492;
this.statement();
break;
case 41:
localctx = new DeallocateContext(this, localctx);
this.enterOuterAlt(localctx, 41);
this.state = 494;
this.match(SqlBaseParser.DEALLOCATE);
this.state = 495;
this.match(SqlBaseParser.PREPARE);
this.state = 496;
this.identifier();
break;
case 42:
localctx = new ExecuteContext(this, localctx);
this.enterOuterAlt(localctx, 42);
this.state = 497;
this.match(SqlBaseParser.EXECUTE);
this.state = 498;
this.identifier();
this.state = 508;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.USING) {
this.state = 499;
this.match(SqlBaseParser.USING);
this.state = 500;
this.expression();
this.state = 505;
this._errHandler.sync(this);
_la = this._input.LA(1);
while(_la===SqlBaseParser.T__3) {
this.state = 501;
this.match(SqlBaseParser.T__3);
this.state = 502;
this.expression();
this.state = 507;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
}
break;
case 43:
localctx = new DescribeInputContext(this, localctx);
this.enterOuterAlt(localctx, 43);
this.state = 510;
this.match(SqlBaseParser.DESCRIBE);
this.state = 511;
this.match(SqlBaseParser.INPUT);
this.state = 512;
this.identifier();
break;
case 44:
localctx = new DescribeOutputContext(this, localctx);
this.enterOuterAlt(localctx, 44);
this.state = 513;
this.match(SqlBaseParser.DESCRIBE);
this.state = 514;
this.match(SqlBaseParser.OUTPUT);
this.state = 515;
this.identifier();
break;
case 45:
localctx = new SetPathContext(this, localctx);
this.enterOuterAlt(localctx, 45);
this.state = 516;
this.match(SqlBaseParser.SET);
this.state = 517;
this.match(SqlBaseParser.PATH);
this.state = 518;
this.pathSpecification();
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 QueryContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_query;
return this;
}
QueryContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
QueryContext.prototype.constructor = QueryContext;
QueryContext.prototype.queryNoWith = function() {
return this.getTypedRuleContext(QueryNoWithContext,0);
};
QueryContext.prototype.renamedwith = function() {
return this.getTypedRuleContext(RenamedwithContext,0);
};
QueryContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterQuery(this);
}
};
QueryContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitQuery(this);
}
};
SqlBaseParser.QueryContext = QueryContext;
SqlBaseParser.prototype.query = function() {
var localctx = new QueryContext(this, this._ctx, this.state);
this.enterRule(localctx, 8, SqlBaseParser.RULE_query);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 522;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.WITH) {
this.state = 521;
this.renamedwith();
}
this.state = 524;
this.queryNoWith();
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function RenamedwithContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_renamedwith;
return this;
}
RenamedwithContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
RenamedwithContext.prototype.constructor = RenamedwithContext;
RenamedwithContext.prototype.WITH = function() {
return this.getToken(SqlBaseParser.WITH, 0);
};
RenamedwithContext.prototype.namedQuery = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(NamedQueryContext);
} else {
return this.getTypedRuleContext(NamedQueryContext,i);
}
};
RenamedwithContext.prototype.RECURSIVE = function() {
return this.getToken(SqlBaseParser.RECURSIVE, 0);
};
RenamedwithContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterRenamedwith(this);
}
};
RenamedwithContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitRenamedwith(this);
}
};
SqlBaseParser.RenamedwithContext = RenamedwithContext;
SqlBaseParser.prototype.renamedwith = function() {
var localctx = new RenamedwithContext(this, this._ctx, this.state);
this.enterRule(localctx, 10, SqlBaseParser.RULE_renamedwith);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 526;
this.match(SqlBaseParser.WITH);
this.state = 528;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.RECURSIVE) {
this.state = 527;
this.match(SqlBaseParser.RECURSIVE);
}
this.state = 530;
this.namedQuery();
this.state = 535;
this._errHandler.sync(this);
_la = this._input.LA(1);
while(_la===SqlBaseParser.T__3) {
this.state = 531;
this.match(SqlBaseParser.T__3);
this.state = 532;
this.namedQuery();
this.state = 537;
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 TableElementContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_tableElement;
return this;
}
TableElementContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
TableElementContext.prototype.constructor = TableElementContext;
TableElementContext.prototype.columnDefinition = function() {
return this.getTypedRuleContext(ColumnDefinitionContext,0);
};
TableElementContext.prototype.likeClause = function() {
return this.getTypedRuleContext(LikeClauseContext,0);
};
TableElementContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterTableElement(this);
}
};
TableElementContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitTableElement(this);
}
};
SqlBaseParser.TableElementContext = TableElementContext;
SqlBaseParser.prototype.tableElement = function() {
var localctx = new TableElementContext(this, this._ctx, this.state);
this.enterRule(localctx, 12, SqlBaseParser.RULE_tableElement);
try {
this.state = 540;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case SqlBaseParser.ADD:
case SqlBaseParser.ALL:
case SqlBaseParser.ANALYZE:
case SqlBaseParser.ANY:
case SqlBaseParser.ARRAY:
case SqlBaseParser.ASC:
case SqlBaseParser.AT:
case SqlBaseParser.BERNOULLI:
case SqlBaseParser.CALL:
case SqlBaseParser.CASCADE:
case SqlBaseParser.CATALOGS:
case SqlBaseParser.COLUMN:
case SqlBaseParser.COLUMNS:
case SqlBaseParser.COMMENT:
case SqlBaseParser.COMMIT:
case SqlBaseParser.COMMITTED:
case SqlBaseParser.CURRENT:
case SqlBaseParser.DATA:
case SqlBaseParser.DATE:
case SqlBaseParser.DAY:
case SqlBaseParser.DESC:
case SqlBaseParser.DISTRIBUTED:
case SqlBaseParser.EXCLUDING:
case SqlBaseParser.EXPLAIN:
case SqlBaseParser.FILTER:
case SqlBaseParser.FIRST:
case SqlBaseParser.FOLLOWING:
case SqlBaseParser.FORMAT:
case SqlBaseParser.FUNCTIONS:
case SqlBaseParser.GRANT:
case SqlBaseParser.GRANTS:
case SqlBaseParser.GRAPHVIZ:
case SqlBaseParser.HOUR:
case SqlBaseParser.IF:
case SqlBaseParser.INCLUDING:
case SqlBaseParser.INPUT:
case SqlBaseParser.INTERVAL:
case SqlBaseParser.IO:
case SqlBaseParser.ISOLATION:
case SqlBaseParser.JSON:
case SqlBaseParser.LAST:
case SqlBaseParser.LATERAL:
case SqlBaseParser.LEVEL:
case SqlBaseParser.LIMIT:
case SqlBaseParser.LOGICAL:
case SqlBaseParser.MAP:
case SqlBaseParser.MINUTE:
case SqlBaseParser.MONTH:
case SqlBaseParser.NFC:
case SqlBaseParser.NFD:
case SqlBaseParser.NFKC:
case SqlBaseParser.NFKD:
case SqlBaseParser.NO:
case SqlBaseParser.NULLIF:
case SqlBaseParser.NULLS:
case SqlBaseParser.ONLY:
case SqlBaseParser.OPTION:
case SqlBaseParser.ORDINALITY:
case SqlBaseParser.OUTPUT:
case SqlBaseParser.OVER:
case SqlBaseParser.PARTITION:
case SqlBaseParser.PARTITIONS:
case SqlBaseParser.PATH:
case SqlBaseParser.POSITION:
case SqlBaseParser.PRECEDING:
case SqlBaseParser.PRIVILEGES:
case SqlBaseParser.PROPERTIES:
case SqlBaseParser.PUBLIC:
case SqlBaseParser.RANGE:
case SqlBaseParser.READ:
case SqlBaseParser.RENAME:
case SqlBaseParser.REPEATABLE:
case SqlBaseParser.REPLACE:
case SqlBaseParser.RESET:
case SqlBaseParser.RESTRICT:
case SqlBaseParser.REVOKE:
case SqlBaseParser.ROLLBACK:
case SqlBaseParser.ROW:
case SqlBaseParser.ROWS:
case SqlBaseParser.SCHEMA:
case SqlBaseParser.SCHEMAS:
case SqlBaseParser.SECOND:
case SqlBaseParser.SERIALIZABLE:
case SqlBaseParser.SESSION:
case SqlBaseParser.SET:
case SqlBaseParser.SETS:
case SqlBaseParser.SHOW:
case SqlBaseParser.SOME:
case SqlBaseParser.START:
case SqlBaseParser.STATS:
case SqlBaseParser.SUBSTRING:
case SqlBaseParser.SYSTEM:
case SqlBaseParser.TABLES:
case SqlBaseParser.TABLESAMPLE:
case SqlBaseParser.TEXT:
case SqlBaseParser.TIME:
case SqlBaseParser.TIMESTAMP:
case SqlBaseParser.TO:
case SqlBaseParser.TRANSACTION:
case SqlBaseParser.TRY_CAST:
case SqlBaseParser.TYPE:
case SqlBaseParser.UNBOUNDED:
case SqlBaseParser.UNCOMMITTED:
case SqlBaseParser.USE:
case SqlBaseParser.VALIDATE:
case SqlBaseParser.VERBOSE:
case SqlBaseParser.VIEW:
case SqlBaseParser.WORK:
case SqlBaseParser.WRITE:
case SqlBaseParser.YEAR:
case SqlBaseParser.ZONE:
case SqlBaseParser.IDENTIFIER:
case SqlBaseParser.DIGIT_IDENTIFIER:
case SqlBaseParser.QUOTED_IDENTIFIER:
case SqlBaseParser.BACKQUOTED_IDENTIFIER:
this.enterOuterAlt(localctx, 1);
this.state = 538;
this.columnDefinition();
break;
case SqlBaseParser.LIKE:
this.enterOuterAlt(localctx, 2);
this.state = 539;
this.likeClause();
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 ColumnDefinitionContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_columnDefinition;
return this;
}
ColumnDefinitionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
ColumnDefinitionContext.prototype.constructor = ColumnDefinitionContext;
ColumnDefinitionContext.prototype.identifier = function() {
return this.getTypedRuleContext(IdentifierContext,0);
};
ColumnDefinitionContext.prototype.type = function() {
return this.getTypedRuleContext(TypeContext,0);
};
ColumnDefinitionContext.prototype.COMMENT = function() {
return this.getToken(SqlBaseParser.COMMENT, 0);
};
ColumnDefinitionContext.prototype.string = function() {
return this.getTypedRuleContext(StringContext,0);
};
ColumnDefinitionContext.prototype.WITH = function() {
return this.getToken(SqlBaseParser.WITH, 0);
};
ColumnDefinitionContext.prototype.properties = function() {
return this.getTypedRuleContext(PropertiesContext,0);
};
ColumnDefinitionContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterColumnDefinition(this);
}
};
ColumnDefinitionContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitColumnDefinition(this);
}
};
SqlBaseParser.ColumnDefinitionContext = ColumnDefinitionContext;
SqlBaseParser.prototype.columnDefinition = function() {
var localctx = new ColumnDefinitionContext(this, this._ctx, this.state);
this.enterRule(localctx, 14, SqlBaseParser.RULE_columnDefinition);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 542;
this.identifier();
this.state = 543;
this.type(0);
this.state = 546;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.COMMENT) {
this.state = 544;
this.match(SqlBaseParser.COMMENT);
this.state = 545;
this.string();
}
this.state = 550;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.WITH) {
this.state = 548;
this.match(SqlBaseParser.WITH);
this.state = 549;
this.properties();
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function LikeClauseContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_likeClause;
this.optionType = null; // Token
return this;
}
LikeClauseContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
LikeClauseContext.prototype.constructor = LikeClauseContext;
LikeClauseContext.prototype.LIKE = function() {
return this.getToken(SqlBaseParser.LIKE, 0);
};
LikeClauseContext.prototype.qualifiedName = function() {
return this.getTypedRuleContext(QualifiedNameContext,0);
};
LikeClauseContext.prototype.PROPERTIES = function() {
return this.getToken(SqlBaseParser.PROPERTIES, 0);
};
LikeClauseContext.prototype.INCLUDING = function() {
return this.getToken(SqlBaseParser.INCLUDING, 0);
};
LikeClauseContext.prototype.EXCLUDING = function() {
return this.getToken(SqlBaseParser.EXCLUDING, 0);
};
LikeClauseContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterLikeClause(this);
}
};
LikeClauseContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitLikeClause(this);
}
};
SqlBaseParser.LikeClauseContext = LikeClauseContext;
SqlBaseParser.prototype.likeClause = function() {
var localctx = new LikeClauseContext(this, this._ctx, this.state);
this.enterRule(localctx, 16, SqlBaseParser.RULE_likeClause);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 552;
this.match(SqlBaseParser.LIKE);
this.state = 553;
this.qualifiedName();
this.state = 556;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.EXCLUDING || _la===SqlBaseParser.INCLUDING) {
this.state = 554;
localctx.optionType = this._input.LT(1);
_la = this._input.LA(1);
if(!(_la===SqlBaseParser.EXCLUDING || _la===SqlBaseParser.INCLUDING)) {
localctx.optionType = this._errHandler.recoverInline(this);
}
else {
this._errHandler.reportMatch(this);
this.consume();
}
this.state = 555;
this.match(SqlBaseParser.PROPERTIES);
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function PropertiesContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_properties;
return this;
}
PropertiesContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
PropertiesContext.prototype.constructor = PropertiesContext;
PropertiesContext.prototype.property = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(PropertyContext);
} else {
return this.getTypedRuleContext(PropertyContext,i);
}
};
PropertiesContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterProperties(this);
}
};
PropertiesContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitProperties(this);
}
};
SqlBaseParser.PropertiesContext = PropertiesContext;
SqlBaseParser.prototype.properties = function() {
var localctx = new PropertiesContext(this, this._ctx, this.state);
this.enterRule(localctx, 18, SqlBaseParser.RULE_properties);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 558;
this.match(SqlBaseParser.T__1);
this.state = 559;
this.property();
this.state = 564;
this._errHandler.sync(this);
_la = this._input.LA(1);
while(_la===SqlBaseParser.T__3) {
this.state = 560;
this.match(SqlBaseParser.T__3);
this.state = 561;
this.property();
this.state = 566;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
this.state = 567;
this.match(SqlBaseParser.T__2);
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function PropertyContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_property;
return this;
}
PropertyContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
PropertyContext.prototype.constructor = PropertyContext;
PropertyContext.prototype.identifier = function() {
return this.getTypedRuleContext(IdentifierContext,0);
};
PropertyContext.prototype.EQ = function() {
return this.getToken(SqlBaseParser.EQ, 0);
};
PropertyContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
PropertyContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterProperty(this);
}
};
PropertyContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitProperty(this);
}
};
SqlBaseParser.PropertyContext = PropertyContext;
SqlBaseParser.prototype.property = function() {
var localctx = new PropertyContext(this, this._ctx, this.state);
this.enterRule(localctx, 20, SqlBaseParser.RULE_property);
try {
this.enterOuterAlt(localctx, 1);
this.state = 569;
this.identifier();
this.state = 570;
this.match(SqlBaseParser.EQ);
this.state = 571;
this.expression();
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function QueryNoWithContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_queryNoWith;
this.limit = null; // Token
return this;
}
QueryNoWithContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
QueryNoWithContext.prototype.constructor = QueryNoWithContext;
QueryNoWithContext.prototype.queryTerm = function() {
return this.getTypedRuleContext(QueryTermContext,0);
};
QueryNoWithContext.prototype.ORDER = function() {
return this.getToken(SqlBaseParser.ORDER, 0);
};
QueryNoWithContext.prototype.BY = function() {
return this.getToken(SqlBaseParser.BY, 0);
};
QueryNoWithContext.prototype.sortItem = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(SortItemContext);
} else {
return this.getTypedRuleContext(SortItemContext,i);
}
};
QueryNoWithContext.prototype.LIMIT = function() {
return this.getToken(SqlBaseParser.LIMIT, 0);
};
QueryNoWithContext.prototype.INTEGER_VALUE = function() {
return this.getToken(SqlBaseParser.INTEGER_VALUE, 0);
};
QueryNoWithContext.prototype.ALL = function() {
return this.getToken(SqlBaseParser.ALL, 0);
};
QueryNoWithContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterQueryNoWith(this);
}
};
QueryNoWithContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitQueryNoWith(this);
}
};
SqlBaseParser.QueryNoWithContext = QueryNoWithContext;
SqlBaseParser.prototype.queryNoWith = function() {
var localctx = new QueryNoWithContext(this, this._ctx, this.state);
this.enterRule(localctx, 22, SqlBaseParser.RULE_queryNoWith);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 573;
this.queryTerm(0);
this.state = 584;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.ORDER) {
this.state = 574;
this.match(SqlBaseParser.ORDER);
this.state = 575;
this.match(SqlBaseParser.BY);
this.state = 576;
this.sortItem();
this.state = 581;
this._errHandler.sync(this);
_la = this._input.LA(1);
while(_la===SqlBaseParser.T__3) {
this.state = 577;
this.match(SqlBaseParser.T__3);
this.state = 578;
this.sortItem();
this.state = 583;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
}
this.state = 588;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.LIMIT) {
this.state = 586;
this.match(SqlBaseParser.LIMIT);
this.state = 587;
localctx.limit = this._input.LT(1);
_la = this._input.LA(1);
if(!(_la===SqlBaseParser.ALL || _la===SqlBaseParser.INTEGER_VALUE)) {
localctx.limit = 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 QueryTermContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_queryTerm;
return this;
}
QueryTermContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
QueryTermContext.prototype.constructor = QueryTermContext;
QueryTermContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function QueryTermDefaultContext(parser, ctx) {
QueryTermContext.call(this, parser);
QueryTermContext.prototype.copyFrom.call(this, ctx);
return this;
}
QueryTermDefaultContext.prototype = Object.create(QueryTermContext.prototype);
QueryTermDefaultContext.prototype.constructor = QueryTermDefaultContext;
SqlBaseParser.QueryTermDefaultContext = QueryTermDefaultContext;
QueryTermDefaultContext.prototype.queryPrimary = function() {
return this.getTypedRuleContext(QueryPrimaryContext,0);
};
QueryTermDefaultContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterQueryTermDefault(this);
}
};
QueryTermDefaultContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitQueryTermDefault(this);
}
};
function SetOperationContext(parser, ctx) {
QueryTermContext.call(this, parser);
this.left = null; // QueryTermContext;
this.operator = null; // Token;
this.right = null; // QueryTermContext;
QueryTermContext.prototype.copyFrom.call(this, ctx);
return this;
}
SetOperationContext.prototype = Object.create(QueryTermContext.prototype);
SetOperationContext.prototype.constructor = SetOperationContext;
SqlBaseParser.SetOperationContext = SetOperationContext;
SetOperationContext.prototype.queryTerm = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(QueryTermContext);
} else {
return this.getTypedRuleContext(QueryTermContext,i);
}
};
SetOperationContext.prototype.INTERSECT = function() {
return this.getToken(SqlBaseParser.INTERSECT, 0);
};
SetOperationContext.prototype.setQuantifier = function() {
return this.getTypedRuleContext(SetQuantifierContext,0);
};
SetOperationContext.prototype.UNION = function() {
return this.getToken(SqlBaseParser.UNION, 0);
};
SetOperationContext.prototype.EXCEPT = function() {
return this.getToken(SqlBaseParser.EXCEPT, 0);
};
SetOperationContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterSetOperation(this);
}
};
SetOperationContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitSetOperation(this);
}
};
SqlBaseParser.prototype.queryTerm = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new QueryTermContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 24;
this.enterRecursionRule(localctx, 24, SqlBaseParser.RULE_queryTerm, _p);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
localctx = new QueryTermDefaultContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 591;
this.queryPrimary();
this._ctx.stop = this._input.LT(-1);
this.state = 607;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,64,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 = 605;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,63,this._ctx);
switch(la_) {
case 1:
localctx = new SetOperationContext(this, new QueryTermContext(this, _parentctx, _parentState));
localctx.left = _prevctx;
this.pushNewRecursionContext(localctx, _startState, SqlBaseParser.RULE_queryTerm);
this.state = 593;
if (!( this.precpred(this._ctx, 2))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 2)");
}
this.state = 594;
localctx.operator = this.match(SqlBaseParser.INTERSECT);
this.state = 596;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.ALL || _la===SqlBaseParser.DISTINCT) {
this.state = 595;
this.setQuantifier();
}
this.state = 598;
localctx.right = this.queryTerm(3);
break;
case 2:
localctx = new SetOperationContext(this, new QueryTermContext(this, _parentctx, _parentState));
localctx.left = _prevctx;
this.pushNewRecursionContext(localctx, _startState, SqlBaseParser.RULE_queryTerm);
this.state = 599;
if (!( this.precpred(this._ctx, 1))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
}
this.state = 600;
localctx.operator = this._input.LT(1);
_la = this._input.LA(1);
if(!(_la===SqlBaseParser.EXCEPT || _la===SqlBaseParser.UNION)) {
localctx.operator = this._errHandler.recoverInline(this);
}
else {
this._errHandler.reportMatch(this);
this.consume();
}
this.state = 602;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.ALL || _la===SqlBaseParser.DISTINCT) {
this.state = 601;
this.setQuantifier();
}
this.state = 604;
localctx.right = this.queryTerm(2);
break;
}
}
this.state = 609;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,64,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 QueryPrimaryContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_queryPrimary;
return this;
}
QueryPrimaryContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
QueryPrimaryContext.prototype.constructor = QueryPrimaryContext;
QueryPrimaryContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function SubqueryContext(parser, ctx) {
QueryPrimaryContext.call(this, parser);
QueryPrimaryContext.prototype.copyFrom.call(this, ctx);
return this;
}
SubqueryContext.prototype = Object.create(QueryPrimaryContext.prototype);
SubqueryContext.prototype.constructor = SubqueryContext;
SqlBaseParser.SubqueryContext = SubqueryContext;
SubqueryContext.prototype.queryNoWith = function() {
return this.getTypedRuleContext(QueryNoWithContext,0);
};
SubqueryContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterSubquery(this);
}
};
SubqueryContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitSubquery(this);
}
};
function QueryPrimaryDefaultContext(parser, ctx) {
QueryPrimaryContext.call(this, parser);
QueryPrimaryContext.prototype.copyFrom.call(this, ctx);
return this;
}
QueryPrimaryDefaultContext.prototype = Object.create(QueryPrimaryContext.prototype);
QueryPrimaryDefaultContext.prototype.constructor = QueryPrimaryDefaultContext;
SqlBaseParser.QueryPrimaryDefaultContext = QueryPrimaryDefaultContext;
QueryPrimaryDefaultContext.prototype.querySpecification = function() {
return this.getTypedRuleContext(QuerySpecificationContext,0);
};
QueryPrimaryDefaultContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterQueryPrimaryDefault(this);
}
};
QueryPrimaryDefaultContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitQueryPrimaryDefault(this);
}
};
function TableContext(parser, ctx) {
QueryPrimaryContext.call(this, parser);
QueryPrimaryContext.prototype.copyFrom.call(this, ctx);
return this;
}
TableContext.prototype = Object.create(QueryPrimaryContext.prototype);
TableContext.prototype.constructor = TableContext;
SqlBaseParser.TableContext = TableContext;
TableContext.prototype.TABLE = function() {
return this.getToken(SqlBaseParser.TABLE, 0);
};
TableContext.prototype.qualifiedName = function() {
return this.getTypedRuleContext(QualifiedNameContext,0);
};
TableContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterTable(this);
}
};
TableContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitTable(this);
}
};
function InlineTableContext(parser, ctx) {
QueryPrimaryContext.call(this, parser);
QueryPrimaryContext.prototype.copyFrom.call(this, ctx);
return this;
}
InlineTableContext.prototype = Object.create(QueryPrimaryContext.prototype);
InlineTableContext.prototype.constructor = InlineTableContext;
SqlBaseParser.InlineTableContext = InlineTableContext;
InlineTableContext.prototype.VALUES = function() {
return this.getToken(SqlBaseParser.VALUES, 0);
};
InlineTableContext.prototype.expression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ExpressionContext);
} else {
return this.getTypedRuleContext(ExpressionContext,i);
}
};
InlineTableContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterInlineTable(this);
}
};
InlineTableContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitInlineTable(this);
}
};
SqlBaseParser.QueryPrimaryContext = QueryPrimaryContext;
SqlBaseParser.prototype.queryPrimary = function() {
var localctx = new QueryPrimaryContext(this, this._ctx, this.state);
this.enterRule(localctx, 26, SqlBaseParser.RULE_queryPrimary);
try {
this.state = 626;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case SqlBaseParser.SELECT:
localctx = new QueryPrimaryDefaultContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 610;
this.querySpecification();
break;
case SqlBaseParser.TABLE:
localctx = new TableContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 611;
this.match(SqlBaseParser.TABLE);
this.state = 612;
this.qualifiedName();
break;
case SqlBaseParser.VALUES:
localctx = new InlineTableContext(this, localctx);
this.enterOuterAlt(localctx, 3);
this.state = 613;
this.match(SqlBaseParser.VALUES);
this.state = 614;
this.expression();
this.state = 619;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,65,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
this.state = 615;
this.match(SqlBaseParser.T__3);
this.state = 616;
this.expression();
}
this.state = 621;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,65,this._ctx);
}
break;
case SqlBaseParser.T__1:
localctx = new SubqueryContext(this, localctx);
this.enterOuterAlt(localctx, 4);
this.state = 622;
this.match(SqlBaseParser.T__1);
this.state = 623;
this.queryNoWith();
this.state = 624;
this.match(SqlBaseParser.T__2);
break;
default:
throw new antlr4.error.NoViableAltException(this);
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function SortItemContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_sortItem;
this.ordering = null; // Token
this.nullOrdering = null; // Token
return this;
}
SortItemContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
SortItemContext.prototype.constructor = SortItemContext;
SortItemContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
SortItemContext.prototype.NULLS = function() {
return this.getToken(SqlBaseParser.NULLS, 0);
};
SortItemContext.prototype.ASC = function() {
return this.getToken(SqlBaseParser.ASC, 0);
};
SortItemContext.prototype.DESC = function() {
return this.getToken(SqlBaseParser.DESC, 0);
};
SortItemContext.prototype.FIRST = function() {
return this.getToken(SqlBaseParser.FIRST, 0);
};
SortItemContext.prototype.LAST = function() {
return this.getToken(SqlBaseParser.LAST, 0);
};
SortItemContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterSortItem(this);
}
};
SortItemContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitSortItem(this);
}
};
SqlBaseParser.SortItemContext = SortItemContext;
SqlBaseParser.prototype.sortItem = function() {
var localctx = new SortItemContext(this, this._ctx, this.state);
this.enterRule(localctx, 28, SqlBaseParser.RULE_sortItem);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 628;
this.expression();
this.state = 630;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.ASC || _la===SqlBaseParser.DESC) {
this.state = 629;
localctx.ordering = this._input.LT(1);
_la = this._input.LA(1);
if(!(_la===SqlBaseParser.ASC || _la===SqlBaseParser.DESC)) {
localctx.ordering = this._errHandler.recoverInline(this);
}
else {
this._errHandler.reportMatch(this);
this.consume();
}
}
this.state = 634;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.NULLS) {
this.state = 632;
this.match(SqlBaseParser.NULLS);
this.state = 633;
localctx.nullOrdering = this._input.LT(1);
_la = this._input.LA(1);
if(!(_la===SqlBaseParser.FIRST || _la===SqlBaseParser.LAST)) {
localctx.nullOrdering = 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 QuerySpecificationContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_querySpecification;
this.where = null; // BooleanExpressionContext
this.having = null; // BooleanExpressionContext
return this;
}
QuerySpecificationContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
QuerySpecificationContext.prototype.constructor = QuerySpecificationContext;
QuerySpecificationContext.prototype.SELECT = function() {
return this.getToken(SqlBaseParser.SELECT, 0);
};
QuerySpecificationContext.prototype.selectItem = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(SelectItemContext);
} else {
return this.getTypedRuleContext(SelectItemContext,i);
}
};
QuerySpecificationContext.prototype.setQuantifier = function() {
return this.getTypedRuleContext(SetQuantifierContext,0);
};
QuerySpecificationContext.prototype.FROM = function() {
return this.getToken(SqlBaseParser.FROM, 0);
};
QuerySpecificationContext.prototype.relation = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(RelationContext);
} else {
return this.getTypedRuleContext(RelationContext,i);
}
};
QuerySpecificationContext.prototype.WHERE = function() {
return this.getToken(SqlBaseParser.WHERE, 0);
};
QuerySpecificationContext.prototype.GROUP = function() {
return this.getToken(SqlBaseParser.GROUP, 0);
};
QuerySpecificationContext.prototype.BY = function() {
return this.getToken(SqlBaseParser.BY, 0);
};
QuerySpecificationContext.prototype.groupBy = function() {
return this.getTypedRuleContext(GroupByContext,0);
};
QuerySpecificationContext.prototype.HAVING = function() {
return this.getToken(SqlBaseParser.HAVING, 0);
};
QuerySpecificationContext.prototype.booleanExpression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(BooleanExpressionContext);
} else {
return this.getTypedRuleContext(BooleanExpressionContext,i);
}
};
QuerySpecificationContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterQuerySpecification(this);
}
};
QuerySpecificationContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitQuerySpecification(this);
}
};
SqlBaseParser.QuerySpecificationContext = QuerySpecificationContext;
SqlBaseParser.prototype.querySpecification = function() {
var localctx = new QuerySpecificationContext(this, this._ctx, this.state);
this.enterRule(localctx, 30, SqlBaseParser.RULE_querySpecification);
try {
this.enterOuterAlt(localctx, 1);
this.state = 636;
this.match(SqlBaseParser.SELECT);
this.state = 638;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,69,this._ctx);
if(la_===1) {
this.state = 637;
this.setQuantifier();
}
this.state = 640;
this.selectItem();
this.state = 645;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,70,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
this.state = 641;
this.match(SqlBaseParser.T__3);
this.state = 642;
this.selectItem();
}
this.state = 647;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,70,this._ctx);
}
this.state = 657;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,72,this._ctx);
if(la_===1) {
this.state = 648;
this.match(SqlBaseParser.FROM);
this.state = 649;
this.relation(0);
this.state = 654;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,71,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
this.state = 650;
this.match(SqlBaseParser.T__3);
this.state = 651;
this.relation(0);
}
this.state = 656;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,71,this._ctx);
}
}
this.state = 661;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,73,this._ctx);
if(la_===1) {
this.state = 659;
this.match(SqlBaseParser.WHERE);
this.state = 660;
localctx.where = this.booleanExpression(0);
}
this.state = 666;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,74,this._ctx);
if(la_===1) {
this.state = 663;
this.match(SqlBaseParser.GROUP);
this.state = 664;
this.match(SqlBaseParser.BY);
this.state = 665;
this.groupBy();
}
this.state = 670;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,75,this._ctx);
if(la_===1) {
this.state = 668;
this.match(SqlBaseParser.HAVING);
this.state = 669;
localctx.having = this.booleanExpression(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 GroupByContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_groupBy;
return this;
}
GroupByContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
GroupByContext.prototype.constructor = GroupByContext;
GroupByContext.prototype.groupingElement = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(GroupingElementContext);
} else {
return this.getTypedRuleContext(GroupingElementContext,i);
}
};
GroupByContext.prototype.setQuantifier = function() {
return this.getTypedRuleContext(SetQuantifierContext,0);
};
GroupByContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterGroupBy(this);
}
};
GroupByContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitGroupBy(this);
}
};
SqlBaseParser.GroupByContext = GroupByContext;
SqlBaseParser.prototype.groupBy = function() {
var localctx = new GroupByContext(this, this._ctx, this.state);
this.enterRule(localctx, 32, SqlBaseParser.RULE_groupBy);
try {
this.enterOuterAlt(localctx, 1);
this.state = 673;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,76,this._ctx);
if(la_===1) {
this.state = 672;
this.setQuantifier();
}
this.state = 675;
this.groupingElement();
this.state = 680;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,77,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
this.state = 676;
this.match(SqlBaseParser.T__3);
this.state = 677;
this.groupingElement();
}
this.state = 682;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,77,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 GroupingElementContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_groupingElement;
return this;
}
GroupingElementContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
GroupingElementContext.prototype.constructor = GroupingElementContext;
GroupingElementContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function MultipleGroupingSetsContext(parser, ctx) {
GroupingElementContext.call(this, parser);
GroupingElementContext.prototype.copyFrom.call(this, ctx);
return this;
}
MultipleGroupingSetsContext.prototype = Object.create(GroupingElementContext.prototype);
MultipleGroupingSetsContext.prototype.constructor = MultipleGroupingSetsContext;
SqlBaseParser.MultipleGroupingSetsContext = MultipleGroupingSetsContext;
MultipleGroupingSetsContext.prototype.GROUPING = function() {
return this.getToken(SqlBaseParser.GROUPING, 0);
};
MultipleGroupingSetsContext.prototype.SETS = function() {
return this.getToken(SqlBaseParser.SETS, 0);
};
MultipleGroupingSetsContext.prototype.groupingSet = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(GroupingSetContext);
} else {
return this.getTypedRuleContext(GroupingSetContext,i);
}
};
MultipleGroupingSetsContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterMultipleGroupingSets(this);
}
};
MultipleGroupingSetsContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitMultipleGroupingSets(this);
}
};
function SingleGroupingSetContext(parser, ctx) {
GroupingElementContext.call(this, parser);
GroupingElementContext.prototype.copyFrom.call(this, ctx);
return this;
}
SingleGroupingSetContext.prototype = Object.create(GroupingElementContext.prototype);
SingleGroupingSetContext.prototype.constructor = SingleGroupingSetContext;
SqlBaseParser.SingleGroupingSetContext = SingleGroupingSetContext;
SingleGroupingSetContext.prototype.groupingSet = function() {
return this.getTypedRuleContext(GroupingSetContext,0);
};
SingleGroupingSetContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterSingleGroupingSet(this);
}
};
SingleGroupingSetContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitSingleGroupingSet(this);
}
};
function CubeContext(parser, ctx) {
GroupingElementContext.call(this, parser);
GroupingElementContext.prototype.copyFrom.call(this, ctx);
return this;
}
CubeContext.prototype = Object.create(GroupingElementContext.prototype);
CubeContext.prototype.constructor = CubeContext;
SqlBaseParser.CubeContext = CubeContext;
CubeContext.prototype.CUBE = function() {
return this.getToken(SqlBaseParser.CUBE, 0);
};
CubeContext.prototype.expression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ExpressionContext);
} else {
return this.getTypedRuleContext(ExpressionContext,i);
}
};
CubeContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterCube(this);
}
};
CubeContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitCube(this);
}
};
function RollupContext(parser, ctx) {
GroupingElementContext.call(this, parser);
GroupingElementContext.prototype.copyFrom.call(this, ctx);
return this;
}
RollupContext.prototype = Object.create(GroupingElementContext.prototype);
RollupContext.prototype.constructor = RollupContext;
SqlBaseParser.RollupContext = RollupContext;
RollupContext.prototype.ROLLUP = function() {
return this.getToken(SqlBaseParser.ROLLUP, 0);
};
RollupContext.prototype.expression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ExpressionContext);
} else {
return this.getTypedRuleContext(ExpressionContext,i);
}
};
RollupContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterRollup(this);
}
};
RollupContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitRollup(this);
}
};
SqlBaseParser.GroupingElementContext = GroupingElementContext;
SqlBaseParser.prototype.groupingElement = function() {
var localctx = new GroupingElementContext(this, this._ctx, this.state);
this.enterRule(localctx, 34, SqlBaseParser.RULE_groupingElement);
var _la = 0; // Token type
try {
this.state = 723;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,83,this._ctx);
switch(la_) {
case 1:
localctx = new SingleGroupingSetContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 683;
this.groupingSet();
break;
case 2:
localctx = new RollupContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 684;
this.match(SqlBaseParser.ROLLUP);
this.state = 685;
this.match(SqlBaseParser.T__1);
this.state = 694;
this._errHandler.sync(this);
_la = this._input.LA(1);
if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << SqlBaseParser.T__1) | (1 << SqlBaseParser.T__4) | (1 << SqlBaseParser.ADD) | (1 << SqlBaseParser.ALL) | (1 << SqlBaseParser.ANALYZE) | (1 << SqlBaseParser.ANY) | (1 << SqlBaseParser.ARRAY) | (1 << SqlBaseParser.ASC) | (1 << SqlBaseParser.AT) | (1 << SqlBaseParser.BERNOULLI) | (1 << SqlBaseParser.CALL) | (1 << SqlBaseParser.CASCADE) | (1 << SqlBaseParser.CASE) | (1 << SqlBaseParser.CAST) | (1 << SqlBaseParser.CATALOGS) | (1 << SqlBaseParser.COLUMN) | (1 << SqlBaseParser.COLUMNS) | (1 << SqlBaseParser.COMMENT) | (1 << SqlBaseParser.COMMIT))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (SqlBaseParser.COMMITTED - 32)) | (1 << (SqlBaseParser.CURRENT - 32)) | (1 << (SqlBaseParser.CURRENT_DATE - 32)) | (1 << (SqlBaseParser.CURRENT_PATH - 32)) | (1 << (SqlBaseParser.CURRENT_TIME - 32)) | (1 << (SqlBaseParser.CURRENT_TIMESTAMP - 32)) | (1 << (SqlBaseParser.CURRENT_USER - 32)) | (1 << (SqlBaseParser.DATA - 32)) | (1 << (SqlBaseParser.DATE - 32)) | (1 << (SqlBaseParser.DAY - 32)) | (1 << (SqlBaseParser.DESC - 32)) | (1 << (SqlBaseParser.DISTRIBUTED - 32)) | (1 << (SqlBaseParser.EXCLUDING - 32)) | (1 << (SqlBaseParser.EXISTS - 32)) | (1 << (SqlBaseParser.EXPLAIN - 32)) | (1 << (SqlBaseParser.EXTRACT - 32)) | (1 << (SqlBaseParser.FALSE - 32)) | (1 << (SqlBaseParser.FILTER - 32)))) !== 0) || ((((_la - 64)) & ~0x1f) == 0 && ((1 << (_la - 64)) & ((1 << (SqlBaseParser.FIRST - 64)) | (1 << (SqlBaseParser.FOLLOWING - 64)) | (1 << (SqlBaseParser.FORMAT - 64)) | (1 << (SqlBaseParser.FUNCTIONS - 64)) | (1 << (SqlBaseParser.GRANT - 64)) | (1 << (SqlBaseParser.GRANTS - 64)) | (1 << (SqlBaseParser.GRAPHVIZ - 64)) | (1 << (SqlBaseParser.GROUPING - 64)) | (1 << (SqlBaseParser.HOUR - 64)) | (1 << (SqlBaseParser.IF - 64)) | (1 << (SqlBaseParser.INCLUDING - 64)) | (1 << (SqlBaseParser.INPUT - 64)) | (1 << (SqlBaseParser.INTERVAL - 64)) | (1 << (SqlBaseParser.IO - 64)) | (1 << (SqlBaseParser.ISOLATION - 64)) | (1 << (SqlBaseParser.JSON - 64)) | (1 << (SqlBaseParser.LAST - 64)) | (1 << (SqlBaseParser.LATERAL - 64)) | (1 << (SqlBaseParser.LEVEL - 64)))) !== 0) || ((((_la - 97)) & ~0x1f) == 0 && ((1 << (_la - 97)) & ((1 << (SqlBaseParser.LIMIT - 97)) | (1 << (SqlBaseParser.LOCALTIME - 97)) | (1 << (SqlBaseParser.LOCALTIMESTAMP - 97)) | (1 << (SqlBaseParser.LOGICAL - 97)) | (1 << (SqlBaseParser.MAP - 97)) | (1 << (SqlBaseParser.MINUTE - 97)) | (1 << (SqlBaseParser.MONTH - 97)) | (1 << (SqlBaseParser.NFC - 97)) | (1 << (SqlBaseParser.NFD - 97)) | (1 << (SqlBaseParser.NFKC - 97)) | (1 << (SqlBaseParser.NFKD - 97)) | (1 << (SqlBaseParser.NO - 97)) | (1 << (SqlBaseParser.NORMALIZE - 97)) | (1 << (SqlBaseParser.NOT - 97)) | (1 << (SqlBaseParser.NULL - 97)) | (1 << (SqlBaseParser.NULLIF - 97)) | (1 << (SqlBaseParser.NULLS - 97)) | (1 << (SqlBaseParser.ONLY - 97)) | (1 << (SqlBaseParser.OPTION - 97)) | (1 << (SqlBaseParser.ORDINALITY - 97)) | (1 << (SqlBaseParser.OUTPUT - 97)) | (1 << (SqlBaseParser.OVER - 97)) | (1 << (SqlBaseParser.PARTITION - 97)) | (1 << (SqlBaseParser.PARTITIONS - 97)) | (1 << (SqlBaseParser.PATH - 97)) | (1 << (SqlBaseParser.POSITION - 97)) | (1 << (SqlBaseParser.PRECEDING - 97)))) !== 0) || ((((_la - 130)) & ~0x1f) == 0 && ((1 << (_la - 130)) & ((1 << (SqlBaseParser.PRIVILEGES - 130)) | (1 << (SqlBaseParser.PROPERTIES - 130)) | (1 << (SqlBaseParser.PUBLIC - 130)) | (1 << (SqlBaseParser.RANGE - 130)) | (1 << (SqlBaseParser.READ - 130)) | (1 << (SqlBaseParser.RENAME - 130)) | (1 << (SqlBaseParser.REPEATABLE - 130)) | (1 << (SqlBaseParser.REPLACE - 130)) | (1 << (SqlBaseParser.RESET - 130)) | (1 << (SqlBaseParser.RESTRICT - 130)) | (1 << (SqlBaseParser.REVOKE - 130)) | (1 << (SqlBaseParser.ROLLBACK - 130)) | (1 << (SqlBaseParser.ROW - 130)) | (1 << (SqlBaseParser.ROWS - 130)) | (1 << (SqlBaseParser.SCHEMA - 130)) | (1 << (SqlBaseParser.SCHEMAS - 130)) | (1 << (SqlBaseParser.SECOND - 130)) | (1 << (SqlBaseParser.SERIALIZABLE - 130)) | (1 << (SqlBaseParser.SESSION - 130)) | (1 << (SqlBaseParser.SET - 130)) | (1 << (SqlBaseParser.SETS - 130)) | (1 << (SqlBaseParser.SHOW - 130)) | (1 << (SqlBaseParser.SOME - 130)) | (1 << (SqlBaseParser.START - 130)) | (1 << (SqlBaseParser.STATS - 130)) | (1 << (SqlBaseParser.SUBSTRING - 130)) | (1 << (SqlBaseParser.SYSTEM - 130)))) !== 0) || ((((_la - 162)) & ~0x1f) == 0 && ((1 << (_la - 162)) & ((1 << (SqlBaseParser.TABLES - 162)) | (1 << (SqlBaseParser.TABLESAMPLE - 162)) | (1 << (SqlBaseParser.TEXT - 162)) | (1 << (SqlBaseParser.TIME - 162)) | (1 << (SqlBaseParser.TIMESTAMP - 162)) | (1 << (SqlBaseParser.TO - 162)) | (1 << (SqlBaseParser.TRANSACTION - 162)) | (1 << (SqlBaseParser.TRUE - 162)) | (1 << (SqlBaseParser.TRY_CAST - 162)) | (1 << (SqlBaseParser.TYPE - 162)) | (1 << (SqlBaseParser.UNBOUNDED - 162)) | (1 << (SqlBaseParser.UNCOMMITTED - 162)) | (1 << (SqlBaseParser.USE - 162)) | (1 << (SqlBaseParser.VALIDATE - 162)) | (1 << (SqlBaseParser.VERBOSE - 162)) | (1 << (SqlBaseParser.VIEW - 162)) | (1 << (SqlBaseParser.WORK - 162)) | (1 << (SqlBaseParser.WRITE - 162)) | (1 << (SqlBaseParser.YEAR - 162)) | (1 << (SqlBaseParser.ZONE - 162)))) !== 0) || ((((_la - 197)) & ~0x1f) == 0 && ((1 << (_la - 197)) & ((1 << (SqlBaseParser.PLUS - 197)) | (1 << (SqlBaseParser.MINUS - 197)) | (1 << (SqlBaseParser.STRING - 197)) | (1 << (SqlBaseParser.UNICODE_STRING - 197)) | (1 << (SqlBaseParser.BINARY_LITERAL - 197)) | (1 << (SqlBaseParser.INTEGER_VALUE - 197)) | (1 << (SqlBaseParser.DECIMAL_VALUE - 197)) | (1 << (SqlBaseParser.DOUBLE_VALUE - 197)) | (1 << (SqlBaseParser.IDENTIFIER - 197)) | (1 << (SqlBaseParser.DIGIT_IDENTIFIER - 197)) | (1 << (SqlBaseParser.QUOTED_IDENTIFIER - 197)) | (1 << (SqlBaseParser.BACKQUOTED_IDENTIFIER - 197)) | (1 << (SqlBaseParser.DOUBLE_PRECISION - 197)))) !== 0)) {
this.state = 686;
this.expression();
this.state = 691;
this._errHandler.sync(this);
_la = this._input.LA(1);
while(_la===SqlBaseParser.T__3) {
this.state = 687;
this.match(SqlBaseParser.T__3);
this.state = 688;
this.expression();
this.state = 693;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
}
this.state = 696;
this.match(SqlBaseParser.T__2);
break;
case 3:
localctx = new CubeContext(this, localctx);
this.enterOuterAlt(localctx, 3);
this.state = 697;
this.match(SqlBaseParser.CUBE);
this.state = 698;
this.match(SqlBaseParser.T__1);
this.state = 707;
this._errHandler.sync(this);
_la = this._input.LA(1);
if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << SqlBaseParser.T__1) | (1 << SqlBaseParser.T__4) | (1 << SqlBaseParser.ADD) | (1 << SqlBaseParser.ALL) | (1 << SqlBaseParser.ANALYZE) | (1 << SqlBaseParser.ANY) | (1 << SqlBaseParser.ARRAY) | (1 << SqlBaseParser.ASC) | (1 << SqlBaseParser.AT) | (1 << SqlBaseParser.BERNOULLI) | (1 << SqlBaseParser.CALL) | (1 << SqlBaseParser.CASCADE) | (1 << SqlBaseParser.CASE) | (1 << SqlBaseParser.CAST) | (1 << SqlBaseParser.CATALOGS) | (1 << SqlBaseParser.COLUMN) | (1 << SqlBaseParser.COLUMNS) | (1 << SqlBaseParser.COMMENT) | (1 << SqlBaseParser.COMMIT))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (SqlBaseParser.COMMITTED - 32)) | (1 << (SqlBaseParser.CURRENT - 32)) | (1 << (SqlBaseParser.CURRENT_DATE - 32)) | (1 << (SqlBaseParser.CURRENT_PATH - 32)) | (1 << (SqlBaseParser.CURRENT_TIME - 32)) | (1 << (SqlBaseParser.CURRENT_TIMESTAMP - 32)) | (1 << (SqlBaseParser.CURRENT_USER - 32)) | (1 << (SqlBaseParser.DATA - 32)) | (1 << (SqlBaseParser.DATE - 32)) | (1 << (SqlBaseParser.DAY - 32)) | (1 << (SqlBaseParser.DESC - 32)) | (1 << (SqlBaseParser.DISTRIBUTED - 32)) | (1 << (SqlBaseParser.EXCLUDING - 32)) | (1 << (SqlBaseParser.EXISTS - 32)) | (1 << (SqlBaseParser.EXPLAIN - 32)) | (1 << (SqlBaseParser.EXTRACT - 32)) | (1 << (SqlBaseParser.FALSE - 32)) | (1 << (SqlBaseParser.FILTER - 32)))) !== 0) || ((((_la - 64)) & ~0x1f) == 0 && ((1 << (_la - 64)) & ((1 << (SqlBaseParser.FIRST - 64)) | (1 << (SqlBaseParser.FOLLOWING - 64)) | (1 << (SqlBaseParser.FORMAT - 64)) | (1 << (SqlBaseParser.FUNCTIONS - 64)) | (1 << (SqlBaseParser.GRANT - 64)) | (1 << (SqlBaseParser.GRANTS - 64)) | (1 << (SqlBaseParser.GRAPHVIZ - 64)) | (1 << (SqlBaseParser.GROUPING - 64)) | (1 << (SqlBaseParser.HOUR - 64)) | (1 << (SqlBaseParser.IF - 64)) | (1 << (SqlBaseParser.INCLUDING - 64)) | (1 << (SqlBaseParser.INPUT - 64)) | (1 << (SqlBaseParser.INTERVAL - 64)) | (1 << (SqlBaseParser.IO - 64)) | (1 << (SqlBaseParser.ISOLATION - 64)) | (1 << (SqlBaseParser.JSON - 64)) | (1 << (SqlBaseParser.LAST - 64)) | (1 << (SqlBaseParser.LATERAL - 64)) | (1 << (SqlBaseParser.LEVEL - 64)))) !== 0) || ((((_la - 97)) & ~0x1f) == 0 && ((1 << (_la - 97)) & ((1 << (SqlBaseParser.LIMIT - 97)) | (1 << (SqlBaseParser.LOCALTIME - 97)) | (1 << (SqlBaseParser.LOCALTIMESTAMP - 97)) | (1 << (SqlBaseParser.LOGICAL - 97)) | (1 << (SqlBaseParser.MAP - 97)) | (1 << (SqlBaseParser.MINUTE - 97)) | (1 << (SqlBaseParser.MONTH - 97)) | (1 << (SqlBaseParser.NFC - 97)) | (1 << (SqlBaseParser.NFD - 97)) | (1 << (SqlBaseParser.NFKC - 97)) | (1 << (SqlBaseParser.NFKD - 97)) | (1 << (SqlBaseParser.NO - 97)) | (1 << (SqlBaseParser.NORMALIZE - 97)) | (1 << (SqlBaseParser.NOT - 97)) | (1 << (SqlBaseParser.NULL - 97)) | (1 << (SqlBaseParser.NULLIF - 97)) | (1 << (SqlBaseParser.NULLS - 97)) | (1 << (SqlBaseParser.ONLY - 97)) | (1 << (SqlBaseParser.OPTION - 97)) | (1 << (SqlBaseParser.ORDINALITY - 97)) | (1 << (SqlBaseParser.OUTPUT - 97)) | (1 << (SqlBaseParser.OVER - 97)) | (1 << (SqlBaseParser.PARTITION - 97)) | (1 << (SqlBaseParser.PARTITIONS - 97)) | (1 << (SqlBaseParser.PATH - 97)) | (1 << (SqlBaseParser.POSITION - 97)) | (1 << (SqlBaseParser.PRECEDING - 97)))) !== 0) || ((((_la - 130)) & ~0x1f) == 0 && ((1 << (_la - 130)) & ((1 << (SqlBaseParser.PRIVILEGES - 130)) | (1 << (SqlBaseParser.PROPERTIES - 130)) | (1 << (SqlBaseParser.PUBLIC - 130)) | (1 << (SqlBaseParser.RANGE - 130)) | (1 << (SqlBaseParser.READ - 130)) | (1 << (SqlBaseParser.RENAME - 130)) | (1 << (SqlBaseParser.REPEATABLE - 130)) | (1 << (SqlBaseParser.REPLACE - 130)) | (1 << (SqlBaseParser.RESET - 130)) | (1 << (SqlBaseParser.RESTRICT - 130)) | (1 << (SqlBaseParser.REVOKE - 130)) | (1 << (SqlBaseParser.ROLLBACK - 130)) | (1 << (SqlBaseParser.ROW - 130)) | (1 << (SqlBaseParser.ROWS - 130)) | (1 << (SqlBaseParser.SCHEMA - 130)) | (1 << (SqlBaseParser.SCHEMAS - 130)) | (1 << (SqlBaseParser.SECOND - 130)) | (1 << (SqlBaseParser.SERIALIZABLE - 130)) | (1 << (SqlBaseParser.SESSION - 130)) | (1 << (SqlBaseParser.SET - 130)) | (1 << (SqlBaseParser.SETS - 130)) | (1 << (SqlBaseParser.SHOW - 130)) | (1 << (SqlBaseParser.SOME - 130)) | (1 << (SqlBaseParser.START - 130)) | (1 << (SqlBaseParser.STATS - 130)) | (1 << (SqlBaseParser.SUBSTRING - 130)) | (1 << (SqlBaseParser.SYSTEM - 130)))) !== 0) || ((((_la - 162)) & ~0x1f) == 0 && ((1 << (_la - 162)) & ((1 << (SqlBaseParser.TABLES - 162)) | (1 << (SqlBaseParser.TABLESAMPLE - 162)) | (1 << (SqlBaseParser.TEXT - 162)) | (1 << (SqlBaseParser.TIME - 162)) | (1 << (SqlBaseParser.TIMESTAMP - 162)) | (1 << (SqlBaseParser.TO - 162)) | (1 << (SqlBaseParser.TRANSACTION - 162)) | (1 << (SqlBaseParser.TRUE - 162)) | (1 << (SqlBaseParser.TRY_CAST - 162)) | (1 << (SqlBaseParser.TYPE - 162)) | (1 << (SqlBaseParser.UNBOUNDED - 162)) | (1 << (SqlBaseParser.UNCOMMITTED - 162)) | (1 << (SqlBaseParser.USE - 162)) | (1 << (SqlBaseParser.VALIDATE - 162)) | (1 << (SqlBaseParser.VERBOSE - 162)) | (1 << (SqlBaseParser.VIEW - 162)) | (1 << (SqlBaseParser.WORK - 162)) | (1 << (SqlBaseParser.WRITE - 162)) | (1 << (SqlBaseParser.YEAR - 162)) | (1 << (SqlBaseParser.ZONE - 162)))) !== 0) || ((((_la - 197)) & ~0x1f) == 0 && ((1 << (_la - 197)) & ((1 << (SqlBaseParser.PLUS - 197)) | (1 << (SqlBaseParser.MINUS - 197)) | (1 << (SqlBaseParser.STRING - 197)) | (1 << (SqlBaseParser.UNICODE_STRING - 197)) | (1 << (SqlBaseParser.BINARY_LITERAL - 197)) | (1 << (SqlBaseParser.INTEGER_VALUE - 197)) | (1 << (SqlBaseParser.DECIMAL_VALUE - 197)) | (1 << (SqlBaseParser.DOUBLE_VALUE - 197)) | (1 << (SqlBaseParser.IDENTIFIER - 197)) | (1 << (SqlBaseParser.DIGIT_IDENTIFIER - 197)) | (1 << (SqlBaseParser.QUOTED_IDENTIFIER - 197)) | (1 << (SqlBaseParser.BACKQUOTED_IDENTIFIER - 197)) | (1 << (SqlBaseParser.DOUBLE_PRECISION - 197)))) !== 0)) {
this.state = 699;
this.expression();
this.state = 704;
this._errHandler.sync(this);
_la = this._input.LA(1);
while(_la===SqlBaseParser.T__3) {
this.state = 700;
this.match(SqlBaseParser.T__3);
this.state = 701;
this.expression();
this.state = 706;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
}
this.state = 709;
this.match(SqlBaseParser.T__2);
break;
case 4:
localctx = new MultipleGroupingSetsContext(this, localctx);
this.enterOuterAlt(localctx, 4);
this.state = 710;
this.match(SqlBaseParser.GROUPING);
this.state = 711;
this.match(SqlBaseParser.SETS);
this.state = 712;
this.match(SqlBaseParser.T__1);
this.state = 713;
this.groupingSet();
this.state = 718;
this._errHandler.sync(this);
_la = this._input.LA(1);
while(_la===SqlBaseParser.T__3) {
this.state = 714;
this.match(SqlBaseParser.T__3);
this.state = 715;
this.groupingSet();
this.state = 720;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
this.state = 721;
this.match(SqlBaseParser.T__2);
break;
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function GroupingSetContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_groupingSet;
return this;
}
GroupingSetContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
GroupingSetContext.prototype.constructor = GroupingSetContext;
GroupingSetContext.prototype.expression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ExpressionContext);
} else {
return this.getTypedRuleContext(ExpressionContext,i);
}
};
GroupingSetContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterGroupingSet(this);
}
};
GroupingSetContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitGroupingSet(this);
}
};
SqlBaseParser.GroupingSetContext = GroupingSetContext;
SqlBaseParser.prototype.groupingSet = function() {
var localctx = new GroupingSetContext(this, this._ctx, this.state);
this.enterRule(localctx, 36, SqlBaseParser.RULE_groupingSet);
var _la = 0; // Token type
try {
this.state = 738;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,86,this._ctx);
switch(la_) {
case 1:
this.enterOuterAlt(localctx, 1);
this.state = 725;
this.match(SqlBaseParser.T__1);
this.state = 734;
this._errHandler.sync(this);
_la = this._input.LA(1);
if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << SqlBaseParser.T__1) | (1 << SqlBaseParser.T__4) | (1 << SqlBaseParser.ADD) | (1 << SqlBaseParser.ALL) | (1 << SqlBaseParser.ANALYZE) | (1 << SqlBaseParser.ANY) | (1 << SqlBaseParser.ARRAY) | (1 << SqlBaseParser.ASC) | (1 << SqlBaseParser.AT) | (1 << SqlBaseParser.BERNOULLI) | (1 << SqlBaseParser.CALL) | (1 << SqlBaseParser.CASCADE) | (1 << SqlBaseParser.CASE) | (1 << SqlBaseParser.CAST) | (1 << SqlBaseParser.CATALOGS) | (1 << SqlBaseParser.COLUMN) | (1 << SqlBaseParser.COLUMNS) | (1 << SqlBaseParser.COMMENT) | (1 << SqlBaseParser.COMMIT))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (SqlBaseParser.COMMITTED - 32)) | (1 << (SqlBaseParser.CURRENT - 32)) | (1 << (SqlBaseParser.CURRENT_DATE - 32)) | (1 << (SqlBaseParser.CURRENT_PATH - 32)) | (1 << (SqlBaseParser.CURRENT_TIME - 32)) | (1 << (SqlBaseParser.CURRENT_TIMESTAMP - 32)) | (1 << (SqlBaseParser.CURRENT_USER - 32)) | (1 << (SqlBaseParser.DATA - 32)) | (1 << (SqlBaseParser.DATE - 32)) | (1 << (SqlBaseParser.DAY - 32)) | (1 << (SqlBaseParser.DESC - 32)) | (1 << (SqlBaseParser.DISTRIBUTED - 32)) | (1 << (SqlBaseParser.EXCLUDING - 32)) | (1 << (SqlBaseParser.EXISTS - 32)) | (1 << (SqlBaseParser.EXPLAIN - 32)) | (1 << (SqlBaseParser.EXTRACT - 32)) | (1 << (SqlBaseParser.FALSE - 32)) | (1 << (SqlBaseParser.FILTER - 32)))) !== 0) || ((((_la - 64)) & ~0x1f) == 0 && ((1 << (_la - 64)) & ((1 << (SqlBaseParser.FIRST - 64)) | (1 << (SqlBaseParser.FOLLOWING - 64)) | (1 << (SqlBaseParser.FORMAT - 64)) | (1 << (SqlBaseParser.FUNCTIONS - 64)) | (1 << (SqlBaseParser.GRANT - 64)) | (1 << (SqlBaseParser.GRANTS - 64)) | (1 << (SqlBaseParser.GRAPHVIZ - 64)) | (1 << (SqlBaseParser.GROUPING - 64)) | (1 << (SqlBaseParser.HOUR - 64)) | (1 << (SqlBaseParser.IF - 64)) | (1 << (SqlBaseParser.INCLUDING - 64)) | (1 << (SqlBaseParser.INPUT - 64)) | (1 << (SqlBaseParser.INTERVAL - 64)) | (1 << (SqlBaseParser.IO - 64)) | (1 << (SqlBaseParser.ISOLATION - 64)) | (1 << (SqlBaseParser.JSON - 64)) | (1 << (SqlBaseParser.LAST - 64)) | (1 << (SqlBaseParser.LATERAL - 64)) | (1 << (SqlBaseParser.LEVEL - 64)))) !== 0) || ((((_la - 97)) & ~0x1f) == 0 && ((1 << (_la - 97)) & ((1 << (SqlBaseParser.LIMIT - 97)) | (1 << (SqlBaseParser.LOCALTIME - 97)) | (1 << (SqlBaseParser.LOCALTIMESTAMP - 97)) | (1 << (SqlBaseParser.LOGICAL - 97)) | (1 << (SqlBaseParser.MAP - 97)) | (1 << (SqlBaseParser.MINUTE - 97)) | (1 << (SqlBaseParser.MONTH - 97)) | (1 << (SqlBaseParser.NFC - 97)) | (1 << (SqlBaseParser.NFD - 97)) | (1 << (SqlBaseParser.NFKC - 97)) | (1 << (SqlBaseParser.NFKD - 97)) | (1 << (SqlBaseParser.NO - 97)) | (1 << (SqlBaseParser.NORMALIZE - 97)) | (1 << (SqlBaseParser.NOT - 97)) | (1 << (SqlBaseParser.NULL - 97)) | (1 << (SqlBaseParser.NULLIF - 97)) | (1 << (SqlBaseParser.NULLS - 97)) | (1 << (SqlBaseParser.ONLY - 97)) | (1 << (SqlBaseParser.OPTION - 97)) | (1 << (SqlBaseParser.ORDINALITY - 97)) | (1 << (SqlBaseParser.OUTPUT - 97)) | (1 << (SqlBaseParser.OVER - 97)) | (1 << (SqlBaseParser.PARTITION - 97)) | (1 << (SqlBaseParser.PARTITIONS - 97)) | (1 << (SqlBaseParser.PATH - 97)) | (1 << (SqlBaseParser.POSITION - 97)) | (1 << (SqlBaseParser.PRECEDING - 97)))) !== 0) || ((((_la - 130)) & ~0x1f) == 0 && ((1 << (_la - 130)) & ((1 << (SqlBaseParser.PRIVILEGES - 130)) | (1 << (SqlBaseParser.PROPERTIES - 130)) | (1 << (SqlBaseParser.PUBLIC - 130)) | (1 << (SqlBaseParser.RANGE - 130)) | (1 << (SqlBaseParser.READ - 130)) | (1 << (SqlBaseParser.RENAME - 130)) | (1 << (SqlBaseParser.REPEATABLE - 130)) | (1 << (SqlBaseParser.REPLACE - 130)) | (1 << (SqlBaseParser.RESET - 130)) | (1 << (SqlBaseParser.RESTRICT - 130)) | (1 << (SqlBaseParser.REVOKE - 130)) | (1 << (SqlBaseParser.ROLLBACK - 130)) | (1 << (SqlBaseParser.ROW - 130)) | (1 << (SqlBaseParser.ROWS - 130)) | (1 << (SqlBaseParser.SCHEMA - 130)) | (1 << (SqlBaseParser.SCHEMAS - 130)) | (1 << (SqlBaseParser.SECOND - 130)) | (1 << (SqlBaseParser.SERIALIZABLE - 130)) | (1 << (SqlBaseParser.SESSION - 130)) | (1 << (SqlBaseParser.SET - 130)) | (1 << (SqlBaseParser.SETS - 130)) | (1 << (SqlBaseParser.SHOW - 130)) | (1 << (SqlBaseParser.SOME - 130)) | (1 << (SqlBaseParser.START - 130)) | (1 << (SqlBaseParser.STATS - 130)) | (1 << (SqlBaseParser.SUBSTRING - 130)) | (1 << (SqlBaseParser.SYSTEM - 130)))) !== 0) || ((((_la - 162)) & ~0x1f) == 0 && ((1 << (_la - 162)) & ((1 << (SqlBaseParser.TABLES - 162)) | (1 << (SqlBaseParser.TABLESAMPLE - 162)) | (1 << (SqlBaseParser.TEXT - 162)) | (1 << (SqlBaseParser.TIME - 162)) | (1 << (SqlBaseParser.TIMESTAMP - 162)) | (1 << (SqlBaseParser.TO - 162)) | (1 << (SqlBaseParser.TRANSACTION - 162)) | (1 << (SqlBaseParser.TRUE - 162)) | (1 << (SqlBaseParser.TRY_CAST - 162)) | (1 << (SqlBaseParser.TYPE - 162)) | (1 << (SqlBaseParser.UNBOUNDED - 162)) | (1 << (SqlBaseParser.UNCOMMITTED - 162)) | (1 << (SqlBaseParser.USE - 162)) | (1 << (SqlBaseParser.VALIDATE - 162)) | (1 << (SqlBaseParser.VERBOSE - 162)) | (1 << (SqlBaseParser.VIEW - 162)) | (1 << (SqlBaseParser.WORK - 162)) | (1 << (SqlBaseParser.WRITE - 162)) | (1 << (SqlBaseParser.YEAR - 162)) | (1 << (SqlBaseParser.ZONE - 162)))) !== 0) || ((((_la - 197)) & ~0x1f) == 0 && ((1 << (_la - 197)) & ((1 << (SqlBaseParser.PLUS - 197)) | (1 << (SqlBaseParser.MINUS - 197)) | (1 << (SqlBaseParser.STRING - 197)) | (1 << (SqlBaseParser.UNICODE_STRING - 197)) | (1 << (SqlBaseParser.BINARY_LITERAL - 197)) | (1 << (SqlBaseParser.INTEGER_VALUE - 197)) | (1 << (SqlBaseParser.DECIMAL_VALUE - 197)) | (1 << (SqlBaseParser.DOUBLE_VALUE - 197)) | (1 << (SqlBaseParser.IDENTIFIER - 197)) | (1 << (SqlBaseParser.DIGIT_IDENTIFIER - 197)) | (1 << (SqlBaseParser.QUOTED_IDENTIFIER - 197)) | (1 << (SqlBaseParser.BACKQUOTED_IDENTIFIER - 197)) | (1 << (SqlBaseParser.DOUBLE_PRECISION - 197)))) !== 0)) {
this.state = 726;
this.expression();
this.state = 731;
this._errHandler.sync(this);
_la = this._input.LA(1);
while(_la===SqlBaseParser.T__3) {
this.state = 727;
this.match(SqlBaseParser.T__3);
this.state = 728;
this.expression();
this.state = 733;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
}
this.state = 736;
this.match(SqlBaseParser.T__2);
break;
case 2:
this.enterOuterAlt(localctx, 2);
this.state = 737;
this.expression();
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 NamedQueryContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_namedQuery;
this.name = null; // IdentifierContext
return this;
}
NamedQueryContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
NamedQueryContext.prototype.constructor = NamedQueryContext;
NamedQueryContext.prototype.AS = function() {
return this.getToken(SqlBaseParser.AS, 0);
};
NamedQueryContext.prototype.query = function() {
return this.getTypedRuleContext(QueryContext,0);
};
NamedQueryContext.prototype.identifier = function() {
return this.getTypedRuleContext(IdentifierContext,0);
};
NamedQueryContext.prototype.columnAliases = function() {
return this.getTypedRuleContext(ColumnAliasesContext,0);
};
NamedQueryContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterNamedQuery(this);
}
};
NamedQueryContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitNamedQuery(this);
}
};
SqlBaseParser.NamedQueryContext = NamedQueryContext;
SqlBaseParser.prototype.namedQuery = function() {
var localctx = new NamedQueryContext(this, this._ctx, this.state);
this.enterRule(localctx, 38, SqlBaseParser.RULE_namedQuery);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 740;
localctx.name = this.identifier();
this.state = 742;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.T__1) {
this.state = 741;
this.columnAliases();
}
this.state = 744;
this.match(SqlBaseParser.AS);
this.state = 745;
this.match(SqlBaseParser.T__1);
this.state = 746;
this.query();
this.state = 747;
this.match(SqlBaseParser.T__2);
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function SetQuantifierContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_setQuantifier;
return this;
}
SetQuantifierContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
SetQuantifierContext.prototype.constructor = SetQuantifierContext;
SetQuantifierContext.prototype.DISTINCT = function() {
return this.getToken(SqlBaseParser.DISTINCT, 0);
};
SetQuantifierContext.prototype.ALL = function() {
return this.getToken(SqlBaseParser.ALL, 0);
};
SetQuantifierContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterSetQuantifier(this);
}
};
SetQuantifierContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitSetQuantifier(this);
}
};
SqlBaseParser.SetQuantifierContext = SetQuantifierContext;
SqlBaseParser.prototype.setQuantifier = function() {
var localctx = new SetQuantifierContext(this, this._ctx, this.state);
this.enterRule(localctx, 40, SqlBaseParser.RULE_setQuantifier);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 749;
_la = this._input.LA(1);
if(!(_la===SqlBaseParser.ALL || _la===SqlBaseParser.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 SelectItemContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_selectItem;
return this;
}
SelectItemContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
SelectItemContext.prototype.constructor = SelectItemContext;
SelectItemContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function SelectAllContext(parser, ctx) {
SelectItemContext.call(this, parser);
SelectItemContext.prototype.copyFrom.call(this, ctx);
return this;
}
SelectAllContext.prototype = Object.create(SelectItemContext.prototype);
SelectAllContext.prototype.constructor = SelectAllContext;
SqlBaseParser.SelectAllContext = SelectAllContext;
SelectAllContext.prototype.qualifiedName = function() {
return this.getTypedRuleContext(QualifiedNameContext,0);
};
SelectAllContext.prototype.ASTERISK = function() {
return this.getToken(SqlBaseParser.ASTERISK, 0);
};
SelectAllContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterSelectAll(this);
}
};
SelectAllContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitSelectAll(this);
}
};
function SelectSingleContext(parser, ctx) {
SelectItemContext.call(this, parser);
SelectItemContext.prototype.copyFrom.call(this, ctx);
return this;
}
SelectSingleContext.prototype = Object.create(SelectItemContext.prototype);
SelectSingleContext.prototype.constructor = SelectSingleContext;
SqlBaseParser.SelectSingleContext = SelectSingleContext;
SelectSingleContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
SelectSingleContext.prototype.identifier = function() {
return this.getTypedRuleContext(IdentifierContext,0);
};
SelectSingleContext.prototype.AS = function() {
return this.getToken(SqlBaseParser.AS, 0);
};
SelectSingleContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterSelectSingle(this);
}
};
SelectSingleContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitSelectSingle(this);
}
};
SqlBaseParser.SelectItemContext = SelectItemContext;
SqlBaseParser.prototype.selectItem = function() {
var localctx = new SelectItemContext(this, this._ctx, this.state);
this.enterRule(localctx, 42, SqlBaseParser.RULE_selectItem);
var _la = 0; // Token type
try {
this.state = 763;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,90,this._ctx);
switch(la_) {
case 1:
localctx = new SelectSingleContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 751;
this.expression();
this.state = 756;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,89,this._ctx);
if(la_===1) {
this.state = 753;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.AS) {
this.state = 752;
this.match(SqlBaseParser.AS);
}
this.state = 755;
this.identifier();
}
break;
case 2:
localctx = new SelectAllContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 758;
this.qualifiedName();
this.state = 759;
this.match(SqlBaseParser.T__0);
this.state = 760;
this.match(SqlBaseParser.ASTERISK);
break;
case 3:
localctx = new SelectAllContext(this, localctx);
this.enterOuterAlt(localctx, 3);
this.state = 762;
this.match(SqlBaseParser.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 RelationContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_relation;
return this;
}
RelationContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
RelationContext.prototype.constructor = RelationContext;
RelationContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function RelationDefaultContext(parser, ctx) {
RelationContext.call(this, parser);
RelationContext.prototype.copyFrom.call(this, ctx);
return this;
}
RelationDefaultContext.prototype = Object.create(RelationContext.prototype);
RelationDefaultContext.prototype.constructor = RelationDefaultContext;
SqlBaseParser.RelationDefaultContext = RelationDefaultContext;
RelationDefaultContext.prototype.sampledRelation = function() {
return this.getTypedRuleContext(SampledRelationContext,0);
};
RelationDefaultContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterRelationDefault(this);
}
};
RelationDefaultContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitRelationDefault(this);
}
};
function JoinRelationContext(parser, ctx) {
RelationContext.call(this, parser);
this.left = null; // RelationContext;
this.right = null; // SampledRelationContext;
this.rightRelation = null; // RelationContext;
RelationContext.prototype.copyFrom.call(this, ctx);
return this;
}
JoinRelationContext.prototype = Object.create(RelationContext.prototype);
JoinRelationContext.prototype.constructor = JoinRelationContext;
SqlBaseParser.JoinRelationContext = JoinRelationContext;
JoinRelationContext.prototype.relation = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(RelationContext);
} else {
return this.getTypedRuleContext(RelationContext,i);
}
};
JoinRelationContext.prototype.CROSS = function() {
return this.getToken(SqlBaseParser.CROSS, 0);
};
JoinRelationContext.prototype.JOIN = function() {
return this.getToken(SqlBaseParser.JOIN, 0);
};
JoinRelationContext.prototype.joinType = function() {
return this.getTypedRuleContext(JoinTypeContext,0);
};
JoinRelationContext.prototype.joinCriteria = function() {
return this.getTypedRuleContext(JoinCriteriaContext,0);
};
JoinRelationContext.prototype.NATURAL = function() {
return this.getToken(SqlBaseParser.NATURAL, 0);
};
JoinRelationContext.prototype.sampledRelation = function() {
return this.getTypedRuleContext(SampledRelationContext,0);
};
JoinRelationContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterJoinRelation(this);
}
};
JoinRelationContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitJoinRelation(this);
}
};
SqlBaseParser.prototype.relation = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new RelationContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 44;
this.enterRecursionRule(localctx, 44, SqlBaseParser.RULE_relation, _p);
try {
this.enterOuterAlt(localctx, 1);
localctx = new RelationDefaultContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 766;
this.sampledRelation();
this._ctx.stop = this._input.LT(-1);
this.state = 786;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,92,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 JoinRelationContext(this, new RelationContext(this, _parentctx, _parentState));
localctx.left = _prevctx;
this.pushNewRecursionContext(localctx, _startState, SqlBaseParser.RULE_relation);
this.state = 768;
if (!( this.precpred(this._ctx, 2))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 2)");
}
this.state = 782;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case SqlBaseParser.CROSS:
this.state = 769;
this.match(SqlBaseParser.CROSS);
this.state = 770;
this.match(SqlBaseParser.JOIN);
this.state = 771;
localctx.right = this.sampledRelation();
break;
case SqlBaseParser.FULL:
case SqlBaseParser.INNER:
case SqlBaseParser.JOIN:
case SqlBaseParser.LEFT:
case SqlBaseParser.RIGHT:
this.state = 772;
this.joinType();
this.state = 773;
this.match(SqlBaseParser.JOIN);
this.state = 774;
localctx.rightRelation = this.relation(0);
this.state = 775;
this.joinCriteria();
break;
case SqlBaseParser.NATURAL:
this.state = 777;
this.match(SqlBaseParser.NATURAL);
this.state = 778;
this.joinType();
this.state = 779;
this.match(SqlBaseParser.JOIN);
this.state = 780;
localctx.right = this.sampledRelation();
break;
default:
throw new antlr4.error.NoViableAltException(this);
}
}
this.state = 788;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,92,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 JoinTypeContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_joinType;
return this;
}
JoinTypeContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
JoinTypeContext.prototype.constructor = JoinTypeContext;
JoinTypeContext.prototype.INNER = function() {
return this.getToken(SqlBaseParser.INNER, 0);
};
JoinTypeContext.prototype.LEFT = function() {
return this.getToken(SqlBaseParser.LEFT, 0);
};
JoinTypeContext.prototype.OUTER = function() {
return this.getToken(SqlBaseParser.OUTER, 0);
};
JoinTypeContext.prototype.RIGHT = function() {
return this.getToken(SqlBaseParser.RIGHT, 0);
};
JoinTypeContext.prototype.FULL = function() {
return this.getToken(SqlBaseParser.FULL, 0);
};
JoinTypeContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterJoinType(this);
}
};
JoinTypeContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitJoinType(this);
}
};
SqlBaseParser.JoinTypeContext = JoinTypeContext;
SqlBaseParser.prototype.joinType = function() {
var localctx = new JoinTypeContext(this, this._ctx, this.state);
this.enterRule(localctx, 46, SqlBaseParser.RULE_joinType);
var _la = 0; // Token type
try {
this.state = 804;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case SqlBaseParser.INNER:
case SqlBaseParser.JOIN:
this.enterOuterAlt(localctx, 1);
this.state = 790;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.INNER) {
this.state = 789;
this.match(SqlBaseParser.INNER);
}
break;
case SqlBaseParser.LEFT:
this.enterOuterAlt(localctx, 2);
this.state = 792;
this.match(SqlBaseParser.LEFT);
this.state = 794;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.OUTER) {
this.state = 793;
this.match(SqlBaseParser.OUTER);
}
break;
case SqlBaseParser.RIGHT:
this.enterOuterAlt(localctx, 3);
this.state = 796;
this.match(SqlBaseParser.RIGHT);
this.state = 798;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.OUTER) {
this.state = 797;
this.match(SqlBaseParser.OUTER);
}
break;
case SqlBaseParser.FULL:
this.enterOuterAlt(localctx, 4);
this.state = 800;
this.match(SqlBaseParser.FULL);
this.state = 802;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.OUTER) {
this.state = 801;
this.match(SqlBaseParser.OUTER);
}
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 JoinCriteriaContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_joinCriteria;
return this;
}
JoinCriteriaContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
JoinCriteriaContext.prototype.constructor = JoinCriteriaContext;
JoinCriteriaContext.prototype.ON = function() {
return this.getToken(SqlBaseParser.ON, 0);
};
JoinCriteriaContext.prototype.booleanExpression = function() {
return this.getTypedRuleContext(BooleanExpressionContext,0);
};
JoinCriteriaContext.prototype.USING = function() {
return this.getToken(SqlBaseParser.USING, 0);
};
JoinCriteriaContext.prototype.identifier = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(IdentifierContext);
} else {
return this.getTypedRuleContext(IdentifierContext,i);
}
};
JoinCriteriaContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterJoinCriteria(this);
}
};
JoinCriteriaContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitJoinCriteria(this);
}
};
SqlBaseParser.JoinCriteriaContext = JoinCriteriaContext;
SqlBaseParser.prototype.joinCriteria = function() {
var localctx = new JoinCriteriaContext(this, this._ctx, this.state);
this.enterRule(localctx, 48, SqlBaseParser.RULE_joinCriteria);
var _la = 0; // Token type
try {
this.state = 820;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case SqlBaseParser.ON:
this.enterOuterAlt(localctx, 1);
this.state = 806;
this.match(SqlBaseParser.ON);
this.state = 807;
this.booleanExpression(0);
break;
case SqlBaseParser.USING:
this.enterOuterAlt(localctx, 2);
this.state = 808;
this.match(SqlBaseParser.USING);
this.state = 809;
this.match(SqlBaseParser.T__1);
this.state = 810;
this.identifier();
this.state = 815;
this._errHandler.sync(this);
_la = this._input.LA(1);
while(_la===SqlBaseParser.T__3) {
this.state = 811;
this.match(SqlBaseParser.T__3);
this.state = 812;
this.identifier();
this.state = 817;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
this.state = 818;
this.match(SqlBaseParser.T__2);
break;
default:
throw new antlr4.error.NoViableAltException(this);
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function SampledRelationContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_sampledRelation;
this.percentage = null; // ExpressionContext
return this;
}
SampledRelationContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
SampledRelationContext.prototype.constructor = SampledRelationContext;
SampledRelationContext.prototype.aliasedRelation = function() {
return this.getTypedRuleContext(AliasedRelationContext,0);
};
SampledRelationContext.prototype.TABLESAMPLE = function() {
return this.getToken(SqlBaseParser.TABLESAMPLE, 0);
};
SampledRelationContext.prototype.sampleType = function() {
return this.getTypedRuleContext(SampleTypeContext,0);
};
SampledRelationContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
SampledRelationContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterSampledRelation(this);
}
};
SampledRelationContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitSampledRelation(this);
}
};
SqlBaseParser.SampledRelationContext = SampledRelationContext;
SqlBaseParser.prototype.sampledRelation = function() {
var localctx = new SampledRelationContext(this, this._ctx, this.state);
this.enterRule(localctx, 50, SqlBaseParser.RULE_sampledRelation);
try {
this.enterOuterAlt(localctx, 1);
this.state = 822;
this.aliasedRelation();
this.state = 829;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,100,this._ctx);
if(la_===1) {
this.state = 823;
this.match(SqlBaseParser.TABLESAMPLE);
this.state = 824;
this.sampleType();
this.state = 825;
this.match(SqlBaseParser.T__1);
this.state = 826;
localctx.percentage = this.expression();
this.state = 827;
this.match(SqlBaseParser.T__2);
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function SampleTypeContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_sampleType;
return this;
}
SampleTypeContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
SampleTypeContext.prototype.constructor = SampleTypeContext;
SampleTypeContext.prototype.BERNOULLI = function() {
return this.getToken(SqlBaseParser.BERNOULLI, 0);
};
SampleTypeContext.prototype.SYSTEM = function() {
return this.getToken(SqlBaseParser.SYSTEM, 0);
};
SampleTypeContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterSampleType(this);
}
};
SampleTypeContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitSampleType(this);
}
};
SqlBaseParser.SampleTypeContext = SampleTypeContext;
SqlBaseParser.prototype.sampleType = function() {
var localctx = new SampleTypeContext(this, this._ctx, this.state);
this.enterRule(localctx, 52, SqlBaseParser.RULE_sampleType);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 831;
_la = this._input.LA(1);
if(!(_la===SqlBaseParser.BERNOULLI || _la===SqlBaseParser.SYSTEM)) {
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 AliasedRelationContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_aliasedRelation;
return this;
}
AliasedRelationContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
AliasedRelationContext.prototype.constructor = AliasedRelationContext;
AliasedRelationContext.prototype.relationPrimary = function() {
return this.getTypedRuleContext(RelationPrimaryContext,0);
};
AliasedRelationContext.prototype.identifier = function() {
return this.getTypedRuleContext(IdentifierContext,0);
};
AliasedRelationContext.prototype.AS = function() {
return this.getToken(SqlBaseParser.AS, 0);
};
AliasedRelationContext.prototype.columnAliases = function() {
return this.getTypedRuleContext(ColumnAliasesContext,0);
};
AliasedRelationContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterAliasedRelation(this);
}
};
AliasedRelationContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitAliasedRelation(this);
}
};
SqlBaseParser.AliasedRelationContext = AliasedRelationContext;
SqlBaseParser.prototype.aliasedRelation = function() {
var localctx = new AliasedRelationContext(this, this._ctx, this.state);
this.enterRule(localctx, 54, SqlBaseParser.RULE_aliasedRelation);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 833;
this.relationPrimary();
this.state = 841;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,103,this._ctx);
if(la_===1) {
this.state = 835;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.AS) {
this.state = 834;
this.match(SqlBaseParser.AS);
}
this.state = 837;
this.identifier();
this.state = 839;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,102,this._ctx);
if(la_===1) {
this.state = 838;
this.columnAliases();
}
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function ColumnAliasesContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_columnAliases;
return this;
}
ColumnAliasesContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
ColumnAliasesContext.prototype.constructor = ColumnAliasesContext;
ColumnAliasesContext.prototype.identifier = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(IdentifierContext);
} else {
return this.getTypedRuleContext(IdentifierContext,i);
}
};
ColumnAliasesContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterColumnAliases(this);
}
};
ColumnAliasesContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitColumnAliases(this);
}
};
SqlBaseParser.ColumnAliasesContext = ColumnAliasesContext;
SqlBaseParser.prototype.columnAliases = function() {
var localctx = new ColumnAliasesContext(this, this._ctx, this.state);
this.enterRule(localctx, 56, SqlBaseParser.RULE_columnAliases);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 843;
this.match(SqlBaseParser.T__1);
this.state = 844;
this.identifier();
this.state = 849;
this._errHandler.sync(this);
_la = this._input.LA(1);
while(_la===SqlBaseParser.T__3) {
this.state = 845;
this.match(SqlBaseParser.T__3);
this.state = 846;
this.identifier();
this.state = 851;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
this.state = 852;
this.match(SqlBaseParser.T__2);
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function RelationPrimaryContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_relationPrimary;
return this;
}
RelationPrimaryContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
RelationPrimaryContext.prototype.constructor = RelationPrimaryContext;
RelationPrimaryContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function SubqueryRelationContext(parser, ctx) {
RelationPrimaryContext.call(this, parser);
RelationPrimaryContext.prototype.copyFrom.call(this, ctx);
return this;
}
SubqueryRelationContext.prototype = Object.create(RelationPrimaryContext.prototype);
SubqueryRelationContext.prototype.constructor = SubqueryRelationContext;
SqlBaseParser.SubqueryRelationContext = SubqueryRelationContext;
SubqueryRelationContext.prototype.query = function() {
return this.getTypedRuleContext(QueryContext,0);
};
SubqueryRelationContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterSubqueryRelation(this);
}
};
SubqueryRelationContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitSubqueryRelation(this);
}
};
function ParenthesizedRelationContext(parser, ctx) {
RelationPrimaryContext.call(this, parser);
RelationPrimaryContext.prototype.copyFrom.call(this, ctx);
return this;
}
ParenthesizedRelationContext.prototype = Object.create(RelationPrimaryContext.prototype);
ParenthesizedRelationContext.prototype.constructor = ParenthesizedRelationContext;
SqlBaseParser.ParenthesizedRelationContext = ParenthesizedRelationContext;
ParenthesizedRelationContext.prototype.relation = function() {
return this.getTypedRuleContext(RelationContext,0);
};
ParenthesizedRelationContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterParenthesizedRelation(this);
}
};
ParenthesizedRelationContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitParenthesizedRelation(this);
}
};
function UnnestContext(parser, ctx) {
RelationPrimaryContext.call(this, parser);
RelationPrimaryContext.prototype.copyFrom.call(this, ctx);
return this;
}
UnnestContext.prototype = Object.create(RelationPrimaryContext.prototype);
UnnestContext.prototype.constructor = UnnestContext;
SqlBaseParser.UnnestContext = UnnestContext;
UnnestContext.prototype.UNNEST = function() {
return this.getToken(SqlBaseParser.UNNEST, 0);
};
UnnestContext.prototype.expression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ExpressionContext);
} else {
return this.getTypedRuleContext(ExpressionContext,i);
}
};
UnnestContext.prototype.WITH = function() {
return this.getToken(SqlBaseParser.WITH, 0);
};
UnnestContext.prototype.ORDINALITY = function() {
return this.getToken(SqlBaseParser.ORDINALITY, 0);
};
UnnestContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterUnnest(this);
}
};
UnnestContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitUnnest(this);
}
};
function LateralContext(parser, ctx) {
RelationPrimaryContext.call(this, parser);
RelationPrimaryContext.prototype.copyFrom.call(this, ctx);
return this;
}
LateralContext.prototype = Object.create(RelationPrimaryContext.prototype);
LateralContext.prototype.constructor = LateralContext;
SqlBaseParser.LateralContext = LateralContext;
LateralContext.prototype.LATERAL = function() {
return this.getToken(SqlBaseParser.LATERAL, 0);
};
LateralContext.prototype.query = function() {
return this.getTypedRuleContext(QueryContext,0);
};
LateralContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterLateral(this);
}
};
LateralContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitLateral(this);
}
};
function TableNameContext(parser, ctx) {
RelationPrimaryContext.call(this, parser);
RelationPrimaryContext.prototype.copyFrom.call(this, ctx);
return this;
}
TableNameContext.prototype = Object.create(RelationPrimaryContext.prototype);
TableNameContext.prototype.constructor = TableNameContext;
SqlBaseParser.TableNameContext = TableNameContext;
TableNameContext.prototype.qualifiedName = function() {
return this.getTypedRuleContext(QualifiedNameContext,0);
};
TableNameContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterTableName(this);
}
};
TableNameContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitTableName(this);
}
};
SqlBaseParser.RelationPrimaryContext = RelationPrimaryContext;
SqlBaseParser.prototype.relationPrimary = function() {
var localctx = new RelationPrimaryContext(this, this._ctx, this.state);
this.enterRule(localctx, 58, SqlBaseParser.RULE_relationPrimary);
var _la = 0; // Token type
try {
this.state = 883;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,107,this._ctx);
switch(la_) {
case 1:
localctx = new TableNameContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 854;
this.qualifiedName();
break;
case 2:
localctx = new SubqueryRelationContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 855;
this.match(SqlBaseParser.T__1);
this.state = 856;
this.query();
this.state = 857;
this.match(SqlBaseParser.T__2);
break;
case 3:
localctx = new UnnestContext(this, localctx);
this.enterOuterAlt(localctx, 3);
this.state = 859;
this.match(SqlBaseParser.UNNEST);
this.state = 860;
this.match(SqlBaseParser.T__1);
this.state = 861;
this.expression();
this.state = 866;
this._errHandler.sync(this);
_la = this._input.LA(1);
while(_la===SqlBaseParser.T__3) {
this.state = 862;
this.match(SqlBaseParser.T__3);
this.state = 863;
this.expression();
this.state = 868;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
this.state = 869;
this.match(SqlBaseParser.T__2);
this.state = 872;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,106,this._ctx);
if(la_===1) {
this.state = 870;
this.match(SqlBaseParser.WITH);
this.state = 871;
this.match(SqlBaseParser.ORDINALITY);
}
break;
case 4:
localctx = new LateralContext(this, localctx);
this.enterOuterAlt(localctx, 4);
this.state = 874;
this.match(SqlBaseParser.LATERAL);
this.state = 875;
this.match(SqlBaseParser.T__1);
this.state = 876;
this.query();
this.state = 877;
this.match(SqlBaseParser.T__2);
break;
case 5:
localctx = new ParenthesizedRelationContext(this, localctx);
this.enterOuterAlt(localctx, 5);
this.state = 879;
this.match(SqlBaseParser.T__1);
this.state = 880;
this.relation(0);
this.state = 881;
this.match(SqlBaseParser.T__2);
break;
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function ExpressionContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_expression;
return this;
}
ExpressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
ExpressionContext.prototype.constructor = ExpressionContext;
ExpressionContext.prototype.booleanExpression = function() {
return this.getTypedRuleContext(BooleanExpressionContext,0);
};
ExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterExpression(this);
}
};
ExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitExpression(this);
}
};
SqlBaseParser.ExpressionContext = ExpressionContext;
SqlBaseParser.prototype.expression = function() {
var localctx = new ExpressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 60, SqlBaseParser.RULE_expression);
try {
this.enterOuterAlt(localctx, 1);
this.state = 885;
this.booleanExpression(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 BooleanExpressionContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_booleanExpression;
return this;
}
BooleanExpressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
BooleanExpressionContext.prototype.constructor = BooleanExpressionContext;
BooleanExpressionContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function LogicalNotContext(parser, ctx) {
BooleanExpressionContext.call(this, parser);
BooleanExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
LogicalNotContext.prototype = Object.create(BooleanExpressionContext.prototype);
LogicalNotContext.prototype.constructor = LogicalNotContext;
SqlBaseParser.LogicalNotContext = LogicalNotContext;
LogicalNotContext.prototype.NOT = function() {
return this.getToken(SqlBaseParser.NOT, 0);
};
LogicalNotContext.prototype.booleanExpression = function() {
return this.getTypedRuleContext(BooleanExpressionContext,0);
};
LogicalNotContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterLogicalNot(this);
}
};
LogicalNotContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitLogicalNot(this);
}
};
function PredicatedContext(parser, ctx) {
BooleanExpressionContext.call(this, parser);
this._valueExpression = null; // ValueExpressionContext;
BooleanExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
PredicatedContext.prototype = Object.create(BooleanExpressionContext.prototype);
PredicatedContext.prototype.constructor = PredicatedContext;
SqlBaseParser.PredicatedContext = PredicatedContext;
PredicatedContext.prototype.valueExpression = function() {
return this.getTypedRuleContext(ValueExpressionContext,0);
};
PredicatedContext.prototype.predicate = function() {
return this.getTypedRuleContext(PredicateContext,0);
};
PredicatedContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterPredicated(this);
}
};
PredicatedContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitPredicated(this);
}
};
function LogicalBinaryContext(parser, ctx) {
BooleanExpressionContext.call(this, parser);
this.left = null; // BooleanExpressionContext;
this.operator = null; // Token;
this.right = null; // BooleanExpressionContext;
BooleanExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
LogicalBinaryContext.prototype = Object.create(BooleanExpressionContext.prototype);
LogicalBinaryContext.prototype.constructor = LogicalBinaryContext;
SqlBaseParser.LogicalBinaryContext = LogicalBinaryContext;
LogicalBinaryContext.prototype.booleanExpression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(BooleanExpressionContext);
} else {
return this.getTypedRuleContext(BooleanExpressionContext,i);
}
};
LogicalBinaryContext.prototype.AND = function() {
return this.getToken(SqlBaseParser.AND, 0);
};
LogicalBinaryContext.prototype.OR = function() {
return this.getToken(SqlBaseParser.OR, 0);
};
LogicalBinaryContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterLogicalBinary(this);
}
};
LogicalBinaryContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitLogicalBinary(this);
}
};
SqlBaseParser.prototype.booleanExpression = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new BooleanExpressionContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 62;
this.enterRecursionRule(localctx, 62, SqlBaseParser.RULE_booleanExpression, _p);
try {
this.enterOuterAlt(localctx, 1);
this.state = 894;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case SqlBaseParser.T__1:
case SqlBaseParser.T__4:
case SqlBaseParser.ADD:
case SqlBaseParser.ALL:
case SqlBaseParser.ANALYZE:
case SqlBaseParser.ANY:
case SqlBaseParser.ARRAY:
case SqlBaseParser.ASC:
case SqlBaseParser.AT:
case SqlBaseParser.BERNOULLI:
case SqlBaseParser.CALL:
case SqlBaseParser.CASCADE:
case SqlBaseParser.CASE:
case SqlBaseParser.CAST:
case SqlBaseParser.CATALOGS:
case SqlBaseParser.COLUMN:
case SqlBaseParser.COLUMNS:
case SqlBaseParser.COMMENT:
case SqlBaseParser.COMMIT:
case SqlBaseParser.COMMITTED:
case SqlBaseParser.CURRENT:
case SqlBaseParser.CURRENT_DATE:
case SqlBaseParser.CURRENT_PATH:
case SqlBaseParser.CURRENT_TIME:
case SqlBaseParser.CURRENT_TIMESTAMP:
case SqlBaseParser.CURRENT_USER:
case SqlBaseParser.DATA:
case SqlBaseParser.DATE:
case SqlBaseParser.DAY:
case SqlBaseParser.DESC:
case SqlBaseParser.DISTRIBUTED:
case SqlBaseParser.EXCLUDING:
case SqlBaseParser.EXISTS:
case SqlBaseParser.EXPLAIN:
case SqlBaseParser.EXTRACT:
case SqlBaseParser.FALSE:
case SqlBaseParser.FILTER:
case SqlBaseParser.FIRST:
case SqlBaseParser.FOLLOWING:
case SqlBaseParser.FORMAT:
case SqlBaseParser.FUNCTIONS:
case SqlBaseParser.GRANT:
case SqlBaseParser.GRANTS:
case SqlBaseParser.GRAPHVIZ:
case SqlBaseParser.GROUPING:
case SqlBaseParser.HOUR:
case SqlBaseParser.IF:
case SqlBaseParser.INCLUDING:
case SqlBaseParser.INPUT:
case SqlBaseParser.INTERVAL:
case SqlBaseParser.IO:
case SqlBaseParser.ISOLATION:
case SqlBaseParser.JSON:
case SqlBaseParser.LAST:
case SqlBaseParser.LATERAL:
case SqlBaseParser.LEVEL:
case SqlBaseParser.LIMIT:
case SqlBaseParser.LOCALTIME:
case SqlBaseParser.LOCALTIMESTAMP:
case SqlBaseParser.LOGICAL:
case SqlBaseParser.MAP:
case SqlBaseParser.MINUTE:
case SqlBaseParser.MONTH:
case SqlBaseParser.NFC:
case SqlBaseParser.NFD:
case SqlBaseParser.NFKC:
case SqlBaseParser.NFKD:
case SqlBaseParser.NO:
case SqlBaseParser.NORMALIZE:
case SqlBaseParser.NULL:
case SqlBaseParser.NULLIF:
case SqlBaseParser.NULLS:
case SqlBaseParser.ONLY:
case SqlBaseParser.OPTION:
case SqlBaseParser.ORDINALITY:
case SqlBaseParser.OUTPUT:
case SqlBaseParser.OVER:
case SqlBaseParser.PARTITION:
case SqlBaseParser.PARTITIONS:
case SqlBaseParser.PATH:
case SqlBaseParser.POSITION:
case SqlBaseParser.PRECEDING:
case SqlBaseParser.PRIVILEGES:
case SqlBaseParser.PROPERTIES:
case SqlBaseParser.PUBLIC:
case SqlBaseParser.RANGE:
case SqlBaseParser.READ:
case SqlBaseParser.RENAME:
case SqlBaseParser.REPEATABLE:
case SqlBaseParser.REPLACE:
case SqlBaseParser.RESET:
case SqlBaseParser.RESTRICT:
case SqlBaseParser.REVOKE:
case SqlBaseParser.ROLLBACK:
case SqlBaseParser.ROW:
case SqlBaseParser.ROWS:
case SqlBaseParser.SCHEMA:
case SqlBaseParser.SCHEMAS:
case SqlBaseParser.SECOND:
case SqlBaseParser.SERIALIZABLE:
case SqlBaseParser.SESSION:
case SqlBaseParser.SET:
case SqlBaseParser.SETS:
case SqlBaseParser.SHOW:
case SqlBaseParser.SOME:
case SqlBaseParser.START:
case SqlBaseParser.STATS:
case SqlBaseParser.SUBSTRING:
case SqlBaseParser.SYSTEM:
case SqlBaseParser.TABLES:
case SqlBaseParser.TABLESAMPLE:
case SqlBaseParser.TEXT:
case SqlBaseParser.TIME:
case SqlBaseParser.TIMESTAMP:
case SqlBaseParser.TO:
case SqlBaseParser.TRANSACTION:
case SqlBaseParser.TRUE:
case SqlBaseParser.TRY_CAST:
case SqlBaseParser.TYPE:
case SqlBaseParser.UNBOUNDED:
case SqlBaseParser.UNCOMMITTED:
case SqlBaseParser.USE:
case SqlBaseParser.VALIDATE:
case SqlBaseParser.VERBOSE:
case SqlBaseParser.VIEW:
case SqlBaseParser.WORK:
case SqlBaseParser.WRITE:
case SqlBaseParser.YEAR:
case SqlBaseParser.ZONE:
case SqlBaseParser.PLUS:
case SqlBaseParser.MINUS:
case SqlBaseParser.STRING:
case SqlBaseParser.UNICODE_STRING:
case SqlBaseParser.BINARY_LITERAL:
case SqlBaseParser.INTEGER_VALUE:
case SqlBaseParser.DECIMAL_VALUE:
case SqlBaseParser.DOUBLE_VALUE:
case SqlBaseParser.IDENTIFIER:
case SqlBaseParser.DIGIT_IDENTIFIER:
case SqlBaseParser.QUOTED_IDENTIFIER:
case SqlBaseParser.BACKQUOTED_IDENTIFIER:
case SqlBaseParser.DOUBLE_PRECISION:
localctx = new PredicatedContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 888;
localctx._valueExpression = this.valueExpression(0);
this.state = 890;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,108,this._ctx);
if(la_===1) {
this.state = 889;
this.predicate(localctx._valueExpression);
}
break;
case SqlBaseParser.NOT:
localctx = new LogicalNotContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 892;
this.match(SqlBaseParser.NOT);
this.state = 893;
this.booleanExpression(3);
break;
default:
throw new antlr4.error.NoViableAltException(this);
}
this._ctx.stop = this._input.LT(-1);
this.state = 904;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,111,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 = 902;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,110,this._ctx);
switch(la_) {
case 1:
localctx = new LogicalBinaryContext(this, new BooleanExpressionContext(this, _parentctx, _parentState));
localctx.left = _prevctx;
this.pushNewRecursionContext(localctx, _startState, SqlBaseParser.RULE_booleanExpression);
this.state = 896;
if (!( this.precpred(this._ctx, 2))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 2)");
}
this.state = 897;
localctx.operator = this.match(SqlBaseParser.AND);
this.state = 898;
localctx.right = this.booleanExpression(3);
break;
case 2:
localctx = new LogicalBinaryContext(this, new BooleanExpressionContext(this, _parentctx, _parentState));
localctx.left = _prevctx;
this.pushNewRecursionContext(localctx, _startState, SqlBaseParser.RULE_booleanExpression);
this.state = 899;
if (!( this.precpred(this._ctx, 1))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
}
this.state = 900;
localctx.operator = this.match(SqlBaseParser.OR);
this.state = 901;
localctx.right = this.booleanExpression(2);
break;
}
}
this.state = 906;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,111,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 PredicateContext(parser, parent, invokingState, value) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_predicate;
this.value = null
this.value = value || null;
return this;
}
PredicateContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
PredicateContext.prototype.constructor = PredicateContext;
PredicateContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
this.value = ctx.value;
};
function ComparisonContext(parser, ctx) {
PredicateContext.call(this, parser);
this.right = null; // ValueExpressionContext;
PredicateContext.prototype.copyFrom.call(this, ctx);
return this;
}
ComparisonContext.prototype = Object.create(PredicateContext.prototype);
ComparisonContext.prototype.constructor = ComparisonContext;
SqlBaseParser.ComparisonContext = ComparisonContext;
ComparisonContext.prototype.comparisonOperator = function() {
return this.getTypedRuleContext(ComparisonOperatorContext,0);
};
ComparisonContext.prototype.valueExpression = function() {
return this.getTypedRuleContext(ValueExpressionContext,0);
};
ComparisonContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterComparison(this);
}
};
ComparisonContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitComparison(this);
}
};
function LikeContext(parser, ctx) {
PredicateContext.call(this, parser);
this.pattern = null; // ValueExpressionContext;
this.escape = null; // ValueExpressionContext;
PredicateContext.prototype.copyFrom.call(this, ctx);
return this;
}
LikeContext.prototype = Object.create(PredicateContext.prototype);
LikeContext.prototype.constructor = LikeContext;
SqlBaseParser.LikeContext = LikeContext;
LikeContext.prototype.LIKE = function() {
return this.getToken(SqlBaseParser.LIKE, 0);
};
LikeContext.prototype.valueExpression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ValueExpressionContext);
} else {
return this.getTypedRuleContext(ValueExpressionContext,i);
}
};
LikeContext.prototype.NOT = function() {
return this.getToken(SqlBaseParser.NOT, 0);
};
LikeContext.prototype.ESCAPE = function() {
return this.getToken(SqlBaseParser.ESCAPE, 0);
};
LikeContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterLike(this);
}
};
LikeContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitLike(this);
}
};
function InSubqueryContext(parser, ctx) {
PredicateContext.call(this, parser);
PredicateContext.prototype.copyFrom.call(this, ctx);
return this;
}
InSubqueryContext.prototype = Object.create(PredicateContext.prototype);
InSubqueryContext.prototype.constructor = InSubqueryContext;
SqlBaseParser.InSubqueryContext = InSubqueryContext;
InSubqueryContext.prototype.IN = function() {
return this.getToken(SqlBaseParser.IN, 0);
};
InSubqueryContext.prototype.query = function() {
return this.getTypedRuleContext(QueryContext,0);
};
InSubqueryContext.prototype.NOT = function() {
return this.getToken(SqlBaseParser.NOT, 0);
};
InSubqueryContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterInSubquery(this);
}
};
InSubqueryContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitInSubquery(this);
}
};
function DistinctFromContext(parser, ctx) {
PredicateContext.call(this, parser);
this.right = null; // ValueExpressionContext;
PredicateContext.prototype.copyFrom.call(this, ctx);
return this;
}
DistinctFromContext.prototype = Object.create(PredicateContext.prototype);
DistinctFromContext.prototype.constructor = DistinctFromContext;
SqlBaseParser.DistinctFromContext = DistinctFromContext;
DistinctFromContext.prototype.IS = function() {
return this.getToken(SqlBaseParser.IS, 0);
};
DistinctFromContext.prototype.DISTINCT = function() {
return this.getToken(SqlBaseParser.DISTINCT, 0);
};
DistinctFromContext.prototype.FROM = function() {
return this.getToken(SqlBaseParser.FROM, 0);
};
DistinctFromContext.prototype.valueExpression = function() {
return this.getTypedRuleContext(ValueExpressionContext,0);
};
DistinctFromContext.prototype.NOT = function() {
return this.getToken(SqlBaseParser.NOT, 0);
};
DistinctFromContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterDistinctFrom(this);
}
};
DistinctFromContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitDistinctFrom(this);
}
};
function InListContext(parser, ctx) {
PredicateContext.call(this, parser);
PredicateContext.prototype.copyFrom.call(this, ctx);
return this;
}
InListContext.prototype = Object.create(PredicateContext.prototype);
InListContext.prototype.constructor = InListContext;
SqlBaseParser.InListContext = InListContext;
InListContext.prototype.IN = function() {
return this.getToken(SqlBaseParser.IN, 0);
};
InListContext.prototype.expression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ExpressionContext);
} else {
return this.getTypedRuleContext(ExpressionContext,i);
}
};
InListContext.prototype.NOT = function() {
return this.getToken(SqlBaseParser.NOT, 0);
};
InListContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterInList(this);
}
};
InListContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitInList(this);
}
};
function NullPredicateContext(parser, ctx) {
PredicateContext.call(this, parser);
PredicateContext.prototype.copyFrom.call(this, ctx);
return this;
}
NullPredicateContext.prototype = Object.create(PredicateContext.prototype);
NullPredicateContext.prototype.constructor = NullPredicateContext;
SqlBaseParser.NullPredicateContext = NullPredicateContext;
NullPredicateContext.prototype.IS = function() {
return this.getToken(SqlBaseParser.IS, 0);
};
NullPredicateContext.prototype.NULL = function() {
return this.getToken(SqlBaseParser.NULL, 0);
};
NullPredicateContext.prototype.NOT = function() {
return this.getToken(SqlBaseParser.NOT, 0);
};
NullPredicateContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterNullPredicate(this);
}
};
NullPredicateContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitNullPredicate(this);
}
};
function BetweenContext(parser, ctx) {
PredicateContext.call(this, parser);
this.lower = null; // ValueExpressionContext;
this.upper = null; // ValueExpressionContext;
PredicateContext.prototype.copyFrom.call(this, ctx);
return this;
}
BetweenContext.prototype = Object.create(PredicateContext.prototype);
BetweenContext.prototype.constructor = BetweenContext;
SqlBaseParser.BetweenContext = BetweenContext;
BetweenContext.prototype.BETWEEN = function() {
return this.getToken(SqlBaseParser.BETWEEN, 0);
};
BetweenContext.prototype.AND = function() {
return this.getToken(SqlBaseParser.AND, 0);
};
BetweenContext.prototype.valueExpression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ValueExpressionContext);
} else {
return this.getTypedRuleContext(ValueExpressionContext,i);
}
};
BetweenContext.prototype.NOT = function() {
return this.getToken(SqlBaseParser.NOT, 0);
};
BetweenContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterBetween(this);
}
};
BetweenContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitBetween(this);
}
};
function QuantifiedComparisonContext(parser, ctx) {
PredicateContext.call(this, parser);
PredicateContext.prototype.copyFrom.call(this, ctx);
return this;
}
QuantifiedComparisonContext.prototype = Object.create(PredicateContext.prototype);
QuantifiedComparisonContext.prototype.constructor = QuantifiedComparisonContext;
SqlBaseParser.QuantifiedComparisonContext = QuantifiedComparisonContext;
QuantifiedComparisonContext.prototype.comparisonOperator = function() {
return this.getTypedRuleContext(ComparisonOperatorContext,0);
};
QuantifiedComparisonContext.prototype.comparisonQuantifier = function() {
return this.getTypedRuleContext(ComparisonQuantifierContext,0);
};
QuantifiedComparisonContext.prototype.query = function() {
return this.getTypedRuleContext(QueryContext,0);
};
QuantifiedComparisonContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterQuantifiedComparison(this);
}
};
QuantifiedComparisonContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitQuantifiedComparison(this);
}
};
SqlBaseParser.PredicateContext = PredicateContext;
SqlBaseParser.prototype.predicate = function(value) {
var localctx = new PredicateContext(this, this._ctx, this.state, value);
this.enterRule(localctx, 64, SqlBaseParser.RULE_predicate);
var _la = 0; // Token type
try {
this.state = 968;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,120,this._ctx);
switch(la_) {
case 1:
localctx = new ComparisonContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 907;
this.comparisonOperator();
this.state = 908;
localctx.right = this.valueExpression(0);
break;
case 2:
localctx = new QuantifiedComparisonContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 910;
this.comparisonOperator();
this.state = 911;
this.comparisonQuantifier();
this.state = 912;
this.match(SqlBaseParser.T__1);
this.state = 913;
this.query();
this.state = 914;
this.match(SqlBaseParser.T__2);
break;
case 3:
localctx = new BetweenContext(this, localctx);
this.enterOuterAlt(localctx, 3);
this.state = 917;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.NOT) {
this.state = 916;
this.match(SqlBaseParser.NOT);
}
this.state = 919;
this.match(SqlBaseParser.BETWEEN);
this.state = 920;
localctx.lower = this.valueExpression(0);
this.state = 921;
this.match(SqlBaseParser.AND);
this.state = 922;
localctx.upper = this.valueExpression(0);
break;
case 4:
localctx = new InListContext(this, localctx);
this.enterOuterAlt(localctx, 4);
this.state = 925;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.NOT) {
this.state = 924;
this.match(SqlBaseParser.NOT);
}
this.state = 927;
this.match(SqlBaseParser.IN);
this.state = 928;
this.match(SqlBaseParser.T__1);
this.state = 929;
this.expression();
this.state = 934;
this._errHandler.sync(this);
_la = this._input.LA(1);
while(_la===SqlBaseParser.T__3) {
this.state = 930;
this.match(SqlBaseParser.T__3);
this.state = 931;
this.expression();
this.state = 936;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
this.state = 937;
this.match(SqlBaseParser.T__2);
break;
case 5:
localctx = new InSubqueryContext(this, localctx);
this.enterOuterAlt(localctx, 5);
this.state = 940;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.NOT) {
this.state = 939;
this.match(SqlBaseParser.NOT);
}
this.state = 942;
this.match(SqlBaseParser.IN);
this.state = 943;
this.match(SqlBaseParser.T__1);
this.state = 944;
this.query();
this.state = 945;
this.match(SqlBaseParser.T__2);
break;
case 6:
localctx = new LikeContext(this, localctx);
this.enterOuterAlt(localctx, 6);
this.state = 948;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.NOT) {
this.state = 947;
this.match(SqlBaseParser.NOT);
}
this.state = 950;
this.match(SqlBaseParser.LIKE);
this.state = 951;
localctx.pattern = this.valueExpression(0);
this.state = 954;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,117,this._ctx);
if(la_===1) {
this.state = 952;
this.match(SqlBaseParser.ESCAPE);
this.state = 953;
localctx.escape = this.valueExpression(0);
}
break;
case 7:
localctx = new NullPredicateContext(this, localctx);
this.enterOuterAlt(localctx, 7);
this.state = 956;
this.match(SqlBaseParser.IS);
this.state = 958;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.NOT) {
this.state = 957;
this.match(SqlBaseParser.NOT);
}
this.state = 960;
this.match(SqlBaseParser.NULL);
break;
case 8:
localctx = new DistinctFromContext(this, localctx);
this.enterOuterAlt(localctx, 8);
this.state = 961;
this.match(SqlBaseParser.IS);
this.state = 963;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.NOT) {
this.state = 962;
this.match(SqlBaseParser.NOT);
}
this.state = 965;
this.match(SqlBaseParser.DISTINCT);
this.state = 966;
this.match(SqlBaseParser.FROM);
this.state = 967;
localctx.right = this.valueExpression(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 ValueExpressionContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_valueExpression;
return this;
}
ValueExpressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
ValueExpressionContext.prototype.constructor = ValueExpressionContext;
ValueExpressionContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function ValueExpressionDefaultContext(parser, ctx) {
ValueExpressionContext.call(this, parser);
ValueExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
ValueExpressionDefaultContext.prototype = Object.create(ValueExpressionContext.prototype);
ValueExpressionDefaultContext.prototype.constructor = ValueExpressionDefaultContext;
SqlBaseParser.ValueExpressionDefaultContext = ValueExpressionDefaultContext;
ValueExpressionDefaultContext.prototype.primaryExpression = function() {
return this.getTypedRuleContext(PrimaryExpressionContext,0);
};
ValueExpressionDefaultContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterValueExpressionDefault(this);
}
};
ValueExpressionDefaultContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitValueExpressionDefault(this);
}
};
function ConcatenationContext(parser, ctx) {
ValueExpressionContext.call(this, parser);
this.left = null; // ValueExpressionContext;
this.right = null; // ValueExpressionContext;
ValueExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
ConcatenationContext.prototype = Object.create(ValueExpressionContext.prototype);
ConcatenationContext.prototype.constructor = ConcatenationContext;
SqlBaseParser.ConcatenationContext = ConcatenationContext;
ConcatenationContext.prototype.CONCAT = function() {
return this.getToken(SqlBaseParser.CONCAT, 0);
};
ConcatenationContext.prototype.valueExpression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ValueExpressionContext);
} else {
return this.getTypedRuleContext(ValueExpressionContext,i);
}
};
ConcatenationContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterConcatenation(this);
}
};
ConcatenationContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitConcatenation(this);
}
};
function ArithmeticBinaryContext(parser, ctx) {
ValueExpressionContext.call(this, parser);
this.left = null; // ValueExpressionContext;
this.operator = null; // Token;
this.right = null; // ValueExpressionContext;
ValueExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
ArithmeticBinaryContext.prototype = Object.create(ValueExpressionContext.prototype);
ArithmeticBinaryContext.prototype.constructor = ArithmeticBinaryContext;
SqlBaseParser.ArithmeticBinaryContext = ArithmeticBinaryContext;
ArithmeticBinaryContext.prototype.valueExpression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ValueExpressionContext);
} else {
return this.getTypedRuleContext(ValueExpressionContext,i);
}
};
ArithmeticBinaryContext.prototype.ASTERISK = function() {
return this.getToken(SqlBaseParser.ASTERISK, 0);
};
ArithmeticBinaryContext.prototype.SLASH = function() {
return this.getToken(SqlBaseParser.SLASH, 0);
};
ArithmeticBinaryContext.prototype.PERCENT = function() {
return this.getToken(SqlBaseParser.PERCENT, 0);
};
ArithmeticBinaryContext.prototype.PLUS = function() {
return this.getToken(SqlBaseParser.PLUS, 0);
};
ArithmeticBinaryContext.prototype.MINUS = function() {
return this.getToken(SqlBaseParser.MINUS, 0);
};
ArithmeticBinaryContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterArithmeticBinary(this);
}
};
ArithmeticBinaryContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitArithmeticBinary(this);
}
};
function ArithmeticUnaryContext(parser, ctx) {
ValueExpressionContext.call(this, parser);
this.operator = null; // Token;
ValueExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
ArithmeticUnaryContext.prototype = Object.create(ValueExpressionContext.prototype);
ArithmeticUnaryContext.prototype.constructor = ArithmeticUnaryContext;
SqlBaseParser.ArithmeticUnaryContext = ArithmeticUnaryContext;
ArithmeticUnaryContext.prototype.valueExpression = function() {
return this.getTypedRuleContext(ValueExpressionContext,0);
};
ArithmeticUnaryContext.prototype.MINUS = function() {
return this.getToken(SqlBaseParser.MINUS, 0);
};
ArithmeticUnaryContext.prototype.PLUS = function() {
return this.getToken(SqlBaseParser.PLUS, 0);
};
ArithmeticUnaryContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterArithmeticUnary(this);
}
};
ArithmeticUnaryContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitArithmeticUnary(this);
}
};
function AtTimeZoneContext(parser, ctx) {
ValueExpressionContext.call(this, parser);
ValueExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
AtTimeZoneContext.prototype = Object.create(ValueExpressionContext.prototype);
AtTimeZoneContext.prototype.constructor = AtTimeZoneContext;
SqlBaseParser.AtTimeZoneContext = AtTimeZoneContext;
AtTimeZoneContext.prototype.valueExpression = function() {
return this.getTypedRuleContext(ValueExpressionContext,0);
};
AtTimeZoneContext.prototype.AT = function() {
return this.getToken(SqlBaseParser.AT, 0);
};
AtTimeZoneContext.prototype.timeZoneSpecifier = function() {
return this.getTypedRuleContext(TimeZoneSpecifierContext,0);
};
AtTimeZoneContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterAtTimeZone(this);
}
};
AtTimeZoneContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitAtTimeZone(this);
}
};
SqlBaseParser.prototype.valueExpression = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new ValueExpressionContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 66;
this.enterRecursionRule(localctx, 66, SqlBaseParser.RULE_valueExpression, _p);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 974;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case SqlBaseParser.T__1:
case SqlBaseParser.T__4:
case SqlBaseParser.ADD:
case SqlBaseParser.ALL:
case SqlBaseParser.ANALYZE:
case SqlBaseParser.ANY:
case SqlBaseParser.ARRAY:
case SqlBaseParser.ASC:
case SqlBaseParser.AT:
case SqlBaseParser.BERNOULLI:
case SqlBaseParser.CALL:
case SqlBaseParser.CASCADE:
case SqlBaseParser.CASE:
case SqlBaseParser.CAST:
case SqlBaseParser.CATALOGS:
case SqlBaseParser.COLUMN:
case SqlBaseParser.COLUMNS:
case SqlBaseParser.COMMENT:
case SqlBaseParser.COMMIT:
case SqlBaseParser.COMMITTED:
case SqlBaseParser.CURRENT:
case SqlBaseParser.CURRENT_DATE:
case SqlBaseParser.CURRENT_PATH:
case SqlBaseParser.CURRENT_TIME:
case SqlBaseParser.CURRENT_TIMESTAMP:
case SqlBaseParser.CURRENT_USER:
case SqlBaseParser.DATA:
case SqlBaseParser.DATE:
case SqlBaseParser.DAY:
case SqlBaseParser.DESC:
case SqlBaseParser.DISTRIBUTED:
case SqlBaseParser.EXCLUDING:
case SqlBaseParser.EXISTS:
case SqlBaseParser.EXPLAIN:
case SqlBaseParser.EXTRACT:
case SqlBaseParser.FALSE:
case SqlBaseParser.FILTER:
case SqlBaseParser.FIRST:
case SqlBaseParser.FOLLOWING:
case SqlBaseParser.FORMAT:
case SqlBaseParser.FUNCTIONS:
case SqlBaseParser.GRANT:
case SqlBaseParser.GRANTS:
case SqlBaseParser.GRAPHVIZ:
case SqlBaseParser.GROUPING:
case SqlBaseParser.HOUR:
case SqlBaseParser.IF:
case SqlBaseParser.INCLUDING:
case SqlBaseParser.INPUT:
case SqlBaseParser.INTERVAL:
case SqlBaseParser.IO:
case SqlBaseParser.ISOLATION:
case SqlBaseParser.JSON:
case SqlBaseParser.LAST:
case SqlBaseParser.LATERAL:
case SqlBaseParser.LEVEL:
case SqlBaseParser.LIMIT:
case SqlBaseParser.LOCALTIME:
case SqlBaseParser.LOCALTIMESTAMP:
case SqlBaseParser.LOGICAL:
case SqlBaseParser.MAP:
case SqlBaseParser.MINUTE:
case SqlBaseParser.MONTH:
case SqlBaseParser.NFC:
case SqlBaseParser.NFD:
case SqlBaseParser.NFKC:
case SqlBaseParser.NFKD:
case SqlBaseParser.NO:
case SqlBaseParser.NORMALIZE:
case SqlBaseParser.NULL:
case SqlBaseParser.NULLIF:
case SqlBaseParser.NULLS:
case SqlBaseParser.ONLY:
case SqlBaseParser.OPTION:
case SqlBaseParser.ORDINALITY:
case SqlBaseParser.OUTPUT:
case SqlBaseParser.OVER:
case SqlBaseParser.PARTITION:
case SqlBaseParser.PARTITIONS:
case SqlBaseParser.PATH:
case SqlBaseParser.POSITION:
case SqlBaseParser.PRECEDING:
case SqlBaseParser.PRIVILEGES:
case SqlBaseParser.PROPERTIES:
case SqlBaseParser.PUBLIC:
case SqlBaseParser.RANGE:
case SqlBaseParser.READ:
case SqlBaseParser.RENAME:
case SqlBaseParser.REPEATABLE:
case SqlBaseParser.REPLACE:
case SqlBaseParser.RESET:
case SqlBaseParser.RESTRICT:
case SqlBaseParser.REVOKE:
case SqlBaseParser.ROLLBACK:
case SqlBaseParser.ROW:
case SqlBaseParser.ROWS:
case SqlBaseParser.SCHEMA:
case SqlBaseParser.SCHEMAS:
case SqlBaseParser.SECOND:
case SqlBaseParser.SERIALIZABLE:
case SqlBaseParser.SESSION:
case SqlBaseParser.SET:
case SqlBaseParser.SETS:
case SqlBaseParser.SHOW:
case SqlBaseParser.SOME:
case SqlBaseParser.START:
case SqlBaseParser.STATS:
case SqlBaseParser.SUBSTRING:
case SqlBaseParser.SYSTEM:
case SqlBaseParser.TABLES:
case SqlBaseParser.TABLESAMPLE:
case SqlBaseParser.TEXT:
case SqlBaseParser.TIME:
case SqlBaseParser.TIMESTAMP:
case SqlBaseParser.TO:
case SqlBaseParser.TRANSACTION:
case SqlBaseParser.TRUE:
case SqlBaseParser.TRY_CAST:
case SqlBaseParser.TYPE:
case SqlBaseParser.UNBOUNDED:
case SqlBaseParser.UNCOMMITTED:
case SqlBaseParser.USE:
case SqlBaseParser.VALIDATE:
case SqlBaseParser.VERBOSE:
case SqlBaseParser.VIEW:
case SqlBaseParser.WORK:
case SqlBaseParser.WRITE:
case SqlBaseParser.YEAR:
case SqlBaseParser.ZONE:
case SqlBaseParser.STRING:
case SqlBaseParser.UNICODE_STRING:
case SqlBaseParser.BINARY_LITERAL:
case SqlBaseParser.INTEGER_VALUE:
case SqlBaseParser.DECIMAL_VALUE:
case SqlBaseParser.DOUBLE_VALUE:
case SqlBaseParser.IDENTIFIER:
case SqlBaseParser.DIGIT_IDENTIFIER:
case SqlBaseParser.QUOTED_IDENTIFIER:
case SqlBaseParser.BACKQUOTED_IDENTIFIER:
case SqlBaseParser.DOUBLE_PRECISION:
localctx = new ValueExpressionDefaultContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 971;
this.primaryExpression(0);
break;
case SqlBaseParser.PLUS:
case SqlBaseParser.MINUS:
localctx = new ArithmeticUnaryContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 972;
localctx.operator = this._input.LT(1);
_la = this._input.LA(1);
if(!(_la===SqlBaseParser.PLUS || _la===SqlBaseParser.MINUS)) {
localctx.operator = this._errHandler.recoverInline(this);
}
else {
this._errHandler.reportMatch(this);
this.consume();
}
this.state = 973;
this.valueExpression(4);
break;
default:
throw new antlr4.error.NoViableAltException(this);
}
this._ctx.stop = this._input.LT(-1);
this.state = 990;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,123,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 = 988;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,122,this._ctx);
switch(la_) {
case 1:
localctx = new ArithmeticBinaryContext(this, new ValueExpressionContext(this, _parentctx, _parentState));
localctx.left = _prevctx;
this.pushNewRecursionContext(localctx, _startState, SqlBaseParser.RULE_valueExpression);
this.state = 976;
if (!( this.precpred(this._ctx, 3))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 3)");
}
this.state = 977;
localctx.operator = this._input.LT(1);
_la = this._input.LA(1);
if(!(((((_la - 199)) & ~0x1f) == 0 && ((1 << (_la - 199)) & ((1 << (SqlBaseParser.ASTERISK - 199)) | (1 << (SqlBaseParser.SLASH - 199)) | (1 << (SqlBaseParser.PERCENT - 199)))) !== 0))) {
localctx.operator = this._errHandler.recoverInline(this);
}
else {
this._errHandler.reportMatch(this);
this.consume();
}
this.state = 978;
localctx.right = this.valueExpression(4);
break;
case 2:
localctx = new ArithmeticBinaryContext(this, new ValueExpressionContext(this, _parentctx, _parentState));
localctx.left = _prevctx;
this.pushNewRecursionContext(localctx, _startState, SqlBaseParser.RULE_valueExpression);
this.state = 979;
if (!( this.precpred(this._ctx, 2))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 2)");
}
this.state = 980;
localctx.operator = this._input.LT(1);
_la = this._input.LA(1);
if(!(_la===SqlBaseParser.PLUS || _la===SqlBaseParser.MINUS)) {
localctx.operator = this._errHandler.recoverInline(this);
}
else {
this._errHandler.reportMatch(this);
this.consume();
}
this.state = 981;
localctx.right = this.valueExpression(3);
break;
case 3:
localctx = new ConcatenationContext(this, new ValueExpressionContext(this, _parentctx, _parentState));
localctx.left = _prevctx;
this.pushNewRecursionContext(localctx, _startState, SqlBaseParser.RULE_valueExpression);
this.state = 982;
if (!( this.precpred(this._ctx, 1))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
}
this.state = 983;
this.match(SqlBaseParser.CONCAT);
this.state = 984;
localctx.right = this.valueExpression(2);
break;
case 4:
localctx = new AtTimeZoneContext(this, new ValueExpressionContext(this, _parentctx, _parentState));
this.pushNewRecursionContext(localctx, _startState, SqlBaseParser.RULE_valueExpression);
this.state = 985;
if (!( this.precpred(this._ctx, 5))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 5)");
}
this.state = 986;
this.match(SqlBaseParser.AT);
this.state = 987;
this.timeZoneSpecifier();
break;
}
}
this.state = 992;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,123,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 PrimaryExpressionContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_primaryExpression;
return this;
}
PrimaryExpressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
PrimaryExpressionContext.prototype.constructor = PrimaryExpressionContext;
PrimaryExpressionContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function DereferenceContext(parser, ctx) {
PrimaryExpressionContext.call(this, parser);
this.base = null; // PrimaryExpressionContext;
this.fieldName = null; // IdentifierContext;
PrimaryExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
DereferenceContext.prototype = Object.create(PrimaryExpressionContext.prototype);
DereferenceContext.prototype.constructor = DereferenceContext;
SqlBaseParser.DereferenceContext = DereferenceContext;
DereferenceContext.prototype.primaryExpression = function() {
return this.getTypedRuleContext(PrimaryExpressionContext,0);
};
DereferenceContext.prototype.identifier = function() {
return this.getTypedRuleContext(IdentifierContext,0);
};
DereferenceContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterDereference(this);
}
};
DereferenceContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitDereference(this);
}
};
function TypeConstructorContext(parser, ctx) {
PrimaryExpressionContext.call(this, parser);
PrimaryExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
TypeConstructorContext.prototype = Object.create(PrimaryExpressionContext.prototype);
TypeConstructorContext.prototype.constructor = TypeConstructorContext;
SqlBaseParser.TypeConstructorContext = TypeConstructorContext;
TypeConstructorContext.prototype.identifier = function() {
return this.getTypedRuleContext(IdentifierContext,0);
};
TypeConstructorContext.prototype.string = function() {
return this.getTypedRuleContext(StringContext,0);
};
TypeConstructorContext.prototype.DOUBLE_PRECISION = function() {
return this.getToken(SqlBaseParser.DOUBLE_PRECISION, 0);
};
TypeConstructorContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterTypeConstructor(this);
}
};
TypeConstructorContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitTypeConstructor(this);
}
};
function SpecialDateTimeFunctionContext(parser, ctx) {
PrimaryExpressionContext.call(this, parser);
this.name = null; // Token;
this.precision = null; // Token;
PrimaryExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
SpecialDateTimeFunctionContext.prototype = Object.create(PrimaryExpressionContext.prototype);
SpecialDateTimeFunctionContext.prototype.constructor = SpecialDateTimeFunctionContext;
SqlBaseParser.SpecialDateTimeFunctionContext = SpecialDateTimeFunctionContext;
SpecialDateTimeFunctionContext.prototype.CURRENT_DATE = function() {
return this.getToken(SqlBaseParser.CURRENT_DATE, 0);
};
SpecialDateTimeFunctionContext.prototype.CURRENT_TIME = function() {
return this.getToken(SqlBaseParser.CURRENT_TIME, 0);
};
SpecialDateTimeFunctionContext.prototype.INTEGER_VALUE = function() {
return this.getToken(SqlBaseParser.INTEGER_VALUE, 0);
};
SpecialDateTimeFunctionContext.prototype.CURRENT_TIMESTAMP = function() {
return this.getToken(SqlBaseParser.CURRENT_TIMESTAMP, 0);
};
SpecialDateTimeFunctionContext.prototype.LOCALTIME = function() {
return this.getToken(SqlBaseParser.LOCALTIME, 0);
};
SpecialDateTimeFunctionContext.prototype.LOCALTIMESTAMP = function() {
return this.getToken(SqlBaseParser.LOCALTIMESTAMP, 0);
};
SpecialDateTimeFunctionContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterSpecialDateTimeFunction(this);
}
};
SpecialDateTimeFunctionContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitSpecialDateTimeFunction(this);
}
};
function SubstringContext(parser, ctx) {
PrimaryExpressionContext.call(this, parser);
PrimaryExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
SubstringContext.prototype = Object.create(PrimaryExpressionContext.prototype);
SubstringContext.prototype.constructor = SubstringContext;
SqlBaseParser.SubstringContext = SubstringContext;
SubstringContext.prototype.SUBSTRING = function() {
return this.getToken(SqlBaseParser.SUBSTRING, 0);
};
SubstringContext.prototype.valueExpression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ValueExpressionContext);
} else {
return this.getTypedRuleContext(ValueExpressionContext,i);
}
};
SubstringContext.prototype.FROM = function() {
return this.getToken(SqlBaseParser.FROM, 0);
};
SubstringContext.prototype.FOR = function() {
return this.getToken(SqlBaseParser.FOR, 0);
};
SubstringContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterSubstring(this);
}
};
SubstringContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitSubstring(this);
}
};
function CastContext(parser, ctx) {
PrimaryExpressionContext.call(this, parser);
PrimaryExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
CastContext.prototype = Object.create(PrimaryExpressionContext.prototype);
CastContext.prototype.constructor = CastContext;
SqlBaseParser.CastContext = CastContext;
CastContext.prototype.CAST = function() {
return this.getToken(SqlBaseParser.CAST, 0);
};
CastContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
CastContext.prototype.AS = function() {
return this.getToken(SqlBaseParser.AS, 0);
};
CastContext.prototype.type = function() {
return this.getTypedRuleContext(TypeContext,0);
};
CastContext.prototype.TRY_CAST = function() {
return this.getToken(SqlBaseParser.TRY_CAST, 0);
};
CastContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterCast(this);
}
};
CastContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitCast(this);
}
};
function LambdaContext(parser, ctx) {
PrimaryExpressionContext.call(this, parser);
PrimaryExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
LambdaContext.prototype = Object.create(PrimaryExpressionContext.prototype);
LambdaContext.prototype.constructor = LambdaContext;
SqlBaseParser.LambdaContext = LambdaContext;
LambdaContext.prototype.identifier = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(IdentifierContext);
} else {
return this.getTypedRuleContext(IdentifierContext,i);
}
};
LambdaContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
LambdaContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterLambda(this);
}
};
LambdaContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitLambda(this);
}
};
function ParenthesizedExpressionContext(parser, ctx) {
PrimaryExpressionContext.call(this, parser);
PrimaryExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
ParenthesizedExpressionContext.prototype = Object.create(PrimaryExpressionContext.prototype);
ParenthesizedExpressionContext.prototype.constructor = ParenthesizedExpressionContext;
SqlBaseParser.ParenthesizedExpressionContext = ParenthesizedExpressionContext;
ParenthesizedExpressionContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
ParenthesizedExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterParenthesizedExpression(this);
}
};
ParenthesizedExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitParenthesizedExpression(this);
}
};
function ParameterContext(parser, ctx) {
PrimaryExpressionContext.call(this, parser);
PrimaryExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
ParameterContext.prototype = Object.create(PrimaryExpressionContext.prototype);
ParameterContext.prototype.constructor = ParameterContext;
SqlBaseParser.ParameterContext = ParameterContext;
ParameterContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterParameter(this);
}
};
ParameterContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitParameter(this);
}
};
function NormalizeContext(parser, ctx) {
PrimaryExpressionContext.call(this, parser);
PrimaryExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
NormalizeContext.prototype = Object.create(PrimaryExpressionContext.prototype);
NormalizeContext.prototype.constructor = NormalizeContext;
SqlBaseParser.NormalizeContext = NormalizeContext;
NormalizeContext.prototype.NORMALIZE = function() {
return this.getToken(SqlBaseParser.NORMALIZE, 0);
};
NormalizeContext.prototype.valueExpression = function() {
return this.getTypedRuleContext(ValueExpressionContext,0);
};
NormalizeContext.prototype.normalForm = function() {
return this.getTypedRuleContext(NormalFormContext,0);
};
NormalizeContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterNormalize(this);
}
};
NormalizeContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitNormalize(this);
}
};
function IntervalLiteralContext(parser, ctx) {
PrimaryExpressionContext.call(this, parser);
PrimaryExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
IntervalLiteralContext.prototype = Object.create(PrimaryExpressionContext.prototype);
IntervalLiteralContext.prototype.constructor = IntervalLiteralContext;
SqlBaseParser.IntervalLiteralContext = IntervalLiteralContext;
IntervalLiteralContext.prototype.interval = function() {
return this.getTypedRuleContext(IntervalContext,0);
};
IntervalLiteralContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterIntervalLiteral(this);
}
};
IntervalLiteralContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitIntervalLiteral(this);
}
};
function NumericLiteralContext(parser, ctx) {
PrimaryExpressionContext.call(this, parser);
PrimaryExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
NumericLiteralContext.prototype = Object.create(PrimaryExpressionContext.prototype);
NumericLiteralContext.prototype.constructor = NumericLiteralContext;
SqlBaseParser.NumericLiteralContext = NumericLiteralContext;
NumericLiteralContext.prototype.number = function() {
return this.getTypedRuleContext(NumberContext,0);
};
NumericLiteralContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterNumericLiteral(this);
}
};
NumericLiteralContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitNumericLiteral(this);
}
};
function BooleanLiteralContext(parser, ctx) {
PrimaryExpressionContext.call(this, parser);
PrimaryExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
BooleanLiteralContext.prototype = Object.create(PrimaryExpressionContext.prototype);
BooleanLiteralContext.prototype.constructor = BooleanLiteralContext;
SqlBaseParser.BooleanLiteralContext = BooleanLiteralContext;
BooleanLiteralContext.prototype.booleanValue = function() {
return this.getTypedRuleContext(BooleanValueContext,0);
};
BooleanLiteralContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterBooleanLiteral(this);
}
};
BooleanLiteralContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitBooleanLiteral(this);
}
};
function SimpleCaseContext(parser, ctx) {
PrimaryExpressionContext.call(this, parser);
this.elseExpression = null; // ExpressionContext;
PrimaryExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
SimpleCaseContext.prototype = Object.create(PrimaryExpressionContext.prototype);
SimpleCaseContext.prototype.constructor = SimpleCaseContext;
SqlBaseParser.SimpleCaseContext = SimpleCaseContext;
SimpleCaseContext.prototype.CASE = function() {
return this.getToken(SqlBaseParser.CASE, 0);
};
SimpleCaseContext.prototype.valueExpression = function() {
return this.getTypedRuleContext(ValueExpressionContext,0);
};
SimpleCaseContext.prototype.END = function() {
return this.getToken(SqlBaseParser.END, 0);
};
SimpleCaseContext.prototype.whenClause = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(WhenClauseContext);
} else {
return this.getTypedRuleContext(WhenClauseContext,i);
}
};
SimpleCaseContext.prototype.ELSE = function() {
return this.getToken(SqlBaseParser.ELSE, 0);
};
SimpleCaseContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
SimpleCaseContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterSimpleCase(this);
}
};
SimpleCaseContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitSimpleCase(this);
}
};
function ColumnReferenceContext(parser, ctx) {
PrimaryExpressionContext.call(this, parser);
PrimaryExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
ColumnReferenceContext.prototype = Object.create(PrimaryExpressionContext.prototype);
ColumnReferenceContext.prototype.constructor = ColumnReferenceContext;
SqlBaseParser.ColumnReferenceContext = ColumnReferenceContext;
ColumnReferenceContext.prototype.identifier = function() {
return this.getTypedRuleContext(IdentifierContext,0);
};
ColumnReferenceContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterColumnReference(this);
}
};
ColumnReferenceContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitColumnReference(this);
}
};
function NullLiteralContext(parser, ctx) {
PrimaryExpressionContext.call(this, parser);
PrimaryExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
NullLiteralContext.prototype = Object.create(PrimaryExpressionContext.prototype);
NullLiteralContext.prototype.constructor = NullLiteralContext;
SqlBaseParser.NullLiteralContext = NullLiteralContext;
NullLiteralContext.prototype.NULL = function() {
return this.getToken(SqlBaseParser.NULL, 0);
};
NullLiteralContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterNullLiteral(this);
}
};
NullLiteralContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitNullLiteral(this);
}
};
function RowConstructorContext(parser, ctx) {
PrimaryExpressionContext.call(this, parser);
PrimaryExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
RowConstructorContext.prototype = Object.create(PrimaryExpressionContext.prototype);
RowConstructorContext.prototype.constructor = RowConstructorContext;
SqlBaseParser.RowConstructorContext = RowConstructorContext;
RowConstructorContext.prototype.expression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ExpressionContext);
} else {
return this.getTypedRuleContext(ExpressionContext,i);
}
};
RowConstructorContext.prototype.ROW = function() {
return this.getToken(SqlBaseParser.ROW, 0);
};
RowConstructorContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterRowConstructor(this);
}
};
RowConstructorContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitRowConstructor(this);
}
};
function SubscriptContext(parser, ctx) {
PrimaryExpressionContext.call(this, parser);
this.value = null; // PrimaryExpressionContext;
this.index = null; // ValueExpressionContext;
PrimaryExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
SubscriptContext.prototype = Object.create(PrimaryExpressionContext.prototype);
SubscriptContext.prototype.constructor = SubscriptContext;
SqlBaseParser.SubscriptContext = SubscriptContext;
SubscriptContext.prototype.primaryExpression = function() {
return this.getTypedRuleContext(PrimaryExpressionContext,0);
};
SubscriptContext.prototype.valueExpression = function() {
return this.getTypedRuleContext(ValueExpressionContext,0);
};
SubscriptContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterSubscript(this);
}
};
SubscriptContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitSubscript(this);
}
};
function CurrentPathContext(parser, ctx) {
PrimaryExpressionContext.call(this, parser);
this.name = null; // Token;
PrimaryExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
CurrentPathContext.prototype = Object.create(PrimaryExpressionContext.prototype);
CurrentPathContext.prototype.constructor = CurrentPathContext;
SqlBaseParser.CurrentPathContext = CurrentPathContext;
CurrentPathContext.prototype.CURRENT_PATH = function() {
return this.getToken(SqlBaseParser.CURRENT_PATH, 0);
};
CurrentPathContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterCurrentPath(this);
}
};
CurrentPathContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitCurrentPath(this);
}
};
function SubqueryExpressionContext(parser, ctx) {
PrimaryExpressionContext.call(this, parser);
PrimaryExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
SubqueryExpressionContext.prototype = Object.create(PrimaryExpressionContext.prototype);
SubqueryExpressionContext.prototype.constructor = SubqueryExpressionContext;
SqlBaseParser.SubqueryExpressionContext = SubqueryExpressionContext;
SubqueryExpressionContext.prototype.query = function() {
return this.getTypedRuleContext(QueryContext,0);
};
SubqueryExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterSubqueryExpression(this);
}
};
SubqueryExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitSubqueryExpression(this);
}
};
function BinaryLiteralContext(parser, ctx) {
PrimaryExpressionContext.call(this, parser);
PrimaryExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
BinaryLiteralContext.prototype = Object.create(PrimaryExpressionContext.prototype);
BinaryLiteralContext.prototype.constructor = BinaryLiteralContext;
SqlBaseParser.BinaryLiteralContext = BinaryLiteralContext;
BinaryLiteralContext.prototype.BINARY_LITERAL = function() {
return this.getToken(SqlBaseParser.BINARY_LITERAL, 0);
};
BinaryLiteralContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterBinaryLiteral(this);
}
};
BinaryLiteralContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitBinaryLiteral(this);
}
};
function CurrentUserContext(parser, ctx) {
PrimaryExpressionContext.call(this, parser);
this.name = null; // Token;
PrimaryExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
CurrentUserContext.prototype = Object.create(PrimaryExpressionContext.prototype);
CurrentUserContext.prototype.constructor = CurrentUserContext;
SqlBaseParser.CurrentUserContext = CurrentUserContext;
CurrentUserContext.prototype.CURRENT_USER = function() {
return this.getToken(SqlBaseParser.CURRENT_USER, 0);
};
CurrentUserContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterCurrentUser(this);
}
};
CurrentUserContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitCurrentUser(this);
}
};
function ExtractContext(parser, ctx) {
PrimaryExpressionContext.call(this, parser);
PrimaryExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
ExtractContext.prototype = Object.create(PrimaryExpressionContext.prototype);
ExtractContext.prototype.constructor = ExtractContext;
SqlBaseParser.ExtractContext = ExtractContext;
ExtractContext.prototype.EXTRACT = function() {
return this.getToken(SqlBaseParser.EXTRACT, 0);
};
ExtractContext.prototype.identifier = function() {
return this.getTypedRuleContext(IdentifierContext,0);
};
ExtractContext.prototype.FROM = function() {
return this.getToken(SqlBaseParser.FROM, 0);
};
ExtractContext.prototype.valueExpression = function() {
return this.getTypedRuleContext(ValueExpressionContext,0);
};
ExtractContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterExtract(this);
}
};
ExtractContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitExtract(this);
}
};
function StringLiteralContext(parser, ctx) {
PrimaryExpressionContext.call(this, parser);
PrimaryExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
StringLiteralContext.prototype = Object.create(PrimaryExpressionContext.prototype);
StringLiteralContext.prototype.constructor = StringLiteralContext;
SqlBaseParser.StringLiteralContext = StringLiteralContext;
StringLiteralContext.prototype.string = function() {
return this.getTypedRuleContext(StringContext,0);
};
StringLiteralContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterStringLiteral(this);
}
};
StringLiteralContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitStringLiteral(this);
}
};
function ArrayConstructorContext(parser, ctx) {
PrimaryExpressionContext.call(this, parser);
PrimaryExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
ArrayConstructorContext.prototype = Object.create(PrimaryExpressionContext.prototype);
ArrayConstructorContext.prototype.constructor = ArrayConstructorContext;
SqlBaseParser.ArrayConstructorContext = ArrayConstructorContext;
ArrayConstructorContext.prototype.ARRAY = function() {
return this.getToken(SqlBaseParser.ARRAY, 0);
};
ArrayConstructorContext.prototype.expression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ExpressionContext);
} else {
return this.getTypedRuleContext(ExpressionContext,i);
}
};
ArrayConstructorContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterArrayConstructor(this);
}
};
ArrayConstructorContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitArrayConstructor(this);
}
};
function FunctionCallContext(parser, ctx) {
PrimaryExpressionContext.call(this, parser);
PrimaryExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
FunctionCallContext.prototype = Object.create(PrimaryExpressionContext.prototype);
FunctionCallContext.prototype.constructor = FunctionCallContext;
SqlBaseParser.FunctionCallContext = FunctionCallContext;
FunctionCallContext.prototype.qualifiedName = function() {
return this.getTypedRuleContext(QualifiedNameContext,0);
};
FunctionCallContext.prototype.ASTERISK = function() {
return this.getToken(SqlBaseParser.ASTERISK, 0);
};
FunctionCallContext.prototype.filter = function() {
return this.getTypedRuleContext(FilterContext,0);
};
FunctionCallContext.prototype.over = function() {
return this.getTypedRuleContext(OverContext,0);
};
FunctionCallContext.prototype.expression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ExpressionContext);
} else {
return this.getTypedRuleContext(ExpressionContext,i);
}
};
FunctionCallContext.prototype.ORDER = function() {
return this.getToken(SqlBaseParser.ORDER, 0);
};
FunctionCallContext.prototype.BY = function() {
return this.getToken(SqlBaseParser.BY, 0);
};
FunctionCallContext.prototype.sortItem = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(SortItemContext);
} else {
return this.getTypedRuleContext(SortItemContext,i);
}
};
FunctionCallContext.prototype.setQuantifier = function() {
return this.getTypedRuleContext(SetQuantifierContext,0);
};
FunctionCallContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterFunctionCall(this);
}
};
FunctionCallContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitFunctionCall(this);
}
};
function ExistsContext(parser, ctx) {
PrimaryExpressionContext.call(this, parser);
PrimaryExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
ExistsContext.prototype = Object.create(PrimaryExpressionContext.prototype);
ExistsContext.prototype.constructor = ExistsContext;
SqlBaseParser.ExistsContext = ExistsContext;
ExistsContext.prototype.EXISTS = function() {
return this.getToken(SqlBaseParser.EXISTS, 0);
};
ExistsContext.prototype.query = function() {
return this.getTypedRuleContext(QueryContext,0);
};
ExistsContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterExists(this);
}
};
ExistsContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitExists(this);
}
};
function PositionContext(parser, ctx) {
PrimaryExpressionContext.call(this, parser);
PrimaryExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
PositionContext.prototype = Object.create(PrimaryExpressionContext.prototype);
PositionContext.prototype.constructor = PositionContext;
SqlBaseParser.PositionContext = PositionContext;
PositionContext.prototype.POSITION = function() {
return this.getToken(SqlBaseParser.POSITION, 0);
};
PositionContext.prototype.valueExpression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ValueExpressionContext);
} else {
return this.getTypedRuleContext(ValueExpressionContext,i);
}
};
PositionContext.prototype.IN = function() {
return this.getToken(SqlBaseParser.IN, 0);
};
PositionContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterPosition(this);
}
};
PositionContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitPosition(this);
}
};
function SearchedCaseContext(parser, ctx) {
PrimaryExpressionContext.call(this, parser);
this.elseExpression = null; // ExpressionContext;
PrimaryExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
SearchedCaseContext.prototype = Object.create(PrimaryExpressionContext.prototype);
SearchedCaseContext.prototype.constructor = SearchedCaseContext;
SqlBaseParser.SearchedCaseContext = SearchedCaseContext;
SearchedCaseContext.prototype.CASE = function() {
return this.getToken(SqlBaseParser.CASE, 0);
};
SearchedCaseContext.prototype.END = function() {
return this.getToken(SqlBaseParser.END, 0);
};
SearchedCaseContext.prototype.whenClause = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(WhenClauseContext);
} else {
return this.getTypedRuleContext(WhenClauseContext,i);
}
};
SearchedCaseContext.prototype.ELSE = function() {
return this.getToken(SqlBaseParser.ELSE, 0);
};
SearchedCaseContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
SearchedCaseContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterSearchedCase(this);
}
};
SearchedCaseContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitSearchedCase(this);
}
};
function GroupingOperationContext(parser, ctx) {
PrimaryExpressionContext.call(this, parser);
PrimaryExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
GroupingOperationContext.prototype = Object.create(PrimaryExpressionContext.prototype);
GroupingOperationContext.prototype.constructor = GroupingOperationContext;
SqlBaseParser.GroupingOperationContext = GroupingOperationContext;
GroupingOperationContext.prototype.GROUPING = function() {
return this.getToken(SqlBaseParser.GROUPING, 0);
};
GroupingOperationContext.prototype.qualifiedName = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(QualifiedNameContext);
} else {
return this.getTypedRuleContext(QualifiedNameContext,i);
}
};
GroupingOperationContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterGroupingOperation(this);
}
};
GroupingOperationContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitGroupingOperation(this);
}
};
SqlBaseParser.prototype.primaryExpression = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new PrimaryExpressionContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 68;
this.enterRecursionRule(localctx, 68, SqlBaseParser.RULE_primaryExpression, _p);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 1230;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,151,this._ctx);
switch(la_) {
case 1:
localctx = new NullLiteralContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 994;
this.match(SqlBaseParser.NULL);
break;
case 2:
localctx = new IntervalLiteralContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 995;
this.interval();
break;
case 3:
localctx = new TypeConstructorContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 996;
this.identifier();
this.state = 997;
this.string();
break;
case 4:
localctx = new TypeConstructorContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 999;
this.match(SqlBaseParser.DOUBLE_PRECISION);
this.state = 1000;
this.string();
break;
case 5:
localctx = new NumericLiteralContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1001;
this.number();
break;
case 6:
localctx = new BooleanLiteralContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1002;
this.booleanValue();
break;
case 7:
localctx = new StringLiteralContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1003;
this.string();
break;
case 8:
localctx = new BinaryLiteralContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1004;
this.match(SqlBaseParser.BINARY_LITERAL);
break;
case 9:
localctx = new ParameterContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1005;
this.match(SqlBaseParser.T__4);
break;
case 10:
localctx = new PositionContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1006;
this.match(SqlBaseParser.POSITION);
this.state = 1007;
this.match(SqlBaseParser.T__1);
this.state = 1008;
this.valueExpression(0);
this.state = 1009;
this.match(SqlBaseParser.IN);
this.state = 1010;
this.valueExpression(0);
this.state = 1011;
this.match(SqlBaseParser.T__2);
break;
case 11:
localctx = new RowConstructorContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1013;
this.match(SqlBaseParser.T__1);
this.state = 1014;
this.expression();
this.state = 1017;
this._errHandler.sync(this);
_la = this._input.LA(1);
do {
this.state = 1015;
this.match(SqlBaseParser.T__3);
this.state = 1016;
this.expression();
this.state = 1019;
this._errHandler.sync(this);
_la = this._input.LA(1);
} while(_la===SqlBaseParser.T__3);
this.state = 1021;
this.match(SqlBaseParser.T__2);
break;
case 12:
localctx = new RowConstructorContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1023;
this.match(SqlBaseParser.ROW);
this.state = 1024;
this.match(SqlBaseParser.T__1);
this.state = 1025;
this.expression();
this.state = 1030;
this._errHandler.sync(this);
_la = this._input.LA(1);
while(_la===SqlBaseParser.T__3) {
this.state = 1026;
this.match(SqlBaseParser.T__3);
this.state = 1027;
this.expression();
this.state = 1032;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
this.state = 1033;
this.match(SqlBaseParser.T__2);
break;
case 13:
localctx = new FunctionCallContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1035;
this.qualifiedName();
this.state = 1036;
this.match(SqlBaseParser.T__1);
this.state = 1037;
this.match(SqlBaseParser.ASTERISK);
this.state = 1038;
this.match(SqlBaseParser.T__2);
this.state = 1040;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,126,this._ctx);
if(la_===1) {
this.state = 1039;
this.filter();
}
this.state = 1043;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,127,this._ctx);
if(la_===1) {
this.state = 1042;
this.over();
}
break;
case 14:
localctx = new FunctionCallContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1045;
this.qualifiedName();
this.state = 1046;
this.match(SqlBaseParser.T__1);
this.state = 1058;
this._errHandler.sync(this);
_la = this._input.LA(1);
if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << SqlBaseParser.T__1) | (1 << SqlBaseParser.T__4) | (1 << SqlBaseParser.ADD) | (1 << SqlBaseParser.ALL) | (1 << SqlBaseParser.ANALYZE) | (1 << SqlBaseParser.ANY) | (1 << SqlBaseParser.ARRAY) | (1 << SqlBaseParser.ASC) | (1 << SqlBaseParser.AT) | (1 << SqlBaseParser.BERNOULLI) | (1 << SqlBaseParser.CALL) | (1 << SqlBaseParser.CASCADE) | (1 << SqlBaseParser.CASE) | (1 << SqlBaseParser.CAST) | (1 << SqlBaseParser.CATALOGS) | (1 << SqlBaseParser.COLUMN) | (1 << SqlBaseParser.COLUMNS) | (1 << SqlBaseParser.COMMENT) | (1 << SqlBaseParser.COMMIT))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (SqlBaseParser.COMMITTED - 32)) | (1 << (SqlBaseParser.CURRENT - 32)) | (1 << (SqlBaseParser.CURRENT_DATE - 32)) | (1 << (SqlBaseParser.CURRENT_PATH - 32)) | (1 << (SqlBaseParser.CURRENT_TIME - 32)) | (1 << (SqlBaseParser.CURRENT_TIMESTAMP - 32)) | (1 << (SqlBaseParser.CURRENT_USER - 32)) | (1 << (SqlBaseParser.DATA - 32)) | (1 << (SqlBaseParser.DATE - 32)) | (1 << (SqlBaseParser.DAY - 32)) | (1 << (SqlBaseParser.DESC - 32)) | (1 << (SqlBaseParser.DISTINCT - 32)) | (1 << (SqlBaseParser.DISTRIBUTED - 32)) | (1 << (SqlBaseParser.EXCLUDING - 32)) | (1 << (SqlBaseParser.EXISTS - 32)) | (1 << (SqlBaseParser.EXPLAIN - 32)) | (1 << (SqlBaseParser.EXTRACT - 32)) | (1 << (SqlBaseParser.FALSE - 32)) | (1 << (SqlBaseParser.FILTER - 32)))) !== 0) || ((((_la - 64)) & ~0x1f) == 0 && ((1 << (_la - 64)) & ((1 << (SqlBaseParser.FIRST - 64)) | (1 << (SqlBaseParser.FOLLOWING - 64)) | (1 << (SqlBaseParser.FORMAT - 64)) | (1 << (SqlBaseParser.FUNCTIONS - 64)) | (1 << (SqlBaseParser.GRANT - 64)) | (1 << (SqlBaseParser.GRANTS - 64)) | (1 << (SqlBaseParser.GRAPHVIZ - 64)) | (1 << (SqlBaseParser.GROUPING - 64)) | (1 << (SqlBaseParser.HOUR - 64)) | (1 << (SqlBaseParser.IF - 64)) | (1 << (SqlBaseParser.INCLUDING - 64)) | (1 << (SqlBaseParser.INPUT - 64)) | (1 << (SqlBaseParser.INTERVAL - 64)) | (1 << (SqlBaseParser.IO - 64)) | (1 << (SqlBaseParser.ISOLATION - 64)) | (1 << (SqlBaseParser.JSON - 64)) | (1 << (SqlBaseParser.LAST - 64)) | (1 << (SqlBaseParser.LATERAL - 64)) | (1 << (SqlBaseParser.LEVEL - 64)))) !== 0) || ((((_la - 97)) & ~0x1f) == 0 && ((1 << (_la - 97)) & ((1 << (SqlBaseParser.LIMIT - 97)) | (1 << (SqlBaseParser.LOCALTIME - 97)) | (1 << (SqlBaseParser.LOCALTIMESTAMP - 97)) | (1 << (SqlBaseParser.LOGICAL - 97)) | (1 << (SqlBaseParser.MAP - 97)) | (1 << (SqlBaseParser.MINUTE - 97)) | (1 << (SqlBaseParser.MONTH - 97)) | (1 << (SqlBaseParser.NFC - 97)) | (1 << (SqlBaseParser.NFD - 97)) | (1 << (SqlBaseParser.NFKC - 97)) | (1 << (SqlBaseParser.NFKD - 97)) | (1 << (SqlBaseParser.NO - 97)) | (1 << (SqlBaseParser.NORMALIZE - 97)) | (1 << (SqlBaseParser.NOT - 97)) | (1 << (SqlBaseParser.NULL - 97)) | (1 << (SqlBaseParser.NULLIF - 97)) | (1 << (SqlBaseParser.NULLS - 97)) | (1 << (SqlBaseParser.ONLY - 97)) | (1 << (SqlBaseParser.OPTION - 97)) | (1 << (SqlBaseParser.ORDINALITY - 97)) | (1 << (SqlBaseParser.OUTPUT - 97)) | (1 << (SqlBaseParser.OVER - 97)) | (1 << (SqlBaseParser.PARTITION - 97)) | (1 << (SqlBaseParser.PARTITIONS - 97)) | (1 << (SqlBaseParser.PATH - 97)) | (1 << (SqlBaseParser.POSITION - 97)) | (1 << (SqlBaseParser.PRECEDING - 97)))) !== 0) || ((((_la - 130)) & ~0x1f) == 0 && ((1 << (_la - 130)) & ((1 << (SqlBaseParser.PRIVILEGES - 130)) | (1 << (SqlBaseParser.PROPERTIES - 130)) | (1 << (SqlBaseParser.PUBLIC - 130)) | (1 << (SqlBaseParser.RANGE - 130)) | (1 << (SqlBaseParser.READ - 130)) | (1 << (SqlBaseParser.RENAME - 130)) | (1 << (SqlBaseParser.REPEATABLE - 130)) | (1 << (SqlBaseParser.REPLACE - 130)) | (1 << (SqlBaseParser.RESET - 130)) | (1 << (SqlBaseParser.RESTRICT - 130)) | (1 << (SqlBaseParser.REVOKE - 130)) | (1 << (SqlBaseParser.ROLLBACK - 130)) | (1 << (SqlBaseParser.ROW - 130)) | (1 << (SqlBaseParser.ROWS - 130)) | (1 << (SqlBaseParser.SCHEMA - 130)) | (1 << (SqlBaseParser.SCHEMAS - 130)) | (1 << (SqlBaseParser.SECOND - 130)) | (1 << (SqlBaseParser.SERIALIZABLE - 130)) | (1 << (SqlBaseParser.SESSION - 130)) | (1 << (SqlBaseParser.SET - 130)) | (1 << (SqlBaseParser.SETS - 130)) | (1 << (SqlBaseParser.SHOW - 130)) | (1 << (SqlBaseParser.SOME - 130)) | (1 << (SqlBaseParser.START - 130)) | (1 << (SqlBaseParser.STATS - 130)) | (1 << (SqlBaseParser.SUBSTRING - 130)) | (1 << (SqlBaseParser.SYSTEM - 130)))) !== 0) || ((((_la - 162)) & ~0x1f) == 0 && ((1 << (_la - 162)) & ((1 << (SqlBaseParser.TABLES - 162)) | (1 << (SqlBaseParser.TABLESAMPLE - 162)) | (1 << (SqlBaseParser.TEXT - 162)) | (1 << (SqlBaseParser.TIME - 162)) | (1 << (SqlBaseParser.TIMESTAMP - 162)) | (1 << (SqlBaseParser.TO - 162)) | (1 << (SqlBaseParser.TRANSACTION - 162)) | (1 << (SqlBaseParser.TRUE - 162)) | (1 << (SqlBaseParser.TRY_CAST - 162)) | (1 << (SqlBaseParser.TYPE - 162)) | (1 << (SqlBaseParser.UNBOUNDED - 162)) | (1 << (SqlBaseParser.UNCOMMITTED - 162)) | (1 << (SqlBaseParser.USE - 162)) | (1 << (SqlBaseParser.VALIDATE - 162)) | (1 << (SqlBaseParser.VERBOSE - 162)) | (1 << (SqlBaseParser.VIEW - 162)) | (1 << (SqlBaseParser.WORK - 162)) | (1 << (SqlBaseParser.WRITE - 162)) | (1 << (SqlBaseParser.YEAR - 162)) | (1 << (SqlBaseParser.ZONE - 162)))) !== 0) || ((((_la - 197)) & ~0x1f) == 0 && ((1 << (_la - 197)) & ((1 << (SqlBaseParser.PLUS - 197)) | (1 << (SqlBaseParser.MINUS - 197)) | (1 << (SqlBaseParser.STRING - 197)) | (1 << (SqlBaseParser.UNICODE_STRING - 197)) | (1 << (SqlBaseParser.BINARY_LITERAL - 197)) | (1 << (SqlBaseParser.INTEGER_VALUE - 197)) | (1 << (SqlBaseParser.DECIMAL_VALUE - 197)) | (1 << (SqlBaseParser.DOUBLE_VALUE - 197)) | (1 << (SqlBaseParser.IDENTIFIER - 197)) | (1 << (SqlBaseParser.DIGIT_IDENTIFIER - 197)) | (1 << (SqlBaseParser.QUOTED_IDENTIFIER - 197)) | (1 << (SqlBaseParser.BACKQUOTED_IDENTIFIER - 197)) | (1 << (SqlBaseParser.DOUBLE_PRECISION - 197)))) !== 0)) {
this.state = 1048;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,128,this._ctx);
if(la_===1) {
this.state = 1047;
this.setQuantifier();
}
this.state = 1050;
this.expression();
this.state = 1055;
this._errHandler.sync(this);
_la = this._input.LA(1);
while(_la===SqlBaseParser.T__3) {
this.state = 1051;
this.match(SqlBaseParser.T__3);
this.state = 1052;
this.expression();
this.state = 1057;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
}
this.state = 1070;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.ORDER) {
this.state = 1060;
this.match(SqlBaseParser.ORDER);
this.state = 1061;
this.match(SqlBaseParser.BY);
this.state = 1062;
this.sortItem();
this.state = 1067;
this._errHandler.sync(this);
_la = this._input.LA(1);
while(_la===SqlBaseParser.T__3) {
this.state = 1063;
this.match(SqlBaseParser.T__3);
this.state = 1064;
this.sortItem();
this.state = 1069;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
}
this.state = 1072;
this.match(SqlBaseParser.T__2);
this.state = 1074;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,133,this._ctx);
if(la_===1) {
this.state = 1073;
this.filter();
}
this.state = 1077;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,134,this._ctx);
if(la_===1) {
this.state = 1076;
this.over();
}
break;
case 15:
localctx = new LambdaContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1079;
this.identifier();
this.state = 1080;
this.match(SqlBaseParser.T__5);
this.state = 1081;
this.expression();
break;
case 16:
localctx = new LambdaContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1083;
this.match(SqlBaseParser.T__1);
this.state = 1092;
this._errHandler.sync(this);
_la = this._input.LA(1);
if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << SqlBaseParser.ADD) | (1 << SqlBaseParser.ALL) | (1 << SqlBaseParser.ANALYZE) | (1 << SqlBaseParser.ANY) | (1 << SqlBaseParser.ARRAY) | (1 << SqlBaseParser.ASC) | (1 << SqlBaseParser.AT) | (1 << SqlBaseParser.BERNOULLI) | (1 << SqlBaseParser.CALL) | (1 << SqlBaseParser.CASCADE) | (1 << SqlBaseParser.CATALOGS) | (1 << SqlBaseParser.COLUMN) | (1 << SqlBaseParser.COLUMNS) | (1 << SqlBaseParser.COMMENT) | (1 << SqlBaseParser.COMMIT))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (SqlBaseParser.COMMITTED - 32)) | (1 << (SqlBaseParser.CURRENT - 32)) | (1 << (SqlBaseParser.DATA - 32)) | (1 << (SqlBaseParser.DATE - 32)) | (1 << (SqlBaseParser.DAY - 32)) | (1 << (SqlBaseParser.DESC - 32)) | (1 << (SqlBaseParser.DISTRIBUTED - 32)) | (1 << (SqlBaseParser.EXCLUDING - 32)) | (1 << (SqlBaseParser.EXPLAIN - 32)) | (1 << (SqlBaseParser.FILTER - 32)))) !== 0) || ((((_la - 64)) & ~0x1f) == 0 && ((1 << (_la - 64)) & ((1 << (SqlBaseParser.FIRST - 64)) | (1 << (SqlBaseParser.FOLLOWING - 64)) | (1 << (SqlBaseParser.FORMAT - 64)) | (1 << (SqlBaseParser.FUNCTIONS - 64)) | (1 << (SqlBaseParser.GRANT - 64)) | (1 << (SqlBaseParser.GRANTS - 64)) | (1 << (SqlBaseParser.GRAPHVIZ - 64)) | (1 << (SqlBaseParser.HOUR - 64)) | (1 << (SqlBaseParser.IF - 64)) | (1 << (SqlBaseParser.INCLUDING - 64)) | (1 << (SqlBaseParser.INPUT - 64)) | (1 << (SqlBaseParser.INTERVAL - 64)) | (1 << (SqlBaseParser.IO - 64)) | (1 << (SqlBaseParser.ISOLATION - 64)) | (1 << (SqlBaseParser.JSON - 64)) | (1 << (SqlBaseParser.LAST - 64)) | (1 << (SqlBaseParser.LATERAL - 64)) | (1 << (SqlBaseParser.LEVEL - 64)))) !== 0) || ((((_la - 97)) & ~0x1f) == 0 && ((1 << (_la - 97)) & ((1 << (SqlBaseParser.LIMIT - 97)) | (1 << (SqlBaseParser.LOGICAL - 97)) | (1 << (SqlBaseParser.MAP - 97)) | (1 << (SqlBaseParser.MINUTE - 97)) | (1 << (SqlBaseParser.MONTH - 97)) | (1 << (SqlBaseParser.NFC - 97)) | (1 << (SqlBaseParser.NFD - 97)) | (1 << (SqlBaseParser.NFKC - 97)) | (1 << (SqlBaseParser.NFKD - 97)) | (1 << (SqlBaseParser.NO - 97)) | (1 << (SqlBaseParser.NULLIF - 97)) | (1 << (SqlBaseParser.NULLS - 97)) | (1 << (SqlBaseParser.ONLY - 97)) | (1 << (SqlBaseParser.OPTION - 97)) | (1 << (SqlBaseParser.ORDINALITY - 97)) | (1 << (SqlBaseParser.OUTPUT - 97)) | (1 << (SqlBaseParser.OVER - 97)) | (1 << (SqlBaseParser.PARTITION - 97)) | (1 << (SqlBaseParser.PARTITIONS - 97)) | (1 << (SqlBaseParser.PATH - 97)) | (1 << (SqlBaseParser.POSITION - 97)) | (1 << (SqlBaseParser.PRECEDING - 97)))) !== 0) || ((((_la - 130)) & ~0x1f) == 0 && ((1 << (_la - 130)) & ((1 << (SqlBaseParser.PRIVILEGES - 130)) | (1 << (SqlBaseParser.PROPERTIES - 130)) | (1 << (SqlBaseParser.PUBLIC - 130)) | (1 << (SqlBaseParser.RANGE - 130)) | (1 << (SqlBaseParser.READ - 130)) | (1 << (SqlBaseParser.RENAME - 130)) | (1 << (SqlBaseParser.REPEATABLE - 130)) | (1 << (SqlBaseParser.REPLACE - 130)) | (1 << (SqlBaseParser.RESET - 130)) | (1 << (SqlBaseParser.RESTRICT - 130)) | (1 << (SqlBaseParser.REVOKE - 130)) | (1 << (SqlBaseParser.ROLLBACK - 130)) | (1 << (SqlBaseParser.ROW - 130)) | (1 << (SqlBaseParser.ROWS - 130)) | (1 << (SqlBaseParser.SCHEMA - 130)) | (1 << (SqlBaseParser.SCHEMAS - 130)) | (1 << (SqlBaseParser.SECOND - 130)) | (1 << (SqlBaseParser.SERIALIZABLE - 130)) | (1 << (SqlBaseParser.SESSION - 130)) | (1 << (SqlBaseParser.SET - 130)) | (1 << (SqlBaseParser.SETS - 130)) | (1 << (SqlBaseParser.SHOW - 130)) | (1 << (SqlBaseParser.SOME - 130)) | (1 << (SqlBaseParser.START - 130)) | (1 << (SqlBaseParser.STATS - 130)) | (1 << (SqlBaseParser.SUBSTRING - 130)) | (1 << (SqlBaseParser.SYSTEM - 130)))) !== 0) || ((((_la - 162)) & ~0x1f) == 0 && ((1 << (_la - 162)) & ((1 << (SqlBaseParser.TABLES - 162)) | (1 << (SqlBaseParser.TABLESAMPLE - 162)) | (1 << (SqlBaseParser.TEXT - 162)) | (1 << (SqlBaseParser.TIME - 162)) | (1 << (SqlBaseParser.TIMESTAMP - 162)) | (1 << (SqlBaseParser.TO - 162)) | (1 << (SqlBaseParser.TRANSACTION - 162)) | (1 << (SqlBaseParser.TRY_CAST - 162)) | (1 << (SqlBaseParser.TYPE - 162)) | (1 << (SqlBaseParser.UNBOUNDED - 162)) | (1 << (SqlBaseParser.UNCOMMITTED - 162)) | (1 << (SqlBaseParser.USE - 162)) | (1 << (SqlBaseParser.VALIDATE - 162)) | (1 << (SqlBaseParser.VERBOSE - 162)) | (1 << (SqlBaseParser.VIEW - 162)) | (1 << (SqlBaseParser.WORK - 162)) | (1 << (SqlBaseParser.WRITE - 162)) | (1 << (SqlBaseParser.YEAR - 162)) | (1 << (SqlBaseParser.ZONE - 162)))) !== 0) || ((((_la - 209)) & ~0x1f) == 0 && ((1 << (_la - 209)) & ((1 << (SqlBaseParser.IDENTIFIER - 209)) | (1 << (SqlBaseParser.DIGIT_IDENTIFIER - 209)) | (1 << (SqlBaseParser.QUOTED_IDENTIFIER - 209)) | (1 << (SqlBaseParser.BACKQUOTED_IDENTIFIER - 209)))) !== 0)) {
this.state = 1084;
this.identifier();
this.state = 1089;
this._errHandler.sync(this);
_la = this._input.LA(1);
while(_la===SqlBaseParser.T__3) {
this.state = 1085;
this.match(SqlBaseParser.T__3);
this.state = 1086;
this.identifier();
this.state = 1091;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
}
this.state = 1094;
this.match(SqlBaseParser.T__2);
this.state = 1095;
this.match(SqlBaseParser.T__5);
this.state = 1096;
this.expression();
break;
case 17:
localctx = new SubqueryExpressionContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1097;
this.match(SqlBaseParser.T__1);
this.state = 1098;
this.query();
this.state = 1099;
this.match(SqlBaseParser.T__2);
break;
case 18:
localctx = new ExistsContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1101;
this.match(SqlBaseParser.EXISTS);
this.state = 1102;
this.match(SqlBaseParser.T__1);
this.state = 1103;
this.query();
this.state = 1104;
this.match(SqlBaseParser.T__2);
break;
case 19:
localctx = new SimpleCaseContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1106;
this.match(SqlBaseParser.CASE);
this.state = 1107;
this.valueExpression(0);
this.state = 1109;
this._errHandler.sync(this);
_la = this._input.LA(1);
do {
this.state = 1108;
this.whenClause();
this.state = 1111;
this._errHandler.sync(this);
_la = this._input.LA(1);
} while(_la===SqlBaseParser.WHEN);
this.state = 1115;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.ELSE) {
this.state = 1113;
this.match(SqlBaseParser.ELSE);
this.state = 1114;
localctx.elseExpression = this.expression();
}
this.state = 1117;
this.match(SqlBaseParser.END);
break;
case 20:
localctx = new SearchedCaseContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1119;
this.match(SqlBaseParser.CASE);
this.state = 1121;
this._errHandler.sync(this);
_la = this._input.LA(1);
do {
this.state = 1120;
this.whenClause();
this.state = 1123;
this._errHandler.sync(this);
_la = this._input.LA(1);
} while(_la===SqlBaseParser.WHEN);
this.state = 1127;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.ELSE) {
this.state = 1125;
this.match(SqlBaseParser.ELSE);
this.state = 1126;
localctx.elseExpression = this.expression();
}
this.state = 1129;
this.match(SqlBaseParser.END);
break;
case 21:
localctx = new CastContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1131;
this.match(SqlBaseParser.CAST);
this.state = 1132;
this.match(SqlBaseParser.T__1);
this.state = 1133;
this.expression();
this.state = 1134;
this.match(SqlBaseParser.AS);
this.state = 1135;
this.type(0);
this.state = 1136;
this.match(SqlBaseParser.T__2);
break;
case 22:
localctx = new CastContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1138;
this.match(SqlBaseParser.TRY_CAST);
this.state = 1139;
this.match(SqlBaseParser.T__1);
this.state = 1140;
this.expression();
this.state = 1141;
this.match(SqlBaseParser.AS);
this.state = 1142;
this.type(0);
this.state = 1143;
this.match(SqlBaseParser.T__2);
break;
case 23:
localctx = new ArrayConstructorContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1145;
this.match(SqlBaseParser.ARRAY);
this.state = 1146;
this.match(SqlBaseParser.T__6);
this.state = 1155;
this._errHandler.sync(this);
_la = this._input.LA(1);
if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << SqlBaseParser.T__1) | (1 << SqlBaseParser.T__4) | (1 << SqlBaseParser.ADD) | (1 << SqlBaseParser.ALL) | (1 << SqlBaseParser.ANALYZE) | (1 << SqlBaseParser.ANY) | (1 << SqlBaseParser.ARRAY) | (1 << SqlBaseParser.ASC) | (1 << SqlBaseParser.AT) | (1 << SqlBaseParser.BERNOULLI) | (1 << SqlBaseParser.CALL) | (1 << SqlBaseParser.CASCADE) | (1 << SqlBaseParser.CASE) | (1 << SqlBaseParser.CAST) | (1 << SqlBaseParser.CATALOGS) | (1 << SqlBaseParser.COLUMN) | (1 << SqlBaseParser.COLUMNS) | (1 << SqlBaseParser.COMMENT) | (1 << SqlBaseParser.COMMIT))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (SqlBaseParser.COMMITTED - 32)) | (1 << (SqlBaseParser.CURRENT - 32)) | (1 << (SqlBaseParser.CURRENT_DATE - 32)) | (1 << (SqlBaseParser.CURRENT_PATH - 32)) | (1 << (SqlBaseParser.CURRENT_TIME - 32)) | (1 << (SqlBaseParser.CURRENT_TIMESTAMP - 32)) | (1 << (SqlBaseParser.CURRENT_USER - 32)) | (1 << (SqlBaseParser.DATA - 32)) | (1 << (SqlBaseParser.DATE - 32)) | (1 << (SqlBaseParser.DAY - 32)) | (1 << (SqlBaseParser.DESC - 32)) | (1 << (SqlBaseParser.DISTRIBUTED - 32)) | (1 << (SqlBaseParser.EXCLUDING - 32)) | (1 << (SqlBaseParser.EXISTS - 32)) | (1 << (SqlBaseParser.EXPLAIN - 32)) | (1 << (SqlBaseParser.EXTRACT - 32)) | (1 << (SqlBaseParser.FALSE - 32)) | (1 << (SqlBaseParser.FILTER - 32)))) !== 0) || ((((_la - 64)) & ~0x1f) == 0 && ((1 << (_la - 64)) & ((1 << (SqlBaseParser.FIRST - 64)) | (1 << (SqlBaseParser.FOLLOWING - 64)) | (1 << (SqlBaseParser.FORMAT - 64)) | (1 << (SqlBaseParser.FUNCTIONS - 64)) | (1 << (SqlBaseParser.GRANT - 64)) | (1 << (SqlBaseParser.GRANTS - 64)) | (1 << (SqlBaseParser.GRAPHVIZ - 64)) | (1 << (SqlBaseParser.GROUPING - 64)) | (1 << (SqlBaseParser.HOUR - 64)) | (1 << (SqlBaseParser.IF - 64)) | (1 << (SqlBaseParser.INCLUDING - 64)) | (1 << (SqlBaseParser.INPUT - 64)) | (1 << (SqlBaseParser.INTERVAL - 64)) | (1 << (SqlBaseParser.IO - 64)) | (1 << (SqlBaseParser.ISOLATION - 64)) | (1 << (SqlBaseParser.JSON - 64)) | (1 << (SqlBaseParser.LAST - 64)) | (1 << (SqlBaseParser.LATERAL - 64)) | (1 << (SqlBaseParser.LEVEL - 64)))) !== 0) || ((((_la - 97)) & ~0x1f) == 0 && ((1 << (_la - 97)) & ((1 << (SqlBaseParser.LIMIT - 97)) | (1 << (SqlBaseParser.LOCALTIME - 97)) | (1 << (SqlBaseParser.LOCALTIMESTAMP - 97)) | (1 << (SqlBaseParser.LOGICAL - 97)) | (1 << (SqlBaseParser.MAP - 97)) | (1 << (SqlBaseParser.MINUTE - 97)) | (1 << (SqlBaseParser.MONTH - 97)) | (1 << (SqlBaseParser.NFC - 97)) | (1 << (SqlBaseParser.NFD - 97)) | (1 << (SqlBaseParser.NFKC - 97)) | (1 << (SqlBaseParser.NFKD - 97)) | (1 << (SqlBaseParser.NO - 97)) | (1 << (SqlBaseParser.NORMALIZE - 97)) | (1 << (SqlBaseParser.NOT - 97)) | (1 << (SqlBaseParser.NULL - 97)) | (1 << (SqlBaseParser.NULLIF - 97)) | (1 << (SqlBaseParser.NULLS - 97)) | (1 << (SqlBaseParser.ONLY - 97)) | (1 << (SqlBaseParser.OPTION - 97)) | (1 << (SqlBaseParser.ORDINALITY - 97)) | (1 << (SqlBaseParser.OUTPUT - 97)) | (1 << (SqlBaseParser.OVER - 97)) | (1 << (SqlBaseParser.PARTITION - 97)) | (1 << (SqlBaseParser.PARTITIONS - 97)) | (1 << (SqlBaseParser.PATH - 97)) | (1 << (SqlBaseParser.POSITION - 97)) | (1 << (SqlBaseParser.PRECEDING - 97)))) !== 0) || ((((_la - 130)) & ~0x1f) == 0 && ((1 << (_la - 130)) & ((1 << (SqlBaseParser.PRIVILEGES - 130)) | (1 << (SqlBaseParser.PROPERTIES - 130)) | (1 << (SqlBaseParser.PUBLIC - 130)) | (1 << (SqlBaseParser.RANGE - 130)) | (1 << (SqlBaseParser.READ - 130)) | (1 << (SqlBaseParser.RENAME - 130)) | (1 << (SqlBaseParser.REPEATABLE - 130)) | (1 << (SqlBaseParser.REPLACE - 130)) | (1 << (SqlBaseParser.RESET - 130)) | (1 << (SqlBaseParser.RESTRICT - 130)) | (1 << (SqlBaseParser.REVOKE - 130)) | (1 << (SqlBaseParser.ROLLBACK - 130)) | (1 << (SqlBaseParser.ROW - 130)) | (1 << (SqlBaseParser.ROWS - 130)) | (1 << (SqlBaseParser.SCHEMA - 130)) | (1 << (SqlBaseParser.SCHEMAS - 130)) | (1 << (SqlBaseParser.SECOND - 130)) | (1 << (SqlBaseParser.SERIALIZABLE - 130)) | (1 << (SqlBaseParser.SESSION - 130)) | (1 << (SqlBaseParser.SET - 130)) | (1 << (SqlBaseParser.SETS - 130)) | (1 << (SqlBaseParser.SHOW - 130)) | (1 << (SqlBaseParser.SOME - 130)) | (1 << (SqlBaseParser.START - 130)) | (1 << (SqlBaseParser.STATS - 130)) | (1 << (SqlBaseParser.SUBSTRING - 130)) | (1 << (SqlBaseParser.SYSTEM - 130)))) !== 0) || ((((_la - 162)) & ~0x1f) == 0 && ((1 << (_la - 162)) & ((1 << (SqlBaseParser.TABLES - 162)) | (1 << (SqlBaseParser.TABLESAMPLE - 162)) | (1 << (SqlBaseParser.TEXT - 162)) | (1 << (SqlBaseParser.TIME - 162)) | (1 << (SqlBaseParser.TIMESTAMP - 162)) | (1 << (SqlBaseParser.TO - 162)) | (1 << (SqlBaseParser.TRANSACTION - 162)) | (1 << (SqlBaseParser.TRUE - 162)) | (1 << (SqlBaseParser.TRY_CAST - 162)) | (1 << (SqlBaseParser.TYPE - 162)) | (1 << (SqlBaseParser.UNBOUNDED - 162)) | (1 << (SqlBaseParser.UNCOMMITTED - 162)) | (1 << (SqlBaseParser.USE - 162)) | (1 << (SqlBaseParser.VALIDATE - 162)) | (1 << (SqlBaseParser.VERBOSE - 162)) | (1 << (SqlBaseParser.VIEW - 162)) | (1 << (SqlBaseParser.WORK - 162)) | (1 << (SqlBaseParser.WRITE - 162)) | (1 << (SqlBaseParser.YEAR - 162)) | (1 << (SqlBaseParser.ZONE - 162)))) !== 0) || ((((_la - 197)) & ~0x1f) == 0 && ((1 << (_la - 197)) & ((1 << (SqlBaseParser.PLUS - 197)) | (1 << (SqlBaseParser.MINUS - 197)) | (1 << (SqlBaseParser.STRING - 197)) | (1 << (SqlBaseParser.UNICODE_STRING - 197)) | (1 << (SqlBaseParser.BINARY_LITERAL - 197)) | (1 << (SqlBaseParser.INTEGER_VALUE - 197)) | (1 << (SqlBaseParser.DECIMAL_VALUE - 197)) | (1 << (SqlBaseParser.DOUBLE_VALUE - 197)) | (1 << (SqlBaseParser.IDENTIFIER - 197)) | (1 << (SqlBaseParser.DIGIT_IDENTIFIER - 197)) | (1 << (SqlBaseParser.QUOTED_IDENTIFIER - 197)) | (1 << (SqlBaseParser.BACKQUOTED_IDENTIFIER - 197)) | (1 << (SqlBaseParser.DOUBLE_PRECISION - 197)))) !== 0)) {
this.state = 1147;
this.expression();
this.state = 1152;
this._errHandler.sync(this);
_la = this._input.LA(1);
while(_la===SqlBaseParser.T__3) {
this.state = 1148;
this.match(SqlBaseParser.T__3);
this.state = 1149;
this.expression();
this.state = 1154;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
}
this.state = 1157;
this.match(SqlBaseParser.T__7);
break;
case 24:
localctx = new ColumnReferenceContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1158;
this.identifier();
break;
case 25:
localctx = new SpecialDateTimeFunctionContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1159;
localctx.name = this.match(SqlBaseParser.CURRENT_DATE);
break;
case 26:
localctx = new SpecialDateTimeFunctionContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1160;
localctx.name = this.match(SqlBaseParser.CURRENT_TIME);
this.state = 1164;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,143,this._ctx);
if(la_===1) {
this.state = 1161;
this.match(SqlBaseParser.T__1);
this.state = 1162;
localctx.precision = this.match(SqlBaseParser.INTEGER_VALUE);
this.state = 1163;
this.match(SqlBaseParser.T__2);
}
break;
case 27:
localctx = new SpecialDateTimeFunctionContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1166;
localctx.name = this.match(SqlBaseParser.CURRENT_TIMESTAMP);
this.state = 1170;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,144,this._ctx);
if(la_===1) {
this.state = 1167;
this.match(SqlBaseParser.T__1);
this.state = 1168;
localctx.precision = this.match(SqlBaseParser.INTEGER_VALUE);
this.state = 1169;
this.match(SqlBaseParser.T__2);
}
break;
case 28:
localctx = new SpecialDateTimeFunctionContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1172;
localctx.name = this.match(SqlBaseParser.LOCALTIME);
this.state = 1176;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,145,this._ctx);
if(la_===1) {
this.state = 1173;
this.match(SqlBaseParser.T__1);
this.state = 1174;
localctx.precision = this.match(SqlBaseParser.INTEGER_VALUE);
this.state = 1175;
this.match(SqlBaseParser.T__2);
}
break;
case 29:
localctx = new SpecialDateTimeFunctionContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1178;
localctx.name = this.match(SqlBaseParser.LOCALTIMESTAMP);
this.state = 1182;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,146,this._ctx);
if(la_===1) {
this.state = 1179;
this.match(SqlBaseParser.T__1);
this.state = 1180;
localctx.precision = this.match(SqlBaseParser.INTEGER_VALUE);
this.state = 1181;
this.match(SqlBaseParser.T__2);
}
break;
case 30:
localctx = new CurrentUserContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1184;
localctx.name = this.match(SqlBaseParser.CURRENT_USER);
break;
case 31:
localctx = new CurrentPathContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1185;
localctx.name = this.match(SqlBaseParser.CURRENT_PATH);
break;
case 32:
localctx = new SubstringContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1186;
this.match(SqlBaseParser.SUBSTRING);
this.state = 1187;
this.match(SqlBaseParser.T__1);
this.state = 1188;
this.valueExpression(0);
this.state = 1189;
this.match(SqlBaseParser.FROM);
this.state = 1190;
this.valueExpression(0);
this.state = 1193;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.FOR) {
this.state = 1191;
this.match(SqlBaseParser.FOR);
this.state = 1192;
this.valueExpression(0);
}
this.state = 1195;
this.match(SqlBaseParser.T__2);
break;
case 33:
localctx = new NormalizeContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1197;
this.match(SqlBaseParser.NORMALIZE);
this.state = 1198;
this.match(SqlBaseParser.T__1);
this.state = 1199;
this.valueExpression(0);
this.state = 1202;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.T__3) {
this.state = 1200;
this.match(SqlBaseParser.T__3);
this.state = 1201;
this.normalForm();
}
this.state = 1204;
this.match(SqlBaseParser.T__2);
break;
case 34:
localctx = new ExtractContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1206;
this.match(SqlBaseParser.EXTRACT);
this.state = 1207;
this.match(SqlBaseParser.T__1);
this.state = 1208;
this.identifier();
this.state = 1209;
this.match(SqlBaseParser.FROM);
this.state = 1210;
this.valueExpression(0);
this.state = 1211;
this.match(SqlBaseParser.T__2);
break;
case 35:
localctx = new ParenthesizedExpressionContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1213;
this.match(SqlBaseParser.T__1);
this.state = 1214;
this.expression();
this.state = 1215;
this.match(SqlBaseParser.T__2);
break;
case 36:
localctx = new GroupingOperationContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1217;
this.match(SqlBaseParser.GROUPING);
this.state = 1218;
this.match(SqlBaseParser.T__1);
this.state = 1227;
this._errHandler.sync(this);
_la = this._input.LA(1);
if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << SqlBaseParser.ADD) | (1 << SqlBaseParser.ALL) | (1 << SqlBaseParser.ANALYZE) | (1 << SqlBaseParser.ANY) | (1 << SqlBaseParser.ARRAY) | (1 << SqlBaseParser.ASC) | (1 << SqlBaseParser.AT) | (1 << SqlBaseParser.BERNOULLI) | (1 << SqlBaseParser.CALL) | (1 << SqlBaseParser.CASCADE) | (1 << SqlBaseParser.CATALOGS) | (1 << SqlBaseParser.COLUMN) | (1 << SqlBaseParser.COLUMNS) | (1 << SqlBaseParser.COMMENT) | (1 << SqlBaseParser.COMMIT))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (SqlBaseParser.COMMITTED - 32)) | (1 << (SqlBaseParser.CURRENT - 32)) | (1 << (SqlBaseParser.DATA - 32)) | (1 << (SqlBaseParser.DATE - 32)) | (1 << (SqlBaseParser.DAY - 32)) | (1 << (SqlBaseParser.DESC - 32)) | (1 << (SqlBaseParser.DISTRIBUTED - 32)) | (1 << (SqlBaseParser.EXCLUDING - 32)) | (1 << (SqlBaseParser.EXPLAIN - 32)) | (1 << (SqlBaseParser.FILTER - 32)))) !== 0) || ((((_la - 64)) & ~0x1f) == 0 && ((1 << (_la - 64)) & ((1 << (SqlBaseParser.FIRST - 64)) | (1 << (SqlBaseParser.FOLLOWING - 64)) | (1 << (SqlBaseParser.FORMAT - 64)) | (1 << (SqlBaseParser.FUNCTIONS - 64)) | (1 << (SqlBaseParser.GRANT - 64)) | (1 << (SqlBaseParser.GRANTS - 64)) | (1 << (SqlBaseParser.GRAPHVIZ - 64)) | (1 << (SqlBaseParser.HOUR - 64)) | (1 << (SqlBaseParser.IF - 64)) | (1 << (SqlBaseParser.INCLUDING - 64)) | (1 << (SqlBaseParser.INPUT - 64)) | (1 << (SqlBaseParser.INTERVAL - 64)) | (1 << (SqlBaseParser.IO - 64)) | (1 << (SqlBaseParser.ISOLATION - 64)) | (1 << (SqlBaseParser.JSON - 64)) | (1 << (SqlBaseParser.LAST - 64)) | (1 << (SqlBaseParser.LATERAL - 64)) | (1 << (SqlBaseParser.LEVEL - 64)))) !== 0) || ((((_la - 97)) & ~0x1f) == 0 && ((1 << (_la - 97)) & ((1 << (SqlBaseParser.LIMIT - 97)) | (1 << (SqlBaseParser.LOGICAL - 97)) | (1 << (SqlBaseParser.MAP - 97)) | (1 << (SqlBaseParser.MINUTE - 97)) | (1 << (SqlBaseParser.MONTH - 97)) | (1 << (SqlBaseParser.NFC - 97)) | (1 << (SqlBaseParser.NFD - 97)) | (1 << (SqlBaseParser.NFKC - 97)) | (1 << (SqlBaseParser.NFKD - 97)) | (1 << (SqlBaseParser.NO - 97)) | (1 << (SqlBaseParser.NULLIF - 97)) | (1 << (SqlBaseParser.NULLS - 97)) | (1 << (SqlBaseParser.ONLY - 97)) | (1 << (SqlBaseParser.OPTION - 97)) | (1 << (SqlBaseParser.ORDINALITY - 97)) | (1 << (SqlBaseParser.OUTPUT - 97)) | (1 << (SqlBaseParser.OVER - 97)) | (1 << (SqlBaseParser.PARTITION - 97)) | (1 << (SqlBaseParser.PARTITIONS - 97)) | (1 << (SqlBaseParser.PATH - 97)) | (1 << (SqlBaseParser.POSITION - 97)) | (1 << (SqlBaseParser.PRECEDING - 97)))) !== 0) || ((((_la - 130)) & ~0x1f) == 0 && ((1 << (_la - 130)) & ((1 << (SqlBaseParser.PRIVILEGES - 130)) | (1 << (SqlBaseParser.PROPERTIES - 130)) | (1 << (SqlBaseParser.PUBLIC - 130)) | (1 << (SqlBaseParser.RANGE - 130)) | (1 << (SqlBaseParser.READ - 130)) | (1 << (SqlBaseParser.RENAME - 130)) | (1 << (SqlBaseParser.REPEATABLE - 130)) | (1 << (SqlBaseParser.REPLACE - 130)) | (1 << (SqlBaseParser.RESET - 130)) | (1 << (SqlBaseParser.RESTRICT - 130)) | (1 << (SqlBaseParser.REVOKE - 130)) | (1 << (SqlBaseParser.ROLLBACK - 130)) | (1 << (SqlBaseParser.ROW - 130)) | (1 << (SqlBaseParser.ROWS - 130)) | (1 << (SqlBaseParser.SCHEMA - 130)) | (1 << (SqlBaseParser.SCHEMAS - 130)) | (1 << (SqlBaseParser.SECOND - 130)) | (1 << (SqlBaseParser.SERIALIZABLE - 130)) | (1 << (SqlBaseParser.SESSION - 130)) | (1 << (SqlBaseParser.SET - 130)) | (1 << (SqlBaseParser.SETS - 130)) | (1 << (SqlBaseParser.SHOW - 130)) | (1 << (SqlBaseParser.SOME - 130)) | (1 << (SqlBaseParser.START - 130)) | (1 << (SqlBaseParser.STATS - 130)) | (1 << (SqlBaseParser.SUBSTRING - 130)) | (1 << (SqlBaseParser.SYSTEM - 130)))) !== 0) || ((((_la - 162)) & ~0x1f) == 0 && ((1 << (_la - 162)) & ((1 << (SqlBaseParser.TABLES - 162)) | (1 << (SqlBaseParser.TABLESAMPLE - 162)) | (1 << (SqlBaseParser.TEXT - 162)) | (1 << (SqlBaseParser.TIME - 162)) | (1 << (SqlBaseParser.TIMESTAMP - 162)) | (1 << (SqlBaseParser.TO - 162)) | (1 << (SqlBaseParser.TRANSACTION - 162)) | (1 << (SqlBaseParser.TRY_CAST - 162)) | (1 << (SqlBaseParser.TYPE - 162)) | (1 << (SqlBaseParser.UNBOUNDED - 162)) | (1 << (SqlBaseParser.UNCOMMITTED - 162)) | (1 << (SqlBaseParser.USE - 162)) | (1 << (SqlBaseParser.VALIDATE - 162)) | (1 << (SqlBaseParser.VERBOSE - 162)) | (1 << (SqlBaseParser.VIEW - 162)) | (1 << (SqlBaseParser.WORK - 162)) | (1 << (SqlBaseParser.WRITE - 162)) | (1 << (SqlBaseParser.YEAR - 162)) | (1 << (SqlBaseParser.ZONE - 162)))) !== 0) || ((((_la - 209)) & ~0x1f) == 0 && ((1 << (_la - 209)) & ((1 << (SqlBaseParser.IDENTIFIER - 209)) | (1 << (SqlBaseParser.DIGIT_IDENTIFIER - 209)) | (1 << (SqlBaseParser.QUOTED_IDENTIFIER - 209)) | (1 << (SqlBaseParser.BACKQUOTED_IDENTIFIER - 209)))) !== 0)) {
this.state = 1219;
this.qualifiedName();
this.state = 1224;
this._errHandler.sync(this);
_la = this._input.LA(1);
while(_la===SqlBaseParser.T__3) {
this.state = 1220;
this.match(SqlBaseParser.T__3);
this.state = 1221;
this.qualifiedName();
this.state = 1226;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
}
this.state = 1229;
this.match(SqlBaseParser.T__2);
break;
}
this._ctx.stop = this._input.LT(-1);
this.state = 1242;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,153,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 = 1240;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,152,this._ctx);
switch(la_) {
case 1:
localctx = new SubscriptContext(this, new PrimaryExpressionContext(this, _parentctx, _parentState));
localctx.value = _prevctx;
this.pushNewRecursionContext(localctx, _startState, SqlBaseParser.RULE_primaryExpression);
this.state = 1232;
if (!( this.precpred(this._ctx, 15))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 15)");
}
this.state = 1233;
this.match(SqlBaseParser.T__6);
this.state = 1234;
localctx.index = this.valueExpression(0);
this.state = 1235;
this.match(SqlBaseParser.T__7);
break;
case 2:
localctx = new DereferenceContext(this, new PrimaryExpressionContext(this, _parentctx, _parentState));
localctx.base = _prevctx;
this.pushNewRecursionContext(localctx, _startState, SqlBaseParser.RULE_primaryExpression);
this.state = 1237;
if (!( this.precpred(this._ctx, 13))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 13)");
}
this.state = 1238;
this.match(SqlBaseParser.T__0);
this.state = 1239;
localctx.fieldName = this.identifier();
break;
}
}
this.state = 1244;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,153,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 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 = SqlBaseParser.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 UnicodeStringLiteralContext(parser, ctx) {
StringContext.call(this, parser);
StringContext.prototype.copyFrom.call(this, ctx);
return this;
}
UnicodeStringLiteralContext.prototype = Object.create(StringContext.prototype);
UnicodeStringLiteralContext.prototype.constructor = UnicodeStringLiteralContext;
SqlBaseParser.UnicodeStringLiteralContext = UnicodeStringLiteralContext;
UnicodeStringLiteralContext.prototype.UNICODE_STRING = function() {
return this.getToken(SqlBaseParser.UNICODE_STRING, 0);
};
UnicodeStringLiteralContext.prototype.UESCAPE = function() {
return this.getToken(SqlBaseParser.UESCAPE, 0);
};
UnicodeStringLiteralContext.prototype.STRING = function() {
return this.getToken(SqlBaseParser.STRING, 0);
};
UnicodeStringLiteralContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterUnicodeStringLiteral(this);
}
};
UnicodeStringLiteralContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitUnicodeStringLiteral(this);
}
};
function BasicStringLiteralContext(parser, ctx) {
StringContext.call(this, parser);
StringContext.prototype.copyFrom.call(this, ctx);
return this;
}
BasicStringLiteralContext.prototype = Object.create(StringContext.prototype);
BasicStringLiteralContext.prototype.constructor = BasicStringLiteralContext;
SqlBaseParser.BasicStringLiteralContext = BasicStringLiteralContext;
BasicStringLiteralContext.prototype.STRING = function() {
return this.getToken(SqlBaseParser.STRING, 0);
};
BasicStringLiteralContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterBasicStringLiteral(this);
}
};
BasicStringLiteralContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitBasicStringLiteral(this);
}
};
SqlBaseParser.StringContext = StringContext;
SqlBaseParser.prototype.string = function() {
var localctx = new StringContext(this, this._ctx, this.state);
this.enterRule(localctx, 70, SqlBaseParser.RULE_string);
try {
this.state = 1251;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case SqlBaseParser.STRING:
localctx = new BasicStringLiteralContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 1245;
this.match(SqlBaseParser.STRING);
break;
case SqlBaseParser.UNICODE_STRING:
localctx = new UnicodeStringLiteralContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 1246;
this.match(SqlBaseParser.UNICODE_STRING);
this.state = 1249;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,154,this._ctx);
if(la_===1) {
this.state = 1247;
this.match(SqlBaseParser.UESCAPE);
this.state = 1248;
this.match(SqlBaseParser.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 TimeZoneSpecifierContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_timeZoneSpecifier;
return this;
}
TimeZoneSpecifierContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
TimeZoneSpecifierContext.prototype.constructor = TimeZoneSpecifierContext;
TimeZoneSpecifierContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function TimeZoneIntervalContext(parser, ctx) {
TimeZoneSpecifierContext.call(this, parser);
TimeZoneSpecifierContext.prototype.copyFrom.call(this, ctx);
return this;
}
TimeZoneIntervalContext.prototype = Object.create(TimeZoneSpecifierContext.prototype);
TimeZoneIntervalContext.prototype.constructor = TimeZoneIntervalContext;
SqlBaseParser.TimeZoneIntervalContext = TimeZoneIntervalContext;
TimeZoneIntervalContext.prototype.TIME = function() {
return this.getToken(SqlBaseParser.TIME, 0);
};
TimeZoneIntervalContext.prototype.ZONE = function() {
return this.getToken(SqlBaseParser.ZONE, 0);
};
TimeZoneIntervalContext.prototype.interval = function() {
return this.getTypedRuleContext(IntervalContext,0);
};
TimeZoneIntervalContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterTimeZoneInterval(this);
}
};
TimeZoneIntervalContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitTimeZoneInterval(this);
}
};
function TimeZoneStringContext(parser, ctx) {
TimeZoneSpecifierContext.call(this, parser);
TimeZoneSpecifierContext.prototype.copyFrom.call(this, ctx);
return this;
}
TimeZoneStringContext.prototype = Object.create(TimeZoneSpecifierContext.prototype);
TimeZoneStringContext.prototype.constructor = TimeZoneStringContext;
SqlBaseParser.TimeZoneStringContext = TimeZoneStringContext;
TimeZoneStringContext.prototype.TIME = function() {
return this.getToken(SqlBaseParser.TIME, 0);
};
TimeZoneStringContext.prototype.ZONE = function() {
return this.getToken(SqlBaseParser.ZONE, 0);
};
TimeZoneStringContext.prototype.string = function() {
return this.getTypedRuleContext(StringContext,0);
};
TimeZoneStringContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterTimeZoneString(this);
}
};
TimeZoneStringContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitTimeZoneString(this);
}
};
SqlBaseParser.TimeZoneSpecifierContext = TimeZoneSpecifierContext;
SqlBaseParser.prototype.timeZoneSpecifier = function() {
var localctx = new TimeZoneSpecifierContext(this, this._ctx, this.state);
this.enterRule(localctx, 72, SqlBaseParser.RULE_timeZoneSpecifier);
try {
this.state = 1259;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,156,this._ctx);
switch(la_) {
case 1:
localctx = new TimeZoneIntervalContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 1253;
this.match(SqlBaseParser.TIME);
this.state = 1254;
this.match(SqlBaseParser.ZONE);
this.state = 1255;
this.interval();
break;
case 2:
localctx = new TimeZoneStringContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 1256;
this.match(SqlBaseParser.TIME);
this.state = 1257;
this.match(SqlBaseParser.ZONE);
this.state = 1258;
this.string();
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 ComparisonOperatorContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_comparisonOperator;
return this;
}
ComparisonOperatorContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
ComparisonOperatorContext.prototype.constructor = ComparisonOperatorContext;
ComparisonOperatorContext.prototype.EQ = function() {
return this.getToken(SqlBaseParser.EQ, 0);
};
ComparisonOperatorContext.prototype.NEQ = function() {
return this.getToken(SqlBaseParser.NEQ, 0);
};
ComparisonOperatorContext.prototype.LT = function() {
return this.getToken(SqlBaseParser.LT, 0);
};
ComparisonOperatorContext.prototype.LTE = function() {
return this.getToken(SqlBaseParser.LTE, 0);
};
ComparisonOperatorContext.prototype.GT = function() {
return this.getToken(SqlBaseParser.GT, 0);
};
ComparisonOperatorContext.prototype.GTE = function() {
return this.getToken(SqlBaseParser.GTE, 0);
};
ComparisonOperatorContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterComparisonOperator(this);
}
};
ComparisonOperatorContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitComparisonOperator(this);
}
};
SqlBaseParser.ComparisonOperatorContext = ComparisonOperatorContext;
SqlBaseParser.prototype.comparisonOperator = function() {
var localctx = new ComparisonOperatorContext(this, this._ctx, this.state);
this.enterRule(localctx, 74, SqlBaseParser.RULE_comparisonOperator);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 1261;
_la = this._input.LA(1);
if(!(((((_la - 191)) & ~0x1f) == 0 && ((1 << (_la - 191)) & ((1 << (SqlBaseParser.EQ - 191)) | (1 << (SqlBaseParser.NEQ - 191)) | (1 << (SqlBaseParser.LT - 191)) | (1 << (SqlBaseParser.LTE - 191)) | (1 << (SqlBaseParser.GT - 191)) | (1 << (SqlBaseParser.GTE - 191)))) !== 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 ComparisonQuantifierContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_comparisonQuantifier;
return this;
}
ComparisonQuantifierContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
ComparisonQuantifierContext.prototype.constructor = ComparisonQuantifierContext;
ComparisonQuantifierContext.prototype.ALL = function() {
return this.getToken(SqlBaseParser.ALL, 0);
};
ComparisonQuantifierContext.prototype.SOME = function() {
return this.getToken(SqlBaseParser.SOME, 0);
};
ComparisonQuantifierContext.prototype.ANY = function() {
return this.getToken(SqlBaseParser.ANY, 0);
};
ComparisonQuantifierContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterComparisonQuantifier(this);
}
};
ComparisonQuantifierContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitComparisonQuantifier(this);
}
};
SqlBaseParser.ComparisonQuantifierContext = ComparisonQuantifierContext;
SqlBaseParser.prototype.comparisonQuantifier = function() {
var localctx = new ComparisonQuantifierContext(this, this._ctx, this.state);
this.enterRule(localctx, 76, SqlBaseParser.RULE_comparisonQuantifier);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 1263;
_la = this._input.LA(1);
if(!(_la===SqlBaseParser.ALL || _la===SqlBaseParser.ANY || _la===SqlBaseParser.SOME)) {
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 BooleanValueContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_booleanValue;
return this;
}
BooleanValueContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
BooleanValueContext.prototype.constructor = BooleanValueContext;
BooleanValueContext.prototype.TRUE = function() {
return this.getToken(SqlBaseParser.TRUE, 0);
};
BooleanValueContext.prototype.FALSE = function() {
return this.getToken(SqlBaseParser.FALSE, 0);
};
BooleanValueContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterBooleanValue(this);
}
};
BooleanValueContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitBooleanValue(this);
}
};
SqlBaseParser.BooleanValueContext = BooleanValueContext;
SqlBaseParser.prototype.booleanValue = function() {
var localctx = new BooleanValueContext(this, this._ctx, this.state);
this.enterRule(localctx, 78, SqlBaseParser.RULE_booleanValue);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 1265;
_la = this._input.LA(1);
if(!(_la===SqlBaseParser.FALSE || _la===SqlBaseParser.TRUE)) {
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 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 = SqlBaseParser.RULE_interval;
this.sign = null; // Token
this.from = null; // IntervalFieldContext
this.to = null; // IntervalFieldContext
return this;
}
IntervalContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
IntervalContext.prototype.constructor = IntervalContext;
IntervalContext.prototype.INTERVAL = function() {
return this.getToken(SqlBaseParser.INTERVAL, 0);
};
IntervalContext.prototype.string = function() {
return this.getTypedRuleContext(StringContext,0);
};
IntervalContext.prototype.intervalField = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(IntervalFieldContext);
} else {
return this.getTypedRuleContext(IntervalFieldContext,i);
}
};
IntervalContext.prototype.TO = function() {
return this.getToken(SqlBaseParser.TO, 0);
};
IntervalContext.prototype.PLUS = function() {
return this.getToken(SqlBaseParser.PLUS, 0);
};
IntervalContext.prototype.MINUS = function() {
return this.getToken(SqlBaseParser.MINUS, 0);
};
IntervalContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterInterval(this);
}
};
IntervalContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitInterval(this);
}
};
SqlBaseParser.IntervalContext = IntervalContext;
SqlBaseParser.prototype.interval = function() {
var localctx = new IntervalContext(this, this._ctx, this.state);
this.enterRule(localctx, 80, SqlBaseParser.RULE_interval);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 1267;
this.match(SqlBaseParser.INTERVAL);
this.state = 1269;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.PLUS || _la===SqlBaseParser.MINUS) {
this.state = 1268;
localctx.sign = this._input.LT(1);
_la = this._input.LA(1);
if(!(_la===SqlBaseParser.PLUS || _la===SqlBaseParser.MINUS)) {
localctx.sign = this._errHandler.recoverInline(this);
}
else {
this._errHandler.reportMatch(this);
this.consume();
}
}
this.state = 1271;
this.string();
this.state = 1272;
localctx.from = this.intervalField();
this.state = 1275;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,158,this._ctx);
if(la_===1) {
this.state = 1273;
this.match(SqlBaseParser.TO);
this.state = 1274;
localctx.to = this.intervalField();
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function IntervalFieldContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_intervalField;
return this;
}
IntervalFieldContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
IntervalFieldContext.prototype.constructor = IntervalFieldContext;
IntervalFieldContext.prototype.YEAR = function() {
return this.getToken(SqlBaseParser.YEAR, 0);
};
IntervalFieldContext.prototype.MONTH = function() {
return this.getToken(SqlBaseParser.MONTH, 0);
};
IntervalFieldContext.prototype.DAY = function() {
return this.getToken(SqlBaseParser.DAY, 0);
};
IntervalFieldContext.prototype.HOUR = function() {
return this.getToken(SqlBaseParser.HOUR, 0);
};
IntervalFieldContext.prototype.MINUTE = function() {
return this.getToken(SqlBaseParser.MINUTE, 0);
};
IntervalFieldContext.prototype.SECOND = function() {
return this.getToken(SqlBaseParser.SECOND, 0);
};
IntervalFieldContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterIntervalField(this);
}
};
IntervalFieldContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitIntervalField(this);
}
};
SqlBaseParser.IntervalFieldContext = IntervalFieldContext;
SqlBaseParser.prototype.intervalField = function() {
var localctx = new IntervalFieldContext(this, this._ctx, this.state);
this.enterRule(localctx, 82, SqlBaseParser.RULE_intervalField);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 1277;
_la = this._input.LA(1);
if(!(_la===SqlBaseParser.DAY || ((((_la - 77)) & ~0x1f) == 0 && ((1 << (_la - 77)) & ((1 << (SqlBaseParser.HOUR - 77)) | (1 << (SqlBaseParser.MINUTE - 77)) | (1 << (SqlBaseParser.MONTH - 77)))) !== 0) || _la===SqlBaseParser.SECOND || _la===SqlBaseParser.YEAR)) {
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 NormalFormContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_normalForm;
return this;
}
NormalFormContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
NormalFormContext.prototype.constructor = NormalFormContext;
NormalFormContext.prototype.NFD = function() {
return this.getToken(SqlBaseParser.NFD, 0);
};
NormalFormContext.prototype.NFC = function() {
return this.getToken(SqlBaseParser.NFC, 0);
};
NormalFormContext.prototype.NFKD = function() {
return this.getToken(SqlBaseParser.NFKD, 0);
};
NormalFormContext.prototype.NFKC = function() {
return this.getToken(SqlBaseParser.NFKC, 0);
};
NormalFormContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterNormalForm(this);
}
};
NormalFormContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitNormalForm(this);
}
};
SqlBaseParser.NormalFormContext = NormalFormContext;
SqlBaseParser.prototype.normalForm = function() {
var localctx = new NormalFormContext(this, this._ctx, this.state);
this.enterRule(localctx, 84, SqlBaseParser.RULE_normalForm);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 1279;
_la = this._input.LA(1);
if(!(((((_la - 105)) & ~0x1f) == 0 && ((1 << (_la - 105)) & ((1 << (SqlBaseParser.NFC - 105)) | (1 << (SqlBaseParser.NFD - 105)) | (1 << (SqlBaseParser.NFKC - 105)) | (1 << (SqlBaseParser.NFKD - 105)))) !== 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 TypeContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_type;
this.from = null; // IntervalFieldContext
this.to = null; // IntervalFieldContext
return this;
}
TypeContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
TypeContext.prototype.constructor = TypeContext;
TypeContext.prototype.ARRAY = function() {
return this.getToken(SqlBaseParser.ARRAY, 0);
};
TypeContext.prototype.type = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(TypeContext);
} else {
return this.getTypedRuleContext(TypeContext,i);
}
};
TypeContext.prototype.MAP = function() {
return this.getToken(SqlBaseParser.MAP, 0);
};
TypeContext.prototype.ROW = function() {
return this.getToken(SqlBaseParser.ROW, 0);
};
TypeContext.prototype.identifier = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(IdentifierContext);
} else {
return this.getTypedRuleContext(IdentifierContext,i);
}
};
TypeContext.prototype.baseType = function() {
return this.getTypedRuleContext(BaseTypeContext,0);
};
TypeContext.prototype.typeParameter = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(TypeParameterContext);
} else {
return this.getTypedRuleContext(TypeParameterContext,i);
}
};
TypeContext.prototype.INTERVAL = function() {
return this.getToken(SqlBaseParser.INTERVAL, 0);
};
TypeContext.prototype.TO = function() {
return this.getToken(SqlBaseParser.TO, 0);
};
TypeContext.prototype.intervalField = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(IntervalFieldContext);
} else {
return this.getTypedRuleContext(IntervalFieldContext,i);
}
};
TypeContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterType(this);
}
};
TypeContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitType(this);
}
};
SqlBaseParser.prototype.type = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new TypeContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 86;
this.enterRecursionRule(localctx, 86, SqlBaseParser.RULE_type, _p);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 1328;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,162,this._ctx);
switch(la_) {
case 1:
this.state = 1282;
this.match(SqlBaseParser.ARRAY);
this.state = 1283;
this.match(SqlBaseParser.LT);
this.state = 1284;
this.type(0);
this.state = 1285;
this.match(SqlBaseParser.GT);
break;
case 2:
this.state = 1287;
this.match(SqlBaseParser.MAP);
this.state = 1288;
this.match(SqlBaseParser.LT);
this.state = 1289;
this.type(0);
this.state = 1290;
this.match(SqlBaseParser.T__3);
this.state = 1291;
this.type(0);
this.state = 1292;
this.match(SqlBaseParser.GT);
break;
case 3:
this.state = 1294;
this.match(SqlBaseParser.ROW);
this.state = 1295;
this.match(SqlBaseParser.T__1);
this.state = 1296;
this.identifier();
this.state = 1297;
this.type(0);
this.state = 1304;
this._errHandler.sync(this);
_la = this._input.LA(1);
while(_la===SqlBaseParser.T__3) {
this.state = 1298;
this.match(SqlBaseParser.T__3);
this.state = 1299;
this.identifier();
this.state = 1300;
this.type(0);
this.state = 1306;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
this.state = 1307;
this.match(SqlBaseParser.T__2);
break;
case 4:
this.state = 1309;
this.baseType();
this.state = 1321;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,161,this._ctx);
if(la_===1) {
this.state = 1310;
this.match(SqlBaseParser.T__1);
this.state = 1311;
this.typeParameter();
this.state = 1316;
this._errHandler.sync(this);
_la = this._input.LA(1);
while(_la===SqlBaseParser.T__3) {
this.state = 1312;
this.match(SqlBaseParser.T__3);
this.state = 1313;
this.typeParameter();
this.state = 1318;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
this.state = 1319;
this.match(SqlBaseParser.T__2);
}
break;
case 5:
this.state = 1323;
this.match(SqlBaseParser.INTERVAL);
this.state = 1324;
localctx.from = this.intervalField();
this.state = 1325;
this.match(SqlBaseParser.TO);
this.state = 1326;
localctx.to = this.intervalField();
break;
}
this._ctx.stop = this._input.LT(-1);
this.state = 1334;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,163,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 TypeContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, SqlBaseParser.RULE_type);
this.state = 1330;
if (!( this.precpred(this._ctx, 6))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 6)");
}
this.state = 1331;
this.match(SqlBaseParser.ARRAY);
}
this.state = 1336;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,163,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 TypeParameterContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_typeParameter;
return this;
}
TypeParameterContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
TypeParameterContext.prototype.constructor = TypeParameterContext;
TypeParameterContext.prototype.INTEGER_VALUE = function() {
return this.getToken(SqlBaseParser.INTEGER_VALUE, 0);
};
TypeParameterContext.prototype.type = function() {
return this.getTypedRuleContext(TypeContext,0);
};
TypeParameterContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterTypeParameter(this);
}
};
TypeParameterContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitTypeParameter(this);
}
};
SqlBaseParser.TypeParameterContext = TypeParameterContext;
SqlBaseParser.prototype.typeParameter = function() {
var localctx = new TypeParameterContext(this, this._ctx, this.state);
this.enterRule(localctx, 88, SqlBaseParser.RULE_typeParameter);
try {
this.state = 1339;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case SqlBaseParser.INTEGER_VALUE:
this.enterOuterAlt(localctx, 1);
this.state = 1337;
this.match(SqlBaseParser.INTEGER_VALUE);
break;
case SqlBaseParser.ADD:
case SqlBaseParser.ALL:
case SqlBaseParser.ANALYZE:
case SqlBaseParser.ANY:
case SqlBaseParser.ARRAY:
case SqlBaseParser.ASC:
case SqlBaseParser.AT:
case SqlBaseParser.BERNOULLI:
case SqlBaseParser.CALL:
case SqlBaseParser.CASCADE:
case SqlBaseParser.CATALOGS:
case SqlBaseParser.COLUMN:
case SqlBaseParser.COLUMNS:
case SqlBaseParser.COMMENT:
case SqlBaseParser.COMMIT:
case SqlBaseParser.COMMITTED:
case SqlBaseParser.CURRENT:
case SqlBaseParser.DATA:
case SqlBaseParser.DATE:
case SqlBaseParser.DAY:
case SqlBaseParser.DESC:
case SqlBaseParser.DISTRIBUTED:
case SqlBaseParser.EXCLUDING:
case SqlBaseParser.EXPLAIN:
case SqlBaseParser.FILTER:
case SqlBaseParser.FIRST:
case SqlBaseParser.FOLLOWING:
case SqlBaseParser.FORMAT:
case SqlBaseParser.FUNCTIONS:
case SqlBaseParser.GRANT:
case SqlBaseParser.GRANTS:
case SqlBaseParser.GRAPHVIZ:
case SqlBaseParser.HOUR:
case SqlBaseParser.IF:
case SqlBaseParser.INCLUDING:
case SqlBaseParser.INPUT:
case SqlBaseParser.INTERVAL:
case SqlBaseParser.IO:
case SqlBaseParser.ISOLATION:
case SqlBaseParser.JSON:
case SqlBaseParser.LAST:
case SqlBaseParser.LATERAL:
case SqlBaseParser.LEVEL:
case SqlBaseParser.LIMIT:
case SqlBaseParser.LOGICAL:
case SqlBaseParser.MAP:
case SqlBaseParser.MINUTE:
case SqlBaseParser.MONTH:
case SqlBaseParser.NFC:
case SqlBaseParser.NFD:
case SqlBaseParser.NFKC:
case SqlBaseParser.NFKD:
case SqlBaseParser.NO:
case SqlBaseParser.NULLIF:
case SqlBaseParser.NULLS:
case SqlBaseParser.ONLY:
case SqlBaseParser.OPTION:
case SqlBaseParser.ORDINALITY:
case SqlBaseParser.OUTPUT:
case SqlBaseParser.OVER:
case SqlBaseParser.PARTITION:
case SqlBaseParser.PARTITIONS:
case SqlBaseParser.PATH:
case SqlBaseParser.POSITION:
case SqlBaseParser.PRECEDING:
case SqlBaseParser.PRIVILEGES:
case SqlBaseParser.PROPERTIES:
case SqlBaseParser.PUBLIC:
case SqlBaseParser.RANGE:
case SqlBaseParser.READ:
case SqlBaseParser.RENAME:
case SqlBaseParser.REPEATABLE:
case SqlBaseParser.REPLACE:
case SqlBaseParser.RESET:
case SqlBaseParser.RESTRICT:
case SqlBaseParser.REVOKE:
case SqlBaseParser.ROLLBACK:
case SqlBaseParser.ROW:
case SqlBaseParser.ROWS:
case SqlBaseParser.SCHEMA:
case SqlBaseParser.SCHEMAS:
case SqlBaseParser.SECOND:
case SqlBaseParser.SERIALIZABLE:
case SqlBaseParser.SESSION:
case SqlBaseParser.SET:
case SqlBaseParser.SETS:
case SqlBaseParser.SHOW:
case SqlBaseParser.SOME:
case SqlBaseParser.START:
case SqlBaseParser.STATS:
case SqlBaseParser.SUBSTRING:
case SqlBaseParser.SYSTEM:
case SqlBaseParser.TABLES:
case SqlBaseParser.TABLESAMPLE:
case SqlBaseParser.TEXT:
case SqlBaseParser.TIME:
case SqlBaseParser.TIMESTAMP:
case SqlBaseParser.TO:
case SqlBaseParser.TRANSACTION:
case SqlBaseParser.TRY_CAST:
case SqlBaseParser.TYPE:
case SqlBaseParser.UNBOUNDED:
case SqlBaseParser.UNCOMMITTED:
case SqlBaseParser.USE:
case SqlBaseParser.VALIDATE:
case SqlBaseParser.VERBOSE:
case SqlBaseParser.VIEW:
case SqlBaseParser.WORK:
case SqlBaseParser.WRITE:
case SqlBaseParser.YEAR:
case SqlBaseParser.ZONE:
case SqlBaseParser.IDENTIFIER:
case SqlBaseParser.DIGIT_IDENTIFIER:
case SqlBaseParser.QUOTED_IDENTIFIER:
case SqlBaseParser.BACKQUOTED_IDENTIFIER:
case SqlBaseParser.TIME_WITH_TIME_ZONE:
case SqlBaseParser.TIMESTAMP_WITH_TIME_ZONE:
case SqlBaseParser.DOUBLE_PRECISION:
this.enterOuterAlt(localctx, 2);
this.state = 1338;
this.type(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 BaseTypeContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_baseType;
return this;
}
BaseTypeContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
BaseTypeContext.prototype.constructor = BaseTypeContext;
BaseTypeContext.prototype.TIME_WITH_TIME_ZONE = function() {
return this.getToken(SqlBaseParser.TIME_WITH_TIME_ZONE, 0);
};
BaseTypeContext.prototype.TIMESTAMP_WITH_TIME_ZONE = function() {
return this.getToken(SqlBaseParser.TIMESTAMP_WITH_TIME_ZONE, 0);
};
BaseTypeContext.prototype.DOUBLE_PRECISION = function() {
return this.getToken(SqlBaseParser.DOUBLE_PRECISION, 0);
};
BaseTypeContext.prototype.identifier = function() {
return this.getTypedRuleContext(IdentifierContext,0);
};
BaseTypeContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterBaseType(this);
}
};
BaseTypeContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitBaseType(this);
}
};
SqlBaseParser.BaseTypeContext = BaseTypeContext;
SqlBaseParser.prototype.baseType = function() {
var localctx = new BaseTypeContext(this, this._ctx, this.state);
this.enterRule(localctx, 90, SqlBaseParser.RULE_baseType);
try {
this.state = 1345;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case SqlBaseParser.TIME_WITH_TIME_ZONE:
this.enterOuterAlt(localctx, 1);
this.state = 1341;
this.match(SqlBaseParser.TIME_WITH_TIME_ZONE);
break;
case SqlBaseParser.TIMESTAMP_WITH_TIME_ZONE:
this.enterOuterAlt(localctx, 2);
this.state = 1342;
this.match(SqlBaseParser.TIMESTAMP_WITH_TIME_ZONE);
break;
case SqlBaseParser.DOUBLE_PRECISION:
this.enterOuterAlt(localctx, 3);
this.state = 1343;
this.match(SqlBaseParser.DOUBLE_PRECISION);
break;
case SqlBaseParser.ADD:
case SqlBaseParser.ALL:
case SqlBaseParser.ANALYZE:
case SqlBaseParser.ANY:
case SqlBaseParser.ARRAY:
case SqlBaseParser.ASC:
case SqlBaseParser.AT:
case SqlBaseParser.BERNOULLI:
case SqlBaseParser.CALL:
case SqlBaseParser.CASCADE:
case SqlBaseParser.CATALOGS:
case SqlBaseParser.COLUMN:
case SqlBaseParser.COLUMNS:
case SqlBaseParser.COMMENT:
case SqlBaseParser.COMMIT:
case SqlBaseParser.COMMITTED:
case SqlBaseParser.CURRENT:
case SqlBaseParser.DATA:
case SqlBaseParser.DATE:
case SqlBaseParser.DAY:
case SqlBaseParser.DESC:
case SqlBaseParser.DISTRIBUTED:
case SqlBaseParser.EXCLUDING:
case SqlBaseParser.EXPLAIN:
case SqlBaseParser.FILTER:
case SqlBaseParser.FIRST:
case SqlBaseParser.FOLLOWING:
case SqlBaseParser.FORMAT:
case SqlBaseParser.FUNCTIONS:
case SqlBaseParser.GRANT:
case SqlBaseParser.GRANTS:
case SqlBaseParser.GRAPHVIZ:
case SqlBaseParser.HOUR:
case SqlBaseParser.IF:
case SqlBaseParser.INCLUDING:
case SqlBaseParser.INPUT:
case SqlBaseParser.INTERVAL:
case SqlBaseParser.IO:
case SqlBaseParser.ISOLATION:
case SqlBaseParser.JSON:
case SqlBaseParser.LAST:
case SqlBaseParser.LATERAL:
case SqlBaseParser.LEVEL:
case SqlBaseParser.LIMIT:
case SqlBaseParser.LOGICAL:
case SqlBaseParser.MAP:
case SqlBaseParser.MINUTE:
case SqlBaseParser.MONTH:
case SqlBaseParser.NFC:
case SqlBaseParser.NFD:
case SqlBaseParser.NFKC:
case SqlBaseParser.NFKD:
case SqlBaseParser.NO:
case SqlBaseParser.NULLIF:
case SqlBaseParser.NULLS:
case SqlBaseParser.ONLY:
case SqlBaseParser.OPTION:
case SqlBaseParser.ORDINALITY:
case SqlBaseParser.OUTPUT:
case SqlBaseParser.OVER:
case SqlBaseParser.PARTITION:
case SqlBaseParser.PARTITIONS:
case SqlBaseParser.PATH:
case SqlBaseParser.POSITION:
case SqlBaseParser.PRECEDING:
case SqlBaseParser.PRIVILEGES:
case SqlBaseParser.PROPERTIES:
case SqlBaseParser.PUBLIC:
case SqlBaseParser.RANGE:
case SqlBaseParser.READ:
case SqlBaseParser.RENAME:
case SqlBaseParser.REPEATABLE:
case SqlBaseParser.REPLACE:
case SqlBaseParser.RESET:
case SqlBaseParser.RESTRICT:
case SqlBaseParser.REVOKE:
case SqlBaseParser.ROLLBACK:
case SqlBaseParser.ROW:
case SqlBaseParser.ROWS:
case SqlBaseParser.SCHEMA:
case SqlBaseParser.SCHEMAS:
case SqlBaseParser.SECOND:
case SqlBaseParser.SERIALIZABLE:
case SqlBaseParser.SESSION:
case SqlBaseParser.SET:
case SqlBaseParser.SETS:
case SqlBaseParser.SHOW:
case SqlBaseParser.SOME:
case SqlBaseParser.START:
case SqlBaseParser.STATS:
case SqlBaseParser.SUBSTRING:
case SqlBaseParser.SYSTEM:
case SqlBaseParser.TABLES:
case SqlBaseParser.TABLESAMPLE:
case SqlBaseParser.TEXT:
case SqlBaseParser.TIME:
case SqlBaseParser.TIMESTAMP:
case SqlBaseParser.TO:
case SqlBaseParser.TRANSACTION:
case SqlBaseParser.TRY_CAST:
case SqlBaseParser.TYPE:
case SqlBaseParser.UNBOUNDED:
case SqlBaseParser.UNCOMMITTED:
case SqlBaseParser.USE:
case SqlBaseParser.VALIDATE:
case SqlBaseParser.VERBOSE:
case SqlBaseParser.VIEW:
case SqlBaseParser.WORK:
case SqlBaseParser.WRITE:
case SqlBaseParser.YEAR:
case SqlBaseParser.ZONE:
case SqlBaseParser.IDENTIFIER:
case SqlBaseParser.DIGIT_IDENTIFIER:
case SqlBaseParser.QUOTED_IDENTIFIER:
case SqlBaseParser.BACKQUOTED_IDENTIFIER:
this.enterOuterAlt(localctx, 4);
this.state = 1344;
this.identifier();
break;
default:
throw new antlr4.error.NoViableAltException(this);
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function WhenClauseContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_whenClause;
this.condition = null; // ExpressionContext
this.result = null; // ExpressionContext
return this;
}
WhenClauseContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
WhenClauseContext.prototype.constructor = WhenClauseContext;
WhenClauseContext.prototype.WHEN = function() {
return this.getToken(SqlBaseParser.WHEN, 0);
};
WhenClauseContext.prototype.THEN = function() {
return this.getToken(SqlBaseParser.THEN, 0);
};
WhenClauseContext.prototype.expression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ExpressionContext);
} else {
return this.getTypedRuleContext(ExpressionContext,i);
}
};
WhenClauseContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterWhenClause(this);
}
};
WhenClauseContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitWhenClause(this);
}
};
SqlBaseParser.WhenClauseContext = WhenClauseContext;
SqlBaseParser.prototype.whenClause = function() {
var localctx = new WhenClauseContext(this, this._ctx, this.state);
this.enterRule(localctx, 92, SqlBaseParser.RULE_whenClause);
try {
this.enterOuterAlt(localctx, 1);
this.state = 1347;
this.match(SqlBaseParser.WHEN);
this.state = 1348;
localctx.condition = this.expression();
this.state = 1349;
this.match(SqlBaseParser.THEN);
this.state = 1350;
localctx.result = this.expression();
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function FilterContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_filter;
return this;
}
FilterContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
FilterContext.prototype.constructor = FilterContext;
FilterContext.prototype.FILTER = function() {
return this.getToken(SqlBaseParser.FILTER, 0);
};
FilterContext.prototype.WHERE = function() {
return this.getToken(SqlBaseParser.WHERE, 0);
};
FilterContext.prototype.booleanExpression = function() {
return this.getTypedRuleContext(BooleanExpressionContext,0);
};
FilterContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterFilter(this);
}
};
FilterContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitFilter(this);
}
};
SqlBaseParser.FilterContext = FilterContext;
SqlBaseParser.prototype.filter = function() {
var localctx = new FilterContext(this, this._ctx, this.state);
this.enterRule(localctx, 94, SqlBaseParser.RULE_filter);
try {
this.enterOuterAlt(localctx, 1);
this.state = 1352;
this.match(SqlBaseParser.FILTER);
this.state = 1353;
this.match(SqlBaseParser.T__1);
this.state = 1354;
this.match(SqlBaseParser.WHERE);
this.state = 1355;
this.booleanExpression(0);
this.state = 1356;
this.match(SqlBaseParser.T__2);
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function OverContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_over;
this._expression = null; // ExpressionContext
this.partition = []; // of ExpressionContexts
return this;
}
OverContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
OverContext.prototype.constructor = OverContext;
OverContext.prototype.OVER = function() {
return this.getToken(SqlBaseParser.OVER, 0);
};
OverContext.prototype.PARTITION = function() {
return this.getToken(SqlBaseParser.PARTITION, 0);
};
OverContext.prototype.BY = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(SqlBaseParser.BY);
} else {
return this.getToken(SqlBaseParser.BY, i);
}
};
OverContext.prototype.ORDER = function() {
return this.getToken(SqlBaseParser.ORDER, 0);
};
OverContext.prototype.sortItem = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(SortItemContext);
} else {
return this.getTypedRuleContext(SortItemContext,i);
}
};
OverContext.prototype.windowFrame = function() {
return this.getTypedRuleContext(WindowFrameContext,0);
};
OverContext.prototype.expression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ExpressionContext);
} else {
return this.getTypedRuleContext(ExpressionContext,i);
}
};
OverContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterOver(this);
}
};
OverContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitOver(this);
}
};
SqlBaseParser.OverContext = OverContext;
SqlBaseParser.prototype.over = function() {
var localctx = new OverContext(this, this._ctx, this.state);
this.enterRule(localctx, 96, SqlBaseParser.RULE_over);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 1358;
this.match(SqlBaseParser.OVER);
this.state = 1359;
this.match(SqlBaseParser.T__1);
this.state = 1370;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.PARTITION) {
this.state = 1360;
this.match(SqlBaseParser.PARTITION);
this.state = 1361;
this.match(SqlBaseParser.BY);
this.state = 1362;
localctx._expression = this.expression();
localctx.partition.push(localctx._expression);
this.state = 1367;
this._errHandler.sync(this);
_la = this._input.LA(1);
while(_la===SqlBaseParser.T__3) {
this.state = 1363;
this.match(SqlBaseParser.T__3);
this.state = 1364;
localctx._expression = this.expression();
localctx.partition.push(localctx._expression);
this.state = 1369;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
}
this.state = 1382;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.ORDER) {
this.state = 1372;
this.match(SqlBaseParser.ORDER);
this.state = 1373;
this.match(SqlBaseParser.BY);
this.state = 1374;
this.sortItem();
this.state = 1379;
this._errHandler.sync(this);
_la = this._input.LA(1);
while(_la===SqlBaseParser.T__3) {
this.state = 1375;
this.match(SqlBaseParser.T__3);
this.state = 1376;
this.sortItem();
this.state = 1381;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
}
this.state = 1385;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===SqlBaseParser.RANGE || _la===SqlBaseParser.ROWS) {
this.state = 1384;
this.windowFrame();
}
this.state = 1387;
this.match(SqlBaseParser.T__2);
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function WindowFrameContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_windowFrame;
this.frameType = null; // Token
this.start = null; // FrameBoundContext
this.end = null; // FrameBoundContext
return this;
}
WindowFrameContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
WindowFrameContext.prototype.constructor = WindowFrameContext;
WindowFrameContext.prototype.RANGE = function() {
return this.getToken(SqlBaseParser.RANGE, 0);
};
WindowFrameContext.prototype.frameBound = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(FrameBoundContext);
} else {
return this.getTypedRuleContext(FrameBoundContext,i);
}
};
WindowFrameContext.prototype.ROWS = function() {
return this.getToken(SqlBaseParser.ROWS, 0);
};
WindowFrameContext.prototype.BETWEEN = function() {
return this.getToken(SqlBaseParser.BETWEEN, 0);
};
WindowFrameContext.prototype.AND = function() {
return this.getToken(SqlBaseParser.AND, 0);
};
WindowFrameContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterWindowFrame(this);
}
};
WindowFrameContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitWindowFrame(this);
}
};
SqlBaseParser.WindowFrameContext = WindowFrameContext;
SqlBaseParser.prototype.windowFrame = function() {
var localctx = new WindowFrameContext(this, this._ctx, this.state);
this.enterRule(localctx, 98, SqlBaseParser.RULE_windowFrame);
try {
this.state = 1405;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,171,this._ctx);
switch(la_) {
case 1:
this.enterOuterAlt(localctx, 1);
this.state = 1389;
localctx.frameType = this.match(SqlBaseParser.RANGE);
this.state = 1390;
localctx.start = this.frameBound();
break;
case 2:
this.enterOuterAlt(localctx, 2);
this.state = 1391;
localctx.frameType = this.match(SqlBaseParser.ROWS);
this.state = 1392;
localctx.start = this.frameBound();
break;
case 3:
this.enterOuterAlt(localctx, 3);
this.state = 1393;
localctx.frameType = this.match(SqlBaseParser.RANGE);
this.state = 1394;
this.match(SqlBaseParser.BETWEEN);
this.state = 1395;
localctx.start = this.frameBound();
this.state = 1396;
this.match(SqlBaseParser.AND);
this.state = 1397;
localctx.end = this.frameBound();
break;
case 4:
this.enterOuterAlt(localctx, 4);
this.state = 1399;
localctx.frameType = this.match(SqlBaseParser.ROWS);
this.state = 1400;
this.match(SqlBaseParser.BETWEEN);
this.state = 1401;
localctx.start = this.frameBound();
this.state = 1402;
this.match(SqlBaseParser.AND);
this.state = 1403;
localctx.end = this.frameBound();
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 FrameBoundContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_frameBound;
return this;
}
FrameBoundContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
FrameBoundContext.prototype.constructor = FrameBoundContext;
FrameBoundContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function BoundedFrameContext(parser, ctx) {
FrameBoundContext.call(this, parser);
this.boundType = null; // Token;
FrameBoundContext.prototype.copyFrom.call(this, ctx);
return this;
}
BoundedFrameContext.prototype = Object.create(FrameBoundContext.prototype);
BoundedFrameContext.prototype.constructor = BoundedFrameContext;
SqlBaseParser.BoundedFrameContext = BoundedFrameContext;
BoundedFrameContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
BoundedFrameContext.prototype.PRECEDING = function() {
return this.getToken(SqlBaseParser.PRECEDING, 0);
};
BoundedFrameContext.prototype.FOLLOWING = function() {
return this.getToken(SqlBaseParser.FOLLOWING, 0);
};
BoundedFrameContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterBoundedFrame(this);
}
};
BoundedFrameContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitBoundedFrame(this);
}
};
function UnboundedFrameContext(parser, ctx) {
FrameBoundContext.call(this, parser);
this.boundType = null; // Token;
FrameBoundContext.prototype.copyFrom.call(this, ctx);
return this;
}
UnboundedFrameContext.prototype = Object.create(FrameBoundContext.prototype);
UnboundedFrameContext.prototype.constructor = UnboundedFrameContext;
SqlBaseParser.UnboundedFrameContext = UnboundedFrameContext;
UnboundedFrameContext.prototype.UNBOUNDED = function() {
return this.getToken(SqlBaseParser.UNBOUNDED, 0);
};
UnboundedFrameContext.prototype.PRECEDING = function() {
return this.getToken(SqlBaseParser.PRECEDING, 0);
};
UnboundedFrameContext.prototype.FOLLOWING = function() {
return this.getToken(SqlBaseParser.FOLLOWING, 0);
};
UnboundedFrameContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterUnboundedFrame(this);
}
};
UnboundedFrameContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitUnboundedFrame(this);
}
};
function CurrentRowBoundContext(parser, ctx) {
FrameBoundContext.call(this, parser);
FrameBoundContext.prototype.copyFrom.call(this, ctx);
return this;
}
CurrentRowBoundContext.prototype = Object.create(FrameBoundContext.prototype);
CurrentRowBoundContext.prototype.constructor = CurrentRowBoundContext;
SqlBaseParser.CurrentRowBoundContext = CurrentRowBoundContext;
CurrentRowBoundContext.prototype.CURRENT = function() {
return this.getToken(SqlBaseParser.CURRENT, 0);
};
CurrentRowBoundContext.prototype.ROW = function() {
return this.getToken(SqlBaseParser.ROW, 0);
};
CurrentRowBoundContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterCurrentRowBound(this);
}
};
CurrentRowBoundContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitCurrentRowBound(this);
}
};
SqlBaseParser.FrameBoundContext = FrameBoundContext;
SqlBaseParser.prototype.frameBound = function() {
var localctx = new FrameBoundContext(this, this._ctx, this.state);
this.enterRule(localctx, 100, SqlBaseParser.RULE_frameBound);
var _la = 0; // Token type
try {
this.state = 1416;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,172,this._ctx);
switch(la_) {
case 1:
localctx = new UnboundedFrameContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 1407;
this.match(SqlBaseParser.UNBOUNDED);
this.state = 1408;
localctx.boundType = this.match(SqlBaseParser.PRECEDING);
break;
case 2:
localctx = new UnboundedFrameContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 1409;
this.match(SqlBaseParser.UNBOUNDED);
this.state = 1410;
localctx.boundType = this.match(SqlBaseParser.FOLLOWING);
break;
case 3:
localctx = new CurrentRowBoundContext(this, localctx);
this.enterOuterAlt(localctx, 3);
this.state = 1411;
this.match(SqlBaseParser.CURRENT);
this.state = 1412;
this.match(SqlBaseParser.ROW);
break;
case 4:
localctx = new BoundedFrameContext(this, localctx);
this.enterOuterAlt(localctx, 4);
this.state = 1413;
this.expression();
this.state = 1414;
localctx.boundType = this._input.LT(1);
_la = this._input.LA(1);
if(!(_la===SqlBaseParser.FOLLOWING || _la===SqlBaseParser.PRECEDING)) {
localctx.boundType = 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 ExplainOptionContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_explainOption;
return this;
}
ExplainOptionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
ExplainOptionContext.prototype.constructor = ExplainOptionContext;
ExplainOptionContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function ExplainFormatContext(parser, ctx) {
ExplainOptionContext.call(this, parser);
this.value = null; // Token;
ExplainOptionContext.prototype.copyFrom.call(this, ctx);
return this;
}
ExplainFormatContext.prototype = Object.create(ExplainOptionContext.prototype);
ExplainFormatContext.prototype.constructor = ExplainFormatContext;
SqlBaseParser.ExplainFormatContext = ExplainFormatContext;
ExplainFormatContext.prototype.FORMAT = function() {
return this.getToken(SqlBaseParser.FORMAT, 0);
};
ExplainFormatContext.prototype.TEXT = function() {
return this.getToken(SqlBaseParser.TEXT, 0);
};
ExplainFormatContext.prototype.GRAPHVIZ = function() {
return this.getToken(SqlBaseParser.GRAPHVIZ, 0);
};
ExplainFormatContext.prototype.JSON = function() {
return this.getToken(SqlBaseParser.JSON, 0);
};
ExplainFormatContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterExplainFormat(this);
}
};
ExplainFormatContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitExplainFormat(this);
}
};
function ExplainTypeContext(parser, ctx) {
ExplainOptionContext.call(this, parser);
this.value = null; // Token;
ExplainOptionContext.prototype.copyFrom.call(this, ctx);
return this;
}
ExplainTypeContext.prototype = Object.create(ExplainOptionContext.prototype);
ExplainTypeContext.prototype.constructor = ExplainTypeContext;
SqlBaseParser.ExplainTypeContext = ExplainTypeContext;
ExplainTypeContext.prototype.TYPE = function() {
return this.getToken(SqlBaseParser.TYPE, 0);
};
ExplainTypeContext.prototype.LOGICAL = function() {
return this.getToken(SqlBaseParser.LOGICAL, 0);
};
ExplainTypeContext.prototype.DISTRIBUTED = function() {
return this.getToken(SqlBaseParser.DISTRIBUTED, 0);
};
ExplainTypeContext.prototype.VALIDATE = function() {
return this.getToken(SqlBaseParser.VALIDATE, 0);
};
ExplainTypeContext.prototype.IO = function() {
return this.getToken(SqlBaseParser.IO, 0);
};
ExplainTypeContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterExplainType(this);
}
};
ExplainTypeContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitExplainType(this);
}
};
SqlBaseParser.ExplainOptionContext = ExplainOptionContext;
SqlBaseParser.prototype.explainOption = function() {
var localctx = new ExplainOptionContext(this, this._ctx, this.state);
this.enterRule(localctx, 102, SqlBaseParser.RULE_explainOption);
var _la = 0; // Token type
try {
this.state = 1422;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case SqlBaseParser.FORMAT:
localctx = new ExplainFormatContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 1418;
this.match(SqlBaseParser.FORMAT);
this.state = 1419;
localctx.value = this._input.LT(1);
_la = this._input.LA(1);
if(!(_la===SqlBaseParser.GRAPHVIZ || _la===SqlBaseParser.JSON || _la===SqlBaseParser.TEXT)) {
localctx.value = this._errHandler.recoverInline(this);
}
else {
this._errHandler.reportMatch(this);
this.consume();
}
break;
case SqlBaseParser.TYPE:
localctx = new ExplainTypeContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 1420;
this.match(SqlBaseParser.TYPE);
this.state = 1421;
localctx.value = this._input.LT(1);
_la = this._input.LA(1);
if(!(_la===SqlBaseParser.DISTRIBUTED || _la===SqlBaseParser.IO || _la===SqlBaseParser.LOGICAL || _la===SqlBaseParser.VALIDATE)) {
localctx.value = 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 TransactionModeContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_transactionMode;
return this;
}
TransactionModeContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
TransactionModeContext.prototype.constructor = TransactionModeContext;
TransactionModeContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function TransactionAccessModeContext(parser, ctx) {
TransactionModeContext.call(this, parser);
this.accessMode = null; // Token;
TransactionModeContext.prototype.copyFrom.call(this, ctx);
return this;
}
TransactionAccessModeContext.prototype = Object.create(TransactionModeContext.prototype);
TransactionAccessModeContext.prototype.constructor = TransactionAccessModeContext;
SqlBaseParser.TransactionAccessModeContext = TransactionAccessModeContext;
TransactionAccessModeContext.prototype.READ = function() {
return this.getToken(SqlBaseParser.READ, 0);
};
TransactionAccessModeContext.prototype.ONLY = function() {
return this.getToken(SqlBaseParser.ONLY, 0);
};
TransactionAccessModeContext.prototype.WRITE = function() {
return this.getToken(SqlBaseParser.WRITE, 0);
};
TransactionAccessModeContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterTransactionAccessMode(this);
}
};
TransactionAccessModeContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitTransactionAccessMode(this);
}
};
function IsolationLevelContext(parser, ctx) {
TransactionModeContext.call(this, parser);
TransactionModeContext.prototype.copyFrom.call(this, ctx);
return this;
}
IsolationLevelContext.prototype = Object.create(TransactionModeContext.prototype);
IsolationLevelContext.prototype.constructor = IsolationLevelContext;
SqlBaseParser.IsolationLevelContext = IsolationLevelContext;
IsolationLevelContext.prototype.ISOLATION = function() {
return this.getToken(SqlBaseParser.ISOLATION, 0);
};
IsolationLevelContext.prototype.LEVEL = function() {
return this.getToken(SqlBaseParser.LEVEL, 0);
};
IsolationLevelContext.prototype.levelOfIsolation = function() {
return this.getTypedRuleContext(LevelOfIsolationContext,0);
};
IsolationLevelContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterIsolationLevel(this);
}
};
IsolationLevelContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitIsolationLevel(this);
}
};
SqlBaseParser.TransactionModeContext = TransactionModeContext;
SqlBaseParser.prototype.transactionMode = function() {
var localctx = new TransactionModeContext(this, this._ctx, this.state);
this.enterRule(localctx, 104, SqlBaseParser.RULE_transactionMode);
var _la = 0; // Token type
try {
this.state = 1429;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case SqlBaseParser.ISOLATION:
localctx = new IsolationLevelContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 1424;
this.match(SqlBaseParser.ISOLATION);
this.state = 1425;
this.match(SqlBaseParser.LEVEL);
this.state = 1426;
this.levelOfIsolation();
break;
case SqlBaseParser.READ:
localctx = new TransactionAccessModeContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 1427;
this.match(SqlBaseParser.READ);
this.state = 1428;
localctx.accessMode = this._input.LT(1);
_la = this._input.LA(1);
if(!(_la===SqlBaseParser.ONLY || _la===SqlBaseParser.WRITE)) {
localctx.accessMode = 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 LevelOfIsolationContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_levelOfIsolation;
return this;
}
LevelOfIsolationContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
LevelOfIsolationContext.prototype.constructor = LevelOfIsolationContext;
LevelOfIsolationContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function ReadUncommittedContext(parser, ctx) {
LevelOfIsolationContext.call(this, parser);
LevelOfIsolationContext.prototype.copyFrom.call(this, ctx);
return this;
}
ReadUncommittedContext.prototype = Object.create(LevelOfIsolationContext.prototype);
ReadUncommittedContext.prototype.constructor = ReadUncommittedContext;
SqlBaseParser.ReadUncommittedContext = ReadUncommittedContext;
ReadUncommittedContext.prototype.READ = function() {
return this.getToken(SqlBaseParser.READ, 0);
};
ReadUncommittedContext.prototype.UNCOMMITTED = function() {
return this.getToken(SqlBaseParser.UNCOMMITTED, 0);
};
ReadUncommittedContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterReadUncommitted(this);
}
};
ReadUncommittedContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitReadUncommitted(this);
}
};
function SerializableContext(parser, ctx) {
LevelOfIsolationContext.call(this, parser);
LevelOfIsolationContext.prototype.copyFrom.call(this, ctx);
return this;
}
SerializableContext.prototype = Object.create(LevelOfIsolationContext.prototype);
SerializableContext.prototype.constructor = SerializableContext;
SqlBaseParser.SerializableContext = SerializableContext;
SerializableContext.prototype.SERIALIZABLE = function() {
return this.getToken(SqlBaseParser.SERIALIZABLE, 0);
};
SerializableContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterSerializable(this);
}
};
SerializableContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitSerializable(this);
}
};
function ReadCommittedContext(parser, ctx) {
LevelOfIsolationContext.call(this, parser);
LevelOfIsolationContext.prototype.copyFrom.call(this, ctx);
return this;
}
ReadCommittedContext.prototype = Object.create(LevelOfIsolationContext.prototype);
ReadCommittedContext.prototype.constructor = ReadCommittedContext;
SqlBaseParser.ReadCommittedContext = ReadCommittedContext;
ReadCommittedContext.prototype.READ = function() {
return this.getToken(SqlBaseParser.READ, 0);
};
ReadCommittedContext.prototype.COMMITTED = function() {
return this.getToken(SqlBaseParser.COMMITTED, 0);
};
ReadCommittedContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterReadCommitted(this);
}
};
ReadCommittedContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitReadCommitted(this);
}
};
function RepeatableReadContext(parser, ctx) {
LevelOfIsolationContext.call(this, parser);
LevelOfIsolationContext.prototype.copyFrom.call(this, ctx);
return this;
}
RepeatableReadContext.prototype = Object.create(LevelOfIsolationContext.prototype);
RepeatableReadContext.prototype.constructor = RepeatableReadContext;
SqlBaseParser.RepeatableReadContext = RepeatableReadContext;
RepeatableReadContext.prototype.REPEATABLE = function() {
return this.getToken(SqlBaseParser.REPEATABLE, 0);
};
RepeatableReadContext.prototype.READ = function() {
return this.getToken(SqlBaseParser.READ, 0);
};
RepeatableReadContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterRepeatableRead(this);
}
};
RepeatableReadContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitRepeatableRead(this);
}
};
SqlBaseParser.LevelOfIsolationContext = LevelOfIsolationContext;
SqlBaseParser.prototype.levelOfIsolation = function() {
var localctx = new LevelOfIsolationContext(this, this._ctx, this.state);
this.enterRule(localctx, 106, SqlBaseParser.RULE_levelOfIsolation);
try {
this.state = 1438;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,175,this._ctx);
switch(la_) {
case 1:
localctx = new ReadUncommittedContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 1431;
this.match(SqlBaseParser.READ);
this.state = 1432;
this.match(SqlBaseParser.UNCOMMITTED);
break;
case 2:
localctx = new ReadCommittedContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 1433;
this.match(SqlBaseParser.READ);
this.state = 1434;
this.match(SqlBaseParser.COMMITTED);
break;
case 3:
localctx = new RepeatableReadContext(this, localctx);
this.enterOuterAlt(localctx, 3);
this.state = 1435;
this.match(SqlBaseParser.REPEATABLE);
this.state = 1436;
this.match(SqlBaseParser.READ);
break;
case 4:
localctx = new SerializableContext(this, localctx);
this.enterOuterAlt(localctx, 4);
this.state = 1437;
this.match(SqlBaseParser.SERIALIZABLE);
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 CallArgumentContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_callArgument;
return this;
}
CallArgumentContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
CallArgumentContext.prototype.constructor = CallArgumentContext;
CallArgumentContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function PositionalArgumentContext(parser, ctx) {
CallArgumentContext.call(this, parser);
CallArgumentContext.prototype.copyFrom.call(this, ctx);
return this;
}
PositionalArgumentContext.prototype = Object.create(CallArgumentContext.prototype);
PositionalArgumentContext.prototype.constructor = PositionalArgumentContext;
SqlBaseParser.PositionalArgumentContext = PositionalArgumentContext;
PositionalArgumentContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
PositionalArgumentContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterPositionalArgument(this);
}
};
PositionalArgumentContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitPositionalArgument(this);
}
};
function NamedArgumentContext(parser, ctx) {
CallArgumentContext.call(this, parser);
CallArgumentContext.prototype.copyFrom.call(this, ctx);
return this;
}
NamedArgumentContext.prototype = Object.create(CallArgumentContext.prototype);
NamedArgumentContext.prototype.constructor = NamedArgumentContext;
SqlBaseParser.NamedArgumentContext = NamedArgumentContext;
NamedArgumentContext.prototype.identifier = function() {
return this.getTypedRuleContext(IdentifierContext,0);
};
NamedArgumentContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
NamedArgumentContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterNamedArgument(this);
}
};
NamedArgumentContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitNamedArgument(this);
}
};
SqlBaseParser.CallArgumentContext = CallArgumentContext;
SqlBaseParser.prototype.callArgument = function() {
var localctx = new CallArgumentContext(this, this._ctx, this.state);
this.enterRule(localctx, 108, SqlBaseParser.RULE_callArgument);
try {
this.state = 1445;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,176,this._ctx);
switch(la_) {
case 1:
localctx = new PositionalArgumentContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 1440;
this.expression();
break;
case 2:
localctx = new NamedArgumentContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 1441;
this.identifier();
this.state = 1442;
this.match(SqlBaseParser.T__8);
this.state = 1443;
this.expression();
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 PathElementContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_pathElement;
return this;
}
PathElementContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
PathElementContext.prototype.constructor = PathElementContext;
PathElementContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function QualifiedArgumentContext(parser, ctx) {
PathElementContext.call(this, parser);
PathElementContext.prototype.copyFrom.call(this, ctx);
return this;
}
QualifiedArgumentContext.prototype = Object.create(PathElementContext.prototype);
QualifiedArgumentContext.prototype.constructor = QualifiedArgumentContext;
SqlBaseParser.QualifiedArgumentContext = QualifiedArgumentContext;
QualifiedArgumentContext.prototype.identifier = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(IdentifierContext);
} else {
return this.getTypedRuleContext(IdentifierContext,i);
}
};
QualifiedArgumentContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterQualifiedArgument(this);
}
};
QualifiedArgumentContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitQualifiedArgument(this);
}
};
function UnqualifiedArgumentContext(parser, ctx) {
PathElementContext.call(this, parser);
PathElementContext.prototype.copyFrom.call(this, ctx);
return this;
}
UnqualifiedArgumentContext.prototype = Object.create(PathElementContext.prototype);
UnqualifiedArgumentContext.prototype.constructor = UnqualifiedArgumentContext;
SqlBaseParser.UnqualifiedArgumentContext = UnqualifiedArgumentContext;
UnqualifiedArgumentContext.prototype.identifier = function() {
return this.getTypedRuleContext(IdentifierContext,0);
};
UnqualifiedArgumentContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterUnqualifiedArgument(this);
}
};
UnqualifiedArgumentContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitUnqualifiedArgument(this);
}
};
SqlBaseParser.PathElementContext = PathElementContext;
SqlBaseParser.prototype.pathElement = function() {
var localctx = new PathElementContext(this, this._ctx, this.state);
this.enterRule(localctx, 110, SqlBaseParser.RULE_pathElement);
try {
this.state = 1452;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,177,this._ctx);
switch(la_) {
case 1:
localctx = new QualifiedArgumentContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 1447;
this.identifier();
this.state = 1448;
this.match(SqlBaseParser.T__0);
this.state = 1449;
this.identifier();
break;
case 2:
localctx = new UnqualifiedArgumentContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 1451;
this.identifier();
break;
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function PathSpecificationContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_pathSpecification;
return this;
}
PathSpecificationContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
PathSpecificationContext.prototype.constructor = PathSpecificationContext;
PathSpecificationContext.prototype.pathElement = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(PathElementContext);
} else {
return this.getTypedRuleContext(PathElementContext,i);
}
};
PathSpecificationContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterPathSpecification(this);
}
};
PathSpecificationContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitPathSpecification(this);
}
};
SqlBaseParser.PathSpecificationContext = PathSpecificationContext;
SqlBaseParser.prototype.pathSpecification = function() {
var localctx = new PathSpecificationContext(this, this._ctx, this.state);
this.enterRule(localctx, 112, SqlBaseParser.RULE_pathSpecification);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 1454;
this.pathElement();
this.state = 1459;
this._errHandler.sync(this);
_la = this._input.LA(1);
while(_la===SqlBaseParser.T__3) {
this.state = 1455;
this.match(SqlBaseParser.T__3);
this.state = 1456;
this.pathElement();
this.state = 1461;
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 PrivilegeContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_privilege;
return this;
}
PrivilegeContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
PrivilegeContext.prototype.constructor = PrivilegeContext;
PrivilegeContext.prototype.SELECT = function() {
return this.getToken(SqlBaseParser.SELECT, 0);
};
PrivilegeContext.prototype.DELETE = function() {
return this.getToken(SqlBaseParser.DELETE, 0);
};
PrivilegeContext.prototype.INSERT = function() {
return this.getToken(SqlBaseParser.INSERT, 0);
};
PrivilegeContext.prototype.identifier = function() {
return this.getTypedRuleContext(IdentifierContext,0);
};
PrivilegeContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterPrivilege(this);
}
};
PrivilegeContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitPrivilege(this);
}
};
SqlBaseParser.PrivilegeContext = PrivilegeContext;
SqlBaseParser.prototype.privilege = function() {
var localctx = new PrivilegeContext(this, this._ctx, this.state);
this.enterRule(localctx, 114, SqlBaseParser.RULE_privilege);
try {
this.state = 1466;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case SqlBaseParser.SELECT:
this.enterOuterAlt(localctx, 1);
this.state = 1462;
this.match(SqlBaseParser.SELECT);
break;
case SqlBaseParser.DELETE:
this.enterOuterAlt(localctx, 2);
this.state = 1463;
this.match(SqlBaseParser.DELETE);
break;
case SqlBaseParser.INSERT:
this.enterOuterAlt(localctx, 3);
this.state = 1464;
this.match(SqlBaseParser.INSERT);
break;
case SqlBaseParser.ADD:
case SqlBaseParser.ALL:
case SqlBaseParser.ANALYZE:
case SqlBaseParser.ANY:
case SqlBaseParser.ARRAY:
case SqlBaseParser.ASC:
case SqlBaseParser.AT:
case SqlBaseParser.BERNOULLI:
case SqlBaseParser.CALL:
case SqlBaseParser.CASCADE:
case SqlBaseParser.CATALOGS:
case SqlBaseParser.COLUMN:
case SqlBaseParser.COLUMNS:
case SqlBaseParser.COMMENT:
case SqlBaseParser.COMMIT:
case SqlBaseParser.COMMITTED:
case SqlBaseParser.CURRENT:
case SqlBaseParser.DATA:
case SqlBaseParser.DATE:
case SqlBaseParser.DAY:
case SqlBaseParser.DESC:
case SqlBaseParser.DISTRIBUTED:
case SqlBaseParser.EXCLUDING:
case SqlBaseParser.EXPLAIN:
case SqlBaseParser.FILTER:
case SqlBaseParser.FIRST:
case SqlBaseParser.FOLLOWING:
case SqlBaseParser.FORMAT:
case SqlBaseParser.FUNCTIONS:
case SqlBaseParser.GRANT:
case SqlBaseParser.GRANTS:
case SqlBaseParser.GRAPHVIZ:
case SqlBaseParser.HOUR:
case SqlBaseParser.IF:
case SqlBaseParser.INCLUDING:
case SqlBaseParser.INPUT:
case SqlBaseParser.INTERVAL:
case SqlBaseParser.IO:
case SqlBaseParser.ISOLATION:
case SqlBaseParser.JSON:
case SqlBaseParser.LAST:
case SqlBaseParser.LATERAL:
case SqlBaseParser.LEVEL:
case SqlBaseParser.LIMIT:
case SqlBaseParser.LOGICAL:
case SqlBaseParser.MAP:
case SqlBaseParser.MINUTE:
case SqlBaseParser.MONTH:
case SqlBaseParser.NFC:
case SqlBaseParser.NFD:
case SqlBaseParser.NFKC:
case SqlBaseParser.NFKD:
case SqlBaseParser.NO:
case SqlBaseParser.NULLIF:
case SqlBaseParser.NULLS:
case SqlBaseParser.ONLY:
case SqlBaseParser.OPTION:
case SqlBaseParser.ORDINALITY:
case SqlBaseParser.OUTPUT:
case SqlBaseParser.OVER:
case SqlBaseParser.PARTITION:
case SqlBaseParser.PARTITIONS:
case SqlBaseParser.PATH:
case SqlBaseParser.POSITION:
case SqlBaseParser.PRECEDING:
case SqlBaseParser.PRIVILEGES:
case SqlBaseParser.PROPERTIES:
case SqlBaseParser.PUBLIC:
case SqlBaseParser.RANGE:
case SqlBaseParser.READ:
case SqlBaseParser.RENAME:
case SqlBaseParser.REPEATABLE:
case SqlBaseParser.REPLACE:
case SqlBaseParser.RESET:
case SqlBaseParser.RESTRICT:
case SqlBaseParser.REVOKE:
case SqlBaseParser.ROLLBACK:
case SqlBaseParser.ROW:
case SqlBaseParser.ROWS:
case SqlBaseParser.SCHEMA:
case SqlBaseParser.SCHEMAS:
case SqlBaseParser.SECOND:
case SqlBaseParser.SERIALIZABLE:
case SqlBaseParser.SESSION:
case SqlBaseParser.SET:
case SqlBaseParser.SETS:
case SqlBaseParser.SHOW:
case SqlBaseParser.SOME:
case SqlBaseParser.START:
case SqlBaseParser.STATS:
case SqlBaseParser.SUBSTRING:
case SqlBaseParser.SYSTEM:
case SqlBaseParser.TABLES:
case SqlBaseParser.TABLESAMPLE:
case SqlBaseParser.TEXT:
case SqlBaseParser.TIME:
case SqlBaseParser.TIMESTAMP:
case SqlBaseParser.TO:
case SqlBaseParser.TRANSACTION:
case SqlBaseParser.TRY_CAST:
case SqlBaseParser.TYPE:
case SqlBaseParser.UNBOUNDED:
case SqlBaseParser.UNCOMMITTED:
case SqlBaseParser.USE:
case SqlBaseParser.VALIDATE:
case SqlBaseParser.VERBOSE:
case SqlBaseParser.VIEW:
case SqlBaseParser.WORK:
case SqlBaseParser.WRITE:
case SqlBaseParser.YEAR:
case SqlBaseParser.ZONE:
case SqlBaseParser.IDENTIFIER:
case SqlBaseParser.DIGIT_IDENTIFIER:
case SqlBaseParser.QUOTED_IDENTIFIER:
case SqlBaseParser.BACKQUOTED_IDENTIFIER:
this.enterOuterAlt(localctx, 4);
this.state = 1465;
this.identifier();
break;
default:
throw new antlr4.error.NoViableAltException(this);
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function QualifiedNameContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_qualifiedName;
return this;
}
QualifiedNameContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
QualifiedNameContext.prototype.constructor = QualifiedNameContext;
QualifiedNameContext.prototype.identifier = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(IdentifierContext);
} else {
return this.getTypedRuleContext(IdentifierContext,i);
}
};
QualifiedNameContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterQualifiedName(this);
}
};
QualifiedNameContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitQualifiedName(this);
}
};
SqlBaseParser.QualifiedNameContext = QualifiedNameContext;
SqlBaseParser.prototype.qualifiedName = function() {
var localctx = new QualifiedNameContext(this, this._ctx, this.state);
this.enterRule(localctx, 116, SqlBaseParser.RULE_qualifiedName);
try {
this.enterOuterAlt(localctx, 1);
this.state = 1468;
this.identifier();
this.state = 1473;
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 = 1469;
this.match(SqlBaseParser.T__0);
this.state = 1470;
this.identifier();
}
this.state = 1475;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,180,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 IdentifierContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_identifier;
return this;
}
IdentifierContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
IdentifierContext.prototype.constructor = IdentifierContext;
IdentifierContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function BackQuotedIdentifierContext(parser, ctx) {
IdentifierContext.call(this, parser);
IdentifierContext.prototype.copyFrom.call(this, ctx);
return this;
}
BackQuotedIdentifierContext.prototype = Object.create(IdentifierContext.prototype);
BackQuotedIdentifierContext.prototype.constructor = BackQuotedIdentifierContext;
SqlBaseParser.BackQuotedIdentifierContext = BackQuotedIdentifierContext;
BackQuotedIdentifierContext.prototype.BACKQUOTED_IDENTIFIER = function() {
return this.getToken(SqlBaseParser.BACKQUOTED_IDENTIFIER, 0);
};
BackQuotedIdentifierContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterBackQuotedIdentifier(this);
}
};
BackQuotedIdentifierContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitBackQuotedIdentifier(this);
}
};
function QuotedIdentifierContext(parser, ctx) {
IdentifierContext.call(this, parser);
IdentifierContext.prototype.copyFrom.call(this, ctx);
return this;
}
QuotedIdentifierContext.prototype = Object.create(IdentifierContext.prototype);
QuotedIdentifierContext.prototype.constructor = QuotedIdentifierContext;
SqlBaseParser.QuotedIdentifierContext = QuotedIdentifierContext;
QuotedIdentifierContext.prototype.QUOTED_IDENTIFIER = function() {
return this.getToken(SqlBaseParser.QUOTED_IDENTIFIER, 0);
};
QuotedIdentifierContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterQuotedIdentifier(this);
}
};
QuotedIdentifierContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitQuotedIdentifier(this);
}
};
function DigitIdentifierContext(parser, ctx) {
IdentifierContext.call(this, parser);
IdentifierContext.prototype.copyFrom.call(this, ctx);
return this;
}
DigitIdentifierContext.prototype = Object.create(IdentifierContext.prototype);
DigitIdentifierContext.prototype.constructor = DigitIdentifierContext;
SqlBaseParser.DigitIdentifierContext = DigitIdentifierContext;
DigitIdentifierContext.prototype.DIGIT_IDENTIFIER = function() {
return this.getToken(SqlBaseParser.DIGIT_IDENTIFIER, 0);
};
DigitIdentifierContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterDigitIdentifier(this);
}
};
DigitIdentifierContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitDigitIdentifier(this);
}
};
function UnquotedIdentifierContext(parser, ctx) {
IdentifierContext.call(this, parser);
IdentifierContext.prototype.copyFrom.call(this, ctx);
return this;
}
UnquotedIdentifierContext.prototype = Object.create(IdentifierContext.prototype);
UnquotedIdentifierContext.prototype.constructor = UnquotedIdentifierContext;
SqlBaseParser.UnquotedIdentifierContext = UnquotedIdentifierContext;
UnquotedIdentifierContext.prototype.IDENTIFIER = function() {
return this.getToken(SqlBaseParser.IDENTIFIER, 0);
};
UnquotedIdentifierContext.prototype.nonReserved = function() {
return this.getTypedRuleContext(NonReservedContext,0);
};
UnquotedIdentifierContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterUnquotedIdentifier(this);
}
};
UnquotedIdentifierContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitUnquotedIdentifier(this);
}
};
SqlBaseParser.IdentifierContext = IdentifierContext;
SqlBaseParser.prototype.identifier = function() {
var localctx = new IdentifierContext(this, this._ctx, this.state);
this.enterRule(localctx, 118, SqlBaseParser.RULE_identifier);
try {
this.state = 1481;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case SqlBaseParser.IDENTIFIER:
localctx = new UnquotedIdentifierContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 1476;
this.match(SqlBaseParser.IDENTIFIER);
break;
case SqlBaseParser.QUOTED_IDENTIFIER:
localctx = new QuotedIdentifierContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 1477;
this.match(SqlBaseParser.QUOTED_IDENTIFIER);
break;
case SqlBaseParser.ADD:
case SqlBaseParser.ALL:
case SqlBaseParser.ANALYZE:
case SqlBaseParser.ANY:
case SqlBaseParser.ARRAY:
case SqlBaseParser.ASC:
case SqlBaseParser.AT:
case SqlBaseParser.BERNOULLI:
case SqlBaseParser.CALL:
case SqlBaseParser.CASCADE:
case SqlBaseParser.CATALOGS:
case SqlBaseParser.COLUMN:
case SqlBaseParser.COLUMNS:
case SqlBaseParser.COMMENT:
case SqlBaseParser.COMMIT:
case SqlBaseParser.COMMITTED:
case SqlBaseParser.CURRENT:
case SqlBaseParser.DATA:
case SqlBaseParser.DATE:
case SqlBaseParser.DAY:
case SqlBaseParser.DESC:
case SqlBaseParser.DISTRIBUTED:
case SqlBaseParser.EXCLUDING:
case SqlBaseParser.EXPLAIN:
case SqlBaseParser.FILTER:
case SqlBaseParser.FIRST:
case SqlBaseParser.FOLLOWING:
case SqlBaseParser.FORMAT:
case SqlBaseParser.FUNCTIONS:
case SqlBaseParser.GRANT:
case SqlBaseParser.GRANTS:
case SqlBaseParser.GRAPHVIZ:
case SqlBaseParser.HOUR:
case SqlBaseParser.IF:
case SqlBaseParser.INCLUDING:
case SqlBaseParser.INPUT:
case SqlBaseParser.INTERVAL:
case SqlBaseParser.IO:
case SqlBaseParser.ISOLATION:
case SqlBaseParser.JSON:
case SqlBaseParser.LAST:
case SqlBaseParser.LATERAL:
case SqlBaseParser.LEVEL:
case SqlBaseParser.LIMIT:
case SqlBaseParser.LOGICAL:
case SqlBaseParser.MAP:
case SqlBaseParser.MINUTE:
case SqlBaseParser.MONTH:
case SqlBaseParser.NFC:
case SqlBaseParser.NFD:
case SqlBaseParser.NFKC:
case SqlBaseParser.NFKD:
case SqlBaseParser.NO:
case SqlBaseParser.NULLIF:
case SqlBaseParser.NULLS:
case SqlBaseParser.ONLY:
case SqlBaseParser.OPTION:
case SqlBaseParser.ORDINALITY:
case SqlBaseParser.OUTPUT:
case SqlBaseParser.OVER:
case SqlBaseParser.PARTITION:
case SqlBaseParser.PARTITIONS:
case SqlBaseParser.PATH:
case SqlBaseParser.POSITION:
case SqlBaseParser.PRECEDING:
case SqlBaseParser.PRIVILEGES:
case SqlBaseParser.PROPERTIES:
case SqlBaseParser.PUBLIC:
case SqlBaseParser.RANGE:
case SqlBaseParser.READ:
case SqlBaseParser.RENAME:
case SqlBaseParser.REPEATABLE:
case SqlBaseParser.REPLACE:
case SqlBaseParser.RESET:
case SqlBaseParser.RESTRICT:
case SqlBaseParser.REVOKE:
case SqlBaseParser.ROLLBACK:
case SqlBaseParser.ROW:
case SqlBaseParser.ROWS:
case SqlBaseParser.SCHEMA:
case SqlBaseParser.SCHEMAS:
case SqlBaseParser.SECOND:
case SqlBaseParser.SERIALIZABLE:
case SqlBaseParser.SESSION:
case SqlBaseParser.SET:
case SqlBaseParser.SETS:
case SqlBaseParser.SHOW:
case SqlBaseParser.SOME:
case SqlBaseParser.START:
case SqlBaseParser.STATS:
case SqlBaseParser.SUBSTRING:
case SqlBaseParser.SYSTEM:
case SqlBaseParser.TABLES:
case SqlBaseParser.TABLESAMPLE:
case SqlBaseParser.TEXT:
case SqlBaseParser.TIME:
case SqlBaseParser.TIMESTAMP:
case SqlBaseParser.TO:
case SqlBaseParser.TRANSACTION:
case SqlBaseParser.TRY_CAST:
case SqlBaseParser.TYPE:
case SqlBaseParser.UNBOUNDED:
case SqlBaseParser.UNCOMMITTED:
case SqlBaseParser.USE:
case SqlBaseParser.VALIDATE:
case SqlBaseParser.VERBOSE:
case SqlBaseParser.VIEW:
case SqlBaseParser.WORK:
case SqlBaseParser.WRITE:
case SqlBaseParser.YEAR:
case SqlBaseParser.ZONE:
localctx = new UnquotedIdentifierContext(this, localctx);
this.enterOuterAlt(localctx, 3);
this.state = 1478;
this.nonReserved();
break;
case SqlBaseParser.BACKQUOTED_IDENTIFIER:
localctx = new BackQuotedIdentifierContext(this, localctx);
this.enterOuterAlt(localctx, 4);
this.state = 1479;
this.match(SqlBaseParser.BACKQUOTED_IDENTIFIER);
break;
case SqlBaseParser.DIGIT_IDENTIFIER:
localctx = new DigitIdentifierContext(this, localctx);
this.enterOuterAlt(localctx, 5);
this.state = 1480;
this.match(SqlBaseParser.DIGIT_IDENTIFIER);
break;
default:
throw new antlr4.error.NoViableAltException(this);
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function 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 = SqlBaseParser.RULE_number;
return this;
}
NumberContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
NumberContext.prototype.constructor = NumberContext;
NumberContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function DecimalLiteralContext(parser, ctx) {
NumberContext.call(this, parser);
NumberContext.prototype.copyFrom.call(this, ctx);
return this;
}
DecimalLiteralContext.prototype = Object.create(NumberContext.prototype);
DecimalLiteralContext.prototype.constructor = DecimalLiteralContext;
SqlBaseParser.DecimalLiteralContext = DecimalLiteralContext;
DecimalLiteralContext.prototype.DECIMAL_VALUE = function() {
return this.getToken(SqlBaseParser.DECIMAL_VALUE, 0);
};
DecimalLiteralContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterDecimalLiteral(this);
}
};
DecimalLiteralContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitDecimalLiteral(this);
}
};
function DoubleLiteralContext(parser, ctx) {
NumberContext.call(this, parser);
NumberContext.prototype.copyFrom.call(this, ctx);
return this;
}
DoubleLiteralContext.prototype = Object.create(NumberContext.prototype);
DoubleLiteralContext.prototype.constructor = DoubleLiteralContext;
SqlBaseParser.DoubleLiteralContext = DoubleLiteralContext;
DoubleLiteralContext.prototype.DOUBLE_VALUE = function() {
return this.getToken(SqlBaseParser.DOUBLE_VALUE, 0);
};
DoubleLiteralContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterDoubleLiteral(this);
}
};
DoubleLiteralContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitDoubleLiteral(this);
}
};
function IntegerLiteralContext(parser, ctx) {
NumberContext.call(this, parser);
NumberContext.prototype.copyFrom.call(this, ctx);
return this;
}
IntegerLiteralContext.prototype = Object.create(NumberContext.prototype);
IntegerLiteralContext.prototype.constructor = IntegerLiteralContext;
SqlBaseParser.IntegerLiteralContext = IntegerLiteralContext;
IntegerLiteralContext.prototype.INTEGER_VALUE = function() {
return this.getToken(SqlBaseParser.INTEGER_VALUE, 0);
};
IntegerLiteralContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterIntegerLiteral(this);
}
};
IntegerLiteralContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitIntegerLiteral(this);
}
};
SqlBaseParser.NumberContext = NumberContext;
SqlBaseParser.prototype.number = function() {
var localctx = new NumberContext(this, this._ctx, this.state);
this.enterRule(localctx, 120, SqlBaseParser.RULE_number);
try {
this.state = 1486;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case SqlBaseParser.DECIMAL_VALUE:
localctx = new DecimalLiteralContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 1483;
this.match(SqlBaseParser.DECIMAL_VALUE);
break;
case SqlBaseParser.DOUBLE_VALUE:
localctx = new DoubleLiteralContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 1484;
this.match(SqlBaseParser.DOUBLE_VALUE);
break;
case SqlBaseParser.INTEGER_VALUE:
localctx = new IntegerLiteralContext(this, localctx);
this.enterOuterAlt(localctx, 3);
this.state = 1485;
this.match(SqlBaseParser.INTEGER_VALUE);
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 NonReservedContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = SqlBaseParser.RULE_nonReserved;
return this;
}
NonReservedContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
NonReservedContext.prototype.constructor = NonReservedContext;
NonReservedContext.prototype.ADD = function() {
return this.getToken(SqlBaseParser.ADD, 0);
};
NonReservedContext.prototype.ALL = function() {
return this.getToken(SqlBaseParser.ALL, 0);
};
NonReservedContext.prototype.ANALYZE = function() {
return this.getToken(SqlBaseParser.ANALYZE, 0);
};
NonReservedContext.prototype.ANY = function() {
return this.getToken(SqlBaseParser.ANY, 0);
};
NonReservedContext.prototype.ARRAY = function() {
return this.getToken(SqlBaseParser.ARRAY, 0);
};
NonReservedContext.prototype.ASC = function() {
return this.getToken(SqlBaseParser.ASC, 0);
};
NonReservedContext.prototype.AT = function() {
return this.getToken(SqlBaseParser.AT, 0);
};
NonReservedContext.prototype.BERNOULLI = function() {
return this.getToken(SqlBaseParser.BERNOULLI, 0);
};
NonReservedContext.prototype.CALL = function() {
return this.getToken(SqlBaseParser.CALL, 0);
};
NonReservedContext.prototype.CASCADE = function() {
return this.getToken(SqlBaseParser.CASCADE, 0);
};
NonReservedContext.prototype.CATALOGS = function() {
return this.getToken(SqlBaseParser.CATALOGS, 0);
};
NonReservedContext.prototype.COLUMN = function() {
return this.getToken(SqlBaseParser.COLUMN, 0);
};
NonReservedContext.prototype.COLUMNS = function() {
return this.getToken(SqlBaseParser.COLUMNS, 0);
};
NonReservedContext.prototype.COMMENT = function() {
return this.getToken(SqlBaseParser.COMMENT, 0);
};
NonReservedContext.prototype.COMMIT = function() {
return this.getToken(SqlBaseParser.COMMIT, 0);
};
NonReservedContext.prototype.COMMITTED = function() {
return this.getToken(SqlBaseParser.COMMITTED, 0);
};
NonReservedContext.prototype.CURRENT = function() {
return this.getToken(SqlBaseParser.CURRENT, 0);
};
NonReservedContext.prototype.DATA = function() {
return this.getToken(SqlBaseParser.DATA, 0);
};
NonReservedContext.prototype.DATE = function() {
return this.getToken(SqlBaseParser.DATE, 0);
};
NonReservedContext.prototype.DAY = function() {
return this.getToken(SqlBaseParser.DAY, 0);
};
NonReservedContext.prototype.DESC = function() {
return this.getToken(SqlBaseParser.DESC, 0);
};
NonReservedContext.prototype.DISTRIBUTED = function() {
return this.getToken(SqlBaseParser.DISTRIBUTED, 0);
};
NonReservedContext.prototype.EXCLUDING = function() {
return this.getToken(SqlBaseParser.EXCLUDING, 0);
};
NonReservedContext.prototype.EXPLAIN = function() {
return this.getToken(SqlBaseParser.EXPLAIN, 0);
};
NonReservedContext.prototype.FILTER = function() {
return this.getToken(SqlBaseParser.FILTER, 0);
};
NonReservedContext.prototype.FIRST = function() {
return this.getToken(SqlBaseParser.FIRST, 0);
};
NonReservedContext.prototype.FOLLOWING = function() {
return this.getToken(SqlBaseParser.FOLLOWING, 0);
};
NonReservedContext.prototype.FORMAT = function() {
return this.getToken(SqlBaseParser.FORMAT, 0);
};
NonReservedContext.prototype.FUNCTIONS = function() {
return this.getToken(SqlBaseParser.FUNCTIONS, 0);
};
NonReservedContext.prototype.GRANT = function() {
return this.getToken(SqlBaseParser.GRANT, 0);
};
NonReservedContext.prototype.GRANTS = function() {
return this.getToken(SqlBaseParser.GRANTS, 0);
};
NonReservedContext.prototype.GRAPHVIZ = function() {
return this.getToken(SqlBaseParser.GRAPHVIZ, 0);
};
NonReservedContext.prototype.HOUR = function() {
return this.getToken(SqlBaseParser.HOUR, 0);
};
NonReservedContext.prototype.IF = function() {
return this.getToken(SqlBaseParser.IF, 0);
};
NonReservedContext.prototype.INCLUDING = function() {
return this.getToken(SqlBaseParser.INCLUDING, 0);
};
NonReservedContext.prototype.INPUT = function() {
return this.getToken(SqlBaseParser.INPUT, 0);
};
NonReservedContext.prototype.INTERVAL = function() {
return this.getToken(SqlBaseParser.INTERVAL, 0);
};
NonReservedContext.prototype.IO = function() {
return this.getToken(SqlBaseParser.IO, 0);
};
NonReservedContext.prototype.ISOLATION = function() {
return this.getToken(SqlBaseParser.ISOLATION, 0);
};
NonReservedContext.prototype.JSON = function() {
return this.getToken(SqlBaseParser.JSON, 0);
};
NonReservedContext.prototype.LAST = function() {
return this.getToken(SqlBaseParser.LAST, 0);
};
NonReservedContext.prototype.LATERAL = function() {
return this.getToken(SqlBaseParser.LATERAL, 0);
};
NonReservedContext.prototype.LEVEL = function() {
return this.getToken(SqlBaseParser.LEVEL, 0);
};
NonReservedContext.prototype.LIMIT = function() {
return this.getToken(SqlBaseParser.LIMIT, 0);
};
NonReservedContext.prototype.LOGICAL = function() {
return this.getToken(SqlBaseParser.LOGICAL, 0);
};
NonReservedContext.prototype.MAP = function() {
return this.getToken(SqlBaseParser.MAP, 0);
};
NonReservedContext.prototype.MINUTE = function() {
return this.getToken(SqlBaseParser.MINUTE, 0);
};
NonReservedContext.prototype.MONTH = function() {
return this.getToken(SqlBaseParser.MONTH, 0);
};
NonReservedContext.prototype.NFC = function() {
return this.getToken(SqlBaseParser.NFC, 0);
};
NonReservedContext.prototype.NFD = function() {
return this.getToken(SqlBaseParser.NFD, 0);
};
NonReservedContext.prototype.NFKC = function() {
return this.getToken(SqlBaseParser.NFKC, 0);
};
NonReservedContext.prototype.NFKD = function() {
return this.getToken(SqlBaseParser.NFKD, 0);
};
NonReservedContext.prototype.NO = function() {
return this.getToken(SqlBaseParser.NO, 0);
};
NonReservedContext.prototype.NULLIF = function() {
return this.getToken(SqlBaseParser.NULLIF, 0);
};
NonReservedContext.prototype.NULLS = function() {
return this.getToken(SqlBaseParser.NULLS, 0);
};
NonReservedContext.prototype.ONLY = function() {
return this.getToken(SqlBaseParser.ONLY, 0);
};
NonReservedContext.prototype.OPTION = function() {
return this.getToken(SqlBaseParser.OPTION, 0);
};
NonReservedContext.prototype.ORDINALITY = function() {
return this.getToken(SqlBaseParser.ORDINALITY, 0);
};
NonReservedContext.prototype.OUTPUT = function() {
return this.getToken(SqlBaseParser.OUTPUT, 0);
};
NonReservedContext.prototype.OVER = function() {
return this.getToken(SqlBaseParser.OVER, 0);
};
NonReservedContext.prototype.PARTITION = function() {
return this.getToken(SqlBaseParser.PARTITION, 0);
};
NonReservedContext.prototype.PARTITIONS = function() {
return this.getToken(SqlBaseParser.PARTITIONS, 0);
};
NonReservedContext.prototype.PATH = function() {
return this.getToken(SqlBaseParser.PATH, 0);
};
NonReservedContext.prototype.POSITION = function() {
return this.getToken(SqlBaseParser.POSITION, 0);
};
NonReservedContext.prototype.PRECEDING = function() {
return this.getToken(SqlBaseParser.PRECEDING, 0);
};
NonReservedContext.prototype.PRIVILEGES = function() {
return this.getToken(SqlBaseParser.PRIVILEGES, 0);
};
NonReservedContext.prototype.PROPERTIES = function() {
return this.getToken(SqlBaseParser.PROPERTIES, 0);
};
NonReservedContext.prototype.PUBLIC = function() {
return this.getToken(SqlBaseParser.PUBLIC, 0);
};
NonReservedContext.prototype.RANGE = function() {
return this.getToken(SqlBaseParser.RANGE, 0);
};
NonReservedContext.prototype.READ = function() {
return this.getToken(SqlBaseParser.READ, 0);
};
NonReservedContext.prototype.RENAME = function() {
return this.getToken(SqlBaseParser.RENAME, 0);
};
NonReservedContext.prototype.REPEATABLE = function() {
return this.getToken(SqlBaseParser.REPEATABLE, 0);
};
NonReservedContext.prototype.REPLACE = function() {
return this.getToken(SqlBaseParser.REPLACE, 0);
};
NonReservedContext.prototype.RESET = function() {
return this.getToken(SqlBaseParser.RESET, 0);
};
NonReservedContext.prototype.RESTRICT = function() {
return this.getToken(SqlBaseParser.RESTRICT, 0);
};
NonReservedContext.prototype.REVOKE = function() {
return this.getToken(SqlBaseParser.REVOKE, 0);
};
NonReservedContext.prototype.ROLLBACK = function() {
return this.getToken(SqlBaseParser.ROLLBACK, 0);
};
NonReservedContext.prototype.ROW = function() {
return this.getToken(SqlBaseParser.ROW, 0);
};
NonReservedContext.prototype.ROWS = function() {
return this.getToken(SqlBaseParser.ROWS, 0);
};
NonReservedContext.prototype.SCHEMA = function() {
return this.getToken(SqlBaseParser.SCHEMA, 0);
};
NonReservedContext.prototype.SCHEMAS = function() {
return this.getToken(SqlBaseParser.SCHEMAS, 0);
};
NonReservedContext.prototype.SECOND = function() {
return this.getToken(SqlBaseParser.SECOND, 0);
};
NonReservedContext.prototype.SERIALIZABLE = function() {
return this.getToken(SqlBaseParser.SERIALIZABLE, 0);
};
NonReservedContext.prototype.SESSION = function() {
return this.getToken(SqlBaseParser.SESSION, 0);
};
NonReservedContext.prototype.SET = function() {
return this.getToken(SqlBaseParser.SET, 0);
};
NonReservedContext.prototype.SETS = function() {
return this.getToken(SqlBaseParser.SETS, 0);
};
NonReservedContext.prototype.SHOW = function() {
return this.getToken(SqlBaseParser.SHOW, 0);
};
NonReservedContext.prototype.SOME = function() {
return this.getToken(SqlBaseParser.SOME, 0);
};
NonReservedContext.prototype.START = function() {
return this.getToken(SqlBaseParser.START, 0);
};
NonReservedContext.prototype.STATS = function() {
return this.getToken(SqlBaseParser.STATS, 0);
};
NonReservedContext.prototype.SUBSTRING = function() {
return this.getToken(SqlBaseParser.SUBSTRING, 0);
};
NonReservedContext.prototype.SYSTEM = function() {
return this.getToken(SqlBaseParser.SYSTEM, 0);
};
NonReservedContext.prototype.TABLES = function() {
return this.getToken(SqlBaseParser.TABLES, 0);
};
NonReservedContext.prototype.TABLESAMPLE = function() {
return this.getToken(SqlBaseParser.TABLESAMPLE, 0);
};
NonReservedContext.prototype.TEXT = function() {
return this.getToken(SqlBaseParser.TEXT, 0);
};
NonReservedContext.prototype.TIME = function() {
return this.getToken(SqlBaseParser.TIME, 0);
};
NonReservedContext.prototype.TIMESTAMP = function() {
return this.getToken(SqlBaseParser.TIMESTAMP, 0);
};
NonReservedContext.prototype.TO = function() {
return this.getToken(SqlBaseParser.TO, 0);
};
NonReservedContext.prototype.TRANSACTION = function() {
return this.getToken(SqlBaseParser.TRANSACTION, 0);
};
NonReservedContext.prototype.TRY_CAST = function() {
return this.getToken(SqlBaseParser.TRY_CAST, 0);
};
NonReservedContext.prototype.TYPE = function() {
return this.getToken(SqlBaseParser.TYPE, 0);
};
NonReservedContext.prototype.UNBOUNDED = function() {
return this.getToken(SqlBaseParser.UNBOUNDED, 0);
};
NonReservedContext.prototype.UNCOMMITTED = function() {
return this.getToken(SqlBaseParser.UNCOMMITTED, 0);
};
NonReservedContext.prototype.USE = function() {
return this.getToken(SqlBaseParser.USE, 0);
};
NonReservedContext.prototype.VALIDATE = function() {
return this.getToken(SqlBaseParser.VALIDATE, 0);
};
NonReservedContext.prototype.VERBOSE = function() {
return this.getToken(SqlBaseParser.VERBOSE, 0);
};
NonReservedContext.prototype.VIEW = function() {
return this.getToken(SqlBaseParser.VIEW, 0);
};
NonReservedContext.prototype.WORK = function() {
return this.getToken(SqlBaseParser.WORK, 0);
};
NonReservedContext.prototype.WRITE = function() {
return this.getToken(SqlBaseParser.WRITE, 0);
};
NonReservedContext.prototype.YEAR = function() {
return this.getToken(SqlBaseParser.YEAR, 0);
};
NonReservedContext.prototype.ZONE = function() {
return this.getToken(SqlBaseParser.ZONE, 0);
};
NonReservedContext.prototype.enterRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.enterNonReserved(this);
}
};
NonReservedContext.prototype.exitRule = function(listener) {
if(listener instanceof SqlBaseListener ) {
listener.exitNonReserved(this);
}
};
SqlBaseParser.NonReservedContext = NonReservedContext;
SqlBaseParser.prototype.nonReserved = function() {
var localctx = new NonReservedContext(this, this._ctx, this.state);
this.enterRule(localctx, 122, SqlBaseParser.RULE_nonReserved);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 1488;
_la = this._input.LA(1);
if(!((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << SqlBaseParser.ADD) | (1 << SqlBaseParser.ALL) | (1 << SqlBaseParser.ANALYZE) | (1 << SqlBaseParser.ANY) | (1 << SqlBaseParser.ARRAY) | (1 << SqlBaseParser.ASC) | (1 << SqlBaseParser.AT) | (1 << SqlBaseParser.BERNOULLI) | (1 << SqlBaseParser.CALL) | (1 << SqlBaseParser.CASCADE) | (1 << SqlBaseParser.CATALOGS) | (1 << SqlBaseParser.COLUMN) | (1 << SqlBaseParser.COLUMNS) | (1 << SqlBaseParser.COMMENT) | (1 << SqlBaseParser.COMMIT))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (SqlBaseParser.COMMITTED - 32)) | (1 << (SqlBaseParser.CURRENT - 32)) | (1 << (SqlBaseParser.DATA - 32)) | (1 << (SqlBaseParser.DATE - 32)) | (1 << (SqlBaseParser.DAY - 32)) | (1 << (SqlBaseParser.DESC - 32)) | (1 << (SqlBaseParser.DISTRIBUTED - 32)) | (1 << (SqlBaseParser.EXCLUDING - 32)) | (1 << (SqlBaseParser.EXPLAIN - 32)) | (1 << (SqlBaseParser.FILTER - 32)))) !== 0) || ((((_la - 64)) & ~0x1f) == 0 && ((1 << (_la - 64)) & ((1 << (SqlBaseParser.FIRST - 64)) | (1 << (SqlBaseParser.FOLLOWING - 64)) | (1 << (SqlBaseParser.FORMAT - 64)) | (1 << (SqlBaseParser.FUNCTIONS - 64)) | (1 << (SqlBaseParser.GRANT - 64)) | (1 << (SqlBaseParser.GRANTS - 64)) | (1 << (SqlBaseParser.GRAPHVIZ - 64)) | (1 << (SqlBaseParser.HOUR - 64)) | (1 << (SqlBaseParser.IF - 64)) | (1 << (SqlBaseParser.INCLUDING - 64)) | (1 << (SqlBaseParser.INPUT - 64)) | (1 << (SqlBaseParser.INTERVAL - 64)) | (1 << (SqlBaseParser.IO - 64)) | (1 << (SqlBaseParser.ISOLATION - 64)) | (1 << (SqlBaseParser.JSON - 64)) | (1 << (SqlBaseParser.LAST - 64)) | (1 << (SqlBaseParser.LATERAL - 64)) | (1 << (SqlBaseParser.LEVEL - 64)))) !== 0) || ((((_la - 97)) & ~0x1f) == 0 && ((1 << (_la - 97)) & ((1 << (SqlBaseParser.LIMIT - 97)) | (1 << (SqlBaseParser.LOGICAL - 97)) | (1 << (SqlBaseParser.MAP - 97)) | (1 << (SqlBaseParser.MINUTE - 97)) | (1 << (SqlBaseParser.MONTH - 97)) | (1 << (SqlBaseParser.NFC - 97)) | (1 << (SqlBaseParser.NFD - 97)) | (1 << (SqlBaseParser.NFKC - 97)) | (1 << (SqlBaseParser.NFKD - 97)) | (1 << (SqlBaseParser.NO - 97)) | (1 << (SqlBaseParser.NULLIF - 97)) | (1 << (SqlBaseParser.NULLS - 97)) | (1 << (SqlBaseParser.ONLY - 97)) | (1 << (SqlBaseParser.OPTION - 97)) | (1 << (SqlBaseParser.ORDINALITY - 97)) | (1 << (SqlBaseParser.OUTPUT - 97)) | (1 << (SqlBaseParser.OVER - 97)) | (1 << (SqlBaseParser.PARTITION - 97)) | (1 << (SqlBaseParser.PARTITIONS - 97)) | (1 << (SqlBaseParser.PATH - 97)) | (1 << (SqlBaseParser.POSITION - 97)) | (1 << (SqlBaseParser.PRECEDING - 97)))) !== 0) || ((((_la - 130)) & ~0x1f) == 0 && ((1 << (_la - 130)) & ((1 << (SqlBaseParser.PRIVILEGES - 130)) | (1 << (SqlBaseParser.PROPERTIES - 130)) | (1 << (SqlBaseParser.PUBLIC - 130)) | (1 << (SqlBaseParser.RANGE - 130)) | (1 << (SqlBaseParser.READ - 130)) | (1 << (SqlBaseParser.RENAME - 130)) | (1 << (SqlBaseParser.REPEATABLE - 130)) | (1 << (SqlBaseParser.REPLACE - 130)) | (1 << (SqlBaseParser.RESET - 130)) | (1 << (SqlBaseParser.RESTRICT - 130)) | (1 << (SqlBaseParser.REVOKE - 130)) | (1 << (SqlBaseParser.ROLLBACK - 130)) | (1 << (SqlBaseParser.ROW - 130)) | (1 << (SqlBaseParser.ROWS - 130)) | (1 << (SqlBaseParser.SCHEMA - 130)) | (1 << (SqlBaseParser.SCHEMAS - 130)) | (1 << (SqlBaseParser.SECOND - 130)) | (1 << (SqlBaseParser.SERIALIZABLE - 130)) | (1 << (SqlBaseParser.SESSION - 130)) | (1 << (SqlBaseParser.SET - 130)) | (1 << (SqlBaseParser.SETS - 130)) | (1 << (SqlBaseParser.SHOW - 130)) | (1 << (SqlBaseParser.SOME - 130)) | (1 << (SqlBaseParser.START - 130)) | (1 << (SqlBaseParser.STATS - 130)) | (1 << (SqlBaseParser.SUBSTRING - 130)) | (1 << (SqlBaseParser.SYSTEM - 130)))) !== 0) || ((((_la - 162)) & ~0x1f) == 0 && ((1 << (_la - 162)) & ((1 << (SqlBaseParser.TABLES - 162)) | (1 << (SqlBaseParser.TABLESAMPLE - 162)) | (1 << (SqlBaseParser.TEXT - 162)) | (1 << (SqlBaseParser.TIME - 162)) | (1 << (SqlBaseParser.TIMESTAMP - 162)) | (1 << (SqlBaseParser.TO - 162)) | (1 << (SqlBaseParser.TRANSACTION - 162)) | (1 << (SqlBaseParser.TRY_CAST - 162)) | (1 << (SqlBaseParser.TYPE - 162)) | (1 << (SqlBaseParser.UNBOUNDED - 162)) | (1 << (SqlBaseParser.UNCOMMITTED - 162)) | (1 << (SqlBaseParser.USE - 162)) | (1 << (SqlBaseParser.VALIDATE - 162)) | (1 << (SqlBaseParser.VERBOSE - 162)) | (1 << (SqlBaseParser.VIEW - 162)) | (1 << (SqlBaseParser.WORK - 162)) | (1 << (SqlBaseParser.WRITE - 162)) | (1 << (SqlBaseParser.YEAR - 162)) | (1 << (SqlBaseParser.ZONE - 162)))) !== 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;
};
SqlBaseParser.prototype.sempred = function(localctx, ruleIndex, predIndex) {
switch(ruleIndex) {
case 12:
return this.queryTerm_sempred(localctx, predIndex);
case 22:
return this.relation_sempred(localctx, predIndex);
case 31:
return this.booleanExpression_sempred(localctx, predIndex);
case 33:
return this.valueExpression_sempred(localctx, predIndex);
case 34:
return this.primaryExpression_sempred(localctx, predIndex);
case 43:
return this.type_sempred(localctx, predIndex);
default:
throw "No predicate with index:" + ruleIndex;
}
};
SqlBaseParser.prototype.queryTerm_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 0:
return this.precpred(this._ctx, 2);
case 1:
return this.precpred(this._ctx, 1);
default:
throw "No predicate with index:" + predIndex;
}
};
SqlBaseParser.prototype.relation_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 2:
return this.precpred(this._ctx, 2);
default:
throw "No predicate with index:" + predIndex;
}
};
SqlBaseParser.prototype.booleanExpression_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 3:
return this.precpred(this._ctx, 2);
case 4:
return this.precpred(this._ctx, 1);
default:
throw "No predicate with index:" + predIndex;
}
};
SqlBaseParser.prototype.valueExpression_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 5:
return this.precpred(this._ctx, 3);
case 6:
return this.precpred(this._ctx, 2);
case 7:
return this.precpred(this._ctx, 1);
case 8:
return this.precpred(this._ctx, 5);
default:
throw "No predicate with index:" + predIndex;
}
};
SqlBaseParser.prototype.primaryExpression_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 9:
return this.precpred(this._ctx, 15);
case 10:
return this.precpred(this._ctx, 13);
default:
throw "No predicate with index:" + predIndex;
}
};
SqlBaseParser.prototype.type_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 11:
return this.precpred(this._ctx, 6);
default:
throw "No predicate with index:" + predIndex;
}
};
exports.SqlBaseParser = SqlBaseParser;
},{"./SqlBaseListener":2,"antlr4/index":45}],4:[function(require,module,exports){
//
/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
* Use of this file is governed by the BSD 3-clause license that
* can be found in the LICENSE.txt file in the project root.
*/
// This implementation of {@link TokenStream} loads tokens from a
// {@link TokenSource} on-demand, and places the tokens in a buffer to provide
// access to any previous token by index.
//
// <p>
// This token stream ignores the value of {@link Token//getChannel}. If your
// parser requires the token stream filter tokens to only those on a particular
// channel, such as {@link Token//DEFAULT_CHANNEL} or
// {@link Token//HIDDEN_CHANNEL}, use a filtering token stream such a
// {@link CommonTokenStream}.</p>
var Token = require('./Token').Token;
var Lexer = require('./Lexer').Lexer;
var Interval = require('./IntervalSet').Interval;
// this is just to keep meaningful parameter types to Parser
function TokenStream() {
return this;
}
function BufferedTokenStream(tokenSource) {
TokenStream.call(this);
// The {@link TokenSource} from which tokens for this stream are fetched.
this.tokenSource = tokenSource;
// A collection of all tokens fetched from the token source. The list is
// considered a complete view of the input once {@link //fetchedEOF} is set
// to {@code true}.
this.tokens = [];
// The index into {@link //tokens} of the current token (next token to
// {@link //consume}). {@link //tokens}{@code [}{@link //p}{@code ]} should
// be
// {@link //LT LT(1)}.
//
// <p>This field is set to -1 when the stream is first constructed or when
// {@link //setTokenSource} is called, indicating that the first token has
// not yet been fetched from the token source. For additional information,
// see the documentation of {@link IntStream} for a description of
// Initializing Methods.</p>
this.index = -1;
// Indicates whether the {@link Token//EOF} token has been fetched from
// {@link //tokenSource} and added to {@link //tokens}. This field improves
// performance for the following cases:
//
// <ul>
// <li>{@link //consume}: The lookahead check in {@link //consume} to
// prevent
// consuming the EOF symbol is optimized by checking the values of
// {@link //fetchedEOF} and {@link //p} instead of calling {@link
// //LA}.</li>
// <li>{@link //fetch}: The check to prevent adding multiple EOF symbols
// into
// {@link //tokens} is trivial with this field.</li>
// <ul>
this.fetchedEOF = false;
return this;
}
BufferedTokenStream.prototype = Object.create(TokenStream.prototype);
BufferedTokenStream.prototype.constructor = BufferedTokenStream;
BufferedTokenStream.prototype.mark = function() {
return 0;
};
BufferedTokenStream.prototype.release = function(marker) {
// no resources to release
};
BufferedTokenStream.prototype.reset = function() {
this.seek(0);
};
BufferedTokenStream.prototype.seek = function(index) {
this.lazyInit();
this.index = this.adjustSeekIndex(index);
};
BufferedTokenStream.prototype.get = function(index) {
this.lazyInit();
return this.tokens[index];
};
BufferedTokenStream.prototype.consume = function() {
var skipEofCheck = false;
if (this.index >= 0) {
if (this.fetchedEOF) {
// the last token in tokens is EOF. skip check if p indexes any
// fetched token except the last.
skipEofCheck = this.index < this.tokens.length - 1;
} else {
// no EOF token in tokens. skip check if p indexes a fetched token.
skipEofCheck = this.index < this.tokens.length;
}
} else {
// not yet initialized
skipEofCheck = false;
}
if (!skipEofCheck && this.LA(1) === Token.EOF) {
throw "cannot consume EOF";
}
if (this.sync(this.index + 1)) {
this.index = this.adjustSeekIndex(this.index + 1);
}
};
// Make sure index {@code i} in tokens has a token.
//
// @return {@code true} if a token is located at index {@code i}, otherwise
// {@code false}.
// @see //get(int i)
// /
BufferedTokenStream.prototype.sync = function(i) {
var n = i - this.tokens.length + 1; // how many more elements we need?
if (n > 0) {
var fetched = this.fetch(n);
return fetched >= n;
}
return true;
};
// Add {@code n} elements to buffer.
//
// @return The actual number of elements added to the buffer.
// /
BufferedTokenStream.prototype.fetch = function(n) {
if (this.fetchedEOF) {
return 0;
}
for (var i = 0; i < n; i++) {
var t = this.tokenSource.nextToken();
t.tokenIndex = this.tokens.length;
this.tokens.push(t);
if (t.type === Token.EOF) {
this.fetchedEOF = true;
return i + 1;
}
}
return n;
};
// Get all tokens from start..stop inclusively///
BufferedTokenStream.prototype.getTokens = function(start, stop, types) {
if (types === undefined) {
types = null;
}
if (start < 0 || stop < 0) {
return null;
}
this.lazyInit();
var subset = [];
if (stop >= this.tokens.length) {
stop = this.tokens.length - 1;
}
for (var i = start; i < stop; i++) {
var t = this.tokens[i];
if (t.type === Token.EOF) {
break;
}
if (types === null || types.contains(t.type)) {
subset.push(t);
}
}
return subset;
};
BufferedTokenStream.prototype.LA = function(i) {
return this.LT(i).type;
};
BufferedTokenStream.prototype.LB = function(k) {
if (this.index - k < 0) {
return null;
}
return this.tokens[this.index - k];
};
BufferedTokenStream.prototype.LT = function(k) {
this.lazyInit();
if (k === 0) {
return null;
}
if (k < 0) {
return this.LB(-k);
}
var i = this.index + k - 1;
this.sync(i);
if (i >= this.tokens.length) { // return EOF token
// EOF must be last token
return this.tokens[this.tokens.length - 1];
}
return this.tokens[i];
};
// Allowed derived classes to modify the behavior of operations which change
// the current stream position by adjusting the target token index of a seek
// operation. The default implementation simply returns {@code i}. If an
// exception is thrown in this method, the current stream index should not be
// changed.
//
// <p>For example, {@link CommonTokenStream} overrides this method to ensure
// that
// the seek target is always an on-channel token.</p>
//
// @param i The target token index.
// @return The adjusted target token index.
BufferedTokenStream.prototype.adjustSeekIndex = function(i) {
return i;
};
BufferedTokenStream.prototype.lazyInit = function() {
if (this.index === -1) {
this.setup();
}
};
BufferedTokenStream.prototype.setup = function() {
this.sync(0);
this.index = this.adjustSeekIndex(0);
};
// Reset this token stream by setting its token source.///
BufferedTokenStream.prototype.setTokenSource = function(tokenSource) {
this.tokenSource = tokenSource;
this.tokens = [];
this.index = -1;
this.fetchedEOF = false;
};
// Given a starting index, return the index of the next token on channel.
// Return i if tokens[i] is on channel. Return -1 if there are no tokens
// on channel between i and EOF.
// /
BufferedTokenStream.prototype.nextTokenOnChannel = function(i, channel) {
this.sync(i);
if (i >= this.tokens.length) {
return -1;
}
var token = this.tokens[i];
while (token.channel !== this.channel) {
if (token.type === Token.EOF) {
return -1;
}
i += 1;
this.sync(i);
token = this.tokens[i];
}
return i;
};
// Given a starting index, return the index of the previous token on channel.
// Return i if tokens[i] is on channel. Return -1 if there are no tokens
// on channel between i and 0.
BufferedTokenStream.prototype.previousTokenOnChannel = function(i, channel) {
while (i >= 0 && this.tokens[i].channel !== channel) {
i -= 1;
}
return i;
};
// Collect all tokens on specified channel to the right of
// the current token up until we see a token on DEFAULT_TOKEN_CHANNEL or
// EOF. If channel is -1, find any non default channel token.
BufferedTokenStream.prototype.getHiddenTokensToRight = function(tokenIndex,
channel) {
if (channel === undefined) {
channel = -1;
}
this.lazyInit();
if (tokenIndex < 0 || tokenIndex >= this.tokens.length) {
throw "" + tokenIndex + " not in 0.." + this.tokens.length - 1;
}
var nextOnChannel = this.nextTokenOnChannel(tokenIndex + 1, Lexer.DEFAULT_TOKEN_CHANNEL);
var from_ = tokenIndex + 1;
// if none onchannel to right, nextOnChannel=-1 so set to = last token
var to = nextOnChannel === -1 ? this.tokens.length - 1 : nextOnChannel;
return this.filterForChannel(from_, to, channel);
};
// Collect all tokens on specified channel to the left of
// the current token up until we see a token on DEFAULT_TOKEN_CHANNEL.
// If channel is -1, find any non default channel token.
BufferedTokenStream.prototype.getHiddenTokensToLeft = function(tokenIndex,
channel) {
if (channel === undefined) {
channel = -1;
}
this.lazyInit();
if (tokenIndex < 0 || tokenIndex >= this.tokens.length) {
throw "" + tokenIndex + " not in 0.." + this.tokens.length - 1;
}
var prevOnChannel = this.previousTokenOnChannel(tokenIndex - 1, Lexer.DEFAULT_TOKEN_CHANNEL);
if (prevOnChannel === tokenIndex - 1) {
return null;
}
// if none on channel to left, prevOnChannel=-1 then from=0
var from_ = prevOnChannel + 1;
var to = tokenIndex - 1;
return this.filterForChannel(from_, to, channel);
};
BufferedTokenStream.prototype.filterForChannel = function(left, right, channel) {
var hidden = [];
for (var i = left; i < right + 1; i++) {
var t = this.tokens[i];
if (channel === -1) {
if (t.channel !== Lexer.DEFAULT_TOKEN_CHANNEL) {
hidden.push(t);
}
} else if (t.channel === channel) {
hidden.push(t);
}
}
if (hidden.length === 0) {
return null;
}
return hidden;
};
BufferedTokenStream.prototype.getSourceName = function() {
return this.tokenSource.getSourceName();
};
// Get the text of all tokens in this buffer.///
BufferedTokenStream.prototype.getText = function(interval) {
this.lazyInit();
this.fill();
if (interval === undefined || interval === null) {
interval = new Interval(0, this.tokens.length - 1);
}
var start = interval.start;
if (start instanceof Token) {
start = start.tokenIndex;
}
var stop = interval.stop;
if (stop instanceof Token) {
stop = stop.tokenIndex;
}
if (start === null || stop === null || start < 0 || stop < 0) {
return "";
}
if (stop >= this.tokens.length) {
stop = this.tokens.length - 1;
}
var s = "";
for (var i = start; i < stop + 1; i++) {
var t = this.tokens[i];
if (t.type === Token.EOF) {
break;
}
s = s + t.text;
}
return s;
};
// Get all tokens from lexer until EOF///
BufferedTokenStream.prototype.fill = function() {
this.lazyInit();
while (this.fetch(1000) === 1000) {
continue;
}
};
exports.BufferedTokenStream = BufferedTokenStream;
},{"./IntervalSet":10,"./Lexer":12,"./Token":18}],5:[function(require,module,exports){
//
/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
* Use of this file is governed by the BSD 3-clause license that
* can be found in the LICENSE.txt file in the project root.
*/
//
var InputStream = require('./InputStream').InputStream;
var isNodeJs = typeof window === 'undefined' && typeof importScripts === 'undefined';
var fs = isNodeJs ? require("fs") : null;
// Utility functions to create InputStreams from various sources.
//
// All returned InputStreams support the full range of Unicode
// up to U+10FFFF (the default behavior of InputStream only supports
// code points up to U+FFFF).
var CharStreams = {
// Creates an InputStream from a string.
fromString: function(str) {
return new InputStream(str, true);
},
// Asynchronously creates an InputStream from a blob given the
// encoding of the bytes in that blob (defaults to 'utf8' if
// encoding is null).
//
// Invokes onLoad(result) on success, onError(error) on
// failure.
fromBlob: function(blob, encoding, onLoad, onError) {
var reader = FileReader();
reader.onload = function(e) {
var is = new InputStream(e.target.result, true);
onLoad(is);
};
reader.onerror = onError;
reader.readAsText(blob, encoding);
},
// Creates an InputStream from a Buffer given the
// encoding of the bytes in that buffer (defaults to 'utf8' if
// encoding is null).
fromBuffer: function(buffer, encoding) {
return new InputStream(buffer.toString(encoding), true);
},
// Asynchronously creates an InputStream from a file on disk given
// the encoding of the bytes in that file (defaults to 'utf8' if
// encoding is null).
//
// Invokes callback(error, result) on completion.
fromPath: function(path, encoding, callback) {
fs.readFile(path, encoding, function(err, data) {
var is = null;
if (data !== null) {
is = new InputStream(data, true);
}
callback(err, is);
});
},
// Synchronously creates an InputStream given a path to a file
// on disk and the encoding of the bytes in that file (defaults to
// 'utf8' if encoding is null).
fromPathSync: function(path, encoding) {
var data = fs.readFileSync(path, encoding);
return new InputStream(data, true);
}
};
exports.CharStreams = CharStreams;
},{"./InputStream":9,"fs":51}],6:[function(require,module,exports){
//
/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
* Use of this file is governed by the BSD 3-clause license that
* can be found in the LICENSE.txt file in the project root.
*/
//
//
// This default implementation of {@link TokenFactory} creates
// {@link CommonToken} objects.
//
var CommonToken = require('./Token').CommonToken;
function TokenFactory() {
return this;
}
function CommonTokenFactory(copyText) {
TokenFactory.call(this);
// Indicates whether {@link CommonToken//setText} should be called after
// constructing tokens to explicitly set the text. This is useful for cases
// where the input stream might not be able to provide arbitrary substrings
// of text from the input after the lexer creates a token (e.g. the
// implementation of {@link CharStream//getText} in
// {@link UnbufferedCharStream} throws an
// {@link UnsupportedOperationException}). Explicitly setting the token text
// allows {@link Token//getText} to be called at any time regardless of the
// input stream implementation.
//
// <p>
// The default value is {@code false} to avoid the performance and memory
// overhead of copying text for every token unless explicitly requested.</p>
//
this.copyText = copyText===undefined ? false : copyText;
return this;
}
CommonTokenFactory.prototype = Object.create(TokenFactory.prototype);
CommonTokenFactory.prototype.constructor = CommonTokenFactory;
//
// The default {@link CommonTokenFactory} instance.
//
// <p>
// This token factory does not explicitly copy token text when constructing
// tokens.</p>
//
CommonTokenFactory.DEFAULT = new CommonTokenFactory();
CommonTokenFactory.prototype.create = function(source, type, text, channel, start, stop, line, column) {
var t = new CommonToken(source, type, channel, start, stop);
t.line = line;
t.column = column;
if (text !==null) {
t.text = text;
} else if (this.copyText && source[1] !==null) {
t.text = source[1].getText(start,stop);
}
return t;
};
CommonTokenFactory.prototype.createThin = function(type, text) {
var t = new CommonToken(null, type);
t.text = text;
return t;
};
exports.CommonTokenFactory = CommonTokenFactory;
},{"./Token":18}],7:[function(require,module,exports){
//
/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
* Use of this file is governed by the BSD 3-clause license that
* can be found in the LICENSE.txt file in the project root.
*/
///
//
// This class extends {@link BufferedTokenStream} with functionality to filter
// token streams to tokens on a particular channel (tokens where
// {@link Token//getChannel} returns a particular value).
//
// <p>
// This token stream provides access to all tokens by index or when calling
// methods like {@link //getText}. The channel filtering is only used for code
// accessing tokens via the lookahead methods {@link //LA}, {@link //LT}, and
// {@link //LB}.</p>
//
// <p>
// By default, tokens are placed on the default channel
// ({@link Token//DEFAULT_CHANNEL}), but may be reassigned by using the
// {@code ->channel(HIDDEN)} lexer command, or by using an embedded action to
// call {@link Lexer//setChannel}.
// </p>
//
// <p>
// Note: lexer rules which use the {@code ->skip} lexer command or call
// {@link Lexer//skip} do not produce tokens at all, so input text matched by
// such a rule will not be available as part of the token stream, regardless of
// channel.</p>
///
var Token = require('./Token').Token;
var BufferedTokenStream = require('./BufferedTokenStream').BufferedTokenStream;
function CommonTokenStream(lexer, channel) {
BufferedTokenStream.call(this, lexer);
this.channel = channel===undefined ? Token.DEFAULT_CHANNEL : channel;
return this;
}
CommonTokenStream.prototype = Object.create(BufferedTokenStream.prototype);
CommonTokenStream.prototype.constructor = CommonTokenStream;
CommonTokenStream.prototype.adjustSeekIndex = function(i) {
return this.nextTokenOnChannel(i, this.channel);
};
CommonTokenStream.prototype.LB = function(k) {
if (k===0 || this.index-k<0) {
return null;
}
var i = this.index;
var n = 1;
// find k good tokens looking backwards
while (n <= k) {
// skip off-channel tokens
i = this.previousTokenOnChannel(i - 1, this.channel);
n += 1;
}
if (i < 0) {
return null;
}
return this.tokens[i];
};
CommonTokenStream.prototype.LT = function(k) {
this.lazyInit();
if (k === 0) {
return null;
}
if (k < 0) {
return this.LB(-k);
}
var i = this.index;
var n = 1; // we know tokens[pos] is a good one
// find k good tokens
while (n < k) {
// skip off-channel tokens, but make sure to not look past EOF
if (this.sync(i + 1)) {
i = this.nextTokenOnChannel(i + 1, this.channel);
}
n += 1;
}
return this.tokens[i];
};
// Count EOF just once.///
CommonTokenStream.prototype.getNumberOfOnChannelTokens = function() {
var n = 0;
this.fill();
for (var i =0; i< this.tokens.length;i++) {
var t = this.tokens[i];
if( t.channel===this.channel) {
n += 1;
}
if( t.type===Token.EOF) {
break;
}
}
return n;
};
exports.CommonTokenStream = CommonTokenStream;
},{"./BufferedTokenStream":4,"./Token":18}],8:[function(require,module,exports){
//
/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
* Use of this file is governed by the BSD 3-clause license that
* can be found in the LICENSE.txt file in the project root.
*/
//
//
// This is an InputStream that is loaded from a file all at once
// when you construct the object.
//
var InputStream = require('./InputStream').InputStream;
var isNodeJs = typeof window === 'undefined' && typeof importScripts === 'undefined';
var fs = isNodeJs ? require("fs") : null;
function FileStream(fileName, decodeToUnicodeCodePoints) {
var data = fs.readFileSync(fileName, "utf8");
InputStream.call(this, data, decodeToUnicodeCodePoints);
this.fileName = fileName;
return this;
}
FileStream.prototype = Object.create(InputStream.prototype);
FileStream.prototype.constructor = FileStream;
exports.FileStream = FileStream;
},{"./InputStream":9,"fs":51}],9:[function(require,module,exports){
//
/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
* Use of this file is governed by the BSD 3-clause license that
* can be found in the LICENSE.txt file in the project root.
*/
//
var Token = require('./Token').Token;
require('./polyfills/codepointat');
require('./polyfills/fromcodepoint');
// Vacuum all input from a string and then treat it like a buffer.
function _loadString(stream, decodeToUnicodeCodePoints) {
stream._index = 0;
stream.data = [];
if (stream.decodeToUnicodeCodePoints) {
for (var i = 0; i < stream.strdata.length; ) {
var codePoint = stream.strdata.codePointAt(i);
stream.data.push(codePoint);
i += codePoint <= 0xFFFF ? 1 : 2;
}
} else {
for (var i = 0; i < stream.strdata.length; i++) {
var codeUnit = stream.strdata.charCodeAt(i);
stream.data.push(codeUnit);
}
}
stream._size = stream.data.length;
}
// If decodeToUnicodeCodePoints is true, the input is treated
// as a series of Unicode code points.
//
// Otherwise, the input is treated as a series of 16-bit UTF-16 code
// units.
function InputStream(data, decodeToUnicodeCodePoints) {
this.name = "<empty>";
this.strdata = data;
this.decodeToUnicodeCodePoints = decodeToUnicodeCodePoints || false;
_loadString(this);
return this;
}
Object.defineProperty(InputStream.prototype, "index", {
get : function() {
return this._index;
}
});
Object.defineProperty(InputStream.prototype, "size", {
get : function() {
return this._size;
}
});
// Reset the stream so that it's in the same state it was
// when the object was created *except* the data array is not
// touched.
//
InputStream.prototype.reset = function() {
this._index = 0;
};
InputStream.prototype.consume = function() {
if (this._index >= this._size) {
// assert this.LA(1) == Token.EOF
throw ("cannot consume EOF");
}
this._index += 1;
};
InputStream.prototype.LA = function(offset) {
if (offset === 0) {
return 0; // undefined
}
if (offset < 0) {
offset += 1; // e.g., translate LA(-1) to use offset=0
}
var pos = this._index + offset - 1;
if (pos < 0 || pos >= this._size) { // invalid
return Token.EOF;
}
return this.data[pos];
};
InputStream.prototype.LT = function(offset) {
return this.LA(offset);
};
// mark/release do nothing; we have entire buffer
InputStream.prototype.mark = function() {
return -1;
};
InputStream.prototype.release = function(marker) {
};
// consume() ahead until p==_index; can't just set p=_index as we must
// update line and column. If we seek backwards, just set p
//
InputStream.prototype.seek = function(_index) {
if (_index <= this._index) {
this._index = _index; // just jump; don't update stream state (line,
// ...)
return;
}
// seek forward
this._index = Math.min(_index, this._size);
};
InputStream.prototype.getText = function(start, stop) {
if (stop >= this._size) {
stop = this._size - 1;
}
if (start >= this._size) {
return "";
} else {
if (this.decodeToUnicodeCodePoints) {
var result = "";
for (var i = start; i <= stop; i++) {
result += String.fromCodePoint(this.data[i]);
}
return result;
} else {
return this.strdata.slice(start, stop + 1);
}
}
};
InputStream.prototype.toString = function() {
return this.strdata;
};
exports.InputStream = InputStream;
},{"./Token":18,"./polyfills/codepointat":46,"./polyfills/fromcodepoint":47}],10:[function(require,module,exports){
/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
* Use of this file is governed by the BSD 3-clause license that
* can be found in the LICENSE.txt file in the project root.
*/
/*jslint smarttabs:true */
var Token = require('./Token').Token;
/* stop is not included! */
function Interval(start, stop) {
this.start = start;
this.stop = stop;
return this;
}
Interval.prototype.contains = function(item) {
return item >= this.start && item < this.stop;
};
Interval.prototype.toString = function() {
if(this.start===this.stop-1) {
return this.start.toString();
} else {
return this.start.toString() + ".." + (this.stop-1).toString();
}
};
Object.defineProperty(Interval.prototype, "length", {
get : function() {
return this.stop - this.start;
}
});
function IntervalSet() {
this.intervals = null;
this.readOnly = false;
}
IntervalSet.prototype.first = function(v) {
if (this.intervals === null || this.intervals.length===0) {
return Token.INVALID_TYPE;
} else {
return this.intervals[0].start;
}
};
IntervalSet.prototype.addOne = function(v) {
this.addInterval(new Interval(v, v + 1));
};
IntervalSet.prototype.addRange = function(l, h) {
this.addInterval(new Interval(l, h + 1));
};
IntervalSet.prototype.addInterval = function(v) {
if (this.intervals === null) {
this.intervals = [];
this.intervals.push(v);
} else {
// find insert pos
for (var k = 0; k < this.intervals.length; k++) {
var i = this.intervals[k];
// distinct range -> insert
if (v.stop < i.start) {
this.intervals.splice(k, 0, v);
return;
}
// contiguous range -> adjust
else if (v.stop === i.start) {
this.intervals[k].start = v.start;
return;
}
// overlapping range -> adjust and reduce
else if (v.start <= i.stop) {
this.intervals[k] = new Interval(Math.min(i.start, v.start), Math.max(i.stop, v.stop));
this.reduce(k);
return;
}
}
// greater than any existing
this.intervals.push(v);
}
};
IntervalSet.prototype.addSet = function(other) {
if (other.intervals !== null) {
for (var k = 0; k < other.intervals.length; k++) {
var i = other.intervals[k];
this.addInterval(new Interval(i.start, i.stop));
}
}
return this;
};
IntervalSet.prototype.reduce = function(k) {
// only need to reduce if k is not the last
if (k < this.intervalslength - 1) {
var l = this.intervals[k];
var r = this.intervals[k + 1];
// if r contained in l
if (l.stop >= r.stop) {
this.intervals.pop(k + 1);
this.reduce(k);
} else if (l.stop >= r.start) {
this.intervals[k] = new Interval(l.start, r.stop);
this.intervals.pop(k + 1);
}
}
};
IntervalSet.prototype.complement = function(start, stop) {
var result = new IntervalSet();
result.addInterval(new Interval(start,stop+1));
for(var i=0; i<this.intervals.length; i++) {
result.removeRange(this.intervals[i]);
}
return result;
};
IntervalSet.prototype.contains = function(item) {
if (this.intervals === null) {
return false;
} else {
for (var k = 0; k < this.intervals.length; k++) {
if(this.intervals[k].contains(item)) {
return true;
}
}
return false;
}
};
Object.defineProperty(IntervalSet.prototype, "length", {
get : function() {
var len = 0;
this.intervals.map(function(i) {len += i.length;});
return len;
}
});
IntervalSet.prototype.removeRange = function(v) {
if(v.start===v.stop-1) {
this.removeOne(v.start);
} else if (this.intervals!==null) {
var k = 0;
for(var n=0; n<this.intervals.length; n++) {
var i = this.intervals[k];
// intervals are ordered
if (v.stop<=i.start) {
return;
}
// check for including range, split it
else if(v.start>i.start && v.stop<i.stop) {
this.intervals[k] = new Interval(i.start, v.start);
var x = new Interval(v.stop, i.stop);
this.intervals.splice(k, 0, x);
return;
}
// check for included range, remove it
else if(v.start<=i.start && v.stop>=i.stop) {
this.intervals.splice(k, 1);
k = k - 1; // need another pass
}
// check for lower boundary
else if(v.start<i.stop) {
this.intervals[k] = new Interval(i.start, v.start);
}
// check for upper boundary
else if(v.stop<i.stop) {
this.intervals[k] = new Interval(v.stop, i.stop);
}
k += 1;
}
}
};
IntervalSet.prototype.removeOne = function(v) {
if (this.intervals !== null) {
for (var k = 0; k < this.intervals.length; k++) {
var i = this.intervals[k];
// intervals is ordered
if (v < i.start) {
return;
}
// check for single value range
else if (v === i.start && v === i.stop - 1) {
this.intervals.splice(k, 1);
return;
}
// check for lower boundary
else if (v === i.start) {
this.intervals[k] = new Interval(i.start + 1, i.stop);
return;
}
// check for upper boundary
else if (v === i.stop - 1) {
this.intervals[k] = new Interval(i.start, i.stop - 1);
return;
}
// split existing range
else if (v < i.stop - 1) {
var x = new Interval(i.start, v);
i.start = v + 1;
this.intervals.splice(k, 0, x);
return;
}
}
}
};
IntervalSet.prototype.toString = function(literalNames, symbolicNames, elemsAreChar) {
literalNames = literalNames || null;
symbolicNames = symbolicNames || null;
elemsAreChar = elemsAreChar || false;
if (this.intervals === null) {
return "{}";
} else if(literalNames!==null || symbolicNames!==null) {
return this.toTokenString(literalNames, symbolicNames);
} else if(elemsAreChar) {
return this.toCharString();
} else {
return this.toIndexString();
}
};
IntervalSet.prototype.toCharString = function() {
var names = [];
for (var i = 0; i < this.intervals.length; i++) {
var v = this.intervals[i];
if(v.stop===v.start+1) {
if ( v.start===Token.EOF ) {
names.push("<EOF>");
} else {
names.push("'" + String.fromCharCode(v.start) + "'");
}
} else {
names.push("'" + String.fromCharCode(v.start) + "'..'" + String.fromCharCode(v.stop-1) + "'");
}
}
if (names.length > 1) {
return "{" + names.join(", ") + "}";
} else {
return names[0];
}
};
IntervalSet.prototype.toIndexString = function() {
var names = [];
for (var i = 0; i < this.intervals.length; i++) {
var v = this.intervals[i];
if(v.stop===v.start+1) {
if ( v.start===Token.EOF ) {
names.push("<EOF>");
} else {
names.push(v.start.toString());
}
} else {
names.push(v.start.toString() + ".." + (v.stop-1).toString());
}
}
if (names.length > 1) {
return "{" + names.join(", ") + "}";
} else {
return names[0];
}
};
IntervalSet.prototype.toTokenString = function(literalNames, symbolicNames) {
var names = [];
for (var i = 0; i < this.intervals.length; i++) {
var v = this.intervals[i];
for (var j = v.start; j < v.stop; j++) {
names.push(this.elementName(literalNames, symbolicNames, j));
}
}
if (names.length > 1) {
return "{" + names.join(", ") + "}";
} else {
return names[0];
}
};
IntervalSet.prototype.elementName = function(literalNames, symbolicNames, a) {
if (a === Token.EOF) {
return "<EOF>";
} else if (a === Token.EPSILON) {
return "<EPSILON>";
} else {
return literalNames[a] || symbolicNames[a];
}
};
exports.Interval = Interval;
exports.IntervalSet = IntervalSet;
},{"./Token":18}],11:[function(require,module,exports){
//
/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
* Use of this file is governed by the BSD 3-clause license that
* can be found in the LICENSE.txt file in the project root.
*/
///
var Set = require('./Utils').Set;
var BitSet = require('./Utils').BitSet;
var Token = require('./Token').Token;
var ATNConfig = require('./atn/ATNConfig').ATNConfig;
var Interval = require('./IntervalSet').Interval;
var IntervalSet = require('./IntervalSet').IntervalSet;
var RuleStopState = require('./atn/ATNState').RuleStopState;
var RuleTransition = require('./atn/Transition').RuleTransition;
var NotSetTransition = require('./atn/Transition').NotSetTransition;
var WildcardTransition = require('./atn/Transition').WildcardTransition;
var AbstractPredicateTransition = require('./atn/Transition').AbstractPredicateTransition;
var pc = require('./PredictionContext');
var predictionContextFromRuleContext = pc.predictionContextFromRuleContext;
var PredictionContext = pc.PredictionContext;
var SingletonPredictionContext = pc.SingletonPredictionContext;
function LL1Analyzer (atn) {
this.atn = atn;
}
//* Special value added to the lookahead sets to indicate that we hit
// a predicate during analysis if {@code seeThruPreds==false}.
///
LL1Analyzer.HIT_PRED = Token.INVALID_TYPE;
//*
// Calculates the SLL(1) expected lookahead set for each outgoing transition
// of an {@link ATNState}. The returned array has one element for each
// outgoing transition in {@code s}. If the closure from transition
// <em>i</em> leads to a semantic predicate before matching a symbol, the
// element at index <em>i</em> of the result will be {@code null}.
//
// @param s the ATN state
// @return the expected symbols for each outgoing transition of {@code s}.
///
LL1Analyzer.prototype.getDecisionLookahead = function(s) {
if (s === null) {
return null;
}
var count = s.transitions.length;
var look = [];
for(var alt=0; alt< count; alt++) {
look[alt] = new IntervalSet();
var lookBusy = new Set();
var seeThruPreds = false; // fail to get lookahead upon pred
this._LOOK(s.transition(alt).target, null, PredictionContext.EMPTY,
look[alt], lookBusy, new BitSet(), seeThruPreds, false);
// Wipe out lookahead for this alternative if we found nothing
// or we had a predicate when we !seeThruPreds
if (look[alt].length===0 || look[alt].contains(LL1Analyzer.HIT_PRED)) {
look[alt] = null;
}
}
return look;
};
//*
// Compute set of tokens that can follow {@code s} in the ATN in the
// specified {@code ctx}.
//
// <p>If {@code ctx} is {@code null} and the end of the rule containing
// {@code s} is reached, {@link Token//EPSILON} is added to the result set.
// If {@code ctx} is not {@code null} and the end of the outermost rule is
// reached, {@link Token//EOF} is added to the result set.</p>
//
// @param s the ATN state
// @param stopState the ATN state to stop at. This can be a
// {@link BlockEndState} to detect epsilon paths through a closure.
// @param ctx the complete parser context, or {@code null} if the context
// should be ignored
//
// @return The set of tokens that can follow {@code s} in the ATN in the
// specified {@code ctx}.
///
LL1Analyzer.prototype.LOOK = function(s, stopState, ctx) {
var r = new IntervalSet();
var seeThruPreds = true; // ignore preds; get all lookahead
ctx = ctx || null;
var lookContext = ctx!==null ? predictionContextFromRuleContext(s.atn, ctx) : null;
this._LOOK(s, stopState, lookContext, r, new Set(), new BitSet(), seeThruPreds, true);
return r;
};
//*
// Compute set of tokens that can follow {@code s} in the ATN in the
// specified {@code ctx}.
//
// <p>If {@code ctx} is {@code null} and {@code stopState} or the end of the
// rule containing {@code s} is reached, {@link Token//EPSILON} is added to
// the result set. If {@code ctx} is not {@code null} and {@code addEOF} is
// {@code true} and {@code stopState} or the end of the outermost rule is
// reached, {@link Token//EOF} is added to the result set.</p>
//
// @param s the ATN state.
// @param stopState the ATN state to stop at. This can be a
// {@link BlockEndState} to detect epsilon paths through a closure.
// @param ctx The outer context, or {@code null} if the outer context should
// not be used.
// @param look The result lookahead set.
// @param lookBusy A set used for preventing epsilon closures in the ATN
// from causing a stack overflow. Outside code should pass
// {@code new Set<ATNConfig>} for this argument.
// @param calledRuleStack A set used for preventing left recursion in the
// ATN from causing a stack overflow. Outside code should pass
// {@code new BitSet()} for this argument.
// @param seeThruPreds {@code true} to true semantic predicates as
// implicitly {@code true} and "see through them", otherwise {@code false}
// to treat semantic predicates as opaque and add {@link //HIT_PRED} to the
// result if one is encountered.
// @param addEOF Add {@link Token//EOF} to the result if the end of the
// outermost context is reached. This parameter has no effect if {@code ctx}
// is {@code null}.
///
LL1Analyzer.prototype._LOOK = function(s, stopState , ctx, look, lookBusy, calledRuleStack, seeThruPreds, addEOF) {
var c = new ATNConfig({state:s, alt:0, context: ctx}, null);
if (lookBusy.contains(c)) {
return;
}
lookBusy.add(c);
if (s === stopState) {
if (ctx ===null) {
look.addOne(Token.EPSILON);
return;
} else if (ctx.isEmpty() && addEOF) {
look.addOne(Token.EOF);
return;
}
}
if (s instanceof RuleStopState ) {
if (ctx ===null) {
look.addOne(Token.EPSILON);
return;
} else if (ctx.isEmpty() && addEOF) {
look.addOne(Token.EOF);
return;
}
if (ctx !== PredictionContext.EMPTY) {
// run thru all possible stack tops in ctx
for(var i=0; i<ctx.length; i++) {
var returnState = this.atn.states[ctx.getReturnState(i)];
var removed = calledRuleStack.contains(returnState.ruleIndex);
try {
calledRuleStack.remove(returnState.ruleIndex);
this._LOOK(returnState, stopState, ctx.getParent(i), look, lookBusy, calledRuleStack, seeThruPreds, addEOF);
} finally {
if (removed) {
calledRuleStack.add(returnState.ruleIndex);
}
}
}
return;
}
}
for(var j=0; j<s.transitions.length; j++) {
var t = s.transitions[j];
if (t.constructor === RuleTransition) {
if (calledRuleStack.contains(t.target.ruleIndex)) {
continue;
}
var newContext = SingletonPredictionContext.create(ctx, t.followState.stateNumber);
try {
calledRuleStack.add(t.target.ruleIndex);
this._LOOK(t.target, stopState, newContext, look, lookBusy, calledRuleStack, seeThruPreds, addEOF);
} finally {
calledRuleStack.remove(t.target.ruleIndex);
}
} else if (t instanceof AbstractPredicateTransition ) {
if (seeThruPreds) {
this._LOOK(t.target, stopState, ctx, look, lookBusy, calledRuleStack, seeThruPreds, addEOF);
} else {
look.addOne(LL1Analyzer.HIT_PRED);
}
} else if( t.isEpsilon) {
this._LOOK(t.target, stopState, ctx, look, lookBusy, calledRuleStack, seeThruPreds, addEOF);
} else if (t.constructor === WildcardTransition) {
look.addRange( Token.MIN_USER_TOKEN_TYPE, this.atn.maxTokenType );
} else {
var set = t.label;
if (set !== null) {
if (t instanceof NotSetTransition) {
set = set.complement(Token.MIN_USER_TOKEN_TYPE, this.atn.maxTokenType);
}
look.addSet(set);
}
}
}
};
exports.LL1Analyzer = LL1Analyzer;
},{"./IntervalSet":10,"./PredictionContext":15,"./Token":18,"./Utils":19,"./atn/ATNConfig":21,"./atn/ATNState":26,"./atn/Transition":34}],12:[function(require,module,exports){
/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
* Use of this file is governed by the BSD 3-clause license that
* can be found in the LICENSE.txt file in the project root.
*/
///
// A lexer is recognizer that draws input symbols from a character stream.
// lexer grammars result in a subclass of this object. A Lexer object
// uses simplified match() and error recovery mechanisms in the interest of speed.
var Token = require('./Token').Token;
var Recognizer = require('./Recognizer').Recognizer;
var CommonTokenFactory = require('./CommonTokenFactory').CommonTokenFactory;
var RecognitionException = require('./error/Errors').RecognitionException;
var LexerNoViableAltException = require('./error/Errors').LexerNoViableAltException;
function TokenSource() {
return this;
}
function Lexer(input) {
Recognizer.call(this);
this._input = input;
this._factory = CommonTokenFactory.DEFAULT;
this._tokenFactorySourcePair = [ this, input ];
this._interp = null; // child classes must populate this
// The goal of all lexer rules/methods is to create a token object.
// this is an instance variable as multiple rules may collaborate to
// create a single token. nextToken will return this object after
// matching lexer rule(s). If you subclass to allow multiple token
// emissions, then set this to the last token to be matched or
// something nonnull so that the auto token emit mechanism will not
// emit another token.
this._token = null;
// What character index in the stream did the current token start at?
// Needed, for example, to get the text for current token. Set at
// the start of nextToken.
this._tokenStartCharIndex = -1;
// The line on which the first character of the token resides///
this._tokenStartLine = -1;
// The character position of first character within the line///
this._tokenStartColumn = -1;
// Once we see EOF on char stream, next token will be EOF.
// If you have DONE : EOF ; then you see DONE EOF.
this._hitEOF = false;
// The channel number for the current token///
this._channel = Token.DEFAULT_CHANNEL;
// The token type for the current token///
this._type = Token.INVALID_TYPE;
this._modeStack = [];
this._mode = Lexer.DEFAULT_MODE;
// You can set the text for the current token to override what is in
// the input char buffer. Use setText() or can set this instance var.
// /
this._text = null;
return this;
}
Lexer.prototype = Object.create(Recognizer.prototype);
Lexer.prototype.constructor = Lexer;
Lexer.DEFAULT_MODE = 0;
Lexer.MORE = -2;
Lexer.SKIP = -3;
Lexer.DEFAULT_TOKEN_CHANNEL = Token.DEFAULT_CHANNEL;
Lexer.HIDDEN = Token.HIDDEN_CHANNEL;
Lexer.MIN_CHAR_VALUE = 0x0000;
Lexer.MAX_CHAR_VALUE = 0x10FFFF;
Lexer.prototype.reset = function() {
// wack Lexer state variables
if (this._input !== null) {
this._input.seek(0); // rewind the input
}
this._token = null;
this._type = Token.INVALID_TYPE;
this._channel = Token.DEFAULT_CHANNEL;
this._tokenStartCharIndex = -1;
this._tokenStartColumn = -1;
this._tokenStartLine = -1;
this._text = null;
this._hitEOF = false;
this._mode = Lexer.DEFAULT_MODE;
this._modeStack = [];
this._interp.reset();
};
// Return a token from this source; i.e., match a token on the char stream.
Lexer.prototype.nextToken = function() {
if (this._input === null) {
throw "nextToken requires a non-null input stream.";
}
// Mark start location in char stream so unbuffered streams are
// guaranteed at least have text of current token
var tokenStartMarker = this._input.mark();
try {
while (true) {
if (this._hitEOF) {
this.emitEOF();
return this._token;
}
this._token = null;
this._channel = Token.DEFAULT_CHANNEL;
this._tokenStartCharIndex = this._input.index;
this._tokenStartColumn = this._interp.column;
this._tokenStartLine = this._interp.line;
this._text = null;
var continueOuter = false;
while (true) {
this._type = Token.INVALID_TYPE;
var ttype = Lexer.SKIP;
try {
ttype = this._interp.match(this._input, this._mode);
} catch (e) {
if(e instanceof RecognitionException) {
this.notifyListeners(e); // report error
this.recover(e);
} else {
console.log(e.stack);
throw e;
}
}
if (this._input.LA(1) === Token.EOF) {
this._hitEOF = true;
}
if (this._type === Token.INVALID_TYPE) {
this._type = ttype;
}
if (this._type === Lexer.SKIP) {
continueOuter = true;
break;
}
if (this._type !== Lexer.MORE) {
break;
}
}
if (continueOuter) {
continue;
}
if (this._token === null) {
this.emit();
}
return this._token;
}
} finally {
// make sure we release marker after match or
// unbuffered char stream will keep buffering
this._input.release(tokenStartMarker);
}
};
// Instruct the lexer to skip creating a token for current lexer rule
// and look for another token. nextToken() knows to keep looking when
// a lexer rule finishes with token set to SKIP_TOKEN. Recall that
// if token==null at end of any token rule, it creates one for you
// and emits it.
// /
Lexer.prototype.skip = function() {
this._type = Lexer.SKIP;
};
Lexer.prototype.more = function() {
this._type = Lexer.MORE;
};
Lexer.prototype.mode = function(m) {
this._mode = m;
};
Lexer.prototype.pushMode = function(m) {
if (this._interp.debug) {
console.log("pushMode " + m);
}
this._modeStack.push(this._mode);
this.mode(m);
};
Lexer.prototype.popMode = function() {
if (this._modeStack.length === 0) {
throw "Empty Stack";
}
if (this._interp.debug) {
console.log("popMode back to " + this._modeStack.slice(0, -1));
}
this.mode(this._modeStack.pop());
return this._mode;
};
// Set the char stream and reset the lexer
Object.defineProperty(Lexer.prototype, "inputStream", {
get : function() {
return this._input;
},
set : function(input) {
this._input = null;
this._tokenFactorySourcePair = [ this, this._input ];
this.reset();
this._input = input;
this._tokenFactorySourcePair = [ this, this._input ];
}
});
Object.defineProperty(Lexer.prototype, "sourceName", {
get : function sourceName() {
return this._input.sourceName;
}
});
// By default does not support multiple emits per nextToken invocation
// for efficiency reasons. Subclass and override this method, nextToken,
// and getToken (to push tokens into a list and pull from that list
// rather than a single variable as this implementation does).
// /
Lexer.prototype.emitToken = function(token) {
this._token = token;
};
// The standard method called to automatically emit a token at the
// outermost lexical rule. The token object should point into the
// char buffer start..stop. If there is a text override in 'text',
// use that to set the token's text. Override this method to emit
// custom Token objects or provide a new factory.
// /
Lexer.prototype.emit = function() {
var t = this._factory.create(this._tokenFactorySourcePair, this._type,
this._text, this._channel, this._tokenStartCharIndex, this
.getCharIndex() - 1, this._tokenStartLine,
this._tokenStartColumn);
this.emitToken(t);
return t;
};
Lexer.prototype.emitEOF = function() {
var cpos = this.column;
var lpos = this.line;
var eof = this._factory.create(this._tokenFactorySourcePair, Token.EOF,
null, Token.DEFAULT_CHANNEL, this._input.index,
this._input.index - 1, lpos, cpos);
this.emitToken(eof);
return eof;
};
Object.defineProperty(Lexer.prototype, "type", {
get : function() {
return this.type;
},
set : function(type) {
this._type = type;
}
});
Object.defineProperty(Lexer.prototype, "line", {
get : function() {
return this._interp.line;
},
set : function(line) {
this._interp.line = line;
}
});
Object.defineProperty(Lexer.prototype, "column", {
get : function() {
return this._interp.column;
},
set : function(column) {
this._interp.column = column;
}
});
// What is the index of the current character of lookahead?///
Lexer.prototype.getCharIndex = function() {
return this._input.index;
};
// Return the text matched so far for the current token or any text override.
//Set the complete text of this token; it wipes any previous changes to the text.
Object.defineProperty(Lexer.prototype, "text", {
get : function() {
if (this._text !== null) {
return this._text;
} else {
return this._interp.getText(this._input);
}
},
set : function(text) {
this._text = text;
}
});
// Return a list of all Token objects in input char stream.
// Forces load of all tokens. Does not include EOF token.
// /
Lexer.prototype.getAllTokens = function() {
var tokens = [];
var t = this.nextToken();
while (t.type !== Token.EOF) {
tokens.push(t);
t = this.nextToken();
}
return tokens;
};
Lexer.prototype.notifyListeners = function(e) {
var start = this._tokenStartCharIndex;
var stop = this._input.index;
var text = this._input.getText(start, stop);
var msg = "token recognition error at: '" + this.getErrorDisplay(text) + "'";
var listener = this.getErrorListenerDispatch();
listener.syntaxError(this, null, this._tokenStartLine,
this._tokenStartColumn, msg, e);
};
Lexer.prototype.getErrorDisplay = function(s) {
var d = [];
for (var i = 0; i < s.length; i++) {
d.push(s[i]);
}
return d.join('');
};
Lexer.prototype.getErrorDisplayForChar = function(c) {
if (c.charCodeAt(0) === Token.EOF) {
return "<EOF>";
} else if (c === '\n') {
return "\\n";
} else if (c === '\t') {
return "\\t";
} else if (c === '\r') {
return "\\r";
} else {
return c;
}
};
Lexer.prototype.getCharErrorDisplay = function(c) {
return "'" + this.getErrorDisplayForChar(c) + "'";
};
// Lexers can normally match any char in it's vocabulary after matching
// a token, so do the easy thing and just kill a character and hope
// it all works out. You can instead use the rule invocation stack
// to do sophisticated error recovery if you are in a fragment rule.
// /
Lexer.prototype.recover = function(re) {
if (this._input.LA(1) !== Token.EOF) {
if (re instanceof LexerNoViableAltException) {
// skip a char and try again
this._interp.consume(this._input);
} else {
// TODO: Do we lose character or line position information?
this._input.consume();
}
}
};
exports.Lexer = Lexer;
},{"./CommonTokenFactory":6,"./Recognizer":16,"./Token":18,"./error/Errors":43}],13:[function(require,module,exports){
/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
* Use of this file is governed by the BSD 3-clause license that
* can be found in the LICENSE.txt file in the project root.
*/
var Token = require('./Token').Token;
var ParseTreeListener = require('./tree/Tree').ParseTreeListener;
var Recognizer = require('./Recognizer').Recognizer;
var DefaultErrorStrategy = require('./error/ErrorStrategy').DefaultErrorStrategy;
var ATNDeserializer = require('./atn/ATNDeserializer').ATNDeserializer;
var ATNDeserializationOptions = require('./atn/ATNDeserializationOptions').ATNDeserializationOptions;
var TerminalNode = require('./tree/Tree').TerminalNode;
var ErrorNode = require('./tree/Tree').ErrorNode;
function TraceListener(parser) {
ParseTreeListener.call(this);
this.parser = parser;
return this;
}
TraceListener.prototype = Object.create(ParseTreeListener.prototype);
TraceListener.prototype.constructor = TraceListener;
TraceListener.prototype.enterEveryRule = function(ctx) {
console.log("enter " + this.parser.ruleNames[ctx.ruleIndex] + ", LT(1)=" + this.parser._input.LT(1).text);
};
TraceListener.prototype.visitTerminal = function( node) {
console.log("consume " + node.symbol + " rule " + this.parser.ruleNames[this.parser._ctx.ruleIndex]);
};
TraceListener.prototype.exitEveryRule = function(ctx) {
console.log("exit " + this.parser.ruleNames[ctx.ruleIndex] + ", LT(1)=" + this.parser._input.LT(1).text);
};
// this is all the parsing support code essentially; most of it is error
// recovery stuff.//
function Parser(input) {
Recognizer.call(this);
// The input stream.
this._input = null;
// The error handling strategy for the parser. The default value is a new
// instance of {@link DefaultErrorStrategy}.
this._errHandler = new DefaultErrorStrategy();
this._precedenceStack = [];
this._precedenceStack.push(0);
// The {@link ParserRuleContext} object for the currently executing rule.
// this is always non-null during the parsing process.
this._ctx = null;
// Specifies whether or not the parser should construct a parse tree during
// the parsing process. The default value is {@code true}.
this.buildParseTrees = true;
// When {@link //setTrace}{@code (true)} is called, a reference to the
// {@link TraceListener} is stored here so it can be easily removed in a
// later call to {@link //setTrace}{@code (false)}. The listener itself is
// implemented as a parser listener so this field is not directly used by
// other parser methods.
this._tracer = null;
// The list of {@link ParseTreeListener} listeners registered to receive
// events during the parse.
this._parseListeners = null;
// The number of syntax errors reported during parsing. this value is
// incremented each time {@link //notifyErrorListeners} is called.
this._syntaxErrors = 0;
this.setInputStream(input);
return this;
}
Parser.prototype = Object.create(Recognizer.prototype);
Parser.prototype.contructor = Parser;
// this field maps from the serialized ATN string to the deserialized {@link
// ATN} with
// bypass alternatives.
//
// @see ATNDeserializationOptions//isGenerateRuleBypassTransitions()
//
Parser.bypassAltsAtnCache = {};
// reset the parser's state//
Parser.prototype.reset = function() {
if (this._input !== null) {
this._input.seek(0);
}
this._errHandler.reset(this);
this._ctx = null;
this._syntaxErrors = 0;
this.setTrace(false);
this._precedenceStack = [];
this._precedenceStack.push(0);
if (this._interp !== null) {
this._interp.reset();
}
};
// Match current input symbol against {@code ttype}. If the symbol type
// matches, {@link ANTLRErrorStrategy//reportMatch} and {@link //consume} are
// called to complete the match process.
//
// <p>If the symbol type does not match,
// {@link ANTLRErrorStrategy//recoverInline} is called on the current error
// strategy to attempt recovery. If {@link //getBuildParseTree} is
// {@code true} and the token index of the symbol returned by
// {@link ANTLRErrorStrategy//recoverInline} is -1, the symbol is added to
// the parse tree by calling {@link ParserRuleContext//addErrorNode}.</p>
//
// @param ttype the token type to match
// @return the matched symbol
// @throws RecognitionException if the current input symbol did not match
// {@code ttype} and the error strategy could not recover from the
// mismatched symbol
Parser.prototype.match = function(ttype) {
var t = this.getCurrentToken();
if (t.type === ttype) {
this._errHandler.reportMatch(this);
this.consume();
} else {
t = this._errHandler.recoverInline(this);
if (this.buildParseTrees && t.tokenIndex === -1) {
// we must have conjured up a new token during single token
// insertion
// if it's not the current symbol
this._ctx.addErrorNode(t);
}
}
return t;
};
// Match current input symbol as a wildcard. If the symbol type matches
// (i.e. has a value greater than 0), {@link ANTLRErrorStrategy//reportMatch}
// and {@link //consume} are called to complete the match process.
//
// <p>If the symbol type does not match,
// {@link ANTLRErrorStrategy//recoverInline} is called on the current error
// strategy to attempt recovery. If {@link //getBuildParseTree} is
// {@code true} and the token index of the symbol returned by
// {@link ANTLRErrorStrategy//recoverInline} is -1, the symbol is added to
// the parse tree by calling {@link ParserRuleContext//addErrorNode}.</p>
//
// @return the matched symbol
// @throws RecognitionException if the current input symbol did not match
// a wildcard and the error strategy could not recover from the mismatched
// symbol
Parser.prototype.matchWildcard = function() {
var t = this.getCurrentToken();
if (t.type > 0) {
this._errHandler.reportMatch(this);
this.consume();
} else {
t = this._errHandler.recoverInline(this);
if (this._buildParseTrees && t.tokenIndex === -1) {
// we must have conjured up a new token during single token
// insertion
// if it's not the current symbol
this._ctx.addErrorNode(t);
}
}
return t;
};
Parser.prototype.getParseListeners = function() {
return this._parseListeners || [];
};
// Registers {@code listener} to receive events during the parsing process.
//
// <p>To support output-preserving grammar transformations (including but not
// limited to left-recursion removal, automated left-factoring, and
// optimized code generation), calls to listener methods during the parse
// may differ substantially from calls made by
// {@link ParseTreeWalker//DEFAULT} used after the parse is complete. In
// particular, rule entry and exit events may occur in a different order
// during the parse than after the parser. In addition, calls to certain
// rule entry methods may be omitted.</p>
//
// <p>With the following specific exceptions, calls to listener events are
// <em>deterministic</em>, i.e. for identical input the calls to listener
// methods will be the same.</p>
//
// <ul>
// <li>Alterations to the grammar used to generate code may change the
// behavior of the listener calls.</li>
// <li>Alterations to the command line options passed to ANTLR 4 when
// generating the parser may change the behavior of the listener calls.</li>
// <li>Changing the version of the ANTLR Tool used to generate the parser
// may change the behavior of the listener calls.</li>
// </ul>
//
// @param listener the listener to add
//
// @throws NullPointerException if {@code} listener is {@code null}
//
Parser.prototype.addParseListener = function(listener) {
if (listener === null) {
throw "listener";
}
if (this._parseListeners === null) {
this._parseListeners = [];
}
this._parseListeners.push(listener);
};
//
// Remove {@code listener} from the list of parse listeners.
//
// <p>If {@code listener} is {@code null} or has not been added as a parse
// listener, this method does nothing.</p>
// @param listener the listener to remove
//
Parser.prototype.removeParseListener = function(listener) {
if (this._parseListeners !== null) {
var idx = this._parseListeners.indexOf(listener);
if (idx >= 0) {
this._parseListeners.splice(idx, 1);
}
if (this._parseListeners.length === 0) {
this._parseListeners = null;
}
}
};
// Remove all parse listeners.
Parser.prototype.removeParseListeners = function() {
this._parseListeners = null;
};
// Notify any parse listeners of an enter rule event.
Parser.prototype.triggerEnterRuleEvent = function() {
if (this._parseListeners !== null) {
var ctx = this._ctx;
this._parseListeners.map(function(listener) {
listener.enterEveryRule(ctx);
ctx.enterRule(listener);
});
}
};
//
// Notify any parse listeners of an exit rule event.
//
// @see //addParseListener
//
Parser.prototype.triggerExitRuleEvent = function() {
if (this._parseListeners !== null) {
// reverse order walk of listeners
var ctx = this._ctx;
this._parseListeners.slice(0).reverse().map(function(listener) {
ctx.exitRule(listener);
listener.exitEveryRule(ctx);
});
}
};
Parser.prototype.getTokenFactory = function() {
return this._input.tokenSource._factory;
};
// Tell our token source and error strategy about a new way to create tokens.//
Parser.prototype.setTokenFactory = function(factory) {
this._input.tokenSource._factory = factory;
};
// The ATN with bypass alternatives is expensive to create so we create it
// lazily.
//
// @throws UnsupportedOperationException if the current parser does not
// implement the {@link //getSerializedATN()} method.
//
Parser.prototype.getATNWithBypassAlts = function() {
var serializedAtn = this.getSerializedATN();
if (serializedAtn === null) {
throw "The current parser does not support an ATN with bypass alternatives.";
}
var result = this.bypassAltsAtnCache[serializedAtn];
if (result === null) {
var deserializationOptions = new ATNDeserializationOptions();
deserializationOptions.generateRuleBypassTransitions = true;
result = new ATNDeserializer(deserializationOptions)
.deserialize(serializedAtn);
this.bypassAltsAtnCache[serializedAtn] = result;
}
return result;
};
// The preferred method of getting a tree pattern. For example, here's a
// sample use:
//
// <pre>
// ParseTree t = parser.expr();
// ParseTreePattern p = parser.compileParseTreePattern("&lt;ID&gt;+0",
// MyParser.RULE_expr);
// ParseTreeMatch m = p.match(t);
// String id = m.get("ID");
// </pre>
var Lexer = require('./Lexer').Lexer;
Parser.prototype.compileParseTreePattern = function(pattern, patternRuleIndex, lexer) {
lexer = lexer || null;
if (lexer === null) {
if (this.getTokenStream() !== null) {
var tokenSource = this.getTokenStream().tokenSource;
if (tokenSource instanceof Lexer) {
lexer = tokenSource;
}
}
}
if (lexer === null) {
throw "Parser can't discover a lexer to use";
}
var m = new ParseTreePatternMatcher(lexer, this);
return m.compile(pattern, patternRuleIndex);
};
Parser.prototype.getInputStream = function() {
return this.getTokenStream();
};
Parser.prototype.setInputStream = function(input) {
this.setTokenStream(input);
};
Parser.prototype.getTokenStream = function() {
return this._input;
};
// Set the token stream and reset the parser.//
Parser.prototype.setTokenStream = function(input) {
this._input = null;
this.reset();
this._input = input;
};
// Match needs to return the current input symbol, which gets put
// into the label for the associated token ref; e.g., x=ID.
//
Parser.prototype.getCurrentToken = function() {
return this._input.LT(1);
};
Parser.prototype.notifyErrorListeners = function(msg, offendingToken, err) {
offendingToken = offendingToken || null;
err = err || null;
if (offendingToken === null) {
offendingToken = this.getCurrentToken();
}
this._syntaxErrors += 1;
var line = offendingToken.line;
var column = offendingToken.column;
var listener = this.getErrorListenerDispatch();
listener.syntaxError(this, offendingToken, line, column, msg, err);
};
//
// Consume and return the {@linkplain //getCurrentToken current symbol}.
//
// <p>E.g., given the following input with {@code A} being the current
// lookahead symbol, this function moves the cursor to {@code B} and returns
// {@code A}.</p>
//
// <pre>
// A B
// ^
// </pre>
//
// If the parser is not in error recovery mode, the consumed symbol is added
// to the parse tree using {@link ParserRuleContext//addChild(Token)}, and
// {@link ParseTreeListener//visitTerminal} is called on any parse listeners.
// If the parser <em>is</em> in error recovery mode, the consumed symbol is
// added to the parse tree using
// {@link ParserRuleContext//addErrorNode(Token)}, and
// {@link ParseTreeListener//visitErrorNode} is called on any parse
// listeners.
//
Parser.prototype.consume = function() {
var o = this.getCurrentToken();
if (o.type !== Token.EOF) {
this.getInputStream().consume();
}
var hasListener = this._parseListeners !== null && this._parseListeners.length > 0;
if (this.buildParseTrees || hasListener) {
var node;
if (this._errHandler.inErrorRecoveryMode(this)) {
node = this._ctx.addErrorNode(o);
} else {
node = this._ctx.addTokenNode(o);
}
node.invokingState = this.state;
if (hasListener) {
this._parseListeners.map(function(listener) {
if (node instanceof ErrorNode || (node.isErrorNode !== undefined && node.isErrorNode())) {
listener.visitErrorNode(node);
} else if (node instanceof TerminalNode) {
listener.visitTerminal(node);
}
});
}
}
return o;
};
Parser.prototype.addContextToParseTree = function() {
// add current context to parent if we have a parent
if (this._ctx.parentCtx !== null) {
this._ctx.parentCtx.addChild(this._ctx);
}
};
// Always called by generated parsers upon entry to a rule. Access field
// {@link //_ctx} get the current context.
Parser.prototype.enterRule = function(localctx, state, ruleIndex) {
this.state = state;
this._ctx = localctx;
this._ctx.start = this._input.LT(1);
if (this.buildParseTrees) {
this.addContextToParseTree();
}
if (this._parseListeners !== null) {
this.triggerEnterRuleEvent();
}
};
Parser.prototype.exitRule = function() {
this._ctx.stop = this._input.LT(-1);
// trigger event on _ctx, before it reverts to parent
if (this._parseListeners !== null) {
this.triggerExitRuleEvent();
}
this.state = this._ctx.invokingState;
this._ctx = this._ctx.parentCtx;
};
Parser.prototype.enterOuterAlt = function(localctx, altNum) {
localctx.setAltNumber(altNum);
// if we have new localctx, make sure we replace existing ctx
// that is previous child of parse tree
if (this.buildParseTrees && this._ctx !== localctx) {
if (this._ctx.parentCtx !== null) {
this._ctx.parentCtx.removeLastChild();
this._ctx.parentCtx.addChild(localctx);
}
}
this._ctx = localctx;
};
// Get the precedence level for the top-most precedence rule.
//
// @return The precedence level for the top-most precedence rule, or -1 if
// the parser context is not nested within a precedence rule.
Parser.prototype.getPrecedence = function() {
if (this._precedenceStack.length === 0) {
return -1;
} else {
return this._precedenceStack[this._precedenceStack.length-1];
}
};
Parser.prototype.enterRecursionRule = function(localctx, state, ruleIndex,
precedence) {
this.state = state;
this._precedenceStack.push(precedence);
this._ctx = localctx;
this._ctx.start = this._input.LT(1);
if (this._parseListeners !== null) {
this.triggerEnterRuleEvent(); // simulates rule entry for
// left-recursive rules
}
};
//
// Like {@link //enterRule} but for recursive rules.
Parser.prototype.pushNewRecursionContext = function(localctx, state, ruleIndex) {
var previous = this._ctx;
previous.parentCtx = localctx;
previous.invokingState = state;
previous.stop = this._input.LT(-1);
this._ctx = localctx;
this._ctx.start = previous.start;
if (this.buildParseTrees) {
this._ctx.addChild(previous);
}
if (this._parseListeners !== null) {
this.triggerEnterRuleEvent(); // simulates rule entry for
// left-recursive rules
}
};
Parser.prototype.unrollRecursionContexts = function(parentCtx) {
this._precedenceStack.pop();
this._ctx.stop = this._input.LT(-1);
var retCtx = this._ctx; // save current ctx (return value)
// unroll so _ctx is as it was before call to recursive method
if (this._parseListeners !== null) {
while (this._ctx !== parentCtx) {
this.triggerExitRuleEvent();
this._ctx = this._ctx.parentCtx;
}
} else {
this._ctx = parentCtx;
}
// hook into tree
retCtx.parentCtx = parentCtx;
if (this.buildParseTrees && parentCtx !== null) {
// add return ctx into invoking rule's tree
parentCtx.addChild(retCtx);
}
};
Parser.prototype.getInvokingContext = function(ruleIndex) {
var ctx = this._ctx;
while (ctx !== null) {
if (ctx.ruleIndex === ruleIndex) {
return ctx;
}
ctx = ctx.parentCtx;
}
return null;
};
Parser.prototype.precpred = function(localctx, precedence) {
return precedence >= this._precedenceStack[this._precedenceStack.length-1];
};
Parser.prototype.inContext = function(context) {
// TODO: useful in parser?
return false;
};
//
// Checks whether or not {@code symbol} can follow the current state in the
// ATN. The behavior of this method is equivalent to the following, but is
// implemented such that the complete context-sensitive follow set does not
// need to be explicitly constructed.
//
// <pre>
// return getExpectedTokens().contains(symbol);
// </pre>
//
// @param symbol the symbol type to check
// @return {@code true} if {@code symbol} can follow the current state in
// the ATN, otherwise {@code false}.
Parser.prototype.isExpectedToken = function(symbol) {
var atn = this._interp.atn;
var ctx = this._ctx;
var s = atn.states[this.state];
var following = atn.nextTokens(s);
if (following.contains(symbol)) {
return true;
}
if (!following.contains(Token.EPSILON)) {
return false;
}
while (ctx !== null && ctx.invokingState >= 0 && following.contains(Token.EPSILON)) {
var invokingState = atn.states[ctx.invokingState];
var rt = invokingState.transitions[0];
following = atn.nextTokens(rt.followState);
if (following.contains(symbol)) {
return true;
}
ctx = ctx.parentCtx;
}
if (following.contains(Token.EPSILON) && symbol === Token.EOF) {
return true;
} else {
return false;
}
};
// Computes the set of input symbols which could follow the current parser
// state and context, as given by {@link //getState} and {@link //getContext},
// respectively.
//
// @see ATN//getExpectedTokens(int, RuleContext)
//
Parser.prototype.getExpectedTokens = function() {
return this._interp.atn.getExpectedTokens(this.state, this._ctx);
};
Parser.prototype.getExpectedTokensWithinCurrentRule = function() {
var atn = this._interp.atn;
var s = atn.states[this.state];
return atn.nextTokens(s);
};
// Get a rule's index (i.e., {@code RULE_ruleName} field) or -1 if not found.//
Parser.prototype.getRuleIndex = function(ruleName) {
var ruleIndex = this.getRuleIndexMap()[ruleName];
if (ruleIndex !== null) {
return ruleIndex;
} else {
return -1;
}
};
// Return List&lt;String&gt; of the rule names in your parser instance
// leading up to a call to the current rule. You could override if
// you want more details such as the file/line info of where
// in the ATN a rule is invoked.
//
// this is very useful for error messages.
//
Parser.prototype.getRuleInvocationStack = function(p) {
p = p || null;
if (p === null) {
p = this._ctx;
}
var stack = [];
while (p !== null) {
// compute what follows who invoked us
var ruleIndex = p.ruleIndex;
if (ruleIndex < 0) {
stack.push("n/a");
} else {
stack.push(this.ruleNames[ruleIndex]);
}
p = p.parentCtx;
}
return stack;
};
// For debugging and other purposes.//
Parser.prototype.getDFAStrings = function() {
return this._interp.decisionToDFA.toString();
};
// For debugging and other purposes.//
Parser.prototype.dumpDFA = function() {
var seenOne = false;
for (var i = 0; i < this._interp.decisionToDFA.length; i++) {
var dfa = this._interp.decisionToDFA[i];
if (dfa.states.length > 0) {
if (seenOne) {
console.log();
}
this.printer.println("Decision " + dfa.decision + ":");
this.printer.print(dfa.toString(this.literalNames, this.symbolicNames));
seenOne = true;
}
}
};
/*
" printer = function() {\r\n" +
" this.println = function(s) { document.getElementById('output') += s + '\\n'; }\r\n" +
" this.print = function(s) { document.getElementById('output') += s; }\r\n" +
" };\r\n" +
*/
Parser.prototype.getSourceName = function() {
return this._input.sourceName;
};
// During a parse is sometimes useful to listen in on the rule entry and exit
// events as well as token matches. this is for quick and dirty debugging.
//
Parser.prototype.setTrace = function(trace) {
if (!trace) {
this.removeParseListener(this._tracer);
this._tracer = null;
} else {
if (this._tracer !== null) {
this.removeParseListener(this._tracer);
}
this._tracer = new TraceListener(this);
this.addParseListener(this._tracer);
}
};
exports.Parser = Parser;
},{"./Lexer":12,"./Recognizer":16,"./Token":18,"./atn/ATNDeserializationOptions":23,"./atn/ATNDeserializer":24,"./error/ErrorStrategy":42,"./tree/Tree":48}],14:[function(require,module,exports){
/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
* Use of this file is governed by the BSD 3-clause license that
* can be found in the LICENSE.txt file in the project root.
*/
//* A rule invocation record for parsing.
//
// Contains all of the information about the current rule not stored in the
// RuleContext. It handles parse tree children list, Any ATN state
// tracing, and the default values available for rule indications:
// start, stop, rule index, current alt number, current
// ATN state.
//
// Subclasses made for each rule and grammar track the parameters,
// return values, locals, and labels specific to that rule. These
// are the objects that are returned from rules.
//
// Note text is not an actual field of a rule return value; it is computed
// from start and stop using the input stream's toString() method. I
// could add a ctor to this so that we can pass in and store the input
// stream, but I'm not sure we want to do that. It would seem to be undefined
// to get the .text property anyway if the rule matches tokens from multiple
// input streams.
//
// I do not use getters for fields of objects that are used simply to
// group values such as this aggregate. The getters/setters are there to
// satisfy the superclass interface.
var RuleContext = require('./RuleContext').RuleContext;
var Tree = require('./tree/Tree');
var INVALID_INTERVAL = Tree.INVALID_INTERVAL;
var TerminalNode = Tree.TerminalNode;
var TerminalNodeImpl = Tree.TerminalNodeImpl;
var ErrorNodeImpl = Tree.ErrorNodeImpl;
var Interval = require("./IntervalSet").Interval;
function ParserRuleContext(parent, invokingStateNumber) {
parent = parent || null;
invokingStateNumber = invokingStateNumber || null;
RuleContext.call(this, parent, invokingStateNumber);
this.ruleIndex = -1;
// * If we are debugging or building a parse tree for a visitor,
// we need to track all of the tokens and rule invocations associated
// with this rule's context. This is empty for parsing w/o tree constr.
// operation because we don't the need to track the details about
// how we parse this rule.
// /
this.children = null;
this.start = null;
this.stop = null;
// The exception that forced this rule to return. If the rule successfully
// completed, this is {@code null}.
this.exception = null;
}
ParserRuleContext.prototype = Object.create(RuleContext.prototype);
ParserRuleContext.prototype.constructor = ParserRuleContext;
// * COPY a ctx (I'm deliberately not using copy constructor)///
ParserRuleContext.prototype.copyFrom = function(ctx) {
// from RuleContext
this.parentCtx = ctx.parentCtx;
this.invokingState = ctx.invokingState;
this.children = null;
this.start = ctx.start;
this.stop = ctx.stop;
// copy any error nodes to alt label node
if(ctx.children) {
this.children = [];
// reset parent pointer for any error nodes
ctx.children.map(function(child) {
if (child instanceof ErrorNodeImpl) {
this.children.push(child);
child.parentCtx = this;
}
}, this);
}
};
// Double dispatch methods for listeners
ParserRuleContext.prototype.enterRule = function(listener) {
};
ParserRuleContext.prototype.exitRule = function(listener) {
};
// * Does not set parent link; other add methods do that///
ParserRuleContext.prototype.addChild = function(child) {
if (this.children === null) {
this.children = [];
}
this.children.push(child);
return child;
};
// * Used by enterOuterAlt to toss out a RuleContext previously added as
// we entered a rule. If we have // label, we will need to remove
// generic ruleContext object.
// /
ParserRuleContext.prototype.removeLastChild = function() {
if (this.children !== null) {
this.children.pop();
}
};
ParserRuleContext.prototype.addTokenNode = function(token) {
var node = new TerminalNodeImpl(token);
this.addChild(node);
node.parentCtx = this;
return node;
};
ParserRuleContext.prototype.addErrorNode = function(badToken) {
var node = new ErrorNodeImpl(badToken);
this.addChild(node);
node.parentCtx = this;
return node;
};
ParserRuleContext.prototype.getChild = function(i, type) {
type = type || null;
if (this.children === null || i < 0 || i >= this.children.length) {
return null;
}
if (type === null) {
return this.children[i];
} else {
for(var j=0; j<this.children.length; j++) {
var child = this.children[j];
if(child instanceof type) {
if(i===0) {
return child;
} else {
i -= 1;
}
}
}
return null;
}
};
ParserRuleContext.prototype.getToken = function(ttype, i) {
if (this.children === null || i < 0 || i >= this.children.length) {
return null;
}
for(var j=0; j<this.children.length; j++) {
var child = this.children[j];
if (child instanceof TerminalNode) {
if (child.symbol.type === ttype) {
if(i===0) {
return child;
} else {
i -= 1;
}
}
}
}
return null;
};
ParserRuleContext.prototype.getTokens = function(ttype ) {
if (this.children=== null) {
return [];
} else {
var tokens = [];
for(var j=0; j<this.children.length; j++) {
var child = this.children[j];
if (child instanceof TerminalNode) {
if (child.symbol.type === ttype) {
tokens.push(child);
}
}
}
return tokens;
}
};
ParserRuleContext.prototype.getTypedRuleContext = function(ctxType, i) {
return this.getChild(i, ctxType);
};
ParserRuleContext.prototype.getTypedRuleContexts = function(ctxType) {
if (this.children=== null) {
return [];
} else {
var contexts = [];
for(var j=0; j<this.children.length; j++) {
var child = this.children[j];
if (child instanceof ctxType) {
contexts.push(child);
}
}
return contexts;
}
};
ParserRuleContext.prototype.getChildCount = function() {
if (this.children=== null) {
return 0;
} else {
return this.children.length;
}
};
ParserRuleContext.prototype.getSourceInterval = function() {
if( this.start === null || this.stop === null) {
return INVALID_INTERVAL;
} else {
return new Interval(this.start.tokenIndex, this.stop.tokenIndex);
}
};
RuleContext.EMPTY = new ParserRuleContext();
function InterpreterRuleContext(parent, invokingStateNumber, ruleIndex) {
ParserRuleContext.call(parent, invokingStateNumber);
this.ruleIndex = ruleIndex;
return this;
}
InterpreterRuleContext.prototype = Object.create(ParserRuleContext.prototype);
InterpreterRuleContext.prototype.constructor = InterpreterRuleContext;
exports.ParserRuleContext = ParserRuleContext;
},{"./IntervalSet":10,"./RuleContext":17,"./tree/Tree":48}],15:[function(require,module,exports){
//
/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
* Use of this file is governed by the BSD 3-clause license that
* can be found in the LICENSE.txt file in the project root.
*/
///
var RuleContext = require('./RuleContext').RuleContext;
var Hash = require('./Utils').Hash;
function PredictionContext(cachedHashCode) {
this.cachedHashCode = cachedHashCode;
}
// Represents {@code $} in local context prediction, which means wildcard.
// {@code//+x =//}.
// /
PredictionContext.EMPTY = null;
// Represents {@code $} in an array in full context mode, when {@code $}
// doesn't mean wildcard: {@code $ + x = [$,x]}. Here,
// {@code $} = {@link //EMPTY_RETURN_STATE}.
// /
PredictionContext.EMPTY_RETURN_STATE = 0x7FFFFFFF;
PredictionContext.globalNodeCount = 1;
PredictionContext.id = PredictionContext.globalNodeCount;
// Stores the computed hash code of this {@link PredictionContext}. The hash
// code is computed in parts to match the following reference algorithm.
//
// <pre>
// private int referenceHashCode() {
// int hash = {@link MurmurHash//initialize MurmurHash.initialize}({@link
// //INITIAL_HASH});
//
// for (int i = 0; i &lt; {@link //size()}; i++) {
// hash = {@link MurmurHash//update MurmurHash.update}(hash, {@link //getParent
// getParent}(i));
// }
//
// for (int i = 0; i &lt; {@link //size()}; i++) {
// hash = {@link MurmurHash//update MurmurHash.update}(hash, {@link
// //getReturnState getReturnState}(i));
// }
//
// hash = {@link MurmurHash//finish MurmurHash.finish}(hash, 2// {@link
// //size()});
// return hash;
// }
// </pre>
// /
// This means only the {@link //EMPTY} context is in set.
PredictionContext.prototype.isEmpty = function() {
return this === PredictionContext.EMPTY;
};
PredictionContext.prototype.hasEmptyPath = function() {
return this.getReturnState(this.length - 1) === PredictionContext.EMPTY_RETURN_STATE;
};
PredictionContext.prototype.hashCode = function() {
return this.cachedHashCode;
};
PredictionContext.prototype.updateHashCode = function(hash) {
hash.update(this.cachedHashCode);
};
/*
function calculateHashString(parent, returnState) {
return "" + parent + returnState;
}
*/
// Used to cache {@link PredictionContext} objects. Its used for the shared
// context cash associated with contexts in DFA states. This cache
// can be used for both lexers and parsers.
function PredictionContextCache() {
this.cache = {};
return this;
}
// Add a context to the cache and return it. If the context already exists,
// return that one instead and do not add a new context to the cache.
// Protect shared cache from unsafe thread access.
//
PredictionContextCache.prototype.add = function(ctx) {
if (ctx === PredictionContext.EMPTY) {
return PredictionContext.EMPTY;
}
var existing = this.cache[ctx] || null;
if (existing !== null) {
return existing;
}
this.cache[ctx] = ctx;
return ctx;
};
PredictionContextCache.prototype.get = function(ctx) {
return this.cache[ctx] || null;
};
Object.defineProperty(PredictionContextCache.prototype, "length", {
get : function() {
return this.cache.length;
}
});
function SingletonPredictionContext(parent, returnState) {
var hashCode = 0;
if(parent !== null) {
var hash = new Hash();
hash.update(parent, returnState);
hashCode = hash.finish();
}
PredictionContext.call(this, hashCode);
this.parentCtx = parent;
this.returnState = returnState;
}
SingletonPredictionContext.prototype = Object.create(PredictionContext.prototype);
SingletonPredictionContext.prototype.contructor = SingletonPredictionContext;
SingletonPredictionContext.create = function(parent, returnState) {
if (returnState === PredictionContext.EMPTY_RETURN_STATE && parent === null) {
// someone can pass in the bits of an array ctx that mean $
return PredictionContext.EMPTY;
} else {
return new SingletonPredictionContext(parent, returnState);
}
};
Object.defineProperty(SingletonPredictionContext.prototype, "length", {
get : function() {
return 1;
}
});
SingletonPredictionContext.prototype.getParent = function(index) {
return this.parentCtx;
};
SingletonPredictionContext.prototype.getReturnState = function(index) {
return this.returnState;
};
SingletonPredictionContext.prototype.equals = function(other) {
if (this === other) {
return true;
} else if (!(other instanceof SingletonPredictionContext)) {
return false;
} else if (this.hashCode() !== other.hashCode()) {
return false; // can't be same if hash is different
} else {
if(this.returnState !== other.returnState)
return false;
else if(this.parentCtx==null)
return other.parentCtx==null
else
return this.parentCtx.equals(other.parentCtx);
}
};
SingletonPredictionContext.prototype.toString = function() {
var up = this.parentCtx === null ? "" : this.parentCtx.toString();
if (up.length === 0) {
if (this.returnState === PredictionContext.EMPTY_RETURN_STATE) {
return "$";
} else {
return "" + this.returnState;
}
} else {
return "" + this.returnState + " " + up;
}
};
function EmptyPredictionContext() {
SingletonPredictionContext.call(this, null, PredictionContext.EMPTY_RETURN_STATE);
return this;
}
EmptyPredictionContext.prototype = Object.create(SingletonPredictionContext.prototype);
EmptyPredictionContext.prototype.constructor = EmptyPredictionContext;
EmptyPredictionContext.prototype.isEmpty = function() {
return true;
};
EmptyPredictionContext.prototype.getParent = function(index) {
return null;
};
EmptyPredictionContext.prototype.getReturnState = function(index) {
return this.returnState;
};
EmptyPredictionContext.prototype.equals = function(other) {
return this === other;
};
EmptyPredictionContext.prototype.toString = function() {
return "$";
};
PredictionContext.EMPTY = new EmptyPredictionContext();
function ArrayPredictionContext(parents, returnStates) {
// Parent can be null only if full ctx mode and we make an array
// from {@link //EMPTY} and non-empty. We merge {@link //EMPTY} by using
// null parent and
// returnState == {@link //EMPTY_RETURN_STATE}.
var h = new Hash();
h.update(parents, returnStates);
var hashCode = h.finish();
PredictionContext.call(this, hashCode);
this.parents = parents;
this.returnStates = returnStates;
return this;
}
ArrayPredictionContext.prototype = Object.create(PredictionContext.prototype);
ArrayPredictionContext.prototype.constructor = ArrayPredictionContext;
ArrayPredictionContext.prototype.isEmpty = function() {
// since EMPTY_RETURN_STATE can only appear in the last position, we
// don't need to verify that size==1
return this.returnStates[0] === PredictionContext.EMPTY_RETURN_STATE;
};
Object.defineProperty(ArrayPredictionContext.prototype, "length", {
get : function() {
return this.returnStates.length;
}
});
ArrayPredictionContext.prototype.getParent = function(index) {
return this.parents[index];
};
ArrayPredictionContext.prototype.getReturnState = function(index) {
return this.returnStates[index];
};
ArrayPredictionContext.prototype.equals = function(other) {
if (this === other) {
return true;
} else if (!(other instanceof ArrayPredictionContext)) {
return false;
} else if (this.hashCode() !== other.hashCode()) {
return false; // can't be same if hash is different
} else {
return this.returnStates === other.returnStates &&
this.parents === other.parents;
}
};
ArrayPredictionContext.prototype.toString = function() {
if (this.isEmpty()) {
return "[]";
} else {
var s = "[";
for (var i = 0; i < this.returnStates.length; i++) {
if (i > 0) {
s = s + ", ";
}
if (this.returnStates[i] === PredictionContext.EMPTY_RETURN_STATE) {
s = s + "$";
continue;
}
s = s + this.returnStates[i];
if (this.parents[i] !== null) {
s = s + " " + this.parents[i];
} else {
s = s + "null";
}
}
return s + "]";
}
};
// Convert a {@link RuleContext} tree to a {@link PredictionContext} graph.
// Return {@link //EMPTY} if {@code outerContext} is empty or null.
// /
function predictionContextFromRuleContext(atn, outerContext) {
if (outerContext === undefined || outerContext === null) {
outerContext = RuleContext.EMPTY;
}
// if we are in RuleContext of start rule, s, then PredictionContext
// is EMPTY. Nobody called us. (if we are empty, return empty)
if (outerContext.parentCtx === null || outerContext === RuleContext.EMPTY) {
return PredictionContext.EMPTY;
}
// If we have a parent, convert it to a PredictionContext graph
var parent = predictionContextFromRuleContext(atn, outerContext.parentCtx);
var state = atn.states[outerContext.invokingState];
var transition = state.transitions[0];
return SingletonPredictionContext.create(parent, transition.followState.stateNumber);
}
/*
function calculateListsHashString(parents, returnStates) {
var s = "";
parents.map(function(p) {
s = s + p;
});
returnStates.map(function(r) {
s = s + r;
});
return s;
}
*/
function merge(a, b, rootIsWildcard, mergeCache) {
// share same graph if both same
if (a === b) {
return a;
}
if (a instanceof SingletonPredictionContext && b instanceof SingletonPredictionContext) {
return mergeSingletons(a, b, rootIsWildcard, mergeCache);
}
// At least one of a or b is array
// If one is $ and rootIsWildcard, return $ as// wildcard
if (rootIsWildcard) {
if (a instanceof EmptyPredictionContext) {
return a;
}
if (b instanceof EmptyPredictionContext) {
return b;
}
}
// convert singleton so both are arrays to normalize
if (a instanceof SingletonPredictionContext) {
a = new ArrayPredictionContext([a.getParent()], [a.returnState]);
}
if (b instanceof SingletonPredictionContext) {
b = new ArrayPredictionContext([b.getParent()], [b.returnState]);
}
return mergeArrays(a, b, rootIsWildcard, mergeCache);
}
//
// Merge two {@link SingletonPredictionContext} instances.
//
// <p>Stack tops equal, parents merge is same; return left graph.<br>
// <embed src="images/SingletonMerge_SameRootSamePar.svg"
// type="image/svg+xml"/></p>
//
// <p>Same stack top, parents differ; merge parents giving array node, then
// remainders of those graphs. A new root node is created to point to the
// merged parents.<br>
// <embed src="images/SingletonMerge_SameRootDiffPar.svg"
// type="image/svg+xml"/></p>
//
// <p>Different stack tops pointing to same parent. Make array node for the
// root where both element in the root point to the same (original)
// parent.<br>
// <embed src="images/SingletonMerge_DiffRootSamePar.svg"
// type="image/svg+xml"/></p>
//
// <p>Different stack tops pointing to different parents. Make array node for
// the root where each element points to the corresponding original
// parent.<br>
// <embed src="images/SingletonMerge_DiffRootDiffPar.svg"
// type="image/svg+xml"/></p>
//
// @param a the first {@link SingletonPredictionContext}
// @param b the second {@link SingletonPredictionContext}
// @param rootIsWildcard {@code true} if this is a local-context merge,
// otherwise false to indicate a full-context merge
// @param mergeCache
// /
function mergeSingletons(a, b, rootIsWildcard, mergeCache) {
if (mergeCache !== null) {
var previous = mergeCache.get(a, b);
if (previous !== null) {
return previous;
}
previous = mergeCache.get(b, a);
if (previous !== null) {
return previous;
}
}
var rootMerge = mergeRoot(a, b, rootIsWildcard);
if (rootMerge !== null) {
if (mergeCache !== null) {
mergeCache.set(a, b, rootMerge);
}
return rootMerge;
}
if (a.returnState === b.returnState) {
var parent = merge(a.parentCtx, b.parentCtx, rootIsWildcard, mergeCache);
// if parent is same as existing a or b parent or reduced to a parent,
// return it
if (parent === a.parentCtx) {
return a; // ax + bx = ax, if a=b
}
if (parent === b.parentCtx) {
return b; // ax + bx = bx, if a=b
}
// else: ax + ay = a'[x,y]
// merge parents x and y, giving array node with x,y then remainders
// of those graphs. dup a, a' points at merged array
// new joined parent so create new singleton pointing to it, a'
var spc = SingletonPredictionContext.create(parent, a.returnState);
if (mergeCache !== null) {
mergeCache.set(a, b, spc);
}
return spc;
} else { // a != b payloads differ
// see if we can collapse parents due to $+x parents if local ctx
var singleParent = null;
if (a === b || (a.parentCtx !== null && a.parentCtx === b.parentCtx)) { // ax +
// bx =
// [a,b]x
singleParent = a.parentCtx;
}
if (singleParent !== null) { // parents are same
// sort payloads and use same parent
var payloads = [ a.returnState, b.returnState ];
if (a.returnState > b.returnState) {
payloads[0] = b.returnState;
payloads[1] = a.returnState;
}
var parents = [ singleParent, singleParent ];
var apc = new ArrayPredictionContext(parents, payloads);
if (mergeCache !== null) {
mergeCache.set(a, b, apc);
}
return apc;
}
// parents differ and can't merge them. Just pack together
// into array; can't merge.
// ax + by = [ax,by]
var payloads = [ a.returnState, b.returnState ];
var parents = [ a.parentCtx, b.parentCtx ];
if (a.returnState > b.returnState) { // sort by payload
payloads[0] = b.returnState;
payloads[1] = a.returnState;
parents = [ b.parentCtx, a.parentCtx ];
}
var a_ = new ArrayPredictionContext(parents, payloads);
if (mergeCache !== null) {
mergeCache.set(a, b, a_);
}
return a_;
}
}
//
// Handle case where at least one of {@code a} or {@code b} is
// {@link //EMPTY}. In the following diagrams, the symbol {@code $} is used
// to represent {@link //EMPTY}.
//
// <h2>Local-Context Merges</h2>
//
// <p>These local-context merge operations are used when {@code rootIsWildcard}
// is true.</p>
//
// <p>{@link //EMPTY} is superset of any graph; return {@link //EMPTY}.<br>
// <embed src="images/LocalMerge_EmptyRoot.svg" type="image/svg+xml"/></p>
//
// <p>{@link //EMPTY} and anything is {@code //EMPTY}, so merged parent is
// {@code //EMPTY}; return left graph.<br>
// <embed src="images/LocalMerge_EmptyParent.svg" type="image/svg+xml"/></p>
//
// <p>Special case of last merge if local context.<br>
// <embed src="images/LocalMerge_DiffRoots.svg" type="image/svg+xml"/></p>
//
// <h2>Full-Context Merges</h2>
//
// <p>These full-context merge operations are used when {@code rootIsWildcard}
// is false.</p>
//
// <p><embed src="images/FullMerge_EmptyRoots.svg" type="image/svg+xml"/></p>
//
// <p>Must keep all contexts; {@link //EMPTY} in array is a special value (and
// null parent).<br>
// <embed src="images/FullMerge_EmptyRoot.svg" type="image/svg+xml"/></p>
//
// <p><embed src="images/FullMerge_SameRoot.svg" type="image/svg+xml"/></p>
//
// @param a the first {@link SingletonPredictionContext}
// @param b the second {@link SingletonPredictionContext}
// @param rootIsWildcard {@code true} if this is a local-context merge,
// otherwise false to indicate a full-context merge
// /
function mergeRoot(a, b, rootIsWildcard) {
if (rootIsWildcard) {
if (a === PredictionContext.EMPTY) {
return PredictionContext.EMPTY; // // + b =//
}
if (b === PredictionContext.EMPTY) {
return PredictionContext.EMPTY; // a +// =//
}
} else {
if (a === PredictionContext.EMPTY && b === PredictionContext.EMPTY) {
return PredictionContext.EMPTY; // $ + $ = $
} else if (a === PredictionContext.EMPTY) { // $ + x = [$,x]
var payloads = [ b.returnState,
PredictionContext.EMPTY_RETURN_STATE ];
var parents = [ b.parentCtx, null ];
return new ArrayPredictionContext(parents, payloads);
} else if (b === PredictionContext.EMPTY) { // x + $ = [$,x] ($ is always first if present)
var payloads = [ a.returnState, PredictionContext.EMPTY_RETURN_STATE ];
var parents = [ a.parentCtx, null ];
return new ArrayPredictionContext(parents, payloads);
}
}
return null;
}
//
// Merge two {@link ArrayPredictionContext} instances.
//
// <p>Different tops, different parents.<br>
// <embed src="images/ArrayMerge_DiffTopDiffPar.svg" type="image/svg+xml"/></p>
//
// <p>Shared top, same parents.<br>
// <embed src="images/ArrayMerge_ShareTopSamePar.svg" type="image/svg+xml"/></p>
//
// <p>Shared top, different parents.<br>
// <embed src="images/ArrayMerge_ShareTopDiffPar.svg" type="image/svg+xml"/></p>
//
// <p>Shared top, all shared parents.<br>
// <embed src="images/ArrayMerge_ShareTopSharePar.svg"
// type="image/svg+xml"/></p>
//
// <p>Equal tops, merge parents and reduce top to
// {@link SingletonPredictionContext}.<br>
// <embed src="images/ArrayMerge_EqualTop.svg" type="image/svg+xml"/></p>
// /
function mergeArrays(a, b, rootIsWildcard, mergeCache) {
if (mergeCache !== null) {
var previous = mergeCache.get(a, b);
if (previous !== null) {
return previous;
}
previous = mergeCache.get(b, a);
if (previous !== null) {
return previous;
}
}
// merge sorted payloads a + b => M
var i = 0; // walks a
var j = 0; // walks b
var k = 0; // walks target M array
var mergedReturnStates = [];
var mergedParents = [];
// walk and merge to yield mergedParents, mergedReturnStates
while (i < a.returnStates.length && j < b.returnStates.length) {
var a_parent = a.parents[i];
var b_parent = b.parents[j];
if (a.returnStates[i] === b.returnStates[j]) {
// same payload (stack tops are equal), must yield merged singleton
var payload = a.returnStates[i];
// $+$ = $
var bothDollars = payload === PredictionContext.EMPTY_RETURN_STATE &&
a_parent === null && b_parent === null;
var ax_ax = (a_parent !== null && b_parent !== null && a_parent === b_parent); // ax+ax
// ->
// ax
if (bothDollars || ax_ax) {
mergedParents[k] = a_parent; // choose left
mergedReturnStates[k] = payload;
} else { // ax+ay -> a'[x,y]
var mergedParent = merge(a_parent, b_parent, rootIsWildcard, mergeCache);
mergedParents[k] = mergedParent;
mergedReturnStates[k] = payload;
}
i += 1; // hop over left one as usual
j += 1; // but also skip one in right side since we merge
} else if (a.returnStates[i] < b.returnStates[j]) { // copy a[i] to M
mergedParents[k] = a_parent;
mergedReturnStates[k] = a.returnStates[i];
i += 1;
} else { // b > a, copy b[j] to M
mergedParents[k] = b_parent;
mergedReturnStates[k] = b.returnStates[j];
j += 1;
}
k += 1;
}
// copy over any payloads remaining in either array
if (i < a.returnStates.length) {
for (var p = i; p < a.returnStates.length; p++) {
mergedParents[k] = a.parents[p];
mergedReturnStates[k] = a.returnStates[p];
k += 1;
}
} else {
for (var p = j; p < b.returnStates.length; p++) {
mergedParents[k] = b.parents[p];
mergedReturnStates[k] = b.returnStates[p];
k += 1;
}
}
// trim merged if we combined a few that had same stack tops
if (k < mergedParents.length) { // write index < last position; trim
if (k === 1) { // for just one merged element, return singleton top
var a_ = SingletonPredictionContext.create(mergedParents[0],
mergedReturnStates[0]);
if (mergeCache !== null) {
mergeCache.set(a, b, a_);
}
return a_;
}
mergedParents = mergedParents.slice(0, k);
mergedReturnStates = mergedReturnStates.slice(0, k);
}
var M = new ArrayPredictionContext(mergedParents, mergedReturnStates);
// if we created same array as a or b, return that instead
// TODO: track whether this is possible above during merge sort for speed
if (M === a) {
if (mergeCache !== null) {
mergeCache.set(a, b, a);
}
return a;
}
if (M === b) {
if (mergeCache !== null) {
mergeCache.set(a, b, b);
}
return b;
}
combineCommonParents(mergedParents);
if (mergeCache !== null) {
mergeCache.set(a, b, M);
}
return M;
}
//
// Make pass over all <em>M</em> {@code parents}; merge any {@code equals()}
// ones.
// /
function combineCommonParents(parents) {
var uniqueParents = {};
for (var p = 0; p < parents.length; p++) {
var parent = parents[p];
if (!(parent in uniqueParents)) {
uniqueParents[parent] = parent;
}
}
for (var q = 0; q < parents.length; q++) {
parents[q] = uniqueParents[parents[q]];
}
}
function getCachedPredictionContext(context, contextCache, visited) {
if (context.isEmpty()) {
return context;
}
var existing = visited[context] || null;
if (existing !== null) {
return existing;
}
existing = contextCache.get(context);
if (existing !== null) {
visited[context] = existing;
return existing;
}
var changed = false;
var parents = [];
for (var i = 0; i < parents.length; i++) {
var parent = getCachedPredictionContext(context.getParent(i), contextCache, visited);
if (changed || parent !== context.getParent(i)) {
if (!changed) {
parents = [];
for (var j = 0; j < context.length; j++) {
parents[j] = context.getParent(j);
}
changed = true;
}
parents[i] = parent;
}
}
if (!changed) {
contextCache.add(context);
visited[context] = context;
return context;
}
var updated = null;
if (parents.length === 0) {
updated = PredictionContext.EMPTY;
} else if (parents.length === 1) {
updated = SingletonPredictionContext.create(parents[0], context
.getReturnState(0));
} else {
updated = new ArrayPredictionContext(parents, context.returnStates);
}
contextCache.add(updated);
visited[updated] = updated;
visited[context] = updated;
return updated;
}
// ter's recursive version of Sam's getAllNodes()
function getAllContextNodes(context, nodes, visited) {
if (nodes === null) {
nodes = [];
return getAllContextNodes(context, nodes, visited);
} else if (visited === null) {
visited = {};
return getAllContextNodes(context, nodes, visited);
} else {
if (context === null || visited[context] !== null) {
return nodes;
}
visited[context] = context;
nodes.push(context);
for (var i = 0; i < context.length; i++) {
getAllContextNodes(context.getParent(i), nodes, visited);
}
return nodes;
}
}
exports.merge = merge;
exports.PredictionContext = PredictionContext;
exports.PredictionContextCache = PredictionContextCache;
exports.SingletonPredictionContext = SingletonPredictionContext;
exports.predictionContextFromRuleContext = predictionContextFromRuleContext;
exports.getCachedPredictionContext = getCachedPredictionContext;
},{"./RuleContext":17,"./Utils":19}],16:[function(require,module,exports){
//
/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
* Use of this file is governed by the BSD 3-clause license that
* can be found in the LICENSE.txt file in the project root.
*/
//
var Token = require('./Token').Token;
var ConsoleErrorListener = require('./error/ErrorListener').ConsoleErrorListener;
var ProxyErrorListener = require('./error/ErrorListener').ProxyErrorListener;
function Recognizer() {
this._listeners = [ ConsoleErrorListener.INSTANCE ];
this._interp = null;
this._stateNumber = -1;
return this;
}
Recognizer.tokenTypeMapCache = {};
Recognizer.ruleIndexMapCache = {};
Recognizer.prototype.checkVersion = function(toolVersion) {
var runtimeVersion = "4.7.1";
if (runtimeVersion!==toolVersion) {
console.log("ANTLR runtime and generated code versions disagree: "+runtimeVersion+"!="+toolVersion);
}
};
Recognizer.prototype.addErrorListener = function(listener) {
this._listeners.push(listener);
};
Recognizer.prototype.removeErrorListeners = function() {
this._listeners = [];
};
Recognizer.prototype.getTokenTypeMap = function() {
var tokenNames = this.getTokenNames();
if (tokenNames===null) {
throw("The current recognizer does not provide a list of token names.");
}
var result = this.tokenTypeMapCache[tokenNames];
if(result===undefined) {
result = tokenNames.reduce(function(o, k, i) { o[k] = i; });
result.EOF = Token.EOF;
this.tokenTypeMapCache[tokenNames] = result;
}
return result;
};
// Get a map from rule names to rule indexes.
//
// <p>Used for XPath and tree pattern compilation.</p>
//
Recognizer.prototype.getRuleIndexMap = function() {
var ruleNames = this.ruleNames;
if (ruleNames===null) {
throw("The current recognizer does not provide a list of rule names.");
}
var result = this.ruleIndexMapCache[ruleNames];
if(result===undefined) {
result = ruleNames.reduce(function(o, k, i) { o[k] = i; });
this.ruleIndexMapCache[ruleNames] = result;
}
return result;
};
Recognizer.prototype.getTokenType = function(tokenName) {
var ttype = this.getTokenTypeMap()[tokenName];
if (ttype !==undefined) {
return ttype;
} else {
return Token.INVALID_TYPE;
}
};
// What is the error header, normally line/character position information?//
Recognizer.prototype.getErrorHeader = function(e) {
var line = e.getOffendingToken().line;
var column = e.getOffendingToken().column;
return "line " + line + ":" + column;
};
// How should a token be displayed in an error message? The default
// is to display just the text, but during development you might
// want to have a lot of information spit out. Override in that case
// to use t.toString() (which, for CommonToken, dumps everything about
// the token). This is better than forcing you to override a method in
// your token objects because you don't have to go modify your lexer
// so that it creates a new Java type.
//
// @deprecated This method is not called by the ANTLR 4 Runtime. Specific
// implementations of {@link ANTLRErrorStrategy} may provide a similar
// feature when necessary. For example, see
// {@link DefaultErrorStrategy//getTokenErrorDisplay}.
//
Recognizer.prototype.getTokenErrorDisplay = function(t) {
if (t===null) {
return "<no token>";
}
var s = t.text;
if (s===null) {
if (t.type===Token.EOF) {
s = "<EOF>";
} else {
s = "<" + t.type + ">";
}
}
s = s.replace("\n","\\n").replace("\r","\\r").replace("\t","\\t");
return "'" + s + "'";
};
Recognizer.prototype.getErrorListenerDispatch = function() {
return new ProxyErrorListener(this._listeners);
};
// subclass needs to override these if there are sempreds or actions
// that the ATN interp needs to execute
Recognizer.prototype.sempred = function(localctx, ruleIndex, actionIndex) {
return true;
};
Recognizer.prototype.precpred = function(localctx , precedence) {
return true;
};
//Indicate that the recognizer has changed internal state that is
//consistent with the ATN state passed in. This way we always know
//where we are in the ATN as the parser goes along. The rule
//context objects form a stack that lets us see the stack of
//invoking rules. Combine this and we have complete ATN
//configuration information.
Object.defineProperty(Recognizer.prototype, "state", {
get : function() {
return this._stateNumber;
},
set : function(state) {
this._stateNumber = state;
}
});
exports.Recognizer = Recognizer;
},{"./Token":18,"./error/ErrorListener":41}],17:[function(require,module,exports){
/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
* Use of this file is governed by the BSD 3-clause license that
* can be found in the LICENSE.txt file in the project root.
*/
///
// A rule context is a record of a single rule invocation. It knows
// which context invoked it, if any. If there is no parent context, then
// naturally the invoking state is not valid. The parent link
// provides a chain upwards from the current rule invocation to the root
// of the invocation tree, forming a stack. We actually carry no
// information about the rule associated with this context (except
// when parsing). We keep only the state number of the invoking state from
// the ATN submachine that invoked this. Contrast this with the s
// pointer inside ParserRuleContext that tracks the current state
// being "executed" for the current rule.
//
// The parent contexts are useful for computing lookahead sets and
// getting error information.
//
// These objects are used during parsing and prediction.
// For the special case of parsers, we use the subclass
// ParserRuleContext.
//
// @see ParserRuleContext
///
var RuleNode = require('./tree/Tree').RuleNode;
var INVALID_INTERVAL = require('./tree/Tree').INVALID_INTERVAL;
var INVALID_ALT_NUMBER = require('./atn/ATN').INVALID_ALT_NUMBER;
function RuleContext(parent, invokingState) {
RuleNode.call(this);
// What context invoked this rule?
this.parentCtx = parent || null;
// What state invoked the rule associated with this context?
// The "return address" is the followState of invokingState
// If parent is null, this should be -1.
this.invokingState = invokingState || -1;
return this;
}
RuleContext.prototype = Object.create(RuleNode.prototype);
RuleContext.prototype.constructor = RuleContext;
RuleContext.prototype.depth = function() {
var n = 0;
var p = this;
while (p !== null) {
p = p.parentCtx;
n += 1;
}
return n;
};
// A context is empty if there is no invoking state; meaning nobody call
// current context.
RuleContext.prototype.isEmpty = function() {
return this.invokingState === -1;
};
// satisfy the ParseTree / SyntaxTree interface
RuleContext.prototype.getSourceInterval = function() {
return INVALID_INTERVAL;
};
RuleContext.prototype.getRuleContext = function() {
return this;
};
RuleContext.prototype.getPayload = function() {
return this;
};
// Return the combined text of all child nodes. This method only considers
// tokens which have been added to the parse tree.
// <p>
// Since tokens on hidden channels (e.g. whitespace or comments) are not
// added to the parse trees, they will not appear in the output of this
// method.
// /
RuleContext.prototype.getText = function() {
if (this.getChildCount() === 0) {
return "";
} else {
return this.children.map(function(child) {
return child.getText();
}).join("");
}
};
// For rule associated with this parse tree internal node, return
// the outer alternative number used to match the input. Default
// implementation does not compute nor store this alt num. Create
// a subclass of ParserRuleContext with backing field and set
// option contextSuperClass.
// to set it.
RuleContext.prototype.getAltNumber = function() { return INVALID_ALT_NUMBER; }
// Set the outer alternative number for this context node. Default
// implementation does nothing to avoid backing field overhead for
// trees that don't need it. Create
// a subclass of ParserRuleContext with backing field and set
// option contextSuperClass.
RuleContext.prototype.setAltNumber = function(altNumber) { }
RuleContext.prototype.getChild = function(i) {
return null;
};
RuleContext.prototype.getChildCount = function() {
return 0;
};
RuleContext.prototype.accept = function(visitor) {
return visitor.visitChildren(this);
};
//need to manage circular dependencies, so export now
exports.RuleContext = RuleContext;
var Trees = require('./tree/Trees').Trees;
// Print out a whole tree, not just a node, in LISP format
// (root child1 .. childN). Print just a node if this is a leaf.
//
RuleContext.prototype.toStringTree = function(ruleNames, recog) {
return Trees.toStringTree(this, ruleNames, recog);
};
RuleContext.prototype.toString = function(ruleNames, stop) {
ruleNames = ruleNames || null;
stop = stop || null;
var p = this;
var s = "[";
while (p !== null && p !== stop) {
if (ruleNames === null) {
if (!p.isEmpty()) {
s += p.invokingState;
}
} else {
var ri = p.ruleIndex;
var ruleName = (ri >= 0 && ri < ruleNames.length) ? ruleNames[ri]
: "" + ri;
s += ruleName;
}
if (p.parentCtx !== null && (ruleNames !== null || !p.parentCtx.isEmpty())) {
s += " ";
}
p = p.parentCtx;
}
s += "]";
return s;
};
},{"./atn/ATN":20,"./tree/Tree":48,"./tree/Trees":49}],18:[function(require,module,exports){
/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
* Use of this file is governed by the BSD 3-clause license that
* can be found in the LICENSE.txt file in the project root.
*/
//
// A token has properties: text, type, line, character position in the line
// (so we can ignore tabs), token channel, index, and source from which
// we obtained this token.
function Token() {
this.source = null;
this.type = null; // token type of the token
this.channel = null; // The parser ignores everything not on DEFAULT_CHANNEL
this.start = null; // optional; return -1 if not implemented.
this.stop = null; // optional; return -1 if not implemented.
this.tokenIndex = null; // from 0..n-1 of the token object in the input stream
this.line = null; // line=1..n of the 1st character
this.column = null; // beginning of the line at which it occurs, 0..n-1
this._text = null; // text of the token.
return this;
}
Token.INVALID_TYPE = 0;
// During lookahead operations, this "token" signifies we hit rule end ATN state
// and did not follow it despite needing to.
Token.EPSILON = -2;
Token.MIN_USER_TOKEN_TYPE = 1;
Token.EOF = -1;
// All tokens go to the parser (unless skip() is called in that rule)
// on a particular "channel". The parser tunes to a particular channel
// so that whitespace etc... can go to the parser on a "hidden" channel.
Token.DEFAULT_CHANNEL = 0;
// Anything on different channel than DEFAULT_CHANNEL is not parsed
// by parser.
Token.HIDDEN_CHANNEL = 1;
// Explicitly set the text for this token. If {code text} is not
// {@code null}, then {@link //getText} will return this value rather than
// extracting the text from the input.
//
// @param text The explicit text of the token, or {@code null} if the text
// should be obtained from the input along with the start and stop indexes
// of the token.
Object.defineProperty(Token.prototype, "text", {
get : function() {
return this._text;
},
set : function(text) {
this._text = text;
}
});
Token.prototype.getTokenSource = function() {
return this.source[0];
};
Token.prototype.getInputStream = function() {
return this.source[1];
};
function CommonToken(source, type, channel, start, stop) {
Token.call(this);
this.source = source !== undefined ? source : CommonToken.EMPTY_SOURCE;
this.type = type !== undefined ? type : null;
this.channel = channel !== undefined ? channel : Token.DEFAULT_CHANNEL;
this.start = start !== undefined ? start : -1;
this.stop = stop !== undefined ? stop : -1;
this.tokenIndex = -1;
if (this.source[0] !== null) {
this.line = source[0].line;
this.column = source[0].column;
} else {
this.column = -1;
}
return this;
}
CommonToken.prototype = Object.create(Token.prototype);
CommonToken.prototype.constructor = CommonToken;
// An empty {@link Pair} which is used as the default value of
// {@link //source} for tokens that do not have a source.
CommonToken.EMPTY_SOURCE = [ null, null ];
// Constructs a new {@link CommonToken} as a copy of another {@link Token}.
//
// <p>
// If {@code oldToken} is also a {@link CommonToken} instance, the newly
// constructed token will share a reference to the {@link //text} field and
// the {@link Pair} stored in {@link //source}. Otherwise, {@link //text} will
// be assigned the result of calling {@link //getText}, and {@link //source}
// will be constructed from the result of {@link Token//getTokenSource} and
// {@link Token//getInputStream}.</p>
//
// @param oldToken The token to copy.
//
CommonToken.prototype.clone = function() {
var t = new CommonToken(this.source, this.type, this.channel, this.start,
this.stop);
t.tokenIndex = this.tokenIndex;
t.line = this.line;
t.column = this.column;
t.text = this.text;
return t;
};
Object.defineProperty(CommonToken.prototype, "text", {
get : function() {
if (this._text !== null) {
return this._text;
}
var input = this.getInputStream();
if (input === null) {
return null;
}
var n = input.size;
if (this.start < n && this.stop < n) {
return input.getText(this.start, this.stop);
} else {
return "<EOF>";
}
},
set : function(text) {
this._text = text;
}
});
CommonToken.prototype.toString = function() {
var txt = this.text;
if (txt !== null) {
txt = txt.replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/\t/g, "\\t");
} else {
txt = "<no text>";
}
return "[@" + this.tokenIndex + "," + this.start + ":" + this.stop + "='" +
txt + "',<" + this.type + ">" +
(this.channel > 0 ? ",channel=" + this.channel : "") + "," +
this.line + ":" + this.column + "]";
};
exports.Token = Token;
exports.CommonToken = CommonToken;
},{}],19:[function(require,module,exports){
/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
* Use of this file is governed by the BSD 3-clause license that
* can be found in the LICENSE.txt file in the project root.
*/
function arrayToString(a) {
return "[" + a.join(", ") + "]";
}
String.prototype.seed = String.prototype.seed || Math.round(Math.random() * Math.pow(2, 32));
String.prototype.hashCode = function () {
var remainder, bytes, h1, h1b, c1, c1b, c2, c2b, k1, i,
key = this.toString();
remainder = key.length & 3; // key.length % 4
bytes = key.length - remainder;
h1 = String.prototype.seed;
c1 = 0xcc9e2d51;
c2 = 0x1b873593;
i = 0;
while (i < bytes) {
k1 =
((key.charCodeAt(i) & 0xff)) |
((key.charCodeAt(++i) & 0xff) << 8) |
((key.charCodeAt(++i) & 0xff) << 16) |
((key.charCodeAt(++i) & 0xff) << 24);
++i;
k1 = ((((k1 & 0xffff) * c1) + ((((k1 >>> 16) * c1) & 0xffff) << 16))) & 0xffffffff;
k1 = (k1 << 15) | (k1 >>> 17);
k1 = ((((k1 & 0xffff) * c2) + ((((k1 >>> 16) * c2) & 0xffff) << 16))) & 0xffffffff;
h1 ^= k1;
h1 = (h1 << 13) | (h1 >>> 19);
h1b = ((((h1 & 0xffff) * 5) + ((((h1 >>> 16) * 5) & 0xffff) << 16))) & 0xffffffff;
h1 = (((h1b & 0xffff) + 0x6b64) + ((((h1b >>> 16) + 0xe654) & 0xffff) << 16));
}
k1 = 0;
switch (remainder) {
case 3:
k1 ^= (key.charCodeAt(i + 2) & 0xff) << 16;
case 2:
k1 ^= (key.charCodeAt(i + 1) & 0xff) << 8;
case 1:
k1 ^= (key.charCodeAt(i) & 0xff);
k1 = (((k1 & 0xffff) * c1) + ((((k1 >>> 16) * c1) & 0xffff) << 16)) & 0xffffffff;
k1 = (k1 << 15) | (k1 >>> 17);
k1 = (((k1 & 0xffff) * c2) + ((((k1 >>> 16) * c2) & 0xffff) << 16)) & 0xffffffff;
h1 ^= k1;
}
h1 ^= key.length;
h1 ^= h1 >>> 16;
h1 = (((h1 & 0xffff) * 0x85ebca6b) + ((((h1 >>> 16) * 0x85ebca6b) & 0xffff) << 16)) & 0xffffffff;
h1 ^= h1 >>> 13;
h1 = ((((h1 & 0xffff) * 0xc2b2ae35) + ((((h1 >>> 16) * 0xc2b2ae35) & 0xffff) << 16))) & 0xffffffff;
h1 ^= h1 >>> 16;
return h1 >>> 0;
};
function standardEqualsFunction(a, b) {
return a.equals(b);
}
function standardHashCodeFunction(a) {
return a.hashCode();
}
function Set(hashFunction, equalsFunction) {
this.data = {};
this.hashFunction = hashFunction || standardHashCodeFunction;
this.equalsFunction = equalsFunction || standardEqualsFunction;
return this;
}
Object.defineProperty(Set.prototype, "length", {
get: function () {
var l = 0;
for (var key in this.data) {
if (key.indexOf("hash_") === 0) {
l = l + this.data[key].length;
}
}
return l;
}
});
Set.prototype.add = function (value) {
var hash = this.hashFunction(value);
var key = "hash_" + hash;
if (key in this.data) {
var values = this.data[key];
for (var i = 0; i < values.length; i++) {
if (this.equalsFunction(value, values[i])) {
return values[i];
}
}
values.push(value);
return value;
} else {
this.data[key] = [value];
return value;
}
};
Set.prototype.contains = function (value) {
return this.get(value) != null;
};
Set.prototype.get = function (value) {
var hash = this.hashFunction(value);
var key = "hash_" + hash;
if (key in this.data) {
var values = this.data[key];
for (var i = 0; i < values.length; i++) {
if (this.equalsFunction(value, values[i])) {
return values[i];
}
}
}
return null;
};
Set.prototype.values = function () {
var l = [];
for (var key in this.data) {
if (key.indexOf("hash_") === 0) {
l = l.concat(this.data[key]);
}
}
return l;
};
Set.prototype.toString = function () {
return arrayToString(this.values());
};
function BitSet() {
this.data = [];
return this;
}
BitSet.prototype.add = function (value) {
this.data[value] = true;
};
BitSet.prototype.or = function (set) {
var bits = this;
Object.keys(set.data).map(function (alt) {
bits.add(alt);
});
};
BitSet.prototype.remove = function (value) {
delete this.data[value];
};
BitSet.prototype.contains = function (value) {
return this.data[value] === true;
};
BitSet.prototype.values = function () {
return Object.keys(this.data);
};
BitSet.prototype.minValue = function () {
return Math.min.apply(null, this.values());
};
BitSet.prototype.hashCode = function () {
var hash = new Hash();
hash.update(this.values());
return hash.finish();
};
BitSet.prototype.equals = function (other) {
if (!(other instanceof BitSet)) {
return false;
}
return this.hashCode() === other.hashCode();
};
Object.defineProperty(BitSet.prototype, "length", {
get: function () {
return this.values().length;
}
});
BitSet.prototype.toString = function () {
return "{" + this.values().join(", ") + "}";
};
function Map(hashFunction, equalsFunction) {
this.data = {};
this.hashFunction = hashFunction || standardHashCodeFunction;
this.equalsFunction = equalsFunction || standardEqualsFunction;
return this;
}
Object.defineProperty(Map.prototype, "length", {
get: function () {
var l = 0;
for (var hashKey in this.data) {
if (hashKey.indexOf("hash_") === 0) {
l = l + this.data[hashKey].length;
}
}
return l;
}
});
Map.prototype.put = function (key, value) {
var hashKey = "hash_" + this.hashFunction(key);
if (hashKey in this.data) {
var entries = this.data[hashKey];
for (var i = 0; i < entries.length; i++) {
var entry = entries[i];
if (this.equalsFunction(key, entry.key)) {
var oldValue = entry.value;
entry.value = value;
return oldValue;
}
}
entries.push({key:key, value:value});
return value;
} else {
this.data[hashKey] = [{key:key, value:value}];
return value;
}
};
Map.prototype.containsKey = function (key) {
var hashKey = "hash_" + this.hashFunction(key);
if(hashKey in this.data) {
var entries = this.data[hashKey];
for (var i = 0; i < entries.length; i++) {
var entry = entries[i];
if (this.equalsFunction(key, entry.key))
return true;
}
}
return false;
};
Map.prototype.get = function (key) {
var hashKey = "hash_" + this.hashFunction(key);
if(hashKey in this.data) {
var entries = this.data[hashKey];
for (var i = 0; i < entries.length; i++) {
var entry = entries[i];
if (this.equalsFunction(key, entry.key))
return entry.value;
}
}
return null;
};
Map.prototype.entries = function () {
var l = [];
for (var key in this.data) {
if (key.indexOf("hash_") === 0) {
l = l.concat(this.data[key]);
}
}
return l;
};
Map.prototype.getKeys = function () {
return this.entries().map(function(e) {
return e.key;
});
};
Map.prototype.getValues = function () {
return this.entries().map(function(e) {
return e.value;
});
};
Map.prototype.toString = function () {
var ss = this.entries().map(function(entry) {
return '{' + entry.key + ':' + entry.value + '}';
});
return '[' + ss.join(", ") + ']';
};
function AltDict() {
this.data = {};
return this;
}
AltDict.prototype.get = function (key) {
key = "k-" + key;
if (key in this.data) {
return this.data[key];
} else {
return null;
}
};
AltDict.prototype.put = function (key, value) {
key = "k-" + key;
this.data[key] = value;
};
AltDict.prototype.values = function () {
var data = this.data;
var keys = Object.keys(this.data);
return keys.map(function (key) {
return data[key];
});
};
function DoubleDict() {
return this;
}
function Hash() {
this.count = 0;
this.hash = 0;
return this;
}
Hash.prototype.update = function () {
for(var i=0;i<arguments.length;i++) {
var value = arguments[i];
if (value == null)
continue;
if(Array.isArray(value))
this.update.apply(value);
else {
var k = 0;
switch (typeof(value)) {
case 'undefined':
case 'function':
continue;
case 'number':
case 'boolean':
k = value;
break;
case 'string':
k = value.hashCode();
break;
default:
value.updateHashCode(this);
continue;
}
k = k * 0xCC9E2D51;
k = (k << 15) | (k >>> (32 - 15));
k = k * 0x1B873593;
this.count = this.count + 1;
var hash = this.hash ^ k;
hash = (hash << 13) | (hash >>> (32 - 13));
hash = hash * 5 + 0xE6546B64;
this.hash = hash;
}
}
}
Hash.prototype.finish = function () {
var hash = this.hash ^ (this.count * 4);
hash = hash ^ (hash >>> 16);
hash = hash * 0x85EBCA6B;
hash = hash ^ (hash >>> 13);
hash = hash * 0xC2B2AE35;
hash = hash ^ (hash >>> 16);
return hash;
}
function hashStuff() {
var hash = new Hash();
hash.update.apply(arguments);
return hash.finish();
}
DoubleDict.prototype.get = function (a, b) {
var d = this[a] || null;
return d === null ? null : (d[b] || null);
};
DoubleDict.prototype.set = function (a, b, o) {
var d = this[a] || null;
if (d === null) {
d = {};
this[a] = d;
}
d[b] = o;
};
function escapeWhitespace(s, escapeSpaces) {
s = s.replace(/\t/g, "\\t")
.replace(/\n/g, "\\n")
.replace(/\r/g, "\\r");
if (escapeSpaces) {
s = s.replace(/ /g, "\u00B7");
}
return s;
}
function titleCase(str) {
return str.replace(/\w\S*/g, function (txt) {
return txt.charAt(0).toUpperCase() + txt.substr(1);
});
};
function equalArrays(a, b)
{
if (!Array.isArray(a) || !Array.isArray(b))
return false;
if (a == b)
return true;
if (a.length != b.length)
return false;
for (var i = 0; i < a.length; i++) {
if (a[i] == b[i])
continue;
if (!a[i].equals(b[i]))
return false;
}
return true;
};
exports.Hash = Hash;
exports.Set = Set;
exports.Map = Map;
exports.BitSet = BitSet;
exports.AltDict = AltDict;
exports.DoubleDict = DoubleDict;
exports.hashStuff = hashStuff;
exports.escapeWhitespace = escapeWhitespace;
exports.arrayToString = arrayToString;
exports.titleCase = titleCase;
exports.equalArrays = equalArrays;
},{}],20:[function(require,module,exports){
/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
* Use of this file is governed by the BSD 3-clause license that
* can be found in the LICENSE.txt file in the project root.
*/
var LL1Analyzer = require('./../LL1Analyzer').LL1Analyzer;
var IntervalSet = require('./../IntervalSet').IntervalSet;
function ATN(grammarType , maxTokenType) {
// Used for runtime deserialization of ATNs from strings///
// The type of the ATN.
this.grammarType = grammarType;
// The maximum value for any symbol recognized by a transition in the ATN.
this.maxTokenType = maxTokenType;
this.states = [];
// Each subrule/rule is a decision point and we must track them so we
// can go back later and build DFA predictors for them. This includes
// all the rules, subrules, optional blocks, ()+, ()* etc...
this.decisionToState = [];
// Maps from rule index to starting state number.
this.ruleToStartState = [];
// Maps from rule index to stop state number.
this.ruleToStopState = null;
this.modeNameToStartState = {};
// For lexer ATNs, this maps the rule index to the resulting token type.
// For parser ATNs, this maps the rule index to the generated bypass token
// type if the
// {@link ATNDeserializationOptions//isGenerateRuleBypassTransitions}
// deserialization option was specified; otherwise, this is {@code null}.
this.ruleToTokenType = null;
// For lexer ATNs, this is an array of {@link LexerAction} objects which may
// be referenced by action transitions in the ATN.
this.lexerActions = null;
this.modeToStartState = [];
return this;
}
// Compute the set of valid tokens that can occur starting in state {@code s}.
// If {@code ctx} is null, the set of tokens will not include what can follow
// the rule surrounding {@code s}. In other words, the set will be
// restricted to tokens reachable staying within {@code s}'s rule.
ATN.prototype.nextTokensInContext = function(s, ctx) {
var anal = new LL1Analyzer(this);
return anal.LOOK(s, null, ctx);
};
// Compute the set of valid tokens that can occur starting in {@code s} and
// staying in same rule. {@link Token//EPSILON} is in set if we reach end of
// rule.
ATN.prototype.nextTokensNoContext = function(s) {
if (s.nextTokenWithinRule !== null ) {
return s.nextTokenWithinRule;
}
s.nextTokenWithinRule = this.nextTokensInContext(s, null);
s.nextTokenWithinRule.readOnly = true;
return s.nextTokenWithinRule;
};
ATN.prototype.nextTokens = function(s, ctx) {
if ( ctx===undefined ) {
return this.nextTokensNoContext(s);
} else {
return this.nextTokensInContext(s, ctx);
}
};
ATN.prototype.addState = function( state) {
if ( state !== null ) {
state.atn = this;
state.stateNumber = this.states.length;
}
this.states.push(state);
};
ATN.prototype.removeState = function( state) {
this.states[state.stateNumber] = null; // just free mem, don't shift states in list
};
ATN.prototype.defineDecisionState = function( s) {
this.decisionToState.push(s);
s.decision = this.decisionToState.length-1;
return s.decision;
};
ATN.prototype.getDecisionState = function( decision) {
if (this.decisionToState.length===0) {
return null;
} else {
return this.decisionToState[decision];
}
};
// Computes the set of input symbols which could follow ATN state number
// {@code stateNumber} in the specified full {@code context}. This method
// considers the complete parser context, but does not evaluate semantic
// predicates (i.e. all predicates encountered during the calculation are
// assumed true). If a path in the ATN exists from the starting state to the
// {@link RuleStopState} of the outermost context without matching any
// symbols, {@link Token//EOF} is added to the returned set.
//
// <p>If {@code context} is {@code null}, it is treated as
// {@link ParserRuleContext//EMPTY}.</p>
//
// @param stateNumber the ATN state number
// @param context the full parse context
// @return The set of potentially valid input symbols which could follow the
// specified state in the specified context.
// @throws IllegalArgumentException if the ATN does not contain a state with
// number {@code stateNumber}
var Token = require('./../Token').Token;
ATN.prototype.getExpectedTokens = function( stateNumber, ctx ) {
if ( stateNumber < 0 || stateNumber >= this.states.length ) {
throw("Invalid state number.");
}
var s = this.states[stateNumber];
var following = this.nextTokens(s);
if (!following.contains(Token.EPSILON)) {
return following;
}
var expected = new IntervalSet();
expected.addSet(following);
expected.removeOne(Token.EPSILON);
while (ctx !== null && ctx.invokingState >= 0 && following.contains(Token.EPSILON)) {
var invokingState = this.states[ctx.invokingState];
var rt = invokingState.transitions[0];
following = this.nextTokens(rt.followState);
expected.addSet(following);
expected.removeOne(Token.EPSILON);
ctx = ctx.parentCtx;
}
if (following.contains(Token.EPSILON)) {
expected.addOne(Token.EOF);
}
return expected;
};
ATN.INVALID_ALT_NUMBER = 0;
exports.ATN = ATN;
},{"./../IntervalSet":10,"./../LL1Analyzer":11,"./../Token":18}],21:[function(require,module,exports){
//
/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
* Use of this file is governed by the BSD 3-clause license that
* can be found in the LICENSE.txt file in the project root.
*/
///
// A tuple: (ATN state, predicted alt, syntactic, semantic context).
// The syntactic context is a graph-structured stack node whose
// path(s) to the root is the rule invocation(s)
// chain used to arrive at the state. The semantic context is
// the tree of semantic predicates encountered before reaching
// an ATN state.
///
var DecisionState = require('./ATNState').DecisionState;
var SemanticContext = require('./SemanticContext').SemanticContext;
var Hash = require("../Utils").Hash;
function checkParams(params, isCfg) {
if(params===null) {
var result = { state:null, alt:null, context:null, semanticContext:null };
if(isCfg) {
result.reachesIntoOuterContext = 0;
}
return result;
} else {
var props = {};
props.state = params.state || null;
props.alt = (params.alt === undefined) ? null : params.alt;
props.context = params.context || null;
props.semanticContext = params.semanticContext || null;
if(isCfg) {
props.reachesIntoOuterContext = params.reachesIntoOuterContext || 0;
props.precedenceFilterSuppressed = params.precedenceFilterSuppressed || false;
}
return props;
}
}
function ATNConfig(params, config) {
this.checkContext(params, config);
params = checkParams(params);
config = checkParams(config, true);
// The ATN state associated with this configuration///
this.state = params.state!==null ? params.state : config.state;
// What alt (or lexer rule) is predicted by this configuration///
this.alt = params.alt!==null ? params.alt : config.alt;
// The stack of invoking states leading to the rule/states associated
// with this config. We track only those contexts pushed during
// execution of the ATN simulator.
this.context = params.context!==null ? params.context : config.context;
this.semanticContext = params.semanticContext!==null ? params.semanticContext :
(config.semanticContext!==null ? config.semanticContext : SemanticContext.NONE);
// We cannot execute predicates dependent upon local context unless
// we know for sure we are in the correct context. Because there is
// no way to do this efficiently, we simply cannot evaluate
// dependent predicates unless we are in the rule that initially
// invokes the ATN simulator.
//
// closure() tracks the depth of how far we dip into the
// outer context: depth &gt; 0. Note that it may not be totally
// accurate depth since I don't ever decrement. TODO: make it a boolean then
this.reachesIntoOuterContext = config.reachesIntoOuterContext;
this.precedenceFilterSuppressed = config.precedenceFilterSuppressed;
return this;
}
ATNConfig.prototype.checkContext = function(params, config) {
if((params.context===null || params.context===undefined) &&
(config===null || config.context===null || config.context===undefined)) {
this.context = null;
}
};
ATNConfig.prototype.hashCode = function() {
var hash = new Hash();
this.updateHashCode(hash);
return hash.finish();
};
ATNConfig.prototype.updateHashCode = function(hash) {
hash.update(this.state.stateNumber, this.alt, this.context, this.semanticContext);
};
// An ATN configuration is equal to another if both have
// the same state, they predict the same alternative, and
// syntactic/semantic contexts are the same.
ATNConfig.prototype.equals = function(other) {
if (this === other) {
return true;
} else if (! (other instanceof ATNConfig)) {
return false;
} else {
return this.state.stateNumber===other.state.stateNumber &&
this.alt===other.alt &&
(this.context===null ? other.context===null : this.context.equals(other.context)) &&
this.semanticContext.equals(other.semanticContext) &&
this.precedenceFilterSuppressed===other.precedenceFilterSuppressed;
}
};
ATNConfig.prototype.hashCodeForConfigSet = function() {
var hash = new Hash();
hash.update(this.state.stateNumber, this.alt, this.semanticContext);
return hash.finish();
};
ATNConfig.prototype.equalsForConfigSet = function(other) {
if (this === other) {
return true;
} else if (! (other instanceof ATNConfig)) {
return false;
} else {
return this.state.stateNumber===other.state.stateNumber &&
this.alt===other.alt &&
this.semanticContext.equals(other.semanticContext);
}
};
ATNConfig.prototype.toString = function() {
return "(" + this.state + "," + this.alt +
(this.context!==null ? ",[" + this.context.toString() + "]" : "") +
(this.semanticContext !== SemanticContext.NONE ?
("," + this.semanticContext.toString())
: "") +
(this.reachesIntoOuterContext>0 ?
(",up=" + this.reachesIntoOuterContext)
: "") + ")";
};
function LexerATNConfig(params, config) {
ATNConfig.call(this, params, config);
// This is the backing field for {@link //getLexerActionExecutor}.
var lexerActionExecutor = params.lexerActionExecutor || null;
this.lexerActionExecutor = lexerActionExecutor || (config!==null ? config.lexerActionExecutor : null);
this.passedThroughNonGreedyDecision = config!==null ? this.checkNonGreedyDecision(config, this.state) : false;
return this;
}
LexerATNConfig.prototype = Object.create(ATNConfig.prototype);
LexerATNConfig.prototype.constructor = LexerATNConfig;
LexerATNConfig.prototype.updateHashCode = function(hash) {
hash.update(this.state.stateNumber, this.alt, this.context, this.semanticContext, this.passedThroughNonGreedyDecision, this.lexerActionExecutor);
};
LexerATNConfig.prototype.equals = function(other) {
return this === other ||
(other instanceof LexerATNConfig &&
this.passedThroughNonGreedyDecision == other.passedThroughNonGreedyDecision &&
(this.lexerActionExecutor ? this.lexerActionExecutor.equals(other.lexerActionExecutor) : !other.lexerActionExecutor) &&
ATNConfig.prototype.equals.call(this, other));
};
LexerATNConfig.prototype.hashCodeForConfigSet = LexerATNConfig.prototype.hashCode;
LexerATNConfig.prototype.equalsForConfigSet = LexerATNConfig.prototype.equals;
LexerATNConfig.prototype.checkNonGreedyDecision = function(source, target) {
return source.passedThroughNonGreedyDecision ||
(target instanceof DecisionState) && target.nonGreedy;
};
exports.ATNConfig = ATNConfig;
exports.LexerATNConfig = LexerATNConfig;
},{"../Utils":19,"./ATNState":26,"./SemanticContext":33}],22:[function(require,module,exports){
//
/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
* Use of this file is governed by the BSD 3-clause license that
* can be found in the LICENSE.txt file in the project root.
*/
//
// Specialized {@link Set}{@code <}{@link ATNConfig}{@code >} that can track
// info about the set, with support for combining similar configurations using a
// graph-structured stack.
///
var ATN = require('./ATN').ATN;
var Utils = require('./../Utils');
var Hash = Utils.Hash;
var Set = Utils.Set;
var SemanticContext = require('./SemanticContext').SemanticContext;
var merge = require('./../PredictionContext').merge;
function hashATNConfig(c) {
return c.hashCodeForConfigSet();
}
function equalATNConfigs(a, b) {
if ( a===b ) {
return true;
} else if ( a===null || b===null ) {
return false;
} else
return a.equalsForConfigSet(b);
}
function ATNConfigSet(fullCtx) {
//
// The reason that we need this is because we don't want the hash map to use
// the standard hash code and equals. We need all configurations with the
// same
// {@code (s,i,_,semctx)} to be equal. Unfortunately, this key effectively
// doubles
// the number of objects associated with ATNConfigs. The other solution is
// to
// use a hash table that lets us specify the equals/hashcode operation.
// All configs but hashed by (s, i, _, pi) not including context. Wiped out
// when we go readonly as this set becomes a DFA state.
this.configLookup = new Set(hashATNConfig, equalATNConfigs);
// Indicates that this configuration set is part of a full context
// LL prediction. It will be used to determine how to merge $. With SLL
// it's a wildcard whereas it is not for LL context merge.
this.fullCtx = fullCtx === undefined ? true : fullCtx;
// Indicates that the set of configurations is read-only. Do not
// allow any code to manipulate the set; DFA states will point at
// the sets and they must not change. This does not protect the other
// fields; in particular, conflictingAlts is set after
// we've made this readonly.
this.readOnly = false;
// Track the elements as they are added to the set; supports get(i)///
this.configs = [];
// TODO: these fields make me pretty uncomfortable but nice to pack up info
// together, saves recomputation
// TODO: can we track conflicts as they are added to save scanning configs
// later?
this.uniqueAlt = 0;
this.conflictingAlts = null;
// Used in parser and lexer. In lexer, it indicates we hit a pred
// while computing a closure operation. Don't make a DFA state from this.
this.hasSemanticContext = false;
this.dipsIntoOuterContext = false;
this.cachedHashCode = -1;
return this;
}
// Adding a new config means merging contexts with existing configs for
// {@code (s, i, pi, _)}, where {@code s} is the
// {@link ATNConfig//state}, {@code i} is the {@link ATNConfig//alt}, and
// {@code pi} is the {@link ATNConfig//semanticContext}. We use
// {@code (s,i,pi)} as key.
//
// <p>This method updates {@link //dipsIntoOuterContext} and
// {@link //hasSemanticContext} when necessary.</p>
// /
ATNConfigSet.prototype.add = function(config, mergeCache) {
if (mergeCache === undefined) {
mergeCache = null;
}
if (this.readOnly) {
throw "This set is readonly";
}
if (config.semanticContext !== SemanticContext.NONE) {
this.hasSemanticContext = true;
}
if (config.reachesIntoOuterContext > 0) {
this.dipsIntoOuterContext = true;
}
var existing = this.configLookup.add(config);
if (existing === config) {
this.cachedHashCode = -1;
this.configs.push(config); // track order here
return true;
}
// a previous (s,i,pi,_), merge with it and save result
var rootIsWildcard = !this.fullCtx;
var merged = merge(existing.context, config.context, rootIsWildcard, mergeCache);
// no need to check for existing.context, config.context in cache
// since only way to create new graphs is "call rule" and here. We
// cache at both places.
existing.reachesIntoOuterContext = Math.max( existing.reachesIntoOuterContext, config.reachesIntoOuterContext);
// make sure to preserve the precedence filter suppression during the merge
if (config.precedenceFilterSuppressed) {
existing.precedenceFilterSuppressed = true;
}
existing.context = merged; // replace context; no need to alt mapping
return true;
};
ATNConfigSet.prototype.getStates = function() {
var states = new Set();
for (var i = 0; i < this.configs.length; i++) {
states.add(this.configs[i].state);
}
return states;
};
ATNConfigSet.prototype.getPredicates = function() {
var preds = [];
for (var i = 0; i < this.configs.length; i++) {
var c = this.configs[i].semanticContext;
if (c !== SemanticContext.NONE) {
preds.push(c.semanticContext);
}
}
return preds;
};
Object.defineProperty(ATNConfigSet.prototype, "items", {
get : function() {
return this.configs;
}
});
ATNConfigSet.prototype.optimizeConfigs = function(interpreter) {
if (this.readOnly) {
throw "This set is readonly";
}
if (this.configLookup.length === 0) {
return;
}
for (var i = 0; i < this.configs.length; i++) {
var config = this.configs[i];
config.context = interpreter.getCachedContext(config.context);
}
};
ATNConfigSet.prototype.addAll = function(coll) {
for (var i = 0; i < coll.length; i++) {
this.add(coll[i]);
}
return false;
};
ATNConfigSet.prototype.equals = function(other) {
return this === other ||
(other instanceof ATNConfigSet &&
Utils.equalArrays(this.configs, other.configs) &&
this.fullCtx === other.fullCtx &&
this.uniqueAlt === other.uniqueAlt &&
this.conflictingAlts === other.conflictingAlts &&
this.hasSemanticContext === other.hasSemanticContext &&
this.dipsIntoOuterContext === other.dipsIntoOuterContext);
};
ATNConfigSet.prototype.hashCode = function() {
var hash = new Hash();
this.updateHashCode(hash);
return hash.finish();
};
ATNConfigSet.prototype.updateHashCode = function(hash) {
if (this.readOnly) {
if (this.cachedHashCode === -1) {
var hash = new Hash();
hash.update(this.configs);
this.cachedHashCode = hash.finish();
}
hash.update(this.cachedHashCode);
} else {
hash.update(this.configs);
}
};
Object.defineProperty(ATNConfigSet.prototype, "length", {
get : function() {
return this.configs.length;
}
});
ATNConfigSet.prototype.isEmpty = function() {
return this.configs.length === 0;
};
ATNConfigSet.prototype.contains = function(item) {
if (this.configLookup === null) {
throw "This method is not implemented for readonly sets.";
}
return this.configLookup.contains(item);
};
ATNConfigSet.prototype.containsFast = function(item) {
if (this.configLookup === null) {
throw "This method is not implemented for readonly sets.";
}
return this.configLookup.containsFast(item);
};
ATNConfigSet.prototype.clear = function() {
if (this.readOnly) {
throw "This set is readonly";
}
this.configs = [];
this.cachedHashCode = -1;
this.configLookup = new Set();
};
ATNConfigSet.prototype.setReadonly = function(readOnly) {
this.readOnly = readOnly;
if (readOnly) {
this.configLookup = null; // can't mod, no need for lookup cache
}
};
ATNConfigSet.prototype.toString = function() {
return Utils.arrayToString(this.configs) +
(this.hasSemanticContext ? ",hasSemanticContext=" + this.hasSemanticContext : "") +
(this.uniqueAlt !== ATN.INVALID_ALT_NUMBER ? ",uniqueAlt=" + this.uniqueAlt : "") +
(this.conflictingAlts !== null ? ",conflictingAlts=" + this.conflictingAlts : "") +
(this.dipsIntoOuterContext ? ",dipsIntoOuterContext" : "");
};
function OrderedATNConfigSet() {
ATNConfigSet.call(this);
this.configLookup = new Set();
return this;
}
OrderedATNConfigSet.prototype = Object.create(ATNConfigSet.prototype);
OrderedATNConfigSet.prototype.constructor = OrderedATNConfigSet;
exports.ATNConfigSet = ATNConfigSet;
exports.OrderedATNConfigSet = OrderedATNConfigSet;
},{"./../PredictionContext":15,"./../Utils":19,"./ATN":20,"./SemanticContext":33}],23:[function(require,module,exports){
/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
* Use of this file is governed by the BSD 3-clause license that
* can be found in the LICENSE.txt file in the project root.
*/
function ATNDeserializationOptions(copyFrom) {
if(copyFrom===undefined) {
copyFrom = null;
}
this.readOnly = false;
this.verifyATN = copyFrom===null ? true : copyFrom.verifyATN;
this.generateRuleBypassTransitions = copyFrom===null ? false : copyFrom.generateRuleBypassTransitions;
return this;
}
ATNDeserializationOptions.defaultOptions = new ATNDeserializationOptions();
ATNDeserializationOptions.defaultOptions.readOnly = true;
// def __setattr__(self, key, value):
// if key!="readOnly" and self.readOnly:
// raise Exception("The object is read only.")
// super(type(self), self).__setattr__(key,value)
exports.ATNDeserializationOptions = ATNDeserializationOptions;
},{}],24:[function(require,module,exports){
/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
* Use of this file is governed by the BSD 3-clause license that
* can be found in the LICENSE.txt file in the project root.
*/
var Token = require('./../Token').Token;
var ATN = require('./ATN').ATN;
var ATNType = require('./ATNType').ATNType;
var ATNStates = require('./ATNState');
var ATNState = ATNStates.ATNState;
var BasicState = ATNStates.BasicState;
var DecisionState = ATNStates.DecisionState;
var BlockStartState = ATNStates.BlockStartState;
var BlockEndState = ATNStates.BlockEndState;
var LoopEndState = ATNStates.LoopEndState;
var RuleStartState = ATNStates.RuleStartState;
var RuleStopState = ATNStates.RuleStopState;
var TokensStartState = ATNStates.TokensStartState;
var PlusLoopbackState = ATNStates.PlusLoopbackState;
var StarLoopbackState = ATNStates.StarLoopbackState;
var StarLoopEntryState = ATNStates.StarLoopEntryState;
var PlusBlockStartState = ATNStates.PlusBlockStartState;
var StarBlockStartState = ATNStates.StarBlockStartState;
var BasicBlockStartState = ATNStates.BasicBlockStartState;
var Transitions = require('./Transition');
var Transition = Transitions.Transition;
var AtomTransition = Transitions.AtomTransition;
var SetTransition = Transitions.SetTransition;
var NotSetTransition = Transitions.NotSetTransition;
var RuleTransition = Transitions.RuleTransition;
var RangeTransition = Transitions.RangeTransition;
var ActionTransition = Transitions.ActionTransition;
var EpsilonTransition = Transitions.EpsilonTransition;
var WildcardTransition = Transitions.WildcardTransition;
var PredicateTransition = Transitions.PredicateTransition;
var PrecedencePredicateTransition = Transitions.PrecedencePredicateTransition;
var IntervalSet = require('./../IntervalSet').IntervalSet;
var Interval = require('./../IntervalSet').Interval;
var ATNDeserializationOptions = require('./ATNDeserializationOptions').ATNDeserializationOptions;
var LexerActions = require('./LexerAction');
var LexerActionType = LexerActions.LexerActionType;
var LexerSkipAction = LexerActions.LexerSkipAction;
var LexerChannelAction = LexerActions.LexerChannelAction;
var LexerCustomAction = LexerActions.LexerCustomAction;
var LexerMoreAction = LexerActions.LexerMoreAction;
var LexerTypeAction = LexerActions.LexerTypeAction;
var LexerPushModeAction = LexerActions.LexerPushModeAction;
var LexerPopModeAction = LexerActions.LexerPopModeAction;
var LexerModeAction = LexerActions.LexerModeAction;
// This is the earliest supported serialized UUID.
// stick to serialized version for now, we don't need a UUID instance
var BASE_SERIALIZED_UUID = "AADB8D7E-AEEF-4415-AD2B-8204D6CF042E";
//
// This UUID indicates the serialized ATN contains two sets of
// IntervalSets, where the second set's values are encoded as
// 32-bit integers to support the full Unicode SMP range up to U+10FFFF.
//
var ADDED_UNICODE_SMP = "59627784-3BE5-417A-B9EB-8131A7286089";
// This list contains all of the currently supported UUIDs, ordered by when
// the feature first appeared in this branch.
var SUPPORTED_UUIDS = [ BASE_SERIALIZED_UUID, ADDED_UNICODE_SMP ];
var SERIALIZED_VERSION = 3;
// This is the current serialized UUID.
var SERIALIZED_UUID = ADDED_UNICODE_SMP;
function initArray( length, value) {
var tmp = [];
tmp[length-1] = value;
return tmp.map(function(i) {return value;});
}
function ATNDeserializer (options) {
if ( options=== undefined || options === null ) {
options = ATNDeserializationOptions.defaultOptions;
}
this.deserializationOptions = options;
this.stateFactories = null;
this.actionFactories = null;
return this;
}
// Determines if a particular serialized representation of an ATN supports
// a particular feature, identified by the {@link UUID} used for serializing
// the ATN at the time the feature was first introduced.
//
// @param feature The {@link UUID} marking the first time the feature was
// supported in the serialized ATN.
// @param actualUuid The {@link UUID} of the actual serialized ATN which is
// currently being deserialized.
// @return {@code true} if the {@code actualUuid} value represents a
// serialized ATN at or after the feature identified by {@code feature} was
// introduced; otherwise, {@code false}.
ATNDeserializer.prototype.isFeatureSupported = function(feature, actualUuid) {
var idx1 = SUPPORTED_UUIDS.indexOf(feature);
if (idx1<0) {
return false;
}
var idx2 = SUPPORTED_UUIDS.indexOf(actualUuid);
return idx2 >= idx1;
};
ATNDeserializer.prototype.deserialize = function(data) {
this.reset(data);
this.checkVersion();
this.checkUUID();
var atn = this.readATN();
this.readStates(atn);
this.readRules(atn);
this.readModes(atn);
var sets = [];
// First, deserialize sets with 16-bit arguments <= U+FFFF.
this.readSets(atn, sets, this.readInt.bind(this));
// Next, if the ATN was serialized with the Unicode SMP feature,
// deserialize sets with 32-bit arguments <= U+10FFFF.
if (this.isFeatureSupported(ADDED_UNICODE_SMP, this.uuid)) {
this.readSets(atn, sets, this.readInt32.bind(this));
}
this.readEdges(atn, sets);
this.readDecisions(atn);
this.readLexerActions(atn);
this.markPrecedenceDecisions(atn);
this.verifyATN(atn);
if (this.deserializationOptions.generateRuleBypassTransitions && atn.grammarType === ATNType.PARSER ) {
this.generateRuleBypassTransitions(atn);
// re-verify after modification
this.verifyATN(atn);
}
return atn;
};
ATNDeserializer.prototype.reset = function(data) {
var adjust = function(c) {
var v = c.charCodeAt(0);
return v>1 ? v-2 : v + 65533;
};
var temp = data.split("").map(adjust);
// don't adjust the first value since that's the version number
temp[0] = data.charCodeAt(0);
this.data = temp;
this.pos = 0;
};
ATNDeserializer.prototype.checkVersion = function() {
var version = this.readInt();
if ( version !== SERIALIZED_VERSION ) {
throw ("Could not deserialize ATN with version " + version + " (expected " + SERIALIZED_VERSION + ").");
}
};
ATNDeserializer.prototype.checkUUID = function() {
var uuid = this.readUUID();
if (SUPPORTED_UUIDS.indexOf(uuid)<0) {
throw ("Could not deserialize ATN with UUID: " + uuid +
" (expected " + SERIALIZED_UUID + " or a legacy UUID).", uuid, SERIALIZED_UUID);
}
this.uuid = uuid;
};
ATNDeserializer.prototype.readATN = function() {
var grammarType = this.readInt();
var maxTokenType = this.readInt();
return new ATN(grammarType, maxTokenType);
};
ATNDeserializer.prototype.readStates = function(atn) {
var j, pair, stateNumber;
var loopBackStateNumbers = [];
var endStateNumbers = [];
var nstates = this.readInt();
for(var i=0; i<nstates; i++) {
var stype = this.readInt();
// ignore bad type of states
if (stype===ATNState.INVALID_TYPE) {
atn.addState(null);
continue;
}
var ruleIndex = this.readInt();
if (ruleIndex === 0xFFFF) {
ruleIndex = -1;
}
var s = this.stateFactory(stype, ruleIndex);
if (stype === ATNState.LOOP_END) { // special case
var loopBackStateNumber = this.readInt();
loopBackStateNumbers.push([s, loopBackStateNumber]);
} else if(s instanceof BlockStartState) {
var endStateNumber = this.readInt();
endStateNumbers.push([s, endStateNumber]);
}
atn.addState(s);
}
// delay the assignment of loop back and end states until we know all the
// state instances have been initialized
for (j=0; j<loopBackStateNumbers.length; j++) {
pair = loopBackStateNumbers[j];
pair[0].loopBackState = atn.states[pair[1]];
}
for (j=0; j<endStateNumbers.length; j++) {
pair = endStateNumbers[j];
pair[0].endState = atn.states[pair[1]];
}
var numNonGreedyStates = this.readInt();
for (j=0; j<numNonGreedyStates; j++) {
stateNumber = this.readInt();
atn.states[stateNumber].nonGreedy = true;
}
var numPrecedenceStates = this.readInt();
for (j=0; j<numPrecedenceStates; j++) {
stateNumber = this.readInt();
atn.states[stateNumber].isPrecedenceRule = true;
}
};
ATNDeserializer.prototype.readRules = function(atn) {
var i;
var nrules = this.readInt();
if (atn.grammarType === ATNType.LEXER ) {
atn.ruleToTokenType = initArray(nrules, 0);
}
atn.ruleToStartState = initArray(nrules, 0);
for (i=0; i<nrules; i++) {
var s = this.readInt();
var startState = atn.states[s];
atn.ruleToStartState[i] = startState;
if ( atn.grammarType === ATNType.LEXER ) {
var tokenType = this.readInt();
if (tokenType === 0xFFFF) {
tokenType = Token.EOF;
}
atn.ruleToTokenType[i] = tokenType;
}
}
atn.ruleToStopState = initArray(nrules, 0);
for (i=0; i<atn.states.length; i++) {
var state = atn.states[i];
if (!(state instanceof RuleStopState)) {
continue;
}
atn.ruleToStopState[state.ruleIndex] = state;
atn.ruleToStartState[state.ruleIndex].stopState = state;
}
};
ATNDeserializer.prototype.readModes = function(atn) {
var nmodes = this.readInt();
for (var i=0; i<nmodes; i++) {
var s = this.readInt();
atn.modeToStartState.push(atn.states[s]);
}
};
ATNDeserializer.prototype.readSets = function(atn, sets, readUnicode) {
var m = this.readInt();
for (var i=0; i<m; i++) {
var iset = new IntervalSet();
sets.push(iset);
var n = this.readInt();
var containsEof = this.readInt();
if (containsEof!==0) {
iset.addOne(-1);
}
for (var j=0; j<n; j++) {
var i1 = readUnicode();
var i2 = readUnicode();
iset.addRange(i1, i2);
}
}
};
ATNDeserializer.prototype.readEdges = function(atn, sets) {
var i, j, state, trans, target;
var nedges = this.readInt();
for (i=0; i<nedges; i++) {
var src = this.readInt();
var trg = this.readInt();
var ttype = this.readInt();
var arg1 = this.readInt();
var arg2 = this.readInt();
var arg3 = this.readInt();
trans = this.edgeFactory(atn, ttype, src, trg, arg1, arg2, arg3, sets);
var srcState = atn.states[src];
srcState.addTransition(trans);
}
// edges for rule stop states can be derived, so they aren't serialized
for (i=0; i<atn.states.length; i++) {
state = atn.states[i];
for (j=0; j<state.transitions.length; j++) {
var t = state.transitions[j];
if (!(t instanceof RuleTransition)) {
continue;
}
var outermostPrecedenceReturn = -1;
if (atn.ruleToStartState[t.target.ruleIndex].isPrecedenceRule) {
if (t.precedence === 0) {
outermostPrecedenceReturn = t.target.ruleIndex;
}
}
trans = new EpsilonTransition(t.followState, outermostPrecedenceReturn);
atn.ruleToStopState[t.target.ruleIndex].addTransition(trans);
}
}
for (i=0; i<atn.states.length; i++) {
state = atn.states[i];
if (state instanceof BlockStartState) {
// we need to know the end state to set its start state
if (state.endState === null) {
throw ("IllegalState");
}
// block end states can only be associated to a single block start
// state
if ( state.endState.startState !== null) {
throw ("IllegalState");
}
state.endState.startState = state;
}
if (state instanceof PlusLoopbackState) {
for (j=0; j<state.transitions.length; j++) {
target = state.transitions[j].target;
if (target instanceof PlusBlockStartState) {
target.loopBackState = state;
}
}
} else if (state instanceof StarLoopbackState) {
for (j=0; j<state.transitions.length; j++) {
target = state.transitions[j].target;
if (target instanceof StarLoopEntryState) {
target.loopBackState = state;
}
}
}
}
};
ATNDeserializer.prototype.readDecisions = function(atn) {
var ndecisions = this.readInt();
for (var i=0; i<ndecisions; i++) {
var s = this.readInt();
var decState = atn.states[s];
atn.decisionToState.push(decState);
decState.decision = i;
}
};
ATNDeserializer.prototype.readLexerActions = function(atn) {
if (atn.grammarType === ATNType.LEXER) {
var count = this.readInt();
atn.lexerActions = initArray(count, null);
for (var i=0; i<count; i++) {
var actionType = this.readInt();
var data1 = this.readInt();
if (data1 === 0xFFFF) {
data1 = -1;
}
var data2 = this.readInt();
if (data2 === 0xFFFF) {
data2 = -1;
}
var lexerAction = this.lexerActionFactory(actionType, data1, data2);
atn.lexerActions[i] = lexerAction;
}
}
};
ATNDeserializer.prototype.generateRuleBypassTransitions = function(atn) {
var i;
var count = atn.ruleToStartState.length;
for(i=0; i<count; i++) {
atn.ruleToTokenType[i] = atn.maxTokenType + i + 1;
}
for(i=0; i<count; i++) {
this.generateRuleBypassTransition(atn, i);
}
};
ATNDeserializer.prototype.generateRuleBypassTransition = function(atn, idx) {
var i, state;
var bypassStart = new BasicBlockStartState();
bypassStart.ruleIndex = idx;
atn.addState(bypassStart);
var bypassStop = new BlockEndState();
bypassStop.ruleIndex = idx;
atn.addState(bypassStop);
bypassStart.endState = bypassStop;
atn.defineDecisionState(bypassStart);
bypassStop.startState = bypassStart;
var excludeTransition = null;
var endState = null;
if (atn.ruleToStartState[idx].isPrecedenceRule) {
// wrap from the beginning of the rule to the StarLoopEntryState
endState = null;
for(i=0; i<atn.states.length; i++) {
state = atn.states[i];
if (this.stateIsEndStateFor(state, idx)) {
endState = state;
excludeTransition = state.loopBackState.transitions[0];
break;
}
}
if (excludeTransition === null) {
throw ("Couldn't identify final state of the precedence rule prefix section.");
}
} else {
endState = atn.ruleToStopState[idx];
}
// all non-excluded transitions that currently target end state need to
// target blockEnd instead
for(i=0; i<atn.states.length; i++) {
state = atn.states[i];
for(var j=0; j<state.transitions.length; j++) {
var transition = state.transitions[j];
if (transition === excludeTransition) {
continue;
}
if (transition.target === endState) {
transition.target = bypassStop;
}
}
}
// all transitions leaving the rule start state need to leave blockStart
// instead
var ruleToStartState = atn.ruleToStartState[idx];
var count = ruleToStartState.transitions.length;
while ( count > 0) {
bypassStart.addTransition(ruleToStartState.transitions[count-1]);
ruleToStartState.transitions = ruleToStartState.transitions.slice(-1);
}
// link the new states
atn.ruleToStartState[idx].addTransition(new EpsilonTransition(bypassStart));
bypassStop.addTransition(new EpsilonTransition(endState));
var matchState = new BasicState();
atn.addState(matchState);
matchState.addTransition(new AtomTransition(bypassStop, atn.ruleToTokenType[idx]));
bypassStart.addTransition(new EpsilonTransition(matchState));
};
ATNDeserializer.prototype.stateIsEndStateFor = function(state, idx) {
if ( state.ruleIndex !== idx) {
return null;
}
if (!( state instanceof StarLoopEntryState)) {
return null;
}
var maybeLoopEndState = state.transitions[state.transitions.length - 1].target;
if (!( maybeLoopEndState instanceof LoopEndState)) {
return null;
}
if (maybeLoopEndState.epsilonOnlyTransitions &&
(maybeLoopEndState.transitions[0].target instanceof RuleStopState)) {
return state;
} else {
return null;
}
};
//
// Analyze the {@link StarLoopEntryState} states in the specified ATN to set
// the {@link StarLoopEntryState//isPrecedenceDecision} field to the
// correct value.
//
// @param atn The ATN.
//
ATNDeserializer.prototype.markPrecedenceDecisions = function(atn) {
for(var i=0; i<atn.states.length; i++) {
var state = atn.states[i];
if (!( state instanceof StarLoopEntryState)) {
continue;
}
// We analyze the ATN to determine if this ATN decision state is the
// decision for the closure block that determines whether a
// precedence rule should continue or complete.
//
if ( atn.ruleToStartState[state.ruleIndex].isPrecedenceRule) {
var maybeLoopEndState = state.transitions[state.transitions.length - 1].target;
if (maybeLoopEndState instanceof LoopEndState) {
if ( maybeLoopEndState.epsilonOnlyTransitions &&
(maybeLoopEndState.transitions[0].target instanceof RuleStopState)) {
state.isPrecedenceDecision = true;
}
}
}
}
};
ATNDeserializer.prototype.verifyATN = function(atn) {
if (!this.deserializationOptions.verifyATN) {
return;
}
// verify assumptions
for(var i=0; i<atn.states.length; i++) {
var state = atn.states[i];
if (state === null) {
continue;
}
this.checkCondition(state.epsilonOnlyTransitions || state.transitions.length <= 1);
if (state instanceof PlusBlockStartState) {
this.checkCondition(state.loopBackState !== null);
} else if (state instanceof StarLoopEntryState) {
this.checkCondition(state.loopBackState !== null);
this.checkCondition(state.transitions.length === 2);
if (state.transitions[0].target instanceof StarBlockStartState) {
this.checkCondition(state.transitions[1].target instanceof LoopEndState);
this.checkCondition(!state.nonGreedy);
} else if (state.transitions[0].target instanceof LoopEndState) {
this.checkCondition(state.transitions[1].target instanceof StarBlockStartState);
this.checkCondition(state.nonGreedy);
} else {
throw("IllegalState");
}
} else if (state instanceof StarLoopbackState) {
this.checkCondition(state.transitions.length === 1);
this.checkCondition(state.transitions[0].target instanceof StarLoopEntryState);
} else if (state instanceof LoopEndState) {
this.checkCondition(state.loopBackState !== null);
} else if (state instanceof RuleStartState) {
this.checkCondition(state.stopState !== null);
} else if (state instanceof BlockStartState) {
this.checkCondition(state.endState !== null);
} else if (state instanceof BlockEndState) {
this.checkCondition(state.startState !== null);
} else if (state instanceof DecisionState) {
this.checkCondition(state.transitions.length <= 1 || state.decision >= 0);
} else {
this.checkCondition(state.transitions.length <= 1 || (state instanceof RuleStopState));
}
}
};
ATNDeserializer.prototype.checkCondition = function(condition, message) {
if (!condition) {
if (message === undefined || message===null) {
message = "IllegalState";
}
throw (message);
}
};
ATNDeserializer.prototype.readInt = function() {
return this.data[this.pos++];
};
ATNDeserializer.prototype.readInt32 = function() {
var low = this.readInt();
var high = this.readInt();
return low | (high << 16);
};
ATNDeserializer.prototype.readLong = function() {
var low = this.readInt32();
var high = this.readInt32();
return (low & 0x00000000FFFFFFFF) | (high << 32);
};
function createByteToHex() {
var bth = [];
for (var i = 0; i < 256; i++) {
bth[i] = (i + 0x100).toString(16).substr(1).toUpperCase();
}
return bth;
}
var byteToHex = createByteToHex();
ATNDeserializer.prototype.readUUID = function() {
var bb = [];
for(var i=7;i>=0;i--) {
var int = this.readInt();
/* jshint bitwise: false */
bb[(2*i)+1] = int & 0xFF;
bb[2*i] = (int >> 8) & 0xFF;
}
return byteToHex[bb[0]] + byteToHex[bb[1]] +
byteToHex[bb[2]] + byteToHex[bb[3]] + '-' +
byteToHex[bb[4]] + byteToHex[bb[5]] + '-' +
byteToHex[bb[6]] + byteToHex[bb[7]] + '-' +
byteToHex[bb[8]] + byteToHex[bb[9]] + '-' +
byteToHex[bb[10]] + byteToHex[bb[11]] +
byteToHex[bb[12]] + byteToHex[bb[13]] +
byteToHex[bb[14]] + byteToHex[bb[15]];
};
ATNDeserializer.prototype.edgeFactory = function(atn, type, src, trg, arg1, arg2, arg3, sets) {
var target = atn.states[trg];
switch(type) {
case Transition.EPSILON:
return new EpsilonTransition(target);
case Transition.RANGE:
return arg3 !== 0 ? new RangeTransition(target, Token.EOF, arg2) : new RangeTransition(target, arg1, arg2);
case Transition.RULE:
return new RuleTransition(atn.states[arg1], arg2, arg3, target);
case Transition.PREDICATE:
return new PredicateTransition(target, arg1, arg2, arg3 !== 0);
case Transition.PRECEDENCE:
return new PrecedencePredicateTransition(target, arg1);
case Transition.ATOM:
return arg3 !== 0 ? new AtomTransition(target, Token.EOF) : new AtomTransition(target, arg1);
case Transition.ACTION:
return new ActionTransition(target, arg1, arg2, arg3 !== 0);
case Transition.SET:
return new SetTransition(target, sets[arg1]);
case Transition.NOT_SET:
return new NotSetTransition(target, sets[arg1]);
case Transition.WILDCARD:
return new WildcardTransition(target);
default:
throw "The specified transition type: " + type + " is not valid.";
}
};
ATNDeserializer.prototype.stateFactory = function(type, ruleIndex) {
if (this.stateFactories === null) {
var sf = [];
sf[ATNState.INVALID_TYPE] = null;
sf[ATNState.BASIC] = function() { return new BasicState(); };
sf[ATNState.RULE_START] = function() { return new RuleStartState(); };
sf[ATNState.BLOCK_START] = function() { return new BasicBlockStartState(); };
sf[ATNState.PLUS_BLOCK_START] = function() { return new PlusBlockStartState(); };
sf[ATNState.STAR_BLOCK_START] = function() { return new StarBlockStartState(); };
sf[ATNState.TOKEN_START] = function() { return new TokensStartState(); };
sf[ATNState.RULE_STOP] = function() { return new RuleStopState(); };
sf[ATNState.BLOCK_END] = function() { return new BlockEndState(); };
sf[ATNState.STAR_LOOP_BACK] = function() { return new StarLoopbackState(); };
sf[ATNState.STAR_LOOP_ENTRY] = function() { return new StarLoopEntryState(); };
sf[ATNState.PLUS_LOOP_BACK] = function() { return new PlusLoopbackState(); };
sf[ATNState.LOOP_END] = function() { return new LoopEndState(); };
this.stateFactories = sf;
}
if (type>this.stateFactories.length || this.stateFactories[type] === null) {
throw("The specified state type " + type + " is not valid.");
} else {
var s = this.stateFactories[type]();
if (s!==null) {
s.ruleIndex = ruleIndex;
return s;
}
}
};
ATNDeserializer.prototype.lexerActionFactory = function(type, data1, data2) {
if (this.actionFactories === null) {
var af = [];
af[LexerActionType.CHANNEL] = function(data1, data2) { return new LexerChannelAction(data1); };
af[LexerActionType.CUSTOM] = function(data1, data2) { return new LexerCustomAction(data1, data2); };
af[LexerActionType.MODE] = function(data1, data2) { return new LexerModeAction(data1); };
af[LexerActionType.MORE] = function(data1, data2) { return LexerMoreAction.INSTANCE; };
af[LexerActionType.POP_MODE] = function(data1, data2) { return LexerPopModeAction.INSTANCE; };
af[LexerActionType.PUSH_MODE] = function(data1, data2) { ret
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment