Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
js.lib.prompto.core.bundle.js Maven / Gradle / Ivy
/******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId])
/******/ return installedModules[moduleId].exports;
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ exports: {},
/******/ id: moduleId,
/******/ loaded: false
/******/ };
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/ // Flag the module as loaded
/******/ module.loaded = true;
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/ // Load entry module and return exports
/******/ return __webpack_require__(0);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, exports, __webpack_require__) {
/* WEBPACK VAR INJECTION */(function(global) {exports.antlr4 = __webpack_require__(1);
exports.prompto = __webpack_require__(49);
const globals = global || window || self || this;
globals.antlr4 = exports.antlr4;
globals.prompto = exports.prompto;
/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
/***/ }),
/* 1 */
/***/ (function(module, exports, __webpack_require__) {
/* 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.
*/
exports.atn = __webpack_require__(2);
exports.codepointat = __webpack_require__(33);
exports.dfa = __webpack_require__(34);
exports.fromcodepoint = __webpack_require__(37);
exports.tree = __webpack_require__(38);
exports.error = __webpack_require__(39);
exports.Token = __webpack_require__(6).Token;
exports.CharStreams = __webpack_require__(42).CharStreams;
exports.CommonToken = __webpack_require__(6).CommonToken;
exports.InputStream = __webpack_require__(43).InputStream;
exports.FileStream = __webpack_require__(45).FileStream;
exports.CommonTokenStream = __webpack_require__(46).CommonTokenStream;
exports.Lexer = __webpack_require__(22).Lexer;
exports.Parser = __webpack_require__(48).Parser;
var pc = __webpack_require__(12);
exports.PredictionContextCache = pc.PredictionContextCache;
exports.ParserRuleContext = __webpack_require__(16).ParserRuleContext;
exports.Interval = __webpack_require__(10).Interval;
exports.Utils = __webpack_require__(5);
/***/ }),
/* 2 */
/***/ (function(module, exports, __webpack_require__) {
/* 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.
*/
exports.ATN = __webpack_require__(3).ATN;
exports.ATNDeserializer = __webpack_require__(17).ATNDeserializer;
exports.LexerATNSimulator = __webpack_require__(21).LexerATNSimulator;
exports.ParserATNSimulator = __webpack_require__(31).ParserATNSimulator;
exports.PredictionMode = __webpack_require__(32).PredictionMode;
/***/ }),
/* 3 */
/***/ (function(module, exports, __webpack_require__) {
/* 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 = __webpack_require__(4).LL1Analyzer;
var IntervalSet = __webpack_require__(10).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.
//
// If {@code context} is {@code null}, it is treated as
// {@link ParserRuleContext//EMPTY}.
//
// @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 = __webpack_require__(6).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;
/***/ }),
/* 4 */
/***/ (function(module, exports, __webpack_require__) {
//
/* 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 = __webpack_require__(5).Set;
var BitSet = __webpack_require__(5).BitSet;
var Token = __webpack_require__(6).Token;
var ATNConfig = __webpack_require__(7).ATNConfig;
var Interval = __webpack_require__(10).Interval;
var IntervalSet = __webpack_require__(10).IntervalSet;
var RuleStopState = __webpack_require__(8).RuleStopState;
var RuleTransition = __webpack_require__(11).RuleTransition;
var NotSetTransition = __webpack_require__(11).NotSetTransition;
var WildcardTransition = __webpack_require__(11).WildcardTransition;
var AbstractPredicateTransition = __webpack_require__(11).AbstractPredicateTransition;
var pc = __webpack_require__(12);
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
// i leads to a semantic predicate before matching a symbol, the
// element at index i 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}.
//
// 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.
//
// @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}.
//
// 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.
//
// @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} 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>> 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>> (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;
/***/ }),
/* 6 */
/***/ (function(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}.
//
//
// 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}.
//
// @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 "";
}
},
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 = "";
}
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;
/***/ }),
/* 7 */
/***/ (function(module, exports, __webpack_require__) {
//
/* 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 = __webpack_require__(8).DecisionState;
var SemanticContext = __webpack_require__(9).SemanticContext;
var Hash = __webpack_require__(5).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 > 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;
/***/ }),
/* 8 */
/***/ (function(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.
*/
//
// The following images show the relation of states and
// {@link ATNState//transitions} for various grammar constructs.
//
//
//
// Solid edges marked with an &//0949; indicate a required
// {@link EpsilonTransition}.
//
// Dashed edges indicate locations where any transition derived from
// {@link Transition} might appear.
//
// Dashed nodes are place holders for either a sequence of linked
// {@link BasicState} states or the inclusion of a block representing a nested
// construct in one of the forms below.
//
// Nodes showing multiple outgoing alternatives with a {@code ...} support
// any number of alternatives (one or more). Nodes without the {@code ...} only
// support the exact number of alternatives shown in the diagram.
//
//
//
// Basic Blocks
//
// Rule
//
//
//
// Block of 1 or more alternatives
//
//
//
// Greedy Loops
//
// Greedy Closure: {@code (...)*}
//
//
//
// Greedy Positive Closure: {@code (...)+}
//
//
//
// Greedy Optional: {@code (...)?}
//
//
//
// Non-Greedy Loops
//
// Non-Greedy Closure: {@code (...)*?}
//
//
//
// Non-Greedy Positive Closure: {@code (...)+?}
//
//
//
// Non-Greedy Optional: {@code (...)??}
//
//
//
var INITIAL_NUM_TRANSITIONS = 4;
function ATNState() {
// Which ATN are we in?
this.atn = null;
this.stateNumber = ATNState.INVALID_STATE_NUMBER;
this.stateType = null;
this.ruleIndex = 0; // at runtime, we don't have Rule objects
this.epsilonOnlyTransitions = false;
// Track the transitions emanating from this ATN state.
this.transitions = [];
// Used to cache lookahead during parsing, not used during construction
this.nextTokenWithinRule = null;
return this;
}
// constants for serialization
ATNState.INVALID_TYPE = 0;
ATNState.BASIC = 1;
ATNState.RULE_START = 2;
ATNState.BLOCK_START = 3;
ATNState.PLUS_BLOCK_START = 4;
ATNState.STAR_BLOCK_START = 5;
ATNState.TOKEN_START = 6;
ATNState.RULE_STOP = 7;
ATNState.BLOCK_END = 8;
ATNState.STAR_LOOP_BACK = 9;
ATNState.STAR_LOOP_ENTRY = 10;
ATNState.PLUS_LOOP_BACK = 11;
ATNState.LOOP_END = 12;
ATNState.serializationNames = [
"INVALID",
"BASIC",
"RULE_START",
"BLOCK_START",
"PLUS_BLOCK_START",
"STAR_BLOCK_START",
"TOKEN_START",
"RULE_STOP",
"BLOCK_END",
"STAR_LOOP_BACK",
"STAR_LOOP_ENTRY",
"PLUS_LOOP_BACK",
"LOOP_END" ];
ATNState.INVALID_STATE_NUMBER = -1;
ATNState.prototype.toString = function() {
return this.stateNumber;
};
ATNState.prototype.equals = function(other) {
if (other instanceof ATNState) {
return this.stateNumber===other.stateNumber;
} else {
return false;
}
};
ATNState.prototype.isNonGreedyExitState = function() {
return false;
};
ATNState.prototype.addTransition = function(trans, index) {
if(index===undefined) {
index = -1;
}
if (this.transitions.length===0) {
this.epsilonOnlyTransitions = trans.isEpsilon;
} else if(this.epsilonOnlyTransitions !== trans.isEpsilon) {
this.epsilonOnlyTransitions = false;
}
if (index===-1) {
this.transitions.push(trans);
} else {
this.transitions.splice(index, 1, trans);
}
};
function BasicState() {
ATNState.call(this);
this.stateType = ATNState.BASIC;
return this;
}
BasicState.prototype = Object.create(ATNState.prototype);
BasicState.prototype.constructor = BasicState;
function DecisionState() {
ATNState.call(this);
this.decision = -1;
this.nonGreedy = false;
return this;
}
DecisionState.prototype = Object.create(ATNState.prototype);
DecisionState.prototype.constructor = DecisionState;
// The start of a regular {@code (...)} block.
function BlockStartState() {
DecisionState.call(this);
this.endState = null;
return this;
}
BlockStartState.prototype = Object.create(DecisionState.prototype);
BlockStartState.prototype.constructor = BlockStartState;
function BasicBlockStartState() {
BlockStartState.call(this);
this.stateType = ATNState.BLOCK_START;
return this;
}
BasicBlockStartState.prototype = Object.create(BlockStartState.prototype);
BasicBlockStartState.prototype.constructor = BasicBlockStartState;
// Terminal node of a simple {@code (a|b|c)} block.
function BlockEndState() {
ATNState.call(this);
this.stateType = ATNState.BLOCK_END;
this.startState = null;
return this;
}
BlockEndState.prototype = Object.create(ATNState.prototype);
BlockEndState.prototype.constructor = BlockEndState;
// The last node in the ATN for a rule, unless that rule is the start symbol.
// In that case, there is one transition to EOF. Later, we might encode
// references to all calls to this rule to compute FOLLOW sets for
// error handling.
//
function RuleStopState() {
ATNState.call(this);
this.stateType = ATNState.RULE_STOP;
return this;
}
RuleStopState.prototype = Object.create(ATNState.prototype);
RuleStopState.prototype.constructor = RuleStopState;
function RuleStartState() {
ATNState.call(this);
this.stateType = ATNState.RULE_START;
this.stopState = null;
this.isPrecedenceRule = false;
return this;
}
RuleStartState.prototype = Object.create(ATNState.prototype);
RuleStartState.prototype.constructor = RuleStartState;
// Decision state for {@code A+} and {@code (A|B)+}. It has two transitions:
// one to the loop back to start of the block and one to exit.
//
function PlusLoopbackState() {
DecisionState.call(this);
this.stateType = ATNState.PLUS_LOOP_BACK;
return this;
}
PlusLoopbackState.prototype = Object.create(DecisionState.prototype);
PlusLoopbackState.prototype.constructor = PlusLoopbackState;
// Start of {@code (A|B|...)+} loop. Technically a decision state, but
// we don't use for code generation; somebody might need it, so I'm defining
// it for completeness. In reality, the {@link PlusLoopbackState} node is the
// real decision-making note for {@code A+}.
//
function PlusBlockStartState() {
BlockStartState.call(this);
this.stateType = ATNState.PLUS_BLOCK_START;
this.loopBackState = null;
return this;
}
PlusBlockStartState.prototype = Object.create(BlockStartState.prototype);
PlusBlockStartState.prototype.constructor = PlusBlockStartState;
// The block that begins a closure loop.
function StarBlockStartState() {
BlockStartState.call(this);
this.stateType = ATNState.STAR_BLOCK_START;
return this;
}
StarBlockStartState.prototype = Object.create(BlockStartState.prototype);
StarBlockStartState.prototype.constructor = StarBlockStartState;
function StarLoopbackState() {
ATNState.call(this);
this.stateType = ATNState.STAR_LOOP_BACK;
return this;
}
StarLoopbackState.prototype = Object.create(ATNState.prototype);
StarLoopbackState.prototype.constructor = StarLoopbackState;
function StarLoopEntryState() {
DecisionState.call(this);
this.stateType = ATNState.STAR_LOOP_ENTRY;
this.loopBackState = null;
// Indicates whether this state can benefit from a precedence DFA during SLL decision making.
this.isPrecedenceDecision = null;
return this;
}
StarLoopEntryState.prototype = Object.create(DecisionState.prototype);
StarLoopEntryState.prototype.constructor = StarLoopEntryState;
// Mark the end of a * or + loop.
function LoopEndState() {
ATNState.call(this);
this.stateType = ATNState.LOOP_END;
this.loopBackState = null;
return this;
}
LoopEndState.prototype = Object.create(ATNState.prototype);
LoopEndState.prototype.constructor = LoopEndState;
// The Tokens rule start state linking to each lexer rule start state */
function TokensStartState() {
DecisionState.call(this);
this.stateType = ATNState.TOKEN_START;
return this;
}
TokensStartState.prototype = Object.create(DecisionState.prototype);
TokensStartState.prototype.constructor = TokensStartState;
exports.ATNState = ATNState;
exports.BasicState = BasicState;
exports.DecisionState = DecisionState;
exports.BlockStartState = BlockStartState;
exports.BlockEndState = BlockEndState;
exports.LoopEndState = LoopEndState;
exports.RuleStartState = RuleStartState;
exports.RuleStopState = RuleStopState;
exports.TokensStartState = TokensStartState;
exports.PlusLoopbackState = PlusLoopbackState;
exports.StarLoopbackState = StarLoopbackState;
exports.StarLoopEntryState = StarLoopEntryState;
exports.PlusBlockStartState = PlusBlockStartState;
exports.StarBlockStartState = StarBlockStartState;
exports.BasicBlockStartState = BasicBlockStartState;
/***/ }),
/* 9 */
/***/ (function(module, exports, __webpack_require__) {
//
/* 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 tree structure used to record the semantic context in which
// an ATN configuration is valid. It's either a single predicate,
// a conjunction {@code p1&&p2}, or a sum of products {@code p1||p2}.
//
// I have scoped the {@link AND}, {@link OR}, and {@link Predicate} subclasses of
// {@link SemanticContext} within the scope of this outer class.
//
var Set = __webpack_require__(5).Set;
var Hash = __webpack_require__(5).Hash;
function SemanticContext() {
return this;
}
SemanticContext.prototype.hashCode = function() {
var hash = new Hash();
this.updateHashCode(hash);
return hash.finish();
};
// For context independent predicates, we evaluate them without a local
// context (i.e., null context). That way, we can evaluate them without
// having to create proper rule-specific context during prediction (as
// opposed to the parser, which creates them naturally). In a practical
// sense, this avoids a cast exception from RuleContext to myruleContext.
//
// For context dependent predicates, we must pass in a local context so that
// references such as $arg evaluate properly as _localctx.arg. We only
// capture context dependent predicates in the context in which we begin
// prediction, so we passed in the outer context here in case of context
// dependent predicate evaluation.
//
SemanticContext.prototype.evaluate = function(parser, outerContext) {
};
//
// Evaluate the precedence predicates for the context and reduce the result.
//
// @param parser The parser instance.
// @param outerContext The current parser context object.
// @return The simplified semantic context after precedence predicates are
// evaluated, which will be one of the following values.
//
// {@link //NONE}: if the predicate simplifies to {@code true} after
// precedence predicates are evaluated.
// {@code null}: if the predicate simplifies to {@code false} after
// precedence predicates are evaluated.
// {@code this}: if the semantic context is not changed as a result of
// precedence predicate evaluation.
// A non-{@code null} {@link SemanticContext}: the new simplified
// semantic context after precedence predicates are evaluated.
//
//
SemanticContext.prototype.evalPrecedence = function(parser, outerContext) {
return this;
};
SemanticContext.andContext = function(a, b) {
if (a === null || a === SemanticContext.NONE) {
return b;
}
if (b === null || b === SemanticContext.NONE) {
return a;
}
var result = new AND(a, b);
if (result.opnds.length === 1) {
return result.opnds[0];
} else {
return result;
}
};
SemanticContext.orContext = function(a, b) {
if (a === null) {
return b;
}
if (b === null) {
return a;
}
if (a === SemanticContext.NONE || b === SemanticContext.NONE) {
return SemanticContext.NONE;
}
var result = new OR(a, b);
if (result.opnds.length === 1) {
return result.opnds[0];
} else {
return result;
}
};
function Predicate(ruleIndex, predIndex, isCtxDependent) {
SemanticContext.call(this);
this.ruleIndex = ruleIndex === undefined ? -1 : ruleIndex;
this.predIndex = predIndex === undefined ? -1 : predIndex;
this.isCtxDependent = isCtxDependent === undefined ? false : isCtxDependent; // e.g., $i ref in pred
return this;
}
Predicate.prototype = Object.create(SemanticContext.prototype);
Predicate.prototype.constructor = Predicate;
//The default {@link SemanticContext}, which is semantically equivalent to
//a predicate of the form {@code {true}?}.
//
SemanticContext.NONE = new Predicate();
Predicate.prototype.evaluate = function(parser, outerContext) {
var localctx = this.isCtxDependent ? outerContext : null;
return parser.sempred(localctx, this.ruleIndex, this.predIndex);
};
Predicate.prototype.updateHashCode = function(hash) {
hash.update(this.ruleIndex, this.predIndex, this.isCtxDependent);
};
Predicate.prototype.equals = function(other) {
if (this === other) {
return true;
} else if (!(other instanceof Predicate)) {
return false;
} else {
return this.ruleIndex === other.ruleIndex &&
this.predIndex === other.predIndex &&
this.isCtxDependent === other.isCtxDependent;
}
};
Predicate.prototype.toString = function() {
return "{" + this.ruleIndex + ":" + this.predIndex + "}?";
};
function PrecedencePredicate(precedence) {
SemanticContext.call(this);
this.precedence = precedence === undefined ? 0 : precedence;
}
PrecedencePredicate.prototype = Object.create(SemanticContext.prototype);
PrecedencePredicate.prototype.constructor = PrecedencePredicate;
PrecedencePredicate.prototype.evaluate = function(parser, outerContext) {
return parser.precpred(outerContext, this.precedence);
};
PrecedencePredicate.prototype.evalPrecedence = function(parser, outerContext) {
if (parser.precpred(outerContext, this.precedence)) {
return SemanticContext.NONE;
} else {
return null;
}
};
PrecedencePredicate.prototype.compareTo = function(other) {
return this.precedence - other.precedence;
};
PrecedencePredicate.prototype.updateHashCode = function(hash) {
hash.update(31);
};
PrecedencePredicate.prototype.equals = function(other) {
if (this === other) {
return true;
} else if (!(other instanceof PrecedencePredicate)) {
return false;
} else {
return this.precedence === other.precedence;
}
};
PrecedencePredicate.prototype.toString = function() {
return "{"+this.precedence+">=prec}?";
};
PrecedencePredicate.filterPrecedencePredicates = function(set) {
var result = [];
set.values().map( function(context) {
if (context instanceof PrecedencePredicate) {
result.push(context);
}
});
return result;
};
// A semantic context which is true whenever none of the contained contexts
// is false.
//
function AND(a, b) {
SemanticContext.call(this);
var operands = new Set();
if (a instanceof AND) {
a.opnds.map(function(o) {
operands.add(o);
});
} else {
operands.add(a);
}
if (b instanceof AND) {
b.opnds.map(function(o) {
operands.add(o);
});
} else {
operands.add(b);
}
var precedencePredicates = PrecedencePredicate.filterPrecedencePredicates(operands);
if (precedencePredicates.length > 0) {
// interested in the transition with the lowest precedence
var reduced = null;
precedencePredicates.map( function(p) {
if(reduced===null || p.precedence
// The evaluation of predicates by this context is short-circuiting, but
// unordered.
//
AND.prototype.evaluate = function(parser, outerContext) {
for (var i = 0; i < this.opnds.length; i++) {
if (!this.opnds[i].evaluate(parser, outerContext)) {
return false;
}
}
return true;
};
AND.prototype.evalPrecedence = function(parser, outerContext) {
var differs = false;
var operands = [];
for (var i = 0; i < this.opnds.length; i++) {
var context = this.opnds[i];
var evaluated = context.evalPrecedence(parser, outerContext);
differs |= (evaluated !== context);
if (evaluated === null) {
// The AND context is false if any element is false
return null;
} else if (evaluated !== SemanticContext.NONE) {
// Reduce the result by skipping true elements
operands.push(evaluated);
}
}
if (!differs) {
return this;
}
if (operands.length === 0) {
// all elements were true, so the AND context is true
return SemanticContext.NONE;
}
var result = null;
operands.map(function(o) {
result = result === null ? o : SemanticContext.andContext(result, o);
});
return result;
};
AND.prototype.toString = function() {
var s = "";
this.opnds.map(function(o) {
s += "&& " + o.toString();
});
return s.length > 3 ? s.slice(3) : s;
};
//
// A semantic context which is true whenever at least one of the contained
// contexts is true.
//
function OR(a, b) {
SemanticContext.call(this);
var operands = new Set();
if (a instanceof OR) {
a.opnds.map(function(o) {
operands.add(o);
});
} else {
operands.add(a);
}
if (b instanceof OR) {
b.opnds.map(function(o) {
operands.add(o);
});
} else {
operands.add(b);
}
var precedencePredicates = PrecedencePredicate.filterPrecedencePredicates(operands);
if (precedencePredicates.length > 0) {
// interested in the transition with the highest precedence
var s = precedencePredicates.sort(function(a, b) {
return a.compareTo(b);
});
var reduced = s[s.length-1];
operands.add(reduced);
}
this.opnds = operands.values();
return this;
}
OR.prototype = Object.create(SemanticContext.prototype);
OR.prototype.constructor = OR;
OR.prototype.constructor = function(other) {
if (this === other) {
return true;
} else if (!(other instanceof OR)) {
return false;
} else {
return this.opnds === other.opnds;
}
};
OR.prototype.updateHashCode = function(hash) {
hash.update(this.opnds, "OR");
};
//
// The evaluation of predicates by this context is short-circuiting, but
// unordered.
//
OR.prototype.evaluate = function(parser, outerContext) {
for (var i = 0; i < this.opnds.length; i++) {
if (this.opnds[i].evaluate(parser, outerContext)) {
return true;
}
}
return false;
};
OR.prototype.evalPrecedence = function(parser, outerContext) {
var differs = false;
var operands = [];
for (var i = 0; i < this.opnds.length; i++) {
var context = this.opnds[i];
var evaluated = context.evalPrecedence(parser, outerContext);
differs |= (evaluated !== context);
if (evaluated === SemanticContext.NONE) {
// The OR context is true if any element is true
return SemanticContext.NONE;
} else if (evaluated !== null) {
// Reduce the result by skipping false elements
operands.push(evaluated);
}
}
if (!differs) {
return this;
}
if (operands.length === 0) {
// all elements were false, so the OR context is false
return null;
}
var result = null;
operands.map(function(o) {
return result === null ? o : SemanticContext.orContext(result, o);
});
return result;
};
OR.prototype.toString = function() {
var s = "";
this.opnds.map(function(o) {
s += "|| " + o.toString();
});
return s.length > 3 ? s.slice(3) : s;
};
exports.SemanticContext = SemanticContext;
exports.PrecedencePredicate = PrecedencePredicate;
exports.Predicate = Predicate;
/***/ }),
/* 10 */
/***/ (function(module, exports, __webpack_require__) {
/* 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 = __webpack_require__(6).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; ii.start && v.stop=i.stop) {
this.intervals.splice(k, 1);
k = k - 1; // need another pass
}
// check for lower boundary
else if(v.start");
} 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("");
} 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 "";
} else if (a === Token.EPSILON) {
return "";
} else {
return literalNames[a] || symbolicNames[a];
}
};
exports.Interval = Interval;
exports.IntervalSet = IntervalSet;
/***/ }),
/* 11 */
/***/ (function(module, exports, __webpack_require__) {
/* 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.
*/
//
// An ATN transition between any two ATN states. Subclasses define
// atom, set, epsilon, action, predicate, rule transitions.
//
// This is a one way link. It emanates from a state (usually via a list of
// transitions) and has a target state.
//
// Since we never have to change the ATN transitions once we construct it,
// we can fix these transitions as specific classes. The DFA transitions
// on the other hand need to update the labels as it adds transitions to
// the states. We'll use the term Edge for the DFA to distinguish them from
// ATN transitions.
var Token = __webpack_require__(6).Token;
var Interval = __webpack_require__(10).Interval;
var IntervalSet = __webpack_require__(10).IntervalSet;
var Predicate = __webpack_require__(9).Predicate;
var PrecedencePredicate = __webpack_require__(9).PrecedencePredicate;
function Transition (target) {
// The target of this transition.
if (target===undefined || target===null) {
throw "target cannot be null.";
}
this.target = target;
// Are we epsilon, action, sempred?
this.isEpsilon = false;
this.label = null;
return this;
}
// constants for serialization
Transition.EPSILON = 1;
Transition.RANGE = 2;
Transition.RULE = 3;
Transition.PREDICATE = 4; // e.g., {isType(input.LT(1))}?
Transition.ATOM = 5;
Transition.ACTION = 6;
Transition.SET = 7; // ~(A|B) or ~atom, wildcard, which convert to next 2
Transition.NOT_SET = 8;
Transition.WILDCARD = 9;
Transition.PRECEDENCE = 10;
Transition.serializationNames = [
"INVALID",
"EPSILON",
"RANGE",
"RULE",
"PREDICATE",
"ATOM",
"ACTION",
"SET",
"NOT_SET",
"WILDCARD",
"PRECEDENCE"
];
Transition.serializationTypes = {
EpsilonTransition: Transition.EPSILON,
RangeTransition: Transition.RANGE,
RuleTransition: Transition.RULE,
PredicateTransition: Transition.PREDICATE,
AtomTransition: Transition.ATOM,
ActionTransition: Transition.ACTION,
SetTransition: Transition.SET,
NotSetTransition: Transition.NOT_SET,
WildcardTransition: Transition.WILDCARD,
PrecedencePredicateTransition: Transition.PRECEDENCE
};
// TODO: make all transitions sets? no, should remove set edges
function AtomTransition(target, label) {
Transition.call(this, target);
this.label_ = label; // The token type or character value; or, signifies special label.
this.label = this.makeLabel();
this.serializationType = Transition.ATOM;
return this;
}
AtomTransition.prototype = Object.create(Transition.prototype);
AtomTransition.prototype.constructor = AtomTransition;
AtomTransition.prototype.makeLabel = function() {
var s = new IntervalSet();
s.addOne(this.label_);
return s;
};
AtomTransition.prototype.matches = function( symbol, minVocabSymbol, maxVocabSymbol) {
return this.label_ === symbol;
};
AtomTransition.prototype.toString = function() {
return this.label_;
};
function RuleTransition(ruleStart, ruleIndex, precedence, followState) {
Transition.call(this, ruleStart);
this.ruleIndex = ruleIndex; // ptr to the rule definition object for this rule ref
this.precedence = precedence;
this.followState = followState; // what node to begin computations following ref to rule
this.serializationType = Transition.RULE;
this.isEpsilon = true;
return this;
}
RuleTransition.prototype = Object.create(Transition.prototype);
RuleTransition.prototype.constructor = RuleTransition;
RuleTransition.prototype.matches = function(symbol, minVocabSymbol, maxVocabSymbol) {
return false;
};
function EpsilonTransition(target, outermostPrecedenceReturn) {
Transition.call(this, target);
this.serializationType = Transition.EPSILON;
this.isEpsilon = true;
this.outermostPrecedenceReturn = outermostPrecedenceReturn;
return this;
}
EpsilonTransition.prototype = Object.create(Transition.prototype);
EpsilonTransition.prototype.constructor = EpsilonTransition;
EpsilonTransition.prototype.matches = function( symbol, minVocabSymbol, maxVocabSymbol) {
return false;
};
EpsilonTransition.prototype.toString = function() {
return "epsilon";
};
function RangeTransition(target, start, stop) {
Transition.call(this, target);
this.serializationType = Transition.RANGE;
this.start = start;
this.stop = stop;
this.label = this.makeLabel();
return this;
}
RangeTransition.prototype = Object.create(Transition.prototype);
RangeTransition.prototype.constructor = RangeTransition;
RangeTransition.prototype.makeLabel = function() {
var s = new IntervalSet();
s.addRange(this.start, this.stop);
return s;
};
RangeTransition.prototype.matches = function(symbol, minVocabSymbol, maxVocabSymbol) {
return symbol >= this.start && symbol <= this.stop;
};
RangeTransition.prototype.toString = function() {
return "'" + String.fromCharCode(this.start) + "'..'" + String.fromCharCode(this.stop) + "'";
};
function AbstractPredicateTransition(target) {
Transition.call(this, target);
return this;
}
AbstractPredicateTransition.prototype = Object.create(Transition.prototype);
AbstractPredicateTransition.prototype.constructor = AbstractPredicateTransition;
function PredicateTransition(target, ruleIndex, predIndex, isCtxDependent) {
AbstractPredicateTransition.call(this, target);
this.serializationType = Transition.PREDICATE;
this.ruleIndex = ruleIndex;
this.predIndex = predIndex;
this.isCtxDependent = isCtxDependent; // e.g., $i ref in pred
this.isEpsilon = true;
return this;
}
PredicateTransition.prototype = Object.create(AbstractPredicateTransition.prototype);
PredicateTransition.prototype.constructor = PredicateTransition;
PredicateTransition.prototype.matches = function(symbol, minVocabSymbol, maxVocabSymbol) {
return false;
};
PredicateTransition.prototype.getPredicate = function() {
return new Predicate(this.ruleIndex, this.predIndex, this.isCtxDependent);
};
PredicateTransition.prototype.toString = function() {
return "pred_" + this.ruleIndex + ":" + this.predIndex;
};
function ActionTransition(target, ruleIndex, actionIndex, isCtxDependent) {
Transition.call(this, target);
this.serializationType = Transition.ACTION;
this.ruleIndex = ruleIndex;
this.actionIndex = actionIndex===undefined ? -1 : actionIndex;
this.isCtxDependent = isCtxDependent===undefined ? false : isCtxDependent; // e.g., $i ref in pred
this.isEpsilon = true;
return this;
}
ActionTransition.prototype = Object.create(Transition.prototype);
ActionTransition.prototype.constructor = ActionTransition;
ActionTransition.prototype.matches = function(symbol, minVocabSymbol, maxVocabSymbol) {
return false;
};
ActionTransition.prototype.toString = function() {
return "action_" + this.ruleIndex + ":" + this.actionIndex;
};
// A transition containing a set of values.
function SetTransition(target, set) {
Transition.call(this, target);
this.serializationType = Transition.SET;
if (set !==undefined && set !==null) {
this.label = set;
} else {
this.label = new IntervalSet();
this.label.addOne(Token.INVALID_TYPE);
}
return this;
}
SetTransition.prototype = Object.create(Transition.prototype);
SetTransition.prototype.constructor = SetTransition;
SetTransition.prototype.matches = function(symbol, minVocabSymbol, maxVocabSymbol) {
return this.label.contains(symbol);
};
SetTransition.prototype.toString = function() {
return this.label.toString();
};
function NotSetTransition(target, set) {
SetTransition.call(this, target, set);
this.serializationType = Transition.NOT_SET;
return this;
}
NotSetTransition.prototype = Object.create(SetTransition.prototype);
NotSetTransition.prototype.constructor = NotSetTransition;
NotSetTransition.prototype.matches = function(symbol, minVocabSymbol, maxVocabSymbol) {
return symbol >= minVocabSymbol && symbol <= maxVocabSymbol &&
!SetTransition.prototype.matches.call(this, symbol, minVocabSymbol, maxVocabSymbol);
};
NotSetTransition.prototype.toString = function() {
return '~' + SetTransition.prototype.toString.call(this);
};
function WildcardTransition(target) {
Transition.call(this, target);
this.serializationType = Transition.WILDCARD;
return this;
}
WildcardTransition.prototype = Object.create(Transition.prototype);
WildcardTransition.prototype.constructor = WildcardTransition;
WildcardTransition.prototype.matches = function(symbol, minVocabSymbol, maxVocabSymbol) {
return symbol >= minVocabSymbol && symbol <= maxVocabSymbol;
};
WildcardTransition.prototype.toString = function() {
return ".";
};
function PrecedencePredicateTransition(target, precedence) {
AbstractPredicateTransition.call(this, target);
this.serializationType = Transition.PRECEDENCE;
this.precedence = precedence;
this.isEpsilon = true;
return this;
}
PrecedencePredicateTransition.prototype = Object.create(AbstractPredicateTransition.prototype);
PrecedencePredicateTransition.prototype.constructor = PrecedencePredicateTransition;
PrecedencePredicateTransition.prototype.matches = function(symbol, minVocabSymbol, maxVocabSymbol) {
return false;
};
PrecedencePredicateTransition.prototype.getPredicate = function() {
return new PrecedencePredicate(this.precedence);
};
PrecedencePredicateTransition.prototype.toString = function() {
return this.precedence + " >= _p";
};
exports.Transition = Transition;
exports.AtomTransition = AtomTransition;
exports.SetTransition = SetTransition;
exports.NotSetTransition = NotSetTransition;
exports.RuleTransition = RuleTransition;
exports.ActionTransition = ActionTransition;
exports.EpsilonTransition = EpsilonTransition;
exports.RangeTransition = RangeTransition;
exports.WildcardTransition = WildcardTransition;
exports.PredicateTransition = PredicateTransition;
exports.PrecedencePredicateTransition = PrecedencePredicateTransition;
exports.AbstractPredicateTransition = AbstractPredicateTransition;
/***/ }),
/* 12 */
/***/ (function(module, exports, __webpack_require__) {
//
/* 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 = __webpack_require__(13).RuleContext;
var Hash = __webpack_require__(5).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.
//
//
// private int referenceHashCode() {
// int hash = {@link MurmurHash//initialize MurmurHash.initialize}({@link
// //INITIAL_HASH});
//
// for (int i = 0; i < {@link //size()}; i++) {
// hash = {@link MurmurHash//update MurmurHash.update}(hash, {@link //getParent
// getParent}(i));
// }
//
// for (int i = 0; i < {@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;
// }
//
// /
// 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.
//
// Stack tops equal, parents merge is same; return left graph.
//
//
// 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.
//
//
// 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.
//
//
// Different stack tops pointing to different parents. Make array node for
// the root where each element points to the corresponding original
// parent.
//
//
// @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}.
//
// Local-Context Merges
//
// These local-context merge operations are used when {@code rootIsWildcard}
// is true.
//
// {@link //EMPTY} is superset of any graph; return {@link //EMPTY}.
//
//
// {@link //EMPTY} and anything is {@code //EMPTY}, so merged parent is
// {@code //EMPTY}; return left graph.
//
//
// Special case of last merge if local context.
//
//
// Full-Context Merges
//
// These full-context merge operations are used when {@code rootIsWildcard}
// is false.
//
//
//
// Must keep all contexts; {@link //EMPTY} in array is a special value (and
// null parent).
//
//
//
//
// @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.
//
// Different tops, different parents.
//
//
// Shared top, same parents.
//
//
// Shared top, different parents.
//
//
// Shared top, all shared parents.
//
//
// Equal tops, merge parents and reduce top to
// {@link SingletonPredictionContext}.
//
// /
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 M {@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;
/***/ }),
/* 13 */
/***/ (function(module, exports, __webpack_require__) {
/* 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 = __webpack_require__(14).RuleNode;
var INVALID_INTERVAL = __webpack_require__(14).INVALID_INTERVAL;
var INVALID_ALT_NUMBER = __webpack_require__(3).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.
//
// 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 = __webpack_require__(15).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;
};
/***/ }),
/* 14 */
/***/ (function(module, exports, __webpack_require__) {
/* 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.
*/
///
// The basic notion of a tree has a parent, a payload, and a list of children.
// It is the most abstract interface for all the trees used by ANTLR.
///
var Token = __webpack_require__(6).Token;
var Interval = __webpack_require__(10).Interval;
var INVALID_INTERVAL = new Interval(-1, -2);
var Utils = __webpack_require__(5);
function Tree() {
return this;
}
function SyntaxTree() {
Tree.call(this);
return this;
}
SyntaxTree.prototype = Object.create(Tree.prototype);
SyntaxTree.prototype.constructor = SyntaxTree;
function ParseTree() {
SyntaxTree.call(this);
return this;
}
ParseTree.prototype = Object.create(SyntaxTree.prototype);
ParseTree.prototype.constructor = ParseTree;
function RuleNode() {
ParseTree.call(this);
return this;
}
RuleNode.prototype = Object.create(ParseTree.prototype);
RuleNode.prototype.constructor = RuleNode;
function TerminalNode() {
ParseTree.call(this);
return this;
}
TerminalNode.prototype = Object.create(ParseTree.prototype);
TerminalNode.prototype.constructor = TerminalNode;
function ErrorNode() {
TerminalNode.call(this);
return this;
}
ErrorNode.prototype = Object.create(TerminalNode.prototype);
ErrorNode.prototype.constructor = ErrorNode;
function ParseTreeVisitor() {
return this;
}
ParseTreeVisitor.prototype.visit = function(ctx) {
if (Array.isArray(ctx)) {
return ctx.map(function(child) {
return child.accept(this);
}, this);
} else {
return ctx.accept(this);
}
};
ParseTreeVisitor.prototype.visitChildren = function(ctx) {
return this.visit(ctx.children);
}
ParseTreeVisitor.prototype.visitTerminal = function(node) {
};
ParseTreeVisitor.prototype.visitErrorNode = function(node) {
};
function ParseTreeListener() {
return this;
}
ParseTreeListener.prototype.visitTerminal = function(node) {
};
ParseTreeListener.prototype.visitErrorNode = function(node) {
};
ParseTreeListener.prototype.enterEveryRule = function(node) {
};
ParseTreeListener.prototype.exitEveryRule = function(node) {
};
function TerminalNodeImpl(symbol) {
TerminalNode.call(this);
this.parentCtx = null;
this.symbol = symbol;
return this;
}
TerminalNodeImpl.prototype = Object.create(TerminalNode.prototype);
TerminalNodeImpl.prototype.constructor = TerminalNodeImpl;
TerminalNodeImpl.prototype.getChild = function(i) {
return null;
};
TerminalNodeImpl.prototype.getSymbol = function() {
return this.symbol;
};
TerminalNodeImpl.prototype.getParent = function() {
return this.parentCtx;
};
TerminalNodeImpl.prototype.getPayload = function() {
return this.symbol;
};
TerminalNodeImpl.prototype.getSourceInterval = function() {
if (this.symbol === null) {
return INVALID_INTERVAL;
}
var tokenIndex = this.symbol.tokenIndex;
return new Interval(tokenIndex, tokenIndex);
};
TerminalNodeImpl.prototype.getChildCount = function() {
return 0;
};
TerminalNodeImpl.prototype.accept = function(visitor) {
return visitor.visitTerminal(this);
};
TerminalNodeImpl.prototype.getText = function() {
return this.symbol.text;
};
TerminalNodeImpl.prototype.toString = function() {
if (this.symbol.type === Token.EOF) {
return "";
} else {
return this.symbol.text;
}
};
// Represents a token that was consumed during resynchronization
// rather than during a valid match operation. For example,
// we will create this kind of a node during single token insertion
// and deletion as well as during "consume until error recovery set"
// upon no viable alternative exceptions.
function ErrorNodeImpl(token) {
TerminalNodeImpl.call(this, token);
return this;
}
ErrorNodeImpl.prototype = Object.create(TerminalNodeImpl.prototype);
ErrorNodeImpl.prototype.constructor = ErrorNodeImpl;
ErrorNodeImpl.prototype.isErrorNode = function() {
return true;
};
ErrorNodeImpl.prototype.accept = function(visitor) {
return visitor.visitErrorNode(this);
};
function ParseTreeWalker() {
return this;
}
ParseTreeWalker.prototype.walk = function(listener, t) {
var errorNode = t instanceof ErrorNode ||
(t.isErrorNode !== undefined && t.isErrorNode());
if (errorNode) {
listener.visitErrorNode(t);
} else if (t instanceof TerminalNode) {
listener.visitTerminal(t);
} else {
this.enterRule(listener, t);
for (var i = 0; i < t.getChildCount(); i++) {
var child = t.getChild(i);
this.walk(listener, child);
}
this.exitRule(listener, t);
}
};
//
// The discovery of a rule node, involves sending two events: the generic
// {@link ParseTreeListener//enterEveryRule} and a
// {@link RuleContext}-specific event. First we trigger the generic and then
// the rule specific. We to them in reverse order upon finishing the node.
//
ParseTreeWalker.prototype.enterRule = function(listener, r) {
var ctx = r.getRuleContext();
listener.enterEveryRule(ctx);
ctx.enterRule(listener);
};
ParseTreeWalker.prototype.exitRule = function(listener, r) {
var ctx = r.getRuleContext();
ctx.exitRule(listener);
listener.exitEveryRule(ctx);
};
ParseTreeWalker.DEFAULT = new ParseTreeWalker();
exports.RuleNode = RuleNode;
exports.ErrorNode = ErrorNode;
exports.TerminalNode = TerminalNode;
exports.ErrorNodeImpl = ErrorNodeImpl;
exports.TerminalNodeImpl = TerminalNodeImpl;
exports.ParseTreeListener = ParseTreeListener;
exports.ParseTreeVisitor = ParseTreeVisitor;
exports.ParseTreeWalker = ParseTreeWalker;
exports.INVALID_INTERVAL = INVALID_INTERVAL;
/***/ }),
/* 15 */
/***/ (function(module, exports, __webpack_require__) {
/* 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 Utils = __webpack_require__(5);
var Token = __webpack_require__(6).Token;
var RuleNode = __webpack_require__(14).RuleNode;
var ErrorNode = __webpack_require__(14).ErrorNode;
var TerminalNode = __webpack_require__(14).TerminalNode;
var ParserRuleContext = __webpack_require__(16).ParserRuleContext;
var RuleContext = __webpack_require__(13).RuleContext;
var INVALID_ALT_NUMBER = __webpack_require__(3).INVALID_ALT_NUMBER;
/** A set of utility routines useful for all kinds of ANTLR trees. */
function Trees() {
}
// Print out a whole tree in LISP form. {@link //getNodeText} is used on the
// node payloads to get the text for the nodes. Detect
// parse trees and extract data appropriately.
Trees.toStringTree = function(tree, ruleNames, recog) {
ruleNames = ruleNames || null;
recog = recog || null;
if(recog!==null) {
ruleNames = recog.ruleNames;
}
var s = Trees.getNodeText(tree, ruleNames);
s = Utils.escapeWhitespace(s, false);
var c = tree.getChildCount();
if(c===0) {
return s;
}
var res = "(" + s + ' ';
if(c>0) {
s = Trees.toStringTree(tree.getChild(0), ruleNames);
res = res.concat(s);
}
for(var i=1;i= this.children.length) {
return null;
}
if (type === null) {
return this.children[i];
} else {
for(var j=0; j= this.children.length) {
return null;
}
for(var j=0; j= 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 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= 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) { return new LexerPushModeAction(data1); };
af[LexerActionType.SKIP] = function(data1, data2) { return LexerSkipAction.INSTANCE; };
af[LexerActionType.TYPE] = function(data1, data2) { return new LexerTypeAction(data1); };
this.actionFactories = af;
}
if (type>this.actionFactories.length || this.actionFactories[type] === null) {
throw("The specified lexer action type " + type + " is not valid.");
} else {
return this.actionFactories[type](data1, data2);
}
};
exports.ATNDeserializer = ATNDeserializer;
/***/ }),
/* 18 */
/***/ (function(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.
*/
///
// Represents the type of recognizer an ATN applies to.
function ATNType() {
}
ATNType.LEXER = 0;
ATNType.PARSER = 1;
exports.ATNType = ATNType;
/***/ }),
/* 19 */
/***/ (function(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;
/***/ }),
/* 20 */
/***/ (function(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 LexerActionType() {
}
LexerActionType.CHANNEL = 0; //The type of a {@link LexerChannelAction} action.
LexerActionType.CUSTOM = 1; //The type of a {@link LexerCustomAction} action.
LexerActionType.MODE = 2; //The type of a {@link LexerModeAction} action.
LexerActionType.MORE = 3; //The type of a {@link LexerMoreAction} action.
LexerActionType.POP_MODE = 4; //The type of a {@link LexerPopModeAction} action.
LexerActionType.PUSH_MODE = 5; //The type of a {@link LexerPushModeAction} action.
LexerActionType.SKIP = 6; //The type of a {@link LexerSkipAction} action.
LexerActionType.TYPE = 7; //The type of a {@link LexerTypeAction} action.
function LexerAction(action) {
this.actionType = action;
this.isPositionDependent = false;
return this;
}
LexerAction.prototype.hashCode = function() {
var hash = new Hash();
this.updateHashCode(hash);
return hash.finish()
};
LexerAction.prototype.updateHashCode = function(hash) {
hash.update(this.actionType);
};
LexerAction.prototype.equals = function(other) {
return this === other;
};
//
// Implements the {@code skip} lexer action by calling {@link Lexer//skip}.
//
// The {@code skip} command does not have any parameters, so this action is
// implemented as a singleton instance exposed by {@link //INSTANCE}.
function LexerSkipAction() {
LexerAction.call(this, LexerActionType.SKIP);
return this;
}
LexerSkipAction.prototype = Object.create(LexerAction.prototype);
LexerSkipAction.prototype.constructor = LexerSkipAction;
// Provides a singleton instance of this parameterless lexer action.
LexerSkipAction.INSTANCE = new LexerSkipAction();
LexerSkipAction.prototype.execute = function(lexer) {
lexer.skip();
};
LexerSkipAction.prototype.toString = function() {
return "skip";
};
// Implements the {@code type} lexer action by calling {@link Lexer//setType}
// with the assigned type.
function LexerTypeAction(type) {
LexerAction.call(this, LexerActionType.TYPE);
this.type = type;
return this;
}
LexerTypeAction.prototype = Object.create(LexerAction.prototype);
LexerTypeAction.prototype.constructor = LexerTypeAction;
LexerTypeAction.prototype.execute = function(lexer) {
lexer.type = this.type;
};
LexerTypeAction.prototype.updateHashCode = function(hash) {
hash.update(this.actionType, this.type);
};
LexerTypeAction.prototype.equals = function(other) {
if(this === other) {
return true;
} else if (! (other instanceof LexerTypeAction)) {
return false;
} else {
return this.type === other.type;
}
};
LexerTypeAction.prototype.toString = function() {
return "type(" + this.type + ")";
};
// Implements the {@code pushMode} lexer action by calling
// {@link Lexer//pushMode} with the assigned mode.
function LexerPushModeAction(mode) {
LexerAction.call(this, LexerActionType.PUSH_MODE);
this.mode = mode;
return this;
}
LexerPushModeAction.prototype = Object.create(LexerAction.prototype);
LexerPushModeAction.prototype.constructor = LexerPushModeAction;
// This action is implemented by calling {@link Lexer//pushMode} with the
// value provided by {@link //getMode}.
LexerPushModeAction.prototype.execute = function(lexer) {
lexer.pushMode(this.mode);
};
LexerPushModeAction.prototype.updateHashCode = function(hash) {
hash.update(this.actionType, this.mode);
};
LexerPushModeAction.prototype.equals = function(other) {
if (this === other) {
return true;
} else if (! (other instanceof LexerPushModeAction)) {
return false;
} else {
return this.mode === other.mode;
}
};
LexerPushModeAction.prototype.toString = function() {
return "pushMode(" + this.mode + ")";
};
// Implements the {@code popMode} lexer action by calling {@link Lexer//popMode}.
//
// The {@code popMode} command does not have any parameters, so this action is
// implemented as a singleton instance exposed by {@link //INSTANCE}.
function LexerPopModeAction() {
LexerAction.call(this,LexerActionType.POP_MODE);
return this;
}
LexerPopModeAction.prototype = Object.create(LexerAction.prototype);
LexerPopModeAction.prototype.constructor = LexerPopModeAction;
LexerPopModeAction.INSTANCE = new LexerPopModeAction();
// This action is implemented by calling {@link Lexer//popMode}.
LexerPopModeAction.prototype.execute = function(lexer) {
lexer.popMode();
};
LexerPopModeAction.prototype.toString = function() {
return "popMode";
};
// Implements the {@code more} lexer action by calling {@link Lexer//more}.
//
// The {@code more} command does not have any parameters, so this action is
// implemented as a singleton instance exposed by {@link //INSTANCE}.
function LexerMoreAction() {
LexerAction.call(this, LexerActionType.MORE);
return this;
}
LexerMoreAction.prototype = Object.create(LexerAction.prototype);
LexerMoreAction.prototype.constructor = LexerMoreAction;
LexerMoreAction.INSTANCE = new LexerMoreAction();
// This action is implemented by calling {@link Lexer//popMode}.
LexerMoreAction.prototype.execute = function(lexer) {
lexer.more();
};
LexerMoreAction.prototype.toString = function() {
return "more";
};
// Implements the {@code mode} lexer action by calling {@link Lexer//mode} with
// the assigned mode.
function LexerModeAction(mode) {
LexerAction.call(this, LexerActionType.MODE);
this.mode = mode;
return this;
}
LexerModeAction.prototype = Object.create(LexerAction.prototype);
LexerModeAction.prototype.constructor = LexerModeAction;
// This action is implemented by calling {@link Lexer//mode} with the
// value provided by {@link //getMode}.
LexerModeAction.prototype.execute = function(lexer) {
lexer.mode(this.mode);
};
LexerModeAction.prototype.updateHashCode = function(hash) {
hash.update(this.actionType, this.mode);
};
LexerModeAction.prototype.equals = function(other) {
if (this === other) {
return true;
} else if (! (other instanceof LexerModeAction)) {
return false;
} else {
return this.mode === other.mode;
}
};
LexerModeAction.prototype.toString = function() {
return "mode(" + this.mode + ")";
};
// Executes a custom lexer action by calling {@link Recognizer//action} with the
// rule and action indexes assigned to the custom action. The implementation of
// a custom action is added to the generated code for the lexer in an override
// of {@link Recognizer//action} when the grammar is compiled.
//
// This class may represent embedded actions created with the {...}
// syntax in ANTLR 4, as well as actions created for lexer commands where the
// command argument could not be evaluated when the grammar was compiled.
// Constructs a custom lexer action with the specified rule and action
// indexes.
//
// @param ruleIndex The rule index to use for calls to
// {@link Recognizer//action}.
// @param actionIndex The action index to use for calls to
// {@link Recognizer//action}.
function LexerCustomAction(ruleIndex, actionIndex) {
LexerAction.call(this, LexerActionType.CUSTOM);
this.ruleIndex = ruleIndex;
this.actionIndex = actionIndex;
this.isPositionDependent = true;
return this;
}
LexerCustomAction.prototype = Object.create(LexerAction.prototype);
LexerCustomAction.prototype.constructor = LexerCustomAction;
// Custom actions are implemented by calling {@link Lexer//action} with the
// appropriate rule and action indexes.
LexerCustomAction.prototype.execute = function(lexer) {
lexer.action(null, this.ruleIndex, this.actionIndex);
};
LexerCustomAction.prototype.updateHashCode = function(hash) {
hash.update(this.actionType, this.ruleIndex, this.actionIndex);
};
LexerCustomAction.prototype.equals = function(other) {
if (this === other) {
return true;
} else if (! (other instanceof LexerCustomAction)) {
return false;
} else {
return this.ruleIndex === other.ruleIndex && this.actionIndex === other.actionIndex;
}
};
// Implements the {@code channel} lexer action by calling
// {@link Lexer//setChannel} with the assigned channel.
// Constructs a new {@code channel} action with the specified channel value.
// @param channel The channel value to pass to {@link Lexer//setChannel}.
function LexerChannelAction(channel) {
LexerAction.call(this, LexerActionType.CHANNEL);
this.channel = channel;
return this;
}
LexerChannelAction.prototype = Object.create(LexerAction.prototype);
LexerChannelAction.prototype.constructor = LexerChannelAction;
// This action is implemented by calling {@link Lexer//setChannel} with the
// value provided by {@link //getChannel}.
LexerChannelAction.prototype.execute = function(lexer) {
lexer._channel = this.channel;
};
LexerChannelAction.prototype.updateHashCode = function(hash) {
hash.update(this.actionType, this.channel);
};
LexerChannelAction.prototype.equals = function(other) {
if (this === other) {
return true;
} else if (! (other instanceof LexerChannelAction)) {
return false;
} else {
return this.channel === other.channel;
}
};
LexerChannelAction.prototype.toString = function() {
return "channel(" + this.channel + ")";
};
// This implementation of {@link LexerAction} is used for tracking input offsets
// for position-dependent actions within a {@link LexerActionExecutor}.
//
// This action is not serialized as part of the ATN, and is only required for
// position-dependent lexer actions which appear at a location other than the
// end of a rule. For more information about DFA optimizations employed for
// lexer actions, see {@link LexerActionExecutor//append} and
// {@link LexerActionExecutor//fixOffsetBeforeMatch}.
// Constructs a new indexed custom action by associating a character offset
// with a {@link LexerAction}.
//
// Note: This class is only required for lexer actions for which
// {@link LexerAction//isPositionDependent} returns {@code true}.
//
// @param offset The offset into the input {@link CharStream}, relative to
// the token start index, at which the specified lexer action should be
// executed.
// @param action The lexer action to execute at a particular offset in the
// input {@link CharStream}.
function LexerIndexedCustomAction(offset, action) {
LexerAction.call(this, action.actionType);
this.offset = offset;
this.action = action;
this.isPositionDependent = true;
return this;
}
LexerIndexedCustomAction.prototype = Object.create(LexerAction.prototype);
LexerIndexedCustomAction.prototype.constructor = LexerIndexedCustomAction;
// This method calls {@link //execute} on the result of {@link //getAction}
// using the provided {@code lexer}.
LexerIndexedCustomAction.prototype.execute = function(lexer) {
// assume the input stream position was properly set by the calling code
this.action.execute(lexer);
};
LexerIndexedCustomAction.prototype.updateHashCode = function(hash) {
hash.update(this.actionType, this.offset, this.action);
};
LexerIndexedCustomAction.prototype.equals = function(other) {
if (this === other) {
return true;
} else if (! (other instanceof LexerIndexedCustomAction)) {
return false;
} else {
return this.offset === other.offset && this.action === other.action;
}
};
exports.LexerActionType = LexerActionType;
exports.LexerSkipAction = LexerSkipAction;
exports.LexerChannelAction = LexerChannelAction;
exports.LexerCustomAction = LexerCustomAction;
exports.LexerIndexedCustomAction = LexerIndexedCustomAction;
exports.LexerMoreAction = LexerMoreAction;
exports.LexerTypeAction = LexerTypeAction;
exports.LexerPushModeAction = LexerPushModeAction;
exports.LexerPopModeAction = LexerPopModeAction;
exports.LexerModeAction = LexerModeAction;
/***/ }),
/* 21 */
/***/ (function(module, exports, __webpack_require__) {
//
/* 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.
*/
///
// When we hit an accept state in either the DFA or the ATN, we
// have to notify the character stream to start buffering characters
// via {@link IntStream//mark} and record the current state. The current sim state
// includes the current index into the input, the current line,
// and current character position in that line. Note that the Lexer is
// tracking the starting line and characterization of the token. These
// variables track the "state" of the simulator when it hits an accept state.
//
// We track these variables separately for the DFA and ATN simulation
// because the DFA simulation often has to fail over to the ATN
// simulation. If the ATN simulation fails, we need the DFA to fall
// back to its previously accepted state, if any. If the ATN succeeds,
// then the ATN does the accept and the DFA simulator that invoked it
// can simply return the predicted token type.
///
var Token = __webpack_require__(6).Token;
var Lexer = __webpack_require__(22).Lexer;
var ATN = __webpack_require__(3).ATN;
var ATNSimulator = __webpack_require__(27).ATNSimulator;
var DFAState = __webpack_require__(28).DFAState;
var ATNConfigSet = __webpack_require__(29).ATNConfigSet;
var OrderedATNConfigSet = __webpack_require__(29).OrderedATNConfigSet;
var PredictionContext = __webpack_require__(12).PredictionContext;
var SingletonPredictionContext = __webpack_require__(12).SingletonPredictionContext;
var RuleStopState = __webpack_require__(8).RuleStopState;
var LexerATNConfig = __webpack_require__(7).LexerATNConfig;
var Transition = __webpack_require__(11).Transition;
var LexerActionExecutor = __webpack_require__(30).LexerActionExecutor;
var LexerNoViableAltException = __webpack_require__(26).LexerNoViableAltException;
function resetSimState(sim) {
sim.index = -1;
sim.line = 0;
sim.column = -1;
sim.dfaState = null;
}
function SimState() {
resetSimState(this);
return this;
}
SimState.prototype.reset = function() {
resetSimState(this);
};
function LexerATNSimulator(recog, atn, decisionToDFA, sharedContextCache) {
ATNSimulator.call(this, atn, sharedContextCache);
this.decisionToDFA = decisionToDFA;
this.recog = recog;
// The current token's starting index into the character stream.
// Shared across DFA to ATN simulation in case the ATN fails and the
// DFA did not have a previous accept state. In this case, we use the
// ATN-generated exception object.
this.startIndex = -1;
// line number 1..n within the input///
this.line = 1;
// The index of the character relative to the beginning of the line
// 0..n-1///
this.column = 0;
this.mode = Lexer.DEFAULT_MODE;
// Used during DFA/ATN exec to record the most recent accept configuration
// info
this.prevAccept = new SimState();
// done
return this;
}
LexerATNSimulator.prototype = Object.create(ATNSimulator.prototype);
LexerATNSimulator.prototype.constructor = LexerATNSimulator;
LexerATNSimulator.debug = false;
LexerATNSimulator.dfa_debug = false;
LexerATNSimulator.MIN_DFA_EDGE = 0;
LexerATNSimulator.MAX_DFA_EDGE = 127; // forces unicode to stay in ATN
LexerATNSimulator.match_calls = 0;
LexerATNSimulator.prototype.copyState = function(simulator) {
this.column = simulator.column;
this.line = simulator.line;
this.mode = simulator.mode;
this.startIndex = simulator.startIndex;
};
LexerATNSimulator.prototype.match = function(input, mode) {
this.match_calls += 1;
this.mode = mode;
var mark = input.mark();
try {
this.startIndex = input.index;
this.prevAccept.reset();
var dfa = this.decisionToDFA[mode];
if (dfa.s0 === null) {
return this.matchATN(input);
} else {
return this.execATN(input, dfa.s0);
}
} finally {
input.release(mark);
}
};
LexerATNSimulator.prototype.reset = function() {
this.prevAccept.reset();
this.startIndex = -1;
this.line = 1;
this.column = 0;
this.mode = Lexer.DEFAULT_MODE;
};
LexerATNSimulator.prototype.matchATN = function(input) {
var startState = this.atn.modeToStartState[this.mode];
if (LexerATNSimulator.debug) {
console.log("matchATN mode " + this.mode + " start: " + startState);
}
var old_mode = this.mode;
var s0_closure = this.computeStartState(input, startState);
var suppressEdge = s0_closure.hasSemanticContext;
s0_closure.hasSemanticContext = false;
var next = this.addDFAState(s0_closure);
if (!suppressEdge) {
this.decisionToDFA[this.mode].s0 = next;
}
var predict = this.execATN(input, next);
if (LexerATNSimulator.debug) {
console.log("DFA after matchATN: " + this.decisionToDFA[old_mode].toLexerString());
}
return predict;
};
LexerATNSimulator.prototype.execATN = function(input, ds0) {
if (LexerATNSimulator.debug) {
console.log("start state closure=" + ds0.configs);
}
if (ds0.isAcceptState) {
// allow zero-length tokens
this.captureSimState(this.prevAccept, input, ds0);
}
var t = input.LA(1);
var s = ds0; // s is current/from DFA state
while (true) { // while more work
if (LexerATNSimulator.debug) {
console.log("execATN loop starting closure: " + s.configs);
}
// As we move src->trg, src->trg, we keep track of the previous trg to
// avoid looking up the DFA state again, which is expensive.
// If the previous target was already part of the DFA, we might
// be able to avoid doing a reach operation upon t. If s!=null,
// it means that semantic predicates didn't prevent us from
// creating a DFA state. Once we know s!=null, we check to see if
// the DFA state has an edge already for t. If so, we can just reuse
// it's configuration set; there's no point in re-computing it.
// This is kind of like doing DFA simulation within the ATN
// simulation because DFA simulation is really just a way to avoid
// computing reach/closure sets. Technically, once we know that
// we have a previously added DFA state, we could jump over to
// the DFA simulator. But, that would mean popping back and forth
// a lot and making things more complicated algorithmically.
// This optimization makes a lot of sense for loops within DFA.
// A character will take us back to an existing DFA state
// that already has lots of edges out of it. e.g., .* in comments.
// print("Target for:" + str(s) + " and:" + str(t))
var target = this.getExistingTargetState(s, t);
// print("Existing:" + str(target))
if (target === null) {
target = this.computeTargetState(input, s, t);
// print("Computed:" + str(target))
}
if (target === ATNSimulator.ERROR) {
break;
}
// If this is a consumable input element, make sure to consume before
// capturing the accept state so the input index, line, and char
// position accurately reflect the state of the interpreter at the
// end of the token.
if (t !== Token.EOF) {
this.consume(input);
}
if (target.isAcceptState) {
this.captureSimState(this.prevAccept, input, target);
if (t === Token.EOF) {
break;
}
}
t = input.LA(1);
s = target; // flip; current DFA target becomes new src/from state
}
return this.failOrAccept(this.prevAccept, input, s.configs, t);
};
// Get an existing target state for an edge in the DFA. If the target state
// for the edge has not yet been computed or is otherwise not available,
// this method returns {@code null}.
//
// @param s The current DFA state
// @param t The next input symbol
// @return The existing target DFA state for the given input symbol
// {@code t}, or {@code null} if the target state for this edge is not
// already cached
LexerATNSimulator.prototype.getExistingTargetState = function(s, t) {
if (s.edges === null || t < LexerATNSimulator.MIN_DFA_EDGE || t > LexerATNSimulator.MAX_DFA_EDGE) {
return null;
}
var target = s.edges[t - LexerATNSimulator.MIN_DFA_EDGE];
if(target===undefined) {
target = null;
}
if (LexerATNSimulator.debug && target !== null) {
console.log("reuse state " + s.stateNumber + " edge to " + target.stateNumber);
}
return target;
};
// Compute a target state for an edge in the DFA, and attempt to add the
// computed state and corresponding edge to the DFA.
//
// @param input The input stream
// @param s The current DFA state
// @param t The next input symbol
//
// @return The computed target DFA state for the given input symbol
// {@code t}. If {@code t} does not lead to a valid DFA state, this method
// returns {@link //ERROR}.
LexerATNSimulator.prototype.computeTargetState = function(input, s, t) {
var reach = new OrderedATNConfigSet();
// if we don't find an existing DFA state
// Fill reach starting from closure, following t transitions
this.getReachableConfigSet(input, s.configs, reach, t);
if (reach.items.length === 0) { // we got nowhere on t from s
if (!reach.hasSemanticContext) {
// we got nowhere on t, don't throw out this knowledge; it'd
// cause a failover from DFA later.
this.addDFAEdge(s, t, ATNSimulator.ERROR);
}
// stop when we can't match any more char
return ATNSimulator.ERROR;
}
// Add an edge from s to target DFA found/created for reach
return this.addDFAEdge(s, t, null, reach);
};
LexerATNSimulator.prototype.failOrAccept = function(prevAccept, input, reach, t) {
if (this.prevAccept.dfaState !== null) {
var lexerActionExecutor = prevAccept.dfaState.lexerActionExecutor;
this.accept(input, lexerActionExecutor, this.startIndex,
prevAccept.index, prevAccept.line, prevAccept.column);
return prevAccept.dfaState.prediction;
} else {
// if no accept and EOF is first char, return EOF
if (t === Token.EOF && input.index === this.startIndex) {
return Token.EOF;
}
throw new LexerNoViableAltException(this.recog, input, this.startIndex, reach);
}
};
// Given a starting configuration set, figure out all ATN configurations
// we can reach upon input {@code t}. Parameter {@code reach} is a return
// parameter.
LexerATNSimulator.prototype.getReachableConfigSet = function(input, closure,
reach, t) {
// this is used to skip processing for configs which have a lower priority
// than a config that already reached an accept state for the same rule
var skipAlt = ATN.INVALID_ALT_NUMBER;
for (var i = 0; i < closure.items.length; i++) {
var cfg = closure.items[i];
var currentAltReachedAcceptState = (cfg.alt === skipAlt);
if (currentAltReachedAcceptState && cfg.passedThroughNonGreedyDecision) {
continue;
}
if (LexerATNSimulator.debug) {
console.log("testing %s at %s\n", this.getTokenName(t), cfg
.toString(this.recog, true));
}
for (var j = 0; j < cfg.state.transitions.length; j++) {
var trans = cfg.state.transitions[j]; // for each transition
var target = this.getReachableTarget(trans, t);
if (target !== null) {
var lexerActionExecutor = cfg.lexerActionExecutor;
if (lexerActionExecutor !== null) {
lexerActionExecutor = lexerActionExecutor.fixOffsetBeforeMatch(input.index - this.startIndex);
}
var treatEofAsEpsilon = (t === Token.EOF);
var config = new LexerATNConfig({state:target, lexerActionExecutor:lexerActionExecutor}, cfg);
if (this.closure(input, config, reach,
currentAltReachedAcceptState, true, treatEofAsEpsilon)) {
// any remaining configs for this alt have a lower priority
// than the one that just reached an accept state.
skipAlt = cfg.alt;
}
}
}
}
};
LexerATNSimulator.prototype.accept = function(input, lexerActionExecutor,
startIndex, index, line, charPos) {
if (LexerATNSimulator.debug) {
console.log("ACTION %s\n", lexerActionExecutor);
}
// seek to after last char in token
input.seek(index);
this.line = line;
this.column = charPos;
if (lexerActionExecutor !== null && this.recog !== null) {
lexerActionExecutor.execute(this.recog, input, startIndex);
}
};
LexerATNSimulator.prototype.getReachableTarget = function(trans, t) {
if (trans.matches(t, 0, Lexer.MAX_CHAR_VALUE)) {
return trans.target;
} else {
return null;
}
};
LexerATNSimulator.prototype.computeStartState = function(input, p) {
var initialContext = PredictionContext.EMPTY;
var configs = new OrderedATNConfigSet();
for (var i = 0; i < p.transitions.length; i++) {
var target = p.transitions[i].target;
var cfg = new LexerATNConfig({state:target, alt:i+1, context:initialContext}, null);
this.closure(input, cfg, configs, false, false, false);
}
return configs;
};
// Since the alternatives within any lexer decision are ordered by
// preference, this method stops pursuing the closure as soon as an accept
// state is reached. After the first accept state is reached by depth-first
// search from {@code config}, all other (potentially reachable) states for
// this rule would have a lower priority.
//
// @return {@code true} if an accept state is reached, otherwise
// {@code false}.
LexerATNSimulator.prototype.closure = function(input, config, configs,
currentAltReachedAcceptState, speculative, treatEofAsEpsilon) {
var cfg = null;
if (LexerATNSimulator.debug) {
console.log("closure(" + config.toString(this.recog, true) + ")");
}
if (config.state instanceof RuleStopState) {
if (LexerATNSimulator.debug) {
if (this.recog !== null) {
console.log("closure at %s rule stop %s\n", this.recog.ruleNames[config.state.ruleIndex], config);
} else {
console.log("closure at rule stop %s\n", config);
}
}
if (config.context === null || config.context.hasEmptyPath()) {
if (config.context === null || config.context.isEmpty()) {
configs.add(config);
return true;
} else {
configs.add(new LexerATNConfig({ state:config.state, context:PredictionContext.EMPTY}, config));
currentAltReachedAcceptState = true;
}
}
if (config.context !== null && !config.context.isEmpty()) {
for (var i = 0; i < config.context.length; i++) {
if (config.context.getReturnState(i) !== PredictionContext.EMPTY_RETURN_STATE) {
var newContext = config.context.getParent(i); // "pop" return state
var returnState = this.atn.states[config.context.getReturnState(i)];
cfg = new LexerATNConfig({ state:returnState, context:newContext }, config);
currentAltReachedAcceptState = this.closure(input, cfg,
configs, currentAltReachedAcceptState, speculative,
treatEofAsEpsilon);
}
}
}
return currentAltReachedAcceptState;
}
// optimization
if (!config.state.epsilonOnlyTransitions) {
if (!currentAltReachedAcceptState || !config.passedThroughNonGreedyDecision) {
configs.add(config);
}
}
for (var j = 0; j < config.state.transitions.length; j++) {
var trans = config.state.transitions[j];
cfg = this.getEpsilonTarget(input, config, trans, configs, speculative, treatEofAsEpsilon);
if (cfg !== null) {
currentAltReachedAcceptState = this.closure(input, cfg, configs,
currentAltReachedAcceptState, speculative, treatEofAsEpsilon);
}
}
return currentAltReachedAcceptState;
};
// side-effect: can alter configs.hasSemanticContext
LexerATNSimulator.prototype.getEpsilonTarget = function(input, config, trans,
configs, speculative, treatEofAsEpsilon) {
var cfg = null;
if (trans.serializationType === Transition.RULE) {
var newContext = SingletonPredictionContext.create(config.context, trans.followState.stateNumber);
cfg = new LexerATNConfig( { state:trans.target, context:newContext}, config);
} else if (trans.serializationType === Transition.PRECEDENCE) {
throw "Precedence predicates are not supported in lexers.";
} else if (trans.serializationType === Transition.PREDICATE) {
// Track traversing semantic predicates. If we traverse,
// we cannot add a DFA state for this "reach" computation
// because the DFA would not test the predicate again in the
// future. Rather than creating collections of semantic predicates
// like v3 and testing them on prediction, v4 will test them on the
// fly all the time using the ATN not the DFA. This is slower but
// semantically it's not used that often. One of the key elements to
// this predicate mechanism is not adding DFA states that see
// predicates immediately afterwards in the ATN. For example,
// a : ID {p1}? | ID {p2}? ;
// should create the start state for rule 'a' (to save start state
// competition), but should not create target of ID state. The
// collection of ATN states the following ID references includes
// states reached by traversing predicates. Since this is when we
// test them, we cannot cash the DFA state target of ID.
if (LexerATNSimulator.debug) {
console.log("EVAL rule " + trans.ruleIndex + ":" + trans.predIndex);
}
configs.hasSemanticContext = true;
if (this.evaluatePredicate(input, trans.ruleIndex, trans.predIndex, speculative)) {
cfg = new LexerATNConfig({ state:trans.target}, config);
}
} else if (trans.serializationType === Transition.ACTION) {
if (config.context === null || config.context.hasEmptyPath()) {
// execute actions anywhere in the start rule for a token.
//
// TODO: if the entry rule is invoked recursively, some
// actions may be executed during the recursive call. The
// problem can appear when hasEmptyPath() is true but
// isEmpty() is false. In this case, the config needs to be
// split into two contexts - one with just the empty path
// and another with everything but the empty path.
// Unfortunately, the current algorithm does not allow
// getEpsilonTarget to return two configurations, so
// additional modifications are needed before we can support
// the split operation.
var lexerActionExecutor = LexerActionExecutor.append(config.lexerActionExecutor,
this.atn.lexerActions[trans.actionIndex]);
cfg = new LexerATNConfig({ state:trans.target, lexerActionExecutor:lexerActionExecutor }, config);
} else {
// ignore actions in referenced rules
cfg = new LexerATNConfig( { state:trans.target}, config);
}
} else if (trans.serializationType === Transition.EPSILON) {
cfg = new LexerATNConfig({ state:trans.target}, config);
} else if (trans.serializationType === Transition.ATOM ||
trans.serializationType === Transition.RANGE ||
trans.serializationType === Transition.SET) {
if (treatEofAsEpsilon) {
if (trans.matches(Token.EOF, 0, Lexer.MAX_CHAR_VALUE)) {
cfg = new LexerATNConfig( { state:trans.target }, config);
}
}
}
return cfg;
};
// Evaluate a predicate specified in the lexer.
//
// If {@code speculative} is {@code true}, this method was called before
// {@link //consume} for the matched character. This method should call
// {@link //consume} before evaluating the predicate to ensure position
// sensitive values, including {@link Lexer//getText}, {@link Lexer//getLine},
// and {@link Lexer//getcolumn}, properly reflect the current
// lexer state. This method should restore {@code input} and the simulator
// to the original state before returning (i.e. undo the actions made by the
// call to {@link //consume}.
//
// @param input The input stream.
// @param ruleIndex The rule containing the predicate.
// @param predIndex The index of the predicate within the rule.
// @param speculative {@code true} if the current index in {@code input} is
// one character before the predicate's location.
//
// @return {@code true} if the specified predicate evaluates to
// {@code true}.
// /
LexerATNSimulator.prototype.evaluatePredicate = function(input, ruleIndex,
predIndex, speculative) {
// assume true if no recognizer was provided
if (this.recog === null) {
return true;
}
if (!speculative) {
return this.recog.sempred(null, ruleIndex, predIndex);
}
var savedcolumn = this.column;
var savedLine = this.line;
var index = input.index;
var marker = input.mark();
try {
this.consume(input);
return this.recog.sempred(null, ruleIndex, predIndex);
} finally {
this.column = savedcolumn;
this.line = savedLine;
input.seek(index);
input.release(marker);
}
};
LexerATNSimulator.prototype.captureSimState = function(settings, input, dfaState) {
settings.index = input.index;
settings.line = this.line;
settings.column = this.column;
settings.dfaState = dfaState;
};
LexerATNSimulator.prototype.addDFAEdge = function(from_, tk, to, cfgs) {
if (to === undefined) {
to = null;
}
if (cfgs === undefined) {
cfgs = null;
}
if (to === null && cfgs !== null) {
// leading to this call, ATNConfigSet.hasSemanticContext is used as a
// marker indicating dynamic predicate evaluation makes this edge
// dependent on the specific input sequence, so the static edge in the
// DFA should be omitted. The target DFAState is still created since
// execATN has the ability to resynchronize with the DFA state cache
// following the predicate evaluation step.
//
// TJP notes: next time through the DFA, we see a pred again and eval.
// If that gets us to a previously created (but dangling) DFA
// state, we can continue in pure DFA mode from there.
// /
var suppressEdge = cfgs.hasSemanticContext;
cfgs.hasSemanticContext = false;
to = this.addDFAState(cfgs);
if (suppressEdge) {
return to;
}
}
// add the edge
if (tk < LexerATNSimulator.MIN_DFA_EDGE || tk > LexerATNSimulator.MAX_DFA_EDGE) {
// Only track edges within the DFA bounds
return to;
}
if (LexerATNSimulator.debug) {
console.log("EDGE " + from_ + " -> " + to + " upon " + tk);
}
if (from_.edges === null) {
// make room for tokens 1..n and -1 masquerading as index 0
from_.edges = [];
}
from_.edges[tk - LexerATNSimulator.MIN_DFA_EDGE] = to; // connect
return to;
};
// Add a new DFA state if there isn't one with this set of
// configurations already. This method also detects the first
// configuration containing an ATN rule stop state. Later, when
// traversing the DFA, we will know which rule to accept.
LexerATNSimulator.prototype.addDFAState = function(configs) {
var proposed = new DFAState(null, configs);
var firstConfigWithRuleStopState = null;
for (var i = 0; i < configs.items.length; i++) {
var cfg = configs.items[i];
if (cfg.state instanceof RuleStopState) {
firstConfigWithRuleStopState = cfg;
break;
}
}
if (firstConfigWithRuleStopState !== null) {
proposed.isAcceptState = true;
proposed.lexerActionExecutor = firstConfigWithRuleStopState.lexerActionExecutor;
proposed.prediction = this.atn.ruleToTokenType[firstConfigWithRuleStopState.state.ruleIndex];
}
var dfa = this.decisionToDFA[this.mode];
var existing = dfa.states.get(proposed);
if (existing!==null) {
return existing;
}
var newState = proposed;
newState.stateNumber = dfa.states.length;
configs.setReadonly(true);
newState.configs = configs;
dfa.states.add(newState);
return newState;
};
LexerATNSimulator.prototype.getDFA = function(mode) {
return this.decisionToDFA[mode];
};
// Get the text matched so far for the current token.
LexerATNSimulator.prototype.getText = function(input) {
// index is first lookahead char, don't include.
return input.getText(this.startIndex, input.index - 1);
};
LexerATNSimulator.prototype.consume = function(input) {
var curChar = input.LA(1);
if (curChar === "\n".charCodeAt(0)) {
this.line += 1;
this.column = 0;
} else {
this.column += 1;
}
input.consume();
};
LexerATNSimulator.prototype.getTokenName = function(tt) {
if (tt === -1) {
return "EOF";
} else {
return "'" + String.fromCharCode(tt) + "'";
}
};
exports.LexerATNSimulator = LexerATNSimulator;
/***/ }),
/* 22 */
/***/ (function(module, exports, __webpack_require__) {
/* 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 = __webpack_require__(6).Token;
var Recognizer = __webpack_require__(23).Recognizer;
var CommonTokenFactory = __webpack_require__(25).CommonTokenFactory;
var RecognitionException = __webpack_require__(26).RecognitionException;
var LexerNoViableAltException = __webpack_require__(26).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 "";
} 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;
/***/ }),
/* 23 */
/***/ (function(module, exports, __webpack_require__) {
//
/* 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 = __webpack_require__(6).Token;
var ConsoleErrorListener = __webpack_require__(24).ConsoleErrorListener;
var ProxyErrorListener = __webpack_require__(24).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.
//
// Used for XPath and tree pattern compilation.
//
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 "";
}
var s = t.text;
if (s===null) {
if (t.type===Token.EOF) {
s = "";
} 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;
/***/ }),
/* 24 */
/***/ (function(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.
*/
// Provides an empty default implementation of {@link ANTLRErrorListener}. The
// default implementation of each method does nothing, but can be overridden as
// necessary.
function ErrorListener() {
return this;
}
ErrorListener.prototype.syntaxError = function(recognizer, offendingSymbol, line, column, msg, e) {
};
ErrorListener.prototype.reportAmbiguity = function(recognizer, dfa, startIndex, stopIndex, exact, ambigAlts, configs) {
};
ErrorListener.prototype.reportAttemptingFullContext = function(recognizer, dfa, startIndex, stopIndex, conflictingAlts, configs) {
};
ErrorListener.prototype.reportContextSensitivity = function(recognizer, dfa, startIndex, stopIndex, prediction, configs) {
};
function ConsoleErrorListener() {
ErrorListener.call(this);
return this;
}
ConsoleErrorListener.prototype = Object.create(ErrorListener.prototype);
ConsoleErrorListener.prototype.constructor = ConsoleErrorListener;
//
// Provides a default instance of {@link ConsoleErrorListener}.
//
ConsoleErrorListener.INSTANCE = new ConsoleErrorListener();
//
// {@inheritDoc}
//
//
// This implementation prints messages to {@link System//err} containing the
// values of {@code line}, {@code charPositionInLine}, and {@code msg} using
// the following format.
//
//
// line line :charPositionInLine msg
//
//
ConsoleErrorListener.prototype.syntaxError = function(recognizer, offendingSymbol, line, column, msg, e) {
console.error("line " + line + ":" + column + " " + msg);
};
function ProxyErrorListener(delegates) {
ErrorListener.call(this);
if (delegates===null) {
throw "delegates";
}
this.delegates = delegates;
return this;
}
ProxyErrorListener.prototype = Object.create(ErrorListener.prototype);
ProxyErrorListener.prototype.constructor = ProxyErrorListener;
ProxyErrorListener.prototype.syntaxError = function(recognizer, offendingSymbol, line, column, msg, e) {
this.delegates.map(function(d) { d.syntaxError(recognizer, offendingSymbol, line, column, msg, e); });
};
ProxyErrorListener.prototype.reportAmbiguity = function(recognizer, dfa, startIndex, stopIndex, exact, ambigAlts, configs) {
this.delegates.map(function(d) { d.reportAmbiguity(recognizer, dfa, startIndex, stopIndex, exact, ambigAlts, configs); });
};
ProxyErrorListener.prototype.reportAttemptingFullContext = function(recognizer, dfa, startIndex, stopIndex, conflictingAlts, configs) {
this.delegates.map(function(d) { d.reportAttemptingFullContext(recognizer, dfa, startIndex, stopIndex, conflictingAlts, configs); });
};
ProxyErrorListener.prototype.reportContextSensitivity = function(recognizer, dfa, startIndex, stopIndex, prediction, configs) {
this.delegates.map(function(d) { d.reportContextSensitivity(recognizer, dfa, startIndex, stopIndex, prediction, configs); });
};
exports.ErrorListener = ErrorListener;
exports.ConsoleErrorListener = ConsoleErrorListener;
exports.ProxyErrorListener = ProxyErrorListener;
/***/ }),
/* 25 */
/***/ (function(module, exports, __webpack_require__) {
//
/* 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 = __webpack_require__(6).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.
//
//
// The default value is {@code false} to avoid the performance and memory
// overhead of copying text for every token unless explicitly requested.
//
this.copyText = copyText===undefined ? false : copyText;
return this;
}
CommonTokenFactory.prototype = Object.create(TokenFactory.prototype);
CommonTokenFactory.prototype.constructor = CommonTokenFactory;
//
// The default {@link CommonTokenFactory} instance.
//
//
// This token factory does not explicitly copy token text when constructing
// tokens.
//
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;
/***/ }),
/* 26 */
/***/ (function(module, exports, __webpack_require__) {
/* 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.
*/
// The root of the ANTLR exception hierarchy. In general, ANTLR tracks just
// 3 kinds of errors: prediction errors, failed predicate errors, and
// mismatched input errors. In each case, the parser knows where it is
// in the input, where it is in the ATN, the rule invocation stack,
// and what kind of problem occurred.
var PredicateTransition = __webpack_require__(11).PredicateTransition;
function RecognitionException(params) {
Error.call(this);
if (!!Error.captureStackTrace) {
Error.captureStackTrace(this, RecognitionException);
} else {
var stack = new Error().stack;
}
this.message = params.message;
this.recognizer = params.recognizer;
this.input = params.input;
this.ctx = params.ctx;
// The current {@link Token} when an error occurred. Since not all streams
// support accessing symbols by index, we have to track the {@link Token}
// instance itself.
this.offendingToken = null;
// Get the ATN state number the parser was in at the time the error
// occurred. For {@link NoViableAltException} and
// {@link LexerNoViableAltException} exceptions, this is the
// {@link DecisionState} number. For others, it is the state whose outgoing
// edge we couldn't match.
this.offendingState = -1;
if (this.recognizer!==null) {
this.offendingState = this.recognizer.state;
}
return this;
}
RecognitionException.prototype = Object.create(Error.prototype);
RecognitionException.prototype.constructor = RecognitionException;
// If the state number is not known, this method returns -1.
//
// Gets the set of input symbols which could potentially follow the
// previously matched symbol at the time this exception was thrown.
//
// If the set of expected tokens is not known and could not be computed,
// this method returns {@code null}.
//
// @return The set of token types that could potentially follow the current
// state in the ATN, or {@code null} if the information is not available.
// /
RecognitionException.prototype.getExpectedTokens = function() {
if (this.recognizer!==null) {
return this.recognizer.atn.getExpectedTokens(this.offendingState, this.ctx);
} else {
return null;
}
};
RecognitionException.prototype.toString = function() {
return this.message;
};
function LexerNoViableAltException(lexer, input, startIndex, deadEndConfigs) {
RecognitionException.call(this, {message:"", recognizer:lexer, input:input, ctx:null});
this.startIndex = startIndex;
this.deadEndConfigs = deadEndConfigs;
return this;
}
LexerNoViableAltException.prototype = Object.create(RecognitionException.prototype);
LexerNoViableAltException.prototype.constructor = LexerNoViableAltException;
LexerNoViableAltException.prototype.toString = function() {
var symbol = "";
if (this.startIndex >= 0 && this.startIndex < this.input.size) {
symbol = this.input.getText((this.startIndex,this.startIndex));
}
return "LexerNoViableAltException" + symbol;
};
// Indicates that the parser could not decide which of two or more paths
// to take based upon the remaining input. It tracks the starting token
// of the offending input and also knows where the parser was
// in the various paths when the error. Reported by reportNoViableAlternative()
//
function NoViableAltException(recognizer, input, startToken, offendingToken, deadEndConfigs, ctx) {
ctx = ctx || recognizer._ctx;
offendingToken = offendingToken || recognizer.getCurrentToken();
startToken = startToken || recognizer.getCurrentToken();
input = input || recognizer.getInputStream();
RecognitionException.call(this, {message:"", recognizer:recognizer, input:input, ctx:ctx});
// Which configurations did we try at input.index() that couldn't match
// input.LT(1)?//
this.deadEndConfigs = deadEndConfigs;
// The token object at the start index; the input stream might
// not be buffering tokens so get a reference to it. (At the
// time the error occurred, of course the stream needs to keep a
// buffer all of the tokens but later we might not have access to those.)
this.startToken = startToken;
this.offendingToken = offendingToken;
}
NoViableAltException.prototype = Object.create(RecognitionException.prototype);
NoViableAltException.prototype.constructor = NoViableAltException;
// This signifies any kind of mismatched input exceptions such as
// when the current input does not match the expected token.
//
function InputMismatchException(recognizer) {
RecognitionException.call(this, {message:"", recognizer:recognizer, input:recognizer.getInputStream(), ctx:recognizer._ctx});
this.offendingToken = recognizer.getCurrentToken();
}
InputMismatchException.prototype = Object.create(RecognitionException.prototype);
InputMismatchException.prototype.constructor = InputMismatchException;
// A semantic predicate failed during validation. Validation of predicates
// occurs when normally parsing the alternative just like matching a token.
// Disambiguating predicate evaluation occurs when we test a predicate during
// prediction.
function FailedPredicateException(recognizer, predicate, message) {
RecognitionException.call(this, {message:this.formatMessage(predicate,message || null), recognizer:recognizer,
input:recognizer.getInputStream(), ctx:recognizer._ctx});
var s = recognizer._interp.atn.states[recognizer.state];
var trans = s.transitions[0];
if (trans instanceof PredicateTransition) {
this.ruleIndex = trans.ruleIndex;
this.predicateIndex = trans.predIndex;
} else {
this.ruleIndex = 0;
this.predicateIndex = 0;
}
this.predicate = predicate;
this.offendingToken = recognizer.getCurrentToken();
return this;
}
FailedPredicateException.prototype = Object.create(RecognitionException.prototype);
FailedPredicateException.prototype.constructor = FailedPredicateException;
FailedPredicateException.prototype.formatMessage = function(predicate, message) {
if (message !==null) {
return message;
} else {
return "failed predicate: {" + predicate + "}?";
}
};
function ParseCancellationException() {
Error.call(this);
Error.captureStackTrace(this, ParseCancellationException);
return this;
}
ParseCancellationException.prototype = Object.create(Error.prototype);
ParseCancellationException.prototype.constructor = ParseCancellationException;
exports.RecognitionException = RecognitionException;
exports.NoViableAltException = NoViableAltException;
exports.LexerNoViableAltException = LexerNoViableAltException;
exports.InputMismatchException = InputMismatchException;
exports.FailedPredicateException = FailedPredicateException;
exports.ParseCancellationException = ParseCancellationException;
/***/ }),
/* 27 */
/***/ (function(module, exports, __webpack_require__) {
//
/* 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 DFAState = __webpack_require__(28).DFAState;
var ATNConfigSet = __webpack_require__(29).ATNConfigSet;
var getCachedPredictionContext = __webpack_require__(12).getCachedPredictionContext;
function ATNSimulator(atn, sharedContextCache) {
// The context cache maps all PredictionContext objects that are ==
// to a single cached copy. This cache is shared across all contexts
// in all ATNConfigs in all DFA states. We rebuild each ATNConfigSet
// to use only cached nodes/graphs in addDFAState(). We don't want to
// fill this during closure() since there are lots of contexts that
// pop up but are not used ever again. It also greatly slows down closure().
//
// This cache makes a huge difference in memory and a little bit in speed.
// For the Java grammar on java.*, it dropped the memory requirements
// at the end from 25M to 16M. We don't store any of the full context
// graphs in the DFA because they are limited to local context only,
// but apparently there's a lot of repetition there as well. We optimize
// the config contexts before storing the config set in the DFA states
// by literally rebuilding them with cached subgraphs only.
//
// I tried a cache for use during closure operations, that was
// whacked after each adaptivePredict(). It cost a little bit
// more time I think and doesn't save on the overall footprint
// so it's not worth the complexity.
///
this.atn = atn;
this.sharedContextCache = sharedContextCache;
return this;
}
// Must distinguish between missing edge and edge we know leads nowhere///
ATNSimulator.ERROR = new DFAState(0x7FFFFFFF, new ATNConfigSet());
ATNSimulator.prototype.getCachedContext = function(context) {
if (this.sharedContextCache ===null) {
return context;
}
var visited = {};
return getCachedPredictionContext(context, this.sharedContextCache, visited);
};
exports.ATNSimulator = ATNSimulator;
/***/ }),
/* 28 */
/***/ (function(module, exports, __webpack_require__) {
//
/* 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 ATNConfigSet = __webpack_require__(29).ATNConfigSet;
var Utils = __webpack_require__(5);
var Hash = Utils.Hash;
var Set = Utils.Set;
// Map a predicate to a predicted alternative.///
function PredPrediction(pred, alt) {
this.alt = alt;
this.pred = pred;
return this;
}
PredPrediction.prototype.toString = function() {
return "(" + this.pred + ", " + this.alt + ")";
};
// A DFA state represents a set of possible ATN configurations.
// As Aho, Sethi, Ullman p. 117 says "The DFA uses its state
// to keep track of all possible states the ATN can be in after
// reading each input symbol. That is to say, after reading
// input a1a2..an, the DFA is in a state that represents the
// subset T of the states of the ATN that are reachable from the
// ATN's start state along some path labeled a1a2..an."
// In conventional NFA→DFA conversion, therefore, the subset T
// would be a bitset representing the set of states the
// ATN could be in. We need to track the alt predicted by each
// state as well, however. More importantly, we need to maintain
// a stack of states, tracking the closure operations as they
// jump from rule to rule, emulating rule invocations (method calls).
// I have to add a stack to simulate the proper lookahead sequences for
// the underlying LL grammar from which the ATN was derived.
//
// I use a set of ATNConfig objects not simple states. An ATNConfig
// is both a state (ala normal conversion) and a RuleContext describing
// the chain of rules (if any) followed to arrive at that state.
//
// A DFA state may have multiple references to a particular state,
// but with different ATN contexts (with same or different alts)
// meaning that state was reached via a different set of rule invocations.
// /
function DFAState(stateNumber, configs) {
if (stateNumber === null) {
stateNumber = -1;
}
if (configs === null) {
configs = new ATNConfigSet();
}
this.stateNumber = stateNumber;
this.configs = configs;
// {@code edges[symbol]} points to target of symbol. Shift up by 1 so (-1)
// {@link Token//EOF} maps to {@code edges[0]}.
this.edges = null;
this.isAcceptState = false;
// if accept state, what ttype do we match or alt do we predict?
// This is set to {@link ATN//INVALID_ALT_NUMBER} when {@link
// //predicates}{@code !=null} or
// {@link //requiresFullContext}.
this.prediction = 0;
this.lexerActionExecutor = null;
// Indicates that this state was created during SLL prediction that
// discovered a conflict between the configurations in the state. Future
// {@link ParserATNSimulator//execATN} invocations immediately jumped doing
// full context prediction if this field is true.
this.requiresFullContext = false;
// During SLL parsing, this is a list of predicates associated with the
// ATN configurations of the DFA state. When we have predicates,
// {@link //requiresFullContext} is {@code false} since full context
// prediction evaluates predicates
// on-the-fly. If this is not null, then {@link //prediction} is
// {@link ATN//INVALID_ALT_NUMBER}.
//
// We only use these for non-{@link //requiresFullContext} but
// conflicting states. That
// means we know from the context (it's $ or we don't dip into outer
// context) that it's an ambiguity not a conflict.
//
// This list is computed by {@link
// ParserATNSimulator//predicateDFAState}.
this.predicates = null;
return this;
}
// Get the set of all alts mentioned by all ATN configurations in this
// DFA state.
DFAState.prototype.getAltSet = function() {
var alts = new Set();
if (this.configs !== null) {
for (var i = 0; i < this.configs.length; i++) {
var c = this.configs[i];
alts.add(c.alt);
}
}
if (alts.length === 0) {
return null;
} else {
return alts;
}
};
// Two {@link DFAState} instances are equal if their ATN configuration sets
// are the same. This method is used to see if a state already exists.
//
// Because the number of alternatives and number of ATN configurations are
// finite, there is a finite number of DFA states that can be processed.
// This is necessary to show that the algorithm terminates.
//
// Cannot test the DFA state numbers here because in
// {@link ParserATNSimulator//addDFAState} we need to know if any other state
// exists that has this exact set of ATN configurations. The
// {@link //stateNumber} is irrelevant.
DFAState.prototype.equals = function(other) {
// compare set of ATN configurations in this set with other
return this === other ||
(other instanceof DFAState &&
this.configs.equals(other.configs));
};
DFAState.prototype.toString = function() {
var s = "" + this.stateNumber + ":" + this.configs;
if(this.isAcceptState) {
s = s + "=>";
if (this.predicates !== null)
s = s + this.predicates;
else
s = s + this.prediction;
}
return s;
};
DFAState.prototype.hashCode = function() {
var hash = new Hash();
hash.update(this.configs);
if(this.isAcceptState) {
if (this.predicates !== null)
hash.update(this.predicates);
else
hash.update(this.prediction);
}
return hash.finish();
};
exports.DFAState = DFAState;
exports.PredPrediction = PredPrediction;
/***/ }),
/* 29 */
/***/ (function(module, exports, __webpack_require__) {
//
/* 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 = __webpack_require__(3).ATN;
var Utils = __webpack_require__(5);
var Hash = Utils.Hash;
var Set = Utils.Set;
var SemanticContext = __webpack_require__(9).SemanticContext;
var merge = __webpack_require__(12).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.
//
// This method updates {@link //dipsIntoOuterContext} and
// {@link //hasSemanticContext} when necessary.
// /
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;
/***/ }),
/* 30 */
/***/ (function(module, exports, __webpack_require__) {
//
/* 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.
*/
///
// Represents an executor for a sequence of lexer actions which traversed during
// the matching operation of a lexer rule (token).
//
// The executor tracks position information for position-dependent lexer actions
// efficiently, ensuring that actions appearing only at the end of the rule do
// not cause bloating of the {@link DFA} created for the lexer.
var hashStuff = __webpack_require__(5).hashStuff;
var LexerIndexedCustomAction = __webpack_require__(20).LexerIndexedCustomAction;
function LexerActionExecutor(lexerActions) {
this.lexerActions = lexerActions === null ? [] : lexerActions;
// Caches the result of {@link //hashCode} since the hash code is an element
// of the performance-critical {@link LexerATNConfig//hashCode} operation.
this.cachedHashCode = hashStuff(lexerActions); // "".join([str(la) for la in
// lexerActions]))
return this;
}
// Creates a {@link LexerActionExecutor} which executes the actions for
// the input {@code lexerActionExecutor} followed by a specified
// {@code lexerAction}.
//
// @param lexerActionExecutor The executor for actions already traversed by
// the lexer while matching a token within a particular
// {@link LexerATNConfig}. If this is {@code null}, the method behaves as
// though it were an empty executor.
// @param lexerAction The lexer action to execute after the actions
// specified in {@code lexerActionExecutor}.
//
// @return A {@link LexerActionExecutor} for executing the combine actions
// of {@code lexerActionExecutor} and {@code lexerAction}.
LexerActionExecutor.append = function(lexerActionExecutor, lexerAction) {
if (lexerActionExecutor === null) {
return new LexerActionExecutor([ lexerAction ]);
}
var lexerActions = lexerActionExecutor.lexerActions.concat([ lexerAction ]);
return new LexerActionExecutor(lexerActions);
};
// Creates a {@link LexerActionExecutor} which encodes the current offset
// for position-dependent lexer actions.
//
// Normally, when the executor encounters lexer actions where
// {@link LexerAction//isPositionDependent} returns {@code true}, it calls
// {@link IntStream//seek} on the input {@link CharStream} to set the input
// position to the end of the current token. This behavior provides
// for efficient DFA representation of lexer actions which appear at the end
// of a lexer rule, even when the lexer rule matches a variable number of
// characters.
//
// Prior to traversing a match transition in the ATN, the current offset
// from the token start index is assigned to all position-dependent lexer
// actions which have not already been assigned a fixed offset. By storing
// the offsets relative to the token start index, the DFA representation of
// lexer actions which appear in the middle of tokens remains efficient due
// to sharing among tokens of the same length, regardless of their absolute
// position in the input stream.
//
// If the current executor already has offsets assigned to all
// position-dependent lexer actions, the method returns {@code this}.
//
// @param offset The current offset to assign to all position-dependent
// lexer actions which do not already have offsets assigned.
//
// @return A {@link LexerActionExecutor} which stores input stream offsets
// for all position-dependent lexer actions.
// /
LexerActionExecutor.prototype.fixOffsetBeforeMatch = function(offset) {
var updatedLexerActions = null;
for (var i = 0; i < this.lexerActions.length; i++) {
if (this.lexerActions[i].isPositionDependent &&
!(this.lexerActions[i] instanceof LexerIndexedCustomAction)) {
if (updatedLexerActions === null) {
updatedLexerActions = this.lexerActions.concat([]);
}
updatedLexerActions[i] = new LexerIndexedCustomAction(offset,
this.lexerActions[i]);
}
}
if (updatedLexerActions === null) {
return this;
} else {
return new LexerActionExecutor(updatedLexerActions);
}
};
// Execute the actions encapsulated by this executor within the context of a
// particular {@link Lexer}.
//
// This method calls {@link IntStream//seek} to set the position of the
// {@code input} {@link CharStream} prior to calling
// {@link LexerAction//execute} on a position-dependent action. Before the
// method returns, the input position will be restored to the same position
// it was in when the method was invoked.
//
// @param lexer The lexer instance.
// @param input The input stream which is the source for the current token.
// When this method is called, the current {@link IntStream//index} for
// {@code input} should be the start of the following token, i.e. 1
// character past the end of the current token.
// @param startIndex The token start index. This value may be passed to
// {@link IntStream//seek} to set the {@code input} position to the beginning
// of the token.
// /
LexerActionExecutor.prototype.execute = function(lexer, input, startIndex) {
var requiresSeek = false;
var stopIndex = input.index;
try {
for (var i = 0; i < this.lexerActions.length; i++) {
var lexerAction = this.lexerActions[i];
if (lexerAction instanceof LexerIndexedCustomAction) {
var offset = lexerAction.offset;
input.seek(startIndex + offset);
lexerAction = lexerAction.action;
requiresSeek = (startIndex + offset) !== stopIndex;
} else if (lexerAction.isPositionDependent) {
input.seek(stopIndex);
requiresSeek = false;
}
lexerAction.execute(lexer);
}
} finally {
if (requiresSeek) {
input.seek(stopIndex);
}
}
};
LexerActionExecutor.prototype.hashCode = function() {
return this.cachedHashCode;
};
LexerActionExecutor.prototype.updateHashCode = function(hash) {
hash.update(this.cachedHashCode);
};
LexerActionExecutor.prototype.equals = function(other) {
if (this === other) {
return true;
} else if (!(other instanceof LexerActionExecutor)) {
return false;
} else if (this.cachedHashCode != other.cachedHashCode) {
return false;
} else if (this.lexerActions.length != other.lexerActions.length) {
return false;
} else {
var numActions = this.lexerActions.length
for (var idx = 0; idx < numActions; ++idx) {
if (!this.lexerActions[idx].equals(other.lexerActions[idx])) {
return false;
}
}
return true;
}
};
exports.LexerActionExecutor = LexerActionExecutor;
/***/ }),
/* 31 */
/***/ (function(module, exports, __webpack_require__) {
//
/* 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.
*/
//
//
// The embodiment of the adaptive LL(*), ALL(*), parsing strategy.
//
//
// The basic complexity of the adaptive strategy makes it harder to understand.
// We begin with ATN simulation to build paths in a DFA. Subsequent prediction
// requests go through the DFA first. If they reach a state without an edge for
// the current symbol, the algorithm fails over to the ATN simulation to
// complete the DFA path for the current input (until it finds a conflict state
// or uniquely predicting state).
//
//
// All of that is done without using the outer context because we want to create
// a DFA that is not dependent upon the rule invocation stack when we do a
// prediction. One DFA works in all contexts. We avoid using context not
// necessarily because it's slower, although it can be, but because of the DFA
// caching problem. The closure routine only considers the rule invocation stack
// created during prediction beginning in the decision rule. For example, if
// prediction occurs without invoking another rule's ATN, there are no context
// stacks in the configurations. When lack of context leads to a conflict, we
// don't know if it's an ambiguity or a weakness in the strong LL(*) parsing
// strategy (versus full LL(*)).
//
//
// When SLL yields a configuration set with conflict, we rewind the input and
// retry the ATN simulation, this time using full outer context without adding
// to the DFA. Configuration context stacks will be the full invocation stacks
// from the start rule. If we get a conflict using full context, then we can
// definitively say we have a true ambiguity for that input sequence. If we
// don't get a conflict, it implies that the decision is sensitive to the outer
// context. (It is not context-sensitive in the sense of context-sensitive
// grammars.)
//
//
// The next time we reach this DFA state with an SLL conflict, through DFA
// simulation, we will again retry the ATN simulation using full context mode.
// This is slow because we can't save the results and have to "interpret" the
// ATN each time we get that input.
//
//
// CACHING FULL CONTEXT PREDICTIONS
//
//
// We could cache results from full context to predicted alternative easily and
// that saves a lot of time but doesn't work in presence of predicates. The set
// of visible predicates from the ATN start state changes depending on the
// context, because closure can fall off the end of a rule. I tried to cache
// tuples (stack context, semantic context, predicted alt) but it was slower
// than interpreting and much more complicated. Also required a huge amount of
// memory. The goal is not to create the world's fastest parser anyway. I'd like
// to keep this algorithm simple. By launching multiple threads, we can improve
// the speed of parsing across a large number of files.
//
//
// There is no strict ordering between the amount of input used by SLL vs LL,
// which makes it really hard to build a cache for full context. Let's say that
// we have input A B C that leads to an SLL conflict with full context X. That
// implies that using X we might only use A B but we could also use A B C D to
// resolve conflict. Input A B C D could predict alternative 1 in one position
// in the input and A B C E could predict alternative 2 in another position in
// input. The conflicting SLL configurations could still be non-unique in the
// full context prediction, which would lead us to requiring more input than the
// original A B C. To make a prediction cache work, we have to track the exact
// input used during the previous prediction. That amounts to a cache that maps
// X to a specific DFA for that context.
//
//
// Something should be done for left-recursive expression predictions. They are
// likely LL(1) + pred eval. Easier to do the whole SLL unless error and retry
// with full LL thing Sam does.
//
//
// AVOIDING FULL CONTEXT PREDICTION
//
//
// We avoid doing full context retry when the outer context is empty, we did not
// dip into the outer context by falling off the end of the decision state rule,
// or when we force SLL mode.
//
//
// As an example of the not dip into outer context case, consider as super
// constructor calls versus function calls. One grammar might look like
// this:
//
//
// ctorBody
// : '{' superCall? stat* '}'
// ;
//
//
//
// Or, you might see something like
//
//
// stat
// : superCall ';'
// | expression ';'
// | ...
// ;
//
//
//
// In both cases I believe that no closure operations will dip into the outer
// context. In the first case ctorBody in the worst case will stop at the '}'.
// In the 2nd case it should stop at the ';'. Both cases should stay within the
// entry rule and not dip into the outer context.
//
//
// PREDICATES
//
//
// Predicates are always evaluated if present in either SLL or LL both. SLL and
// LL simulation deals with predicates differently. SLL collects predicates as
// it performs closure operations like ANTLR v3 did. It delays predicate
// evaluation until it reaches and accept state. This allows us to cache the SLL
// ATN simulation whereas, if we had evaluated predicates on-the-fly during
// closure, the DFA state configuration sets would be different and we couldn't
// build up a suitable DFA.
//
//
// When building a DFA accept state during ATN simulation, we evaluate any
// predicates and return the sole semantically valid alternative. If there is
// more than 1 alternative, we report an ambiguity. If there are 0 alternatives,
// we throw an exception. Alternatives without predicates act like they have
// true predicates. The simple way to think about it is to strip away all
// alternatives with false predicates and choose the minimum alternative that
// remains.
//
//
// When we start in the DFA and reach an accept state that's predicated, we test
// those and return the minimum semantically viable alternative. If no
// alternatives are viable, we throw an exception.
//
//
// During full LL ATN simulation, closure always evaluates predicates and
// on-the-fly. This is crucial to reducing the configuration set size during
// closure. It hits a landmine when parsing with the Java grammar, for example,
// without this on-the-fly evaluation.
//
//
// SHARING DFA
//
//
// All instances of the same parser share the same decision DFAs through a
// static field. Each instance gets its own ATN simulator but they share the
// same {@link //decisionToDFA} field. They also share a
// {@link PredictionContextCache} object that makes sure that all
// {@link PredictionContext} objects are shared among the DFA states. This makes
// a big size difference.
//
//
// THREAD SAFETY
//
//
// The {@link ParserATNSimulator} locks on the {@link //decisionToDFA} field when
// it adds a new DFA object to that array. {@link //addDFAEdge}
// locks on the DFA for the current decision when setting the
// {@link DFAState//edges} field. {@link //addDFAState} locks on
// the DFA for the current decision when looking up a DFA state to see if it
// already exists. We must make sure that all requests to add DFA states that
// are equivalent result in the same shared DFA object. This is because lots of
// threads will be trying to update the DFA at once. The
// {@link //addDFAState} method also locks inside the DFA lock
// but this time on the shared context cache when it rebuilds the
// configurations' {@link PredictionContext} objects using cached
// subgraphs/nodes. No other locking occurs, even during DFA simulation. This is
// safe as long as we can guarantee that all threads referencing
// {@code s.edge[t]} get the same physical target {@link DFAState}, or
// {@code null}. Once into the DFA, the DFA simulation does not reference the
// {@link DFA//states} map. It follows the {@link DFAState//edges} field to new
// targets. The DFA simulator will either find {@link DFAState//edges} to be
// {@code null}, to be non-{@code null} and {@code dfa.edges[t]} null, or
// {@code dfa.edges[t]} to be non-null. The
// {@link //addDFAEdge} method could be racing to set the field
// but in either case the DFA simulator works; if {@code null}, and requests ATN
// simulation. It could also race trying to get {@code dfa.edges[t]}, but either
// way it will work because it's not doing a test and set operation.
//
//
// Starting with SLL then failing to combined SLL/LL (Two-Stage
// Parsing)
//
//
// Sam pointed out that if SLL does not give a syntax error, then there is no
// point in doing full LL, which is slower. We only have to try LL if we get a
// syntax error. For maximum speed, Sam starts the parser set to pure SLL
// mode with the {@link BailErrorStrategy}:
//
//
// parser.{@link Parser//getInterpreter() getInterpreter()}.{@link //setPredictionMode setPredictionMode}{@code (}{@link PredictionMode//SLL}{@code )};
// parser.{@link Parser//setErrorHandler setErrorHandler}(new {@link BailErrorStrategy}());
//
//
//
// If it does not get a syntax error, then we're done. If it does get a syntax
// error, we need to retry with the combined SLL/LL strategy.
//
//
// The reason this works is as follows. If there are no SLL conflicts, then the
// grammar is SLL (at least for that input set). If there is an SLL conflict,
// the full LL analysis must yield a set of viable alternatives which is a
// subset of the alternatives reported by SLL. If the LL set is a singleton,
// then the grammar is LL but not SLL. If the LL set is the same size as the SLL
// set, the decision is SLL. If the LL set has size > 1, then that decision
// is truly ambiguous on the current input. If the LL set is smaller, then the
// SLL conflict resolution might choose an alternative that the full LL would
// rule out as a possibility based upon better context information. If that's
// the case, then the SLL parse will definitely get an error because the full LL
// analysis says it's not viable. If SLL conflict resolution chooses an
// alternative within the LL set, them both SLL and LL would choose the same
// alternative because they both choose the minimum of multiple conflicting
// alternatives.
//
//
// Let's say we have a set of SLL conflicting alternatives {@code {1, 2, 3}} and
// a smaller LL set called s . If s is {@code {2, 3}}, then SLL
// parsing will get an error because SLL will pursue alternative 1. If
// s is {@code {1, 2}} or {@code {1, 3}} then both SLL and LL will
// choose the same alternative because alternative one is the minimum of either
// set. If s is {@code {2}} or {@code {3}} then SLL will get a syntax
// error. If s is {@code {1}} then SLL will succeed.
//
//
// Of course, if the input is invalid, then we will get an error for sure in
// both SLL and LL parsing. Erroneous input will therefore require 2 passes over
// the input.
//
var Utils = __webpack_require__(5);
var Set = Utils.Set;
var BitSet = Utils.BitSet;
var DoubleDict = Utils.DoubleDict;
var ATN = __webpack_require__(3).ATN;
var ATNState = __webpack_require__(8).ATNState;
var ATNConfig = __webpack_require__(7).ATNConfig;
var ATNConfigSet = __webpack_require__(29).ATNConfigSet;
var Token = __webpack_require__(6).Token;
var DFAState = __webpack_require__(28).DFAState;
var PredPrediction = __webpack_require__(28).PredPrediction;
var ATNSimulator = __webpack_require__(27).ATNSimulator;
var PredictionMode = __webpack_require__(32).PredictionMode;
var RuleContext = __webpack_require__(13).RuleContext;
var ParserRuleContext = __webpack_require__(16).ParserRuleContext;
var SemanticContext = __webpack_require__(9).SemanticContext;
var StarLoopEntryState = __webpack_require__(8).StarLoopEntryState;
var RuleStopState = __webpack_require__(8).RuleStopState;
var PredictionContext = __webpack_require__(12).PredictionContext;
var Interval = __webpack_require__(10).Interval;
var Transitions = __webpack_require__(11);
var Transition = Transitions.Transition;
var SetTransition = Transitions.SetTransition;
var NotSetTransition = Transitions.NotSetTransition;
var RuleTransition = Transitions.RuleTransition;
var ActionTransition = Transitions.ActionTransition;
var NoViableAltException = __webpack_require__(26).NoViableAltException;
var SingletonPredictionContext = __webpack_require__(12).SingletonPredictionContext;
var predictionContextFromRuleContext = __webpack_require__(12).predictionContextFromRuleContext;
function ParserATNSimulator(parser, atn, decisionToDFA, sharedContextCache) {
ATNSimulator.call(this, atn, sharedContextCache);
this.parser = parser;
this.decisionToDFA = decisionToDFA;
// SLL, LL, or LL + exact ambig detection?//
this.predictionMode = PredictionMode.LL;
// LAME globals to avoid parameters!!!!! I need these down deep in predTransition
this._input = null;
this._startIndex = 0;
this._outerContext = null;
this._dfa = null;
// Each prediction operation uses a cache for merge of prediction contexts.
// Don't keep around as it wastes huge amounts of memory. DoubleKeyMap
// isn't synchronized but we're ok since two threads shouldn't reuse same
// parser/atnsim object because it can only handle one input at a time.
// This maps graphs a and b to merged result c. (a,b)→c. We can avoid
// the merge if we ever see a and b again. Note that (b,a)→c should
// also be examined during cache lookup.
//
this.mergeCache = null;
return this;
}
ParserATNSimulator.prototype = Object.create(ATNSimulator.prototype);
ParserATNSimulator.prototype.constructor = ParserATNSimulator;
ParserATNSimulator.prototype.debug = false;
ParserATNSimulator.prototype.debug_closure = false;
ParserATNSimulator.prototype.debug_add = false;
ParserATNSimulator.prototype.debug_list_atn_decisions = false;
ParserATNSimulator.prototype.dfa_debug = false;
ParserATNSimulator.prototype.retry_debug = false;
ParserATNSimulator.prototype.reset = function() {
};
ParserATNSimulator.prototype.adaptivePredict = function(input, decision, outerContext) {
if (this.debug || this.debug_list_atn_decisions) {
console.log("adaptivePredict decision " + decision +
" exec LA(1)==" + this.getLookaheadName(input) +
" line " + input.LT(1).line + ":" +
input.LT(1).column);
}
this._input = input;
this._startIndex = input.index;
this._outerContext = outerContext;
var dfa = this.decisionToDFA[decision];
this._dfa = dfa;
var m = input.mark();
var index = input.index;
// Now we are certain to have a specific decision's DFA
// But, do we still need an initial state?
try {
var s0;
if (dfa.precedenceDfa) {
// the start state for a precedence DFA depends on the current
// parser precedence, and is provided by a DFA method.
s0 = dfa.getPrecedenceStartState(this.parser.getPrecedence());
} else {
// the start state for a "regular" DFA is just s0
s0 = dfa.s0;
}
if (s0===null) {
if (outerContext===null) {
outerContext = RuleContext.EMPTY;
}
if (this.debug || this.debug_list_atn_decisions) {
console.log("predictATN decision " + dfa.decision +
" exec LA(1)==" + this.getLookaheadName(input) +
", outerContext=" + outerContext.toString(this.parser.ruleNames));
}
var fullCtx = false;
var s0_closure = this.computeStartState(dfa.atnStartState, RuleContext.EMPTY, fullCtx);
if( dfa.precedenceDfa) {
// If this is a precedence DFA, we use applyPrecedenceFilter
// to convert the computed start state to a precedence start
// state. We then use DFA.setPrecedenceStartState to set the
// appropriate start state for the precedence level rather
// than simply setting DFA.s0.
//
dfa.s0.configs = s0_closure; // not used for prediction but useful to know start configs anyway
s0_closure = this.applyPrecedenceFilter(s0_closure);
s0 = this.addDFAState(dfa, new DFAState(null, s0_closure));
dfa.setPrecedenceStartState(this.parser.getPrecedence(), s0);
} else {
s0 = this.addDFAState(dfa, new DFAState(null, s0_closure));
dfa.s0 = s0;
}
}
var alt = this.execATN(dfa, s0, input, index, outerContext);
if (this.debug) {
console.log("DFA after predictATN: " + dfa.toString(this.parser.literalNames));
}
return alt;
} finally {
this._dfa = null;
this.mergeCache = null; // wack cache after each prediction
input.seek(index);
input.release(m);
}
};
// Performs ATN simulation to compute a predicted alternative based
// upon the remaining input, but also updates the DFA cache to avoid
// having to traverse the ATN again for the same input sequence.
// There are some key conditions we're looking for after computing a new
// set of ATN configs (proposed DFA state):
// if the set is empty, there is no viable alternative for current symbol
// does the state uniquely predict an alternative?
// does the state have a conflict that would prevent us from
// putting it on the work list?
// We also have some key operations to do:
// add an edge from previous DFA state to potentially new DFA state, D,
// upon current symbol but only if adding to work list, which means in all
// cases except no viable alternative (and possibly non-greedy decisions?)
// collecting predicates and adding semantic context to DFA accept states
// adding rule context to context-sensitive DFA accept states
// consuming an input symbol
// reporting a conflict
// reporting an ambiguity
// reporting a context sensitivity
// reporting insufficient predicates
// cover these cases:
// dead end
// single alt
// single alt + preds
// conflict
// conflict + preds
//
ParserATNSimulator.prototype.execATN = function(dfa, s0, input, startIndex, outerContext ) {
if (this.debug || this.debug_list_atn_decisions) {
console.log("execATN decision " + dfa.decision +
" exec LA(1)==" + this.getLookaheadName(input) +
" line " + input.LT(1).line + ":" + input.LT(1).column);
}
var alt;
var previousD = s0;
if (this.debug) {
console.log("s0 = " + s0);
}
var t = input.LA(1);
while(true) { // while more work
var D = this.getExistingTargetState(previousD, t);
if(D===null) {
D = this.computeTargetState(dfa, previousD, t);
}
if(D===ATNSimulator.ERROR) {
// if any configs in previous dipped into outer context, that
// means that input up to t actually finished entry rule
// at least for SLL decision. Full LL doesn't dip into outer
// so don't need special case.
// We will get an error no matter what so delay until after
// decision; better error message. Also, no reachable target
// ATN states in SLL implies LL will also get nowhere.
// If conflict in states that dip out, choose min since we
// will get error no matter what.
var e = this.noViableAlt(input, outerContext, previousD.configs, startIndex);
input.seek(startIndex);
alt = this.getSynValidOrSemInvalidAltThatFinishedDecisionEntryRule(previousD.configs, outerContext);
if(alt!==ATN.INVALID_ALT_NUMBER) {
return alt;
} else {
throw e;
}
}
if(D.requiresFullContext && this.predictionMode !== PredictionMode.SLL) {
// IF PREDS, MIGHT RESOLVE TO SINGLE ALT => SLL (or syntax error)
var conflictingAlts = null;
if (D.predicates!==null) {
if (this.debug) {
console.log("DFA state has preds in DFA sim LL failover");
}
var conflictIndex = input.index;
if(conflictIndex !== startIndex) {
input.seek(startIndex);
}
conflictingAlts = this.evalSemanticContext(D.predicates, outerContext, true);
if (conflictingAlts.length===1) {
if(this.debug) {
console.log("Full LL avoided");
}
return conflictingAlts.minValue();
}
if (conflictIndex !== startIndex) {
// restore the index so reporting the fallback to full
// context occurs with the index at the correct spot
input.seek(conflictIndex);
}
}
if (this.dfa_debug) {
console.log("ctx sensitive state " + outerContext +" in " + D);
}
var fullCtx = true;
var s0_closure = this.computeStartState(dfa.atnStartState, outerContext, fullCtx);
this.reportAttemptingFullContext(dfa, conflictingAlts, D.configs, startIndex, input.index);
alt = this.execATNWithFullContext(dfa, D, s0_closure, input, startIndex, outerContext);
return alt;
}
if (D.isAcceptState) {
if (D.predicates===null) {
return D.prediction;
}
var stopIndex = input.index;
input.seek(startIndex);
var alts = this.evalSemanticContext(D.predicates, outerContext, true);
if (alts.length===0) {
throw this.noViableAlt(input, outerContext, D.configs, startIndex);
} else if (alts.length===1) {
return alts.minValue();
} else {
// report ambiguity after predicate evaluation to make sure the correct set of ambig alts is reported.
this.reportAmbiguity(dfa, D, startIndex, stopIndex, false, alts, D.configs);
return alts.minValue();
}
}
previousD = D;
if (t !== Token.EOF) {
input.consume();
t = input.LA(1);
}
}
};
//
// Get an existing target state for an edge in the DFA. If the target state
// for the edge has not yet been computed or is otherwise not available,
// this method returns {@code null}.
//
// @param previousD The current DFA state
// @param t The next input symbol
// @return The existing target DFA state for the given input symbol
// {@code t}, or {@code null} if the target state for this edge is not
// already cached
//
ParserATNSimulator.prototype.getExistingTargetState = function(previousD, t) {
var edges = previousD.edges;
if (edges===null) {
return null;
} else {
return edges[t + 1] || null;
}
};
//
// Compute a target state for an edge in the DFA, and attempt to add the
// computed state and corresponding edge to the DFA.
//
// @param dfa The DFA
// @param previousD The current DFA state
// @param t The next input symbol
//
// @return The computed target DFA state for the given input symbol
// {@code t}. If {@code t} does not lead to a valid DFA state, this method
// returns {@link //ERROR}.
//
ParserATNSimulator.prototype.computeTargetState = function(dfa, previousD, t) {
var reach = this.computeReachSet(previousD.configs, t, false);
if(reach===null) {
this.addDFAEdge(dfa, previousD, t, ATNSimulator.ERROR);
return ATNSimulator.ERROR;
}
// create new target state; we'll add to DFA after it's complete
var D = new DFAState(null, reach);
var predictedAlt = this.getUniqueAlt(reach);
if (this.debug) {
var altSubSets = PredictionMode.getConflictingAltSubsets(reach);
console.log("SLL altSubSets=" + Utils.arrayToString(altSubSets) +
", previous=" + previousD.configs +
", configs=" + reach +
", predict=" + predictedAlt +
", allSubsetsConflict=" +
PredictionMode.allSubsetsConflict(altSubSets) + ", conflictingAlts=" +
this.getConflictingAlts(reach));
}
if (predictedAlt!==ATN.INVALID_ALT_NUMBER) {
// NO CONFLICT, UNIQUELY PREDICTED ALT
D.isAcceptState = true;
D.configs.uniqueAlt = predictedAlt;
D.prediction = predictedAlt;
} else if (PredictionMode.hasSLLConflictTerminatingPrediction(this.predictionMode, reach)) {
// MORE THAN ONE VIABLE ALTERNATIVE
D.configs.conflictingAlts = this.getConflictingAlts(reach);
D.requiresFullContext = true;
// in SLL-only mode, we will stop at this state and return the minimum alt
D.isAcceptState = true;
D.prediction = D.configs.conflictingAlts.minValue();
}
if (D.isAcceptState && D.configs.hasSemanticContext) {
this.predicateDFAState(D, this.atn.getDecisionState(dfa.decision));
if( D.predicates!==null) {
D.prediction = ATN.INVALID_ALT_NUMBER;
}
}
// all adds to dfa are done after we've created full D state
D = this.addDFAEdge(dfa, previousD, t, D);
return D;
};
ParserATNSimulator.prototype.predicateDFAState = function(dfaState, decisionState) {
// We need to test all predicates, even in DFA states that
// uniquely predict alternative.
var nalts = decisionState.transitions.length;
// Update DFA so reach becomes accept state with (predicate,alt)
// pairs if preds found for conflicting alts
var altsToCollectPredsFrom = this.getConflictingAltsOrUniqueAlt(dfaState.configs);
var altToPred = this.getPredsForAmbigAlts(altsToCollectPredsFrom, dfaState.configs, nalts);
if (altToPred!==null) {
dfaState.predicates = this.getPredicatePredictions(altsToCollectPredsFrom, altToPred);
dfaState.prediction = ATN.INVALID_ALT_NUMBER; // make sure we use preds
} else {
// There are preds in configs but they might go away
// when OR'd together like {p}? || NONE == NONE. If neither
// alt has preds, resolve to min alt
dfaState.prediction = altsToCollectPredsFrom.minValue();
}
};
// comes back with reach.uniqueAlt set to a valid alt
ParserATNSimulator.prototype.execATNWithFullContext = function(dfa, D, // how far we got before failing over
s0,
input,
startIndex,
outerContext) {
if (this.debug || this.debug_list_atn_decisions) {
console.log("execATNWithFullContext "+s0);
}
var fullCtx = true;
var foundExactAmbig = false;
var reach = null;
var previous = s0;
input.seek(startIndex);
var t = input.LA(1);
var predictedAlt = -1;
while (true) { // while more work
reach = this.computeReachSet(previous, t, fullCtx);
if (reach===null) {
// if any configs in previous dipped into outer context, that
// means that input up to t actually finished entry rule
// at least for LL decision. Full LL doesn't dip into outer
// so don't need special case.
// We will get an error no matter what so delay until after
// decision; better error message. Also, no reachable target
// ATN states in SLL implies LL will also get nowhere.
// If conflict in states that dip out, choose min since we
// will get error no matter what.
var e = this.noViableAlt(input, outerContext, previous, startIndex);
input.seek(startIndex);
var alt = this.getSynValidOrSemInvalidAltThatFinishedDecisionEntryRule(previous, outerContext);
if(alt!==ATN.INVALID_ALT_NUMBER) {
return alt;
} else {
throw e;
}
}
var altSubSets = PredictionMode.getConflictingAltSubsets(reach);
if(this.debug) {
console.log("LL altSubSets=" + altSubSets + ", predict=" +
PredictionMode.getUniqueAlt(altSubSets) + ", resolvesToJustOneViableAlt=" +
PredictionMode.resolvesToJustOneViableAlt(altSubSets));
}
reach.uniqueAlt = this.getUniqueAlt(reach);
// unique prediction?
if(reach.uniqueAlt!==ATN.INVALID_ALT_NUMBER) {
predictedAlt = reach.uniqueAlt;
break;
} else if (this.predictionMode !== PredictionMode.LL_EXACT_AMBIG_DETECTION) {
predictedAlt = PredictionMode.resolvesToJustOneViableAlt(altSubSets);
if(predictedAlt !== ATN.INVALID_ALT_NUMBER) {
break;
}
} else {
// In exact ambiguity mode, we never try to terminate early.
// Just keeps scarfing until we know what the conflict is
if (PredictionMode.allSubsetsConflict(altSubSets) && PredictionMode.allSubsetsEqual(altSubSets)) {
foundExactAmbig = true;
predictedAlt = PredictionMode.getSingleViableAlt(altSubSets);
break;
}
// else there are multiple non-conflicting subsets or
// we're not sure what the ambiguity is yet.
// So, keep going.
}
previous = reach;
if( t !== Token.EOF) {
input.consume();
t = input.LA(1);
}
}
// If the configuration set uniquely predicts an alternative,
// without conflict, then we know that it's a full LL decision
// not SLL.
if (reach.uniqueAlt !== ATN.INVALID_ALT_NUMBER ) {
this.reportContextSensitivity(dfa, predictedAlt, reach, startIndex, input.index);
return predictedAlt;
}
// We do not check predicates here because we have checked them
// on-the-fly when doing full context prediction.
//
// In non-exact ambiguity detection mode, we might actually be able to
// detect an exact ambiguity, but I'm not going to spend the cycles
// needed to check. We only emit ambiguity warnings in exact ambiguity
// mode.
//
// For example, we might know that we have conflicting configurations.
// But, that does not mean that there is no way forward without a
// conflict. It's possible to have nonconflicting alt subsets as in:
// altSubSets=[{1, 2}, {1, 2}, {1}, {1, 2}]
// from
//
// [(17,1,[5 $]), (13,1,[5 10 $]), (21,1,[5 10 $]), (11,1,[$]),
// (13,2,[5 10 $]), (21,2,[5 10 $]), (11,2,[$])]
//
// In this case, (17,1,[5 $]) indicates there is some next sequence that
// would resolve this without conflict to alternative 1. Any other viable
// next sequence, however, is associated with a conflict. We stop
// looking for input because no amount of further lookahead will alter
// the fact that we should predict alternative 1. We just can't say for
// sure that there is an ambiguity without looking further.
this.reportAmbiguity(dfa, D, startIndex, input.index, foundExactAmbig, null, reach);
return predictedAlt;
};
ParserATNSimulator.prototype.computeReachSet = function(closure, t, fullCtx) {
if (this.debug) {
console.log("in computeReachSet, starting closure: " + closure);
}
if( this.mergeCache===null) {
this.mergeCache = new DoubleDict();
}
var intermediate = new ATNConfigSet(fullCtx);
// Configurations already in a rule stop state indicate reaching the end
// of the decision rule (local context) or end of the start rule (full
// context). Once reached, these configurations are never updated by a
// closure operation, so they are handled separately for the performance
// advantage of having a smaller intermediate set when calling closure.
//
// For full-context reach operations, separate handling is required to
// ensure that the alternative matching the longest overall sequence is
// chosen when multiple such configurations can match the input.
var skippedStopStates = null;
// First figure out where we can reach on input t
for (var i=0; iWhen {@code lookToEndOfRule} is true, this method uses
// {@link ATN//nextTokens} for each configuration in {@code configs} which is
// not already in a rule stop state to see if a rule stop state is reachable
// from the configuration via epsilon-only transitions.
//
// @param configs the configuration set to update
// @param lookToEndOfRule when true, this method checks for rule stop states
// reachable by epsilon-only transitions from each configuration in
// {@code configs}.
//
// @return {@code configs} if all configurations in {@code configs} are in a
// rule stop state, otherwise return a new configuration set containing only
// the configurations from {@code configs} which are in a rule stop state
//
ParserATNSimulator.prototype.removeAllConfigsNotInRuleStopState = function(configs, lookToEndOfRule) {
if (PredictionMode.allConfigsInRuleStopStates(configs)) {
return configs;
}
var result = new ATNConfigSet(configs.fullCtx);
for(var i=0; i
// Evaluate the precedence predicates for each configuration using
// {@link SemanticContext//evalPrecedence}.
// Remove all configurations which predict an alternative greater than
// 1, for which another configuration that predicts alternative 1 is in the
// same ATN state with the same prediction context. This transformation is
// valid for the following reasons:
//
// The closure block cannot contain any epsilon transitions which bypass
// the body of the closure, so all states reachable via alternative 1 are
// part of the precedence alternatives of the transformed left-recursive
// rule.
// The "primary" portion of a left recursive rule cannot contain an
// epsilon transition, so the only way an alternative other than 1 can exist
// in a state that is also reachable via alternative 1 is by nesting calls
// to the left-recursive rule, with the outer calls not being at the
// preferred precedence level.
//
//
//
//
//
// The prediction context must be considered by this filter to address
// situations like the following.
//
//
//
// grammar TA;
// prog: statement* EOF;
// statement: letterA | statement letterA 'b' ;
// letterA: 'a';
//
//
//
// If the above grammar, the ATN state immediately before the token
// reference {@code 'a'} in {@code letterA} is reachable from the left edge
// of both the primary and closure blocks of the left-recursive rule
// {@code statement}. The prediction context associated with each of these
// configurations distinguishes between them, and prevents the alternative
// which stepped out to {@code prog} (and then back in to {@code statement}
// from being eliminated by the filter.
//
//
// @param configs The configuration set computed by
// {@link //computeStartState} as the start state for the DFA.
// @return The transformed configuration set representing the start state
// for a precedence DFA at a particular precedence level (determined by
// calling {@link Parser//getPrecedence}).
//
ParserATNSimulator.prototype.applyPrecedenceFilter = function(configs) {
var config;
var statesFromAlt1 = [];
var configSet = new ATNConfigSet(configs.fullCtx);
for(var i=0; i1
// (basically a graph subtraction algorithm).
if (!config.precedenceFilterSuppressed) {
var context = statesFromAlt1[config.state.stateNumber] || null;
if (context!==null && context.equals(config.context)) {
// eliminated
continue;
}
}
configSet.add(config, this.mergeCache);
}
return configSet;
};
ParserATNSimulator.prototype.getReachableTarget = function(trans, ttype) {
if (trans.matches(ttype, 0, this.atn.maxTokenType)) {
return trans.target;
} else {
return null;
}
};
ParserATNSimulator.prototype.getPredsForAmbigAlts = function(ambigAlts, configs, nalts) {
// REACH=[1|1|[]|0:0, 1|2|[]|0:1]
// altToPred starts as an array of all null contexts. The entry at index i
// corresponds to alternative i. altToPred[i] may have one of three values:
// 1. null: no ATNConfig c is found such that c.alt==i
// 2. SemanticContext.NONE: At least one ATNConfig c exists such that
// c.alt==i and c.semanticContext==SemanticContext.NONE. In other words,
// alt i has at least one unpredicated config.
// 3. Non-NONE Semantic Context: There exists at least one, and for all
// ATNConfig c such that c.alt==i, c.semanticContext!=SemanticContext.NONE.
//
// From this, it is clear that NONE||anything==NONE.
//
var altToPred = [];
for(var i=0;i
// The default implementation of this method uses the following
// algorithm to identify an ATN configuration which successfully parsed the
// decision entry rule. Choosing such an alternative ensures that the
// {@link ParserRuleContext} returned by the calling rule will be complete
// and valid, and the syntax error will be reported later at a more
// localized location.
//
//
// If a syntactically valid path or paths reach the end of the decision rule and
// they are semantically valid if predicated, return the min associated alt.
// Else, if a semantically invalid but syntactically valid path exist
// or paths exist, return the minimum associated alt.
//
// Otherwise, return {@link ATN//INVALID_ALT_NUMBER}.
//
//
//
// In some scenarios, the algorithm described above could predict an
// alternative which will result in a {@link FailedPredicateException} in
// the parser. Specifically, this could occur if the only configuration
// capable of successfully parsing to the end of the decision rule is
// blocked by a semantic predicate. By choosing this alternative within
// {@link //adaptivePredict} instead of throwing a
// {@link NoViableAltException}, the resulting
// {@link FailedPredicateException} in the parser will identify the specific
// predicate which is preventing the parser from successfully parsing the
// decision rule, which helps developers identify and correct logic errors
// in semantic predicates.
//
//
// @param configs The ATN configurations which were valid immediately before
// the {@link //ERROR} state was reached
// @param outerContext The is the \gamma_0 initial parser context from the paper
// or the parser stack at the instant before prediction commences.
//
// @return The value to return from {@link //adaptivePredict}, or
// {@link ATN//INVALID_ALT_NUMBER} if a suitable alternative was not
// identified and {@link //adaptivePredict} should report an error instead.
//
ParserATNSimulator.prototype.getSynValidOrSemInvalidAltThatFinishedDecisionEntryRule = function(configs, outerContext) {
var cfgs = this.splitAccordingToSemanticValidity(configs, outerContext);
var semValidConfigs = cfgs[0];
var semInvalidConfigs = cfgs[1];
var alt = this.getAltThatFinishedDecisionEntryRule(semValidConfigs);
if (alt!==ATN.INVALID_ALT_NUMBER) { // semantically/syntactically viable path exists
return alt;
}
// Is there a syntactically valid path with a failed pred?
if (semInvalidConfigs.items.length>0) {
alt = this.getAltThatFinishedDecisionEntryRule(semInvalidConfigs);
if (alt!==ATN.INVALID_ALT_NUMBER) { // syntactically viable path exists
return alt;
}
}
return ATN.INVALID_ALT_NUMBER;
};
ParserATNSimulator.prototype.getAltThatFinishedDecisionEntryRule = function(configs) {
var alts = [];
for(var i=0;i0 || ((c.state instanceof RuleStopState) && c.context.hasEmptyPath())) {
if(alts.indexOf(c.alt)<0) {
alts.push(c.alt);
}
}
}
if (alts.length===0) {
return ATN.INVALID_ALT_NUMBER;
} else {
return Math.min.apply(null, alts);
}
};
// Walk the list of configurations and split them according to
// those that have preds evaluating to true/false. If no pred, assume
// true pred and include in succeeded set. Returns Pair of sets.
//
// Create a new set so as not to alter the incoming parameter.
//
// Assumption: the input stream has been restored to the starting point
// prediction, which is where predicates need to evaluate.
//
ParserATNSimulator.prototype.splitAccordingToSemanticValidity = function( configs, outerContext) {
var succeeded = new ATNConfigSet(configs.fullCtx);
var failed = new ATNConfigSet(configs.fullCtx);
for(var i=0;i50) {
throw "problem";
}
}
if (config.state instanceof RuleStopState) {
// We hit rule end. If we have context info, use it
// run thru all possible stack tops in ctx
if (! config.context.isEmpty()) {
for ( var i =0; i 0.
if (closureBusy.add(c)!==c) {
// avoid infinite recursion for right-recursive rules
continue;
}
if (this._dfa !== null && this._dfa.precedenceDfa) {
if (t.outermostPrecedenceReturn === this._dfa.atnStartState.ruleIndex) {
c.precedenceFilterSuppressed = true;
}
}
c.reachesIntoOuterContext += 1;
configs.dipsIntoOuterContext = true; // TODO: can remove? only care when we add to set per middle of this method
newDepth -= 1;
if (this.debug) {
console.log("dips into outer ctx: " + c);
}
} else if (t instanceof RuleTransition) {
// latch when newDepth goes negative - once we step out of the entry context we can't return
if (newDepth >= 0) {
newDepth += 1;
}
}
this.closureCheckingStopState(c, configs, closureBusy, continueCollecting, fullCtx, newDepth, treatEofAsEpsilon);
}
}
};
ParserATNSimulator.prototype.canDropLoopEntryEdgeInLeftRecursiveRule = function(config) {
// return False
var p = config.state;
// First check to see if we are in StarLoopEntryState generated during
// left-recursion elimination. For efficiency, also check if
// the context has an empty stack case. If so, it would mean
// global FOLLOW so we can't perform optimization
// Are we the special loop entry/exit state? or SLL wildcard
if(p.stateType != ATNState.STAR_LOOP_ENTRY)
return false;
if(p.stateType != ATNState.STAR_LOOP_ENTRY || !p.isPrecedenceDecision ||
config.context.isEmpty() || config.context.hasEmptyPath())
return false;
// Require all return states to return back to the same rule that p is in.
var numCtxs = config.context.length;
for(var i=0; i=0) {
return this.parser.ruleNames[index];
} else {
return "";
}
};
ParserATNSimulator.prototype.getEpsilonTarget = function(config, t, collectPredicates, inContext, fullCtx, treatEofAsEpsilon) {
switch(t.serializationType) {
case Transition.RULE:
return this.ruleTransition(config, t);
case Transition.PRECEDENCE:
return this.precedenceTransition(config, t, collectPredicates, inContext, fullCtx);
case Transition.PREDICATE:
return this.predTransition(config, t, collectPredicates, inContext, fullCtx);
case Transition.ACTION:
return this.actionTransition(config, t);
case Transition.EPSILON:
return new ATNConfig({state:t.target}, config);
case Transition.ATOM:
case Transition.RANGE:
case Transition.SET:
// EOF transitions act like epsilon transitions after the first EOF
// transition is traversed
if (treatEofAsEpsilon) {
if (t.matches(Token.EOF, 0, 1)) {
return new ATNConfig({state: t.target}, config);
}
}
return null;
default:
return null;
}
};
ParserATNSimulator.prototype.actionTransition = function(config, t) {
if (this.debug) {
var index = t.actionIndex==-1 ? 65535 : t.actionIndex;
console.log("ACTION edge " + t.ruleIndex + ":" + index);
}
return new ATNConfig({state:t.target}, config);
};
ParserATNSimulator.prototype.precedenceTransition = function(config, pt, collectPredicates, inContext, fullCtx) {
if (this.debug) {
console.log("PRED (collectPredicates=" + collectPredicates + ") " +
pt.precedence + ">=_p, ctx dependent=true");
if (this.parser!==null) {
console.log("context surrounding pred is " + Utils.arrayToString(this.parser.getRuleInvocationStack()));
}
}
var c = null;
if (collectPredicates && inContext) {
if (fullCtx) {
// In full context mode, we can evaluate predicates on-the-fly
// during closure, which dramatically reduces the size of
// the config sets. It also obviates the need to test predicates
// later during conflict resolution.
var currentPosition = this._input.index;
this._input.seek(this._startIndex);
var predSucceeds = pt.getPredicate().evaluate(this.parser, this._outerContext);
this._input.seek(currentPosition);
if (predSucceeds) {
c = new ATNConfig({state:pt.target}, config); // no pred context
}
} else {
var newSemCtx = SemanticContext.andContext(config.semanticContext, pt.getPredicate());
c = new ATNConfig({state:pt.target, semanticContext:newSemCtx}, config);
}
} else {
c = new ATNConfig({state:pt.target}, config);
}
if (this.debug) {
console.log("config from pred transition=" + c);
}
return c;
};
ParserATNSimulator.prototype.predTransition = function(config, pt, collectPredicates, inContext, fullCtx) {
if (this.debug) {
console.log("PRED (collectPredicates=" + collectPredicates + ") " + pt.ruleIndex +
":" + pt.predIndex + ", ctx dependent=" + pt.isCtxDependent);
if (this.parser!==null) {
console.log("context surrounding pred is " + Utils.arrayToString(this.parser.getRuleInvocationStack()));
}
}
var c = null;
if (collectPredicates && ((pt.isCtxDependent && inContext) || ! pt.isCtxDependent)) {
if (fullCtx) {
// In full context mode, we can evaluate predicates on-the-fly
// during closure, which dramatically reduces the size of
// the config sets. It also obviates the need to test predicates
// later during conflict resolution.
var currentPosition = this._input.index;
this._input.seek(this._startIndex);
var predSucceeds = pt.getPredicate().evaluate(this.parser, this._outerContext);
this._input.seek(currentPosition);
if (predSucceeds) {
c = new ATNConfig({state:pt.target}, config); // no pred context
}
} else {
var newSemCtx = SemanticContext.andContext(config.semanticContext, pt.getPredicate());
c = new ATNConfig({state:pt.target, semanticContext:newSemCtx}, config);
}
} else {
c = new ATNConfig({state:pt.target}, config);
}
if (this.debug) {
console.log("config from pred transition=" + c);
}
return c;
};
ParserATNSimulator.prototype.ruleTransition = function(config, t) {
if (this.debug) {
console.log("CALL rule " + this.getRuleName(t.target.ruleIndex) + ", ctx=" + config.context);
}
var returnState = t.followState;
var newContext = SingletonPredictionContext.create(config.context, returnState.stateNumber);
return new ATNConfig({state:t.target, context:newContext}, config );
};
ParserATNSimulator.prototype.getConflictingAlts = function(configs) {
var altsets = PredictionMode.getConflictingAltSubsets(configs);
return PredictionMode.getAlts(altsets);
};
// Sam pointed out a problem with the previous definition, v3, of
// ambiguous states. If we have another state associated with conflicting
// alternatives, we should keep going. For example, the following grammar
//
// s : (ID | ID ID?) ';' ;
//
// When the ATN simulation reaches the state before ';', it has a DFA
// state that looks like: [12|1|[], 6|2|[], 12|2|[]]. Naturally
// 12|1|[] and 12|2|[] conflict, but we cannot stop processing this node
// because alternative to has another way to continue, via [6|2|[]].
// The key is that we have a single state that has config's only associated
// with a single alternative, 2, and crucially the state transitions
// among the configurations are all non-epsilon transitions. That means
// we don't consider any conflicts that include alternative 2. So, we
// ignore the conflict between alts 1 and 2. We ignore a set of
// conflicting alts when there is an intersection with an alternative
// associated with a single alt state in the state→config-list map.
//
// It's also the case that we might have two conflicting configurations but
// also a 3rd nonconflicting configuration for a different alternative:
// [1|1|[], 1|2|[], 8|3|[]]. This can come about from grammar:
//
// a : A | A | A B ;
//
// After matching input A, we reach the stop state for rule A, state 1.
// State 8 is the state right before B. Clearly alternatives 1 and 2
// conflict and no amount of further lookahead will separate the two.
// However, alternative 3 will be able to continue and so we do not
// stop working on this state. In the previous example, we're concerned
// with states associated with the conflicting alternatives. Here alt
// 3 is not associated with the conflicting configs, but since we can continue
// looking for input reasonably, I don't declare the state done. We
// ignore a set of conflicting alts when we have an alternative
// that we still need to pursue.
//
ParserATNSimulator.prototype.getConflictingAltsOrUniqueAlt = function(configs) {
var conflictingAlts = null;
if (configs.uniqueAlt!== ATN.INVALID_ALT_NUMBER) {
conflictingAlts = new BitSet();
conflictingAlts.add(configs.uniqueAlt);
} else {
conflictingAlts = configs.conflictingAlts;
}
return conflictingAlts;
};
ParserATNSimulator.prototype.getTokenName = function( t) {
if (t===Token.EOF) {
return "EOF";
}
if( this.parser!==null && this.parser.literalNames!==null) {
if (t >= this.parser.literalNames.length && t >= this.parser.symbolicNames.length) {
console.log("" + t + " ttype out of range: " + this.parser.literalNames);
console.log("" + this.parser.getInputStream().getTokens());
} else {
var name = this.parser.literalNames[t] || this.parser.symbolicNames[t];
return name + "<" + t + ">";
}
}
return "" + t;
};
ParserATNSimulator.prototype.getLookaheadName = function(input) {
return this.getTokenName(input.LA(1));
};
// Used for debugging in adaptivePredict around execATN but I cut
// it out for clarity now that alg. works well. We can leave this
// "dead" code for a bit.
//
ParserATNSimulator.prototype.dumpDeadEndConfigs = function(nvae) {
console.log("dead end configs: ");
var decs = nvae.getDeadEndConfigs();
for(var i=0; i0) {
var t = c.state.transitions[0];
if (t instanceof AtomTransition) {
trans = "Atom "+ this.getTokenName(t.label);
} else if (t instanceof SetTransition) {
var neg = (t instanceof NotSetTransition);
trans = (neg ? "~" : "") + "Set " + t.set;
}
}
console.error(c.toString(this.parser, true) + ":" + trans);
}
};
ParserATNSimulator.prototype.noViableAlt = function(input, outerContext, configs, startIndex) {
return new NoViableAltException(this.parser, input, input.get(startIndex), input.LT(1), configs, outerContext);
};
ParserATNSimulator.prototype.getUniqueAlt = function(configs) {
var alt = ATN.INVALID_ALT_NUMBER;
for(var i=0;iIf {@code to} is {@code null}, this method returns {@code null}.
// Otherwise, this method returns the {@link DFAState} returned by calling
// {@link //addDFAState} for the {@code to} state.
//
// @param dfa The DFA
// @param from The source state for the edge
// @param t The input symbol
// @param to The target state for the edge
//
// @return If {@code to} is {@code null}, this method returns {@code null};
// otherwise this method returns the result of calling {@link //addDFAState}
// on {@code to}
//
ParserATNSimulator.prototype.addDFAEdge = function(dfa, from_, t, to) {
if( this.debug) {
console.log("EDGE " + from_ + " -> " + to + " upon " + this.getTokenName(t));
}
if (to===null) {
return null;
}
to = this.addDFAState(dfa, to); // used existing if possible not incoming
if (from_===null || t < -1 || t > this.atn.maxTokenType) {
return to;
}
if (from_.edges===null) {
from_.edges = [];
}
from_.edges[t+1] = to; // connect
if (this.debug) {
var literalNames = this.parser===null ? null : this.parser.literalNames;
var symbolicNames = this.parser===null ? null : this.parser.symbolicNames;
console.log("DFA=\n" + dfa.toString(literalNames, symbolicNames));
}
return to;
};
//
// Add state {@code D} to the DFA if it is not already present, and return
// the actual instance stored in the DFA. If a state equivalent to {@code D}
// is already in the DFA, the existing state is returned. Otherwise this
// method returns {@code D} after adding it to the DFA.
//
// If {@code D} is {@link //ERROR}, this method returns {@link //ERROR} and
// does not change the DFA.
//
// @param dfa The dfa
// @param D The DFA state to add
// @return The state stored in the DFA. This will be either the existing
// state if {@code D} is already in the DFA, or {@code D} itself if the
// state was not already present.
//
ParserATNSimulator.prototype.addDFAState = function(dfa, D) {
if (D == ATNSimulator.ERROR) {
return D;
}
var existing = dfa.states.get(D);
if(existing!==null) {
return existing;
}
D.stateNumber = dfa.states.length;
if (! D.configs.readOnly) {
D.configs.optimizeConfigs(this);
D.configs.setReadonly(true);
}
dfa.states.add(D);
if (this.debug) {
console.log("adding new DFA state: " + D);
}
return D;
};
ParserATNSimulator.prototype.reportAttemptingFullContext = function(dfa, conflictingAlts, configs, startIndex, stopIndex) {
if (this.debug || this.retry_debug) {
var interval = new Interval(startIndex, stopIndex + 1);
console.log("reportAttemptingFullContext decision=" + dfa.decision + ":" + configs +
", input=" + this.parser.getTokenStream().getText(interval));
}
if (this.parser!==null) {
this.parser.getErrorListenerDispatch().reportAttemptingFullContext(this.parser, dfa, startIndex, stopIndex, conflictingAlts, configs);
}
};
ParserATNSimulator.prototype.reportContextSensitivity = function(dfa, prediction, configs, startIndex, stopIndex) {
if (this.debug || this.retry_debug) {
var interval = new Interval(startIndex, stopIndex + 1);
console.log("reportContextSensitivity decision=" + dfa.decision + ":" + configs +
", input=" + this.parser.getTokenStream().getText(interval));
}
if (this.parser!==null) {
this.parser.getErrorListenerDispatch().reportContextSensitivity(this.parser, dfa, startIndex, stopIndex, prediction, configs);
}
};
// If context sensitive parsing, we know it's ambiguity not conflict//
ParserATNSimulator.prototype.reportAmbiguity = function(dfa, D, startIndex, stopIndex,
exact, ambigAlts, configs ) {
if (this.debug || this.retry_debug) {
var interval = new Interval(startIndex, stopIndex + 1);
console.log("reportAmbiguity " + ambigAlts + ":" + configs +
", input=" + this.parser.getTokenStream().getText(interval));
}
if (this.parser!==null) {
this.parser.getErrorListenerDispatch().reportAmbiguity(this.parser, dfa, startIndex, stopIndex, exact, ambigAlts, configs);
}
};
exports.ParserATNSimulator = ParserATNSimulator;
/***/ }),
/* 32 */
/***/ (function(module, exports, __webpack_require__) {
//
/* 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 enumeration defines the prediction modes available in ANTLR 4 along with
// utility methods for analyzing configuration sets for conflicts and/or
// ambiguities.
var Set = __webpack_require__(5).Set;
var Map = __webpack_require__(5).Map;
var BitSet = __webpack_require__(5).BitSet;
var AltDict = __webpack_require__(5).AltDict;
var ATN = __webpack_require__(3).ATN;
var RuleStopState = __webpack_require__(8).RuleStopState;
var ATNConfigSet = __webpack_require__(29).ATNConfigSet;
var ATNConfig = __webpack_require__(7).ATNConfig;
var SemanticContext = __webpack_require__(9).SemanticContext;
var Hash = __webpack_require__(5).Hash;
var hashStuff = __webpack_require__(5).hashStuff;
var equalArrays = __webpack_require__(5).equalArrays;
function PredictionMode() {
return this;
}
//
// The SLL(*) prediction mode. This prediction mode ignores the current
// parser context when making predictions. This is the fastest prediction
// mode, and provides correct results for many grammars. This prediction
// mode is more powerful than the prediction mode provided by ANTLR 3, but
// may result in syntax errors for grammar and input combinations which are
// not SLL.
//
//
// When using this prediction mode, the parser will either return a correct
// parse tree (i.e. the same parse tree that would be returned with the
// {@link //LL} prediction mode), or it will report a syntax error. If a
// syntax error is encountered when using the {@link //SLL} prediction mode,
// it may be due to either an actual syntax error in the input or indicate
// that the particular combination of grammar and input requires the more
// powerful {@link //LL} prediction abilities to complete successfully.
//
//
// This prediction mode does not provide any guarantees for prediction
// behavior for syntactically-incorrect inputs.
//
PredictionMode.SLL = 0;
//
// The LL(*) prediction mode. This prediction mode allows the current parser
// context to be used for resolving SLL conflicts that occur during
// prediction. This is the fastest prediction mode that guarantees correct
// parse results for all combinations of grammars with syntactically correct
// inputs.
//
//
// When using this prediction mode, the parser will make correct decisions
// for all syntactically-correct grammar and input combinations. However, in
// cases where the grammar is truly ambiguous this prediction mode might not
// report a precise answer for exactly which alternatives are
// ambiguous.
//
//
// This prediction mode does not provide any guarantees for prediction
// behavior for syntactically-incorrect inputs.
//
PredictionMode.LL = 1;
//
// The LL(*) prediction mode with exact ambiguity detection. In addition to
// the correctness guarantees provided by the {@link //LL} prediction mode,
// this prediction mode instructs the prediction algorithm to determine the
// complete and exact set of ambiguous alternatives for every ambiguous
// decision encountered while parsing.
//
//
// This prediction mode may be used for diagnosing ambiguities during
// grammar development. Due to the performance overhead of calculating sets
// of ambiguous alternatives, this prediction mode should be avoided when
// the exact results are not necessary.
//
//
// This prediction mode does not provide any guarantees for prediction
// behavior for syntactically-incorrect inputs.
//
PredictionMode.LL_EXACT_AMBIG_DETECTION = 2;
//
// Computes the SLL prediction termination condition.
//
//
// This method computes the SLL prediction termination condition for both of
// the following cases.
//
//
// The usual SLL+LL fallback upon SLL conflict
// Pure SLL without LL fallback
//
//
// COMBINED SLL+LL PARSING
//
// When LL-fallback is enabled upon SLL conflict, correct predictions are
// ensured regardless of how the termination condition is computed by this
// method. Due to the substantially higher cost of LL prediction, the
// prediction should only fall back to LL when the additional lookahead
// cannot lead to a unique SLL prediction.
//
// Assuming combined SLL+LL parsing, an SLL configuration set with only
// conflicting subsets should fall back to full LL, even if the
// configuration sets don't resolve to the same alternative (e.g.
// {@code {1,2}} and {@code {3,4}}. If there is at least one non-conflicting
// configuration, SLL could continue with the hopes that more lookahead will
// resolve via one of those non-conflicting configurations.
//
// Here's the prediction termination rule them: SLL (for SLL+LL parsing)
// stops when it sees only conflicting configuration subsets. In contrast,
// full LL keeps going when there is uncertainty.
//
// HEURISTIC
//
// As a heuristic, we stop prediction when we see any conflicting subset
// unless we see a state that only has one alternative associated with it.
// The single-alt-state thing lets prediction continue upon rules like
// (otherwise, it would admit defeat too soon):
//
// {@code [12|1|[], 6|2|[], 12|2|[]]. s : (ID | ID ID?) ';' ;}
//
// When the ATN simulation reaches the state before {@code ';'}, it has a
// DFA state that looks like: {@code [12|1|[], 6|2|[], 12|2|[]]}. Naturally
// {@code 12|1|[]} and {@code 12|2|[]} conflict, but we cannot stop
// processing this node because alternative to has another way to continue,
// via {@code [6|2|[]]}.
//
// It also let's us continue for this rule:
//
// {@code [1|1|[], 1|2|[], 8|3|[]] a : A | A | A B ;}
//
// After matching input A, we reach the stop state for rule A, state 1.
// State 8 is the state right before B. Clearly alternatives 1 and 2
// conflict and no amount of further lookahead will separate the two.
// However, alternative 3 will be able to continue and so we do not stop
// working on this state. In the previous example, we're concerned with
// states associated with the conflicting alternatives. Here alt 3 is not
// associated with the conflicting configs, but since we can continue
// looking for input reasonably, don't declare the state done.
//
// PURE SLL PARSING
//
// To handle pure SLL parsing, all we have to do is make sure that we
// combine stack contexts for configurations that differ only by semantic
// predicate. From there, we can do the usual SLL termination heuristic.
//
// PREDICATES IN SLL+LL PARSING
//
// SLL decisions don't evaluate predicates until after they reach DFA stop
// states because they need to create the DFA cache that works in all
// semantic situations. In contrast, full LL evaluates predicates collected
// during start state computation so it can ignore predicates thereafter.
// This means that SLL termination detection can totally ignore semantic
// predicates.
//
// Implementation-wise, {@link ATNConfigSet} combines stack contexts but not
// semantic predicate contexts so we might see two configurations like the
// following.
//
// {@code (s, 1, x, {}), (s, 1, x', {p})}
//
// Before testing these configurations against others, we have to merge
// {@code x} and {@code x'} (without modifying the existing configurations).
// For example, we test {@code (x+x')==x''} when looking for conflicts in
// the following configurations.
//
// {@code (s, 1, x, {}), (s, 1, x', {p}), (s, 2, x'', {})}
//
// If the configuration set has predicates (as indicated by
// {@link ATNConfigSet//hasSemanticContext}), this algorithm makes a copy of
// the configurations to strip out all of the predicates so that a standard
// {@link ATNConfigSet} will merge everything ignoring predicates.
//
PredictionMode.hasSLLConflictTerminatingPrediction = function( mode, configs) {
// Configs in rule stop states indicate reaching the end of the decision
// rule (local context) or end of start rule (full context). If all
// configs meet this condition, then none of the configurations is able
// to match additional input so we terminate prediction.
//
if (PredictionMode.allConfigsInRuleStopStates(configs)) {
return true;
}
// pure SLL mode parsing
if (mode === PredictionMode.SLL) {
// Don't bother with combining configs from different semantic
// contexts if we can fail over to full LL; costs more time
// since we'll often fail over anyway.
if (configs.hasSemanticContext) {
// dup configs, tossing out semantic predicates
var dup = new ATNConfigSet();
for(var i=0;iCan we stop looking ahead during ATN simulation or is there some
// uncertainty as to which alternative we will ultimately pick, after
// consuming more input? Even if there are partial conflicts, we might know
// that everything is going to resolve to the same minimum alternative. That
// means we can stop since no more lookahead will change that fact. On the
// other hand, there might be multiple conflicts that resolve to different
// minimums. That means we need more look ahead to decide which of those
// alternatives we should predict.
//
// The basic idea is to split the set of configurations {@code C}, into
// conflicting subsets {@code (s, _, ctx, _)} and singleton subsets with
// non-conflicting configurations. Two configurations conflict if they have
// identical {@link ATNConfig//state} and {@link ATNConfig//context} values
// but different {@link ATNConfig//alt} value, e.g. {@code (s, i, ctx, _)}
// and {@code (s, j, ctx, _)} for {@code i!=j}.
//
// Reduce these configuration subsets to the set of possible alternatives.
// You can compute the alternative subsets in one pass as follows:
//
// {@code A_s,ctx = {i | (s, i, ctx, _)}} for each configuration in
// {@code C} holding {@code s} and {@code ctx} fixed.
//
// Or in pseudo-code, for each configuration {@code c} in {@code C}:
//
//
// map[c] U= c.{@link ATNConfig//alt alt} // map hash/equals uses s and x, not
// alt and not pred
//
//
// The values in {@code map} are the set of {@code A_s,ctx} sets.
//
// If {@code |A_s,ctx|=1} then there is no conflict associated with
// {@code s} and {@code ctx}.
//
// Reduce the subsets to singletons by choosing a minimum of each subset. If
// the union of these alternative subsets is a singleton, then no amount of
// more lookahead will help us. We will always pick that alternative. If,
// however, there is more than one alternative, then we are uncertain which
// alternative to predict and must continue looking for resolution. We may
// or may not discover an ambiguity in the future, even if there are no
// conflicting subsets this round.
//
// The biggest sin is to terminate early because it means we've made a
// decision but were uncertain as to the eventual outcome. We haven't used
// enough lookahead. On the other hand, announcing a conflict too late is no
// big deal; you will still have the conflict. It's just inefficient. It
// might even look until the end of file.
//
// No special consideration for semantic predicates is required because
// predicates are evaluated on-the-fly for full LL prediction, ensuring that
// no configuration contains a semantic context during the termination
// check.
//
// CONFLICTING CONFIGS
//
// Two configurations {@code (s, i, x)} and {@code (s, j, x')}, conflict
// when {@code i!=j} but {@code x=x'}. Because we merge all
// {@code (s, i, _)} configurations together, that means that there are at
// most {@code n} configurations associated with state {@code s} for
// {@code n} possible alternatives in the decision. The merged stacks
// complicate the comparison of configuration contexts {@code x} and
// {@code x'}. Sam checks to see if one is a subset of the other by calling
// merge and checking to see if the merged result is either {@code x} or
// {@code x'}. If the {@code x} associated with lowest alternative {@code i}
// is the superset, then {@code i} is the only possible prediction since the
// others resolve to {@code min(i)} as well. However, if {@code x} is
// associated with {@code j>i} then at least one stack configuration for
// {@code j} is not in conflict with alternative {@code i}. The algorithm
// should keep going, looking for more lookahead due to the uncertainty.
//
// For simplicity, I'm doing a equality check between {@code x} and
// {@code x'} that lets the algorithm continue to consume lookahead longer
// than necessary. The reason I like the equality is of course the
// simplicity but also because that is the test you need to detect the
// alternatives that are actually in conflict.
//
// CONTINUE/STOP RULE
//
// Continue if union of resolved alternative sets from non-conflicting and
// conflicting alternative subsets has more than one alternative. We are
// uncertain about which alternative to predict.
//
// The complete set of alternatives, {@code [i for (_,i,_)]}, tells us which
// alternatives are still in the running for the amount of input we've
// consumed at this point. The conflicting sets let us to strip away
// configurations that won't lead to more states because we resolve
// conflicts to the configuration with a minimum alternate for the
// conflicting set.
//
// CASES
//
//
//
// no conflicts and more than 1 alternative in set => continue
//
// {@code (s, 1, x)}, {@code (s, 2, x)}, {@code (s, 3, z)},
// {@code (s', 1, y)}, {@code (s', 2, y)} yields non-conflicting set
// {@code {3}} U conflicting sets {@code min({1,2})} U {@code min({1,2})} =
// {@code {1,3}} => continue
//
//
// {@code (s, 1, x)}, {@code (s, 2, x)}, {@code (s', 1, y)},
// {@code (s', 2, y)}, {@code (s'', 1, z)} yields non-conflicting set
// {@code {1}} U conflicting sets {@code min({1,2})} U {@code min({1,2})} =
// {@code {1}} => stop and predict 1
//
// {@code (s, 1, x)}, {@code (s, 2, x)}, {@code (s', 1, y)},
// {@code (s', 2, y)} yields conflicting, reduced sets {@code {1}} U
// {@code {1}} = {@code {1}} => stop and predict 1, can announce
// ambiguity {@code {1,2}}
//
// {@code (s, 1, x)}, {@code (s, 2, x)}, {@code (s', 2, y)},
// {@code (s', 3, y)} yields conflicting, reduced sets {@code {1}} U
// {@code {2}} = {@code {1,2}} => continue
//
// {@code (s, 1, x)}, {@code (s, 2, x)}, {@code (s', 3, y)},
// {@code (s', 4, y)} yields conflicting, reduced sets {@code {1}} U
// {@code {3}} = {@code {1,3}} => continue
//
//
//
// EXACT AMBIGUITY DETECTION
//
// If all states report the same conflicting set of alternatives, then we
// know we have the exact ambiguity set.
//
// |A_i |>1
and
// A_i = A_j
for all i , j .
//
// In other words, we continue examining lookahead until all {@code A_i}
// have more than one alternative and all {@code A_i} are the same. If
// {@code A={{1,2}, {1,3}}}, then regular LL prediction would terminate
// because the resolved set is {@code {1}}. To determine what the real
// ambiguity is, we have to know whether the ambiguity is between one and
// two or one and three so we keep going. We can only stop prediction when
// we need exact ambiguity detection when the sets look like
// {@code A={{1,2}}} or {@code {{1,2},{1,2}}}, etc...
//
PredictionMode.resolvesToJustOneViableAlt = function(altsets) {
return PredictionMode.getSingleViableAlt(altsets);
};
//
// Determines if every alternative subset in {@code altsets} contains more
// than one alternative.
//
// @param altsets a collection of alternative subsets
// @return {@code true} if every {@link BitSet} in {@code altsets} has
// {@link BitSet//cardinality cardinality} > 1, otherwise {@code false}
//
PredictionMode.allSubsetsConflict = function(altsets) {
return ! PredictionMode.hasNonConflictingAltSet(altsets);
};
//
// Determines if any single alternative subset in {@code altsets} contains
// exactly one alternative.
//
// @param altsets a collection of alternative subsets
// @return {@code true} if {@code altsets} contains a {@link BitSet} with
// {@link BitSet//cardinality cardinality} 1, otherwise {@code false}
//
PredictionMode.hasNonConflictingAltSet = function(altsets) {
for(var i=0;i1) {
return true;
}
}
return false;
};
//
// Determines if every alternative subset in {@code altsets} is equivalent.
//
// @param altsets a collection of alternative subsets
// @return {@code true} if every member of {@code altsets} is equal to the
// others, otherwise {@code false}
//
PredictionMode.allSubsetsEqual = function(altsets) {
var first = null;
for(var i=0;i
// map[c] U= c.{@link ATNConfig//alt alt} // map hash/equals uses s and x, not
// alt and not pred
//
PredictionMode.getConflictingAltSubsets = function(configs) {
var configToAlts = new Map();
configToAlts.hashFunction = function(cfg) { hashStuff(cfg.state.stateNumber, cfg.context); };
configToAlts.equalsFunction = function(c1, c2) { return c1.state.stateNumber==c2.state.stateNumber && c1.context.equals(c2.context);}
configs.items.map(function(cfg) {
var alts = configToAlts.get(cfg);
if (alts === null) {
alts = new BitSet();
configToAlts.put(cfg, alts);
}
alts.add(cfg.alt);
});
return configToAlts.getValues();
};
//
// Get a map from state to alt subset from a configuration set. For each
// configuration {@code c} in {@code configs}:
//
//
// map[c.{@link ATNConfig//state state}] U= c.{@link ATNConfig//alt alt}
//
//
PredictionMode.getStateToAltMap = function(configs) {
var m = new AltDict();
configs.items.map(function(c) {
var alts = m.get(c.state);
if (alts === null) {
alts = new BitSet();
m.put(c.state, alts);
}
alts.add(c.alt);
});
return m;
};
PredictionMode.hasStateAssociatedWithOneAlt = function(configs) {
var values = PredictionMode.getStateToAltMap(configs).values();
for(var i=0;i
= size) {
return undefined;
}
// Get the first code unit
var first = string.charCodeAt(index);
var second;
if ( // check if it’s the start of a surrogate pair
first >= 0xD800 && first <= 0xDBFF && // high surrogate
size > index + 1 // there is a next code unit
) {
second = string.charCodeAt(index + 1);
if (second >= 0xDC00 && second <= 0xDFFF) { // low surrogate
// https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;
}
}
return first;
};
if (defineProperty) {
defineProperty(String.prototype, 'codePointAt', {
'value': codePointAt,
'configurable': true,
'writable': true
});
} else {
String.prototype.codePointAt = codePointAt;
}
}());
}
/***/ }),
/* 34 */
/***/ (function(module, exports, __webpack_require__) {
/* 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.
*/
exports.DFA = __webpack_require__(35).DFA;
exports.DFASerializer = __webpack_require__(36).DFASerializer;
exports.LexerDFASerializer = __webpack_require__(36).LexerDFASerializer;
exports.PredPrediction = __webpack_require__(28).PredPrediction;
/***/ }),
/* 35 */
/***/ (function(module, exports, __webpack_require__) {
//
/* 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 = __webpack_require__(5).Set;
var DFAState = __webpack_require__(28).DFAState;
var StarLoopEntryState = __webpack_require__(8).StarLoopEntryState;
var ATNConfigSet = __webpack_require__(29).ATNConfigSet;
var DFASerializer = __webpack_require__(36).DFASerializer;
var LexerDFASerializer = __webpack_require__(36).LexerDFASerializer;
function DFA(atnStartState, decision) {
if (decision === undefined) {
decision = 0;
}
// From which ATN state did we create this DFA?
this.atnStartState = atnStartState;
this.decision = decision;
// A set of all DFA states. Use {@link Map} so we can get old state back
// ({@link Set} only allows you to see if it's there).
this._states = new Set();
this.s0 = null;
// {@code true} if this DFA is for a precedence decision; otherwise,
// {@code false}. This is the backing field for {@link //isPrecedenceDfa},
// {@link //setPrecedenceDfa}.
this.precedenceDfa = false;
if (atnStartState instanceof StarLoopEntryState)
{
if (atnStartState.isPrecedenceDecision) {
this.precedenceDfa = true;
var precedenceState = new DFAState(null, new ATNConfigSet());
precedenceState.edges = [];
precedenceState.isAcceptState = false;
precedenceState.requiresFullContext = false;
this.s0 = precedenceState;
}
}
return this;
}
// Get the start state for a specific precedence value.
//
// @param precedence The current precedence.
// @return The start state corresponding to the specified precedence, or
// {@code null} if no start state exists for the specified precedence.
//
// @throws IllegalStateException if this is not a precedence DFA.
// @see //isPrecedenceDfa()
DFA.prototype.getPrecedenceStartState = function(precedence) {
if (!(this.precedenceDfa)) {
throw ("Only precedence DFAs may contain a precedence start state.");
}
// s0.edges is never null for a precedence DFA
if (precedence < 0 || precedence >= this.s0.edges.length) {
return null;
}
return this.s0.edges[precedence] || null;
};
// Set the start state for a specific precedence value.
//
// @param precedence The current precedence.
// @param startState The start state corresponding to the specified
// precedence.
//
// @throws IllegalStateException if this is not a precedence DFA.
// @see //isPrecedenceDfa()
//
DFA.prototype.setPrecedenceStartState = function(precedence, startState) {
if (!(this.precedenceDfa)) {
throw ("Only precedence DFAs may contain a precedence start state.");
}
if (precedence < 0) {
return;
}
// synchronization on s0 here is ok. when the DFA is turned into a
// precedence DFA, s0 will be initialized once and not updated again
// s0.edges is never null for a precedence DFA
this.s0.edges[precedence] = startState;
};
//
// Sets whether this is a precedence DFA. If the specified value differs
// from the current DFA configuration, the following actions are taken;
// otherwise no changes are made to the current DFA.
//
//
// The {@link //states} map is cleared
// If {@code precedenceDfa} is {@code false}, the initial state
// {@link //s0} is set to {@code null}; otherwise, it is initialized to a new
// {@link DFAState} with an empty outgoing {@link DFAState//edges} array to
// store the start states for individual precedence values.
// The {@link //precedenceDfa} field is updated
//
//
// @param precedenceDfa {@code true} if this is a precedence DFA; otherwise,
// {@code false}
DFA.prototype.setPrecedenceDfa = function(precedenceDfa) {
if (this.precedenceDfa!==precedenceDfa) {
this._states = new DFAStatesSet();
if (precedenceDfa) {
var precedenceState = new DFAState(null, new ATNConfigSet());
precedenceState.edges = [];
precedenceState.isAcceptState = false;
precedenceState.requiresFullContext = false;
this.s0 = precedenceState;
} else {
this.s0 = null;
}
this.precedenceDfa = precedenceDfa;
}
};
Object.defineProperty(DFA.prototype, "states", {
get : function() {
return this._states;
}
});
// Return a list of all states in this DFA, ordered by state number.
DFA.prototype.sortedStates = function() {
var list = this._states.values();
return list.sort(function(a, b) {
return a.stateNumber - b.stateNumber;
});
};
DFA.prototype.toString = function(literalNames, symbolicNames) {
literalNames = literalNames || null;
symbolicNames = symbolicNames || null;
if (this.s0 === null) {
return "";
}
var serializer = new DFASerializer(this, literalNames, symbolicNames);
return serializer.toString();
};
DFA.prototype.toLexerString = function() {
if (this.s0 === null) {
return "";
}
var serializer = new LexerDFASerializer(this);
return serializer.toString();
};
exports.DFA = DFA;
/***/ }),
/* 36 */
/***/ (function(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 DFA walker that knows how to dump them to serialized strings.#/
function DFASerializer(dfa, literalNames, symbolicNames) {
this.dfa = dfa;
this.literalNames = literalNames || [];
this.symbolicNames = symbolicNames || [];
return this;
}
DFASerializer.prototype.toString = function() {
if(this.dfa.s0 === null) {
return null;
}
var buf = "";
var states = this.dfa.sortedStates();
for(var i=0;i");
buf = buf.concat(this.getStateString(t));
buf = buf.concat('\n');
}
}
}
}
return buf.length===0 ? null : buf;
};
DFASerializer.prototype.getEdgeLabel = function(i) {
if (i===0) {
return "EOF";
} else if(this.literalNames !==null || this.symbolicNames!==null) {
return this.literalNames[i-1] || this.symbolicNames[i-1];
} else {
return String.fromCharCode(i-1);
}
};
DFASerializer.prototype.getStateString = function(s) {
var baseStateStr = ( s.isAcceptState ? ":" : "") + "s" + s.stateNumber + ( s.requiresFullContext ? "^" : "");
if(s.isAcceptState) {
if (s.predicates !== null) {
return baseStateStr + "=>" + s.predicates.toString();
} else {
return baseStateStr + "=>" + s.prediction.toString();
}
} else {
return baseStateStr;
}
};
function LexerDFASerializer(dfa) {
DFASerializer.call(this, dfa, null);
return this;
}
LexerDFASerializer.prototype = Object.create(DFASerializer.prototype);
LexerDFASerializer.prototype.constructor = LexerDFASerializer;
LexerDFASerializer.prototype.getEdgeLabel = function(i) {
return "'" + String.fromCharCode(i) + "'";
};
exports.DFASerializer = DFASerializer;
exports.LexerDFASerializer = LexerDFASerializer;
/***/ }),
/* 37 */
/***/ (function(module, exports) {
/*! https://mths.be/fromcodepoint v0.2.1 by @mathias */
if (!String.fromCodePoint) {
(function() {
var defineProperty = (function() {
// IE 8 only supports `Object.defineProperty` on DOM elements
try {
var object = {};
var $defineProperty = Object.defineProperty;
var result = $defineProperty(object, object, object) && $defineProperty;
} catch(error) {}
return result;
}());
var stringFromCharCode = String.fromCharCode;
var floor = Math.floor;
var fromCodePoint = function(_) {
var MAX_SIZE = 0x4000;
var codeUnits = [];
var highSurrogate;
var lowSurrogate;
var index = -1;
var length = arguments.length;
if (!length) {
return '';
}
var result = '';
while (++index < length) {
var codePoint = Number(arguments[index]);
if (
!isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`
codePoint < 0 || // not a valid Unicode code point
codePoint > 0x10FFFF || // not a valid Unicode code point
floor(codePoint) != codePoint // not an integer
) {
throw RangeError('Invalid code point: ' + codePoint);
}
if (codePoint <= 0xFFFF) { // BMP code point
codeUnits.push(codePoint);
} else { // Astral code point; split in surrogate halves
// https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
codePoint -= 0x10000;
highSurrogate = (codePoint >> 10) + 0xD800;
lowSurrogate = (codePoint % 0x400) + 0xDC00;
codeUnits.push(highSurrogate, lowSurrogate);
}
if (index + 1 == length || codeUnits.length > MAX_SIZE) {
result += stringFromCharCode.apply(null, codeUnits);
codeUnits.length = 0;
}
}
return result;
};
if (defineProperty) {
defineProperty(String, 'fromCodePoint', {
'value': fromCodePoint,
'configurable': true,
'writable': true
});
} else {
String.fromCodePoint = fromCodePoint;
}
}());
}
/***/ }),
/* 38 */
/***/ (function(module, exports, __webpack_require__) {
/* 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 Tree = __webpack_require__(14);
exports.Trees = __webpack_require__(15).Trees;
exports.RuleNode = Tree.RuleNode;
exports.ParseTreeListener = Tree.ParseTreeListener;
exports.ParseTreeVisitor = Tree.ParseTreeVisitor;
exports.ParseTreeWalker = Tree.ParseTreeWalker;
/***/ }),
/* 39 */
/***/ (function(module, exports, __webpack_require__) {
/* 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.
*/
exports.RecognitionException = __webpack_require__(26).RecognitionException;
exports.NoViableAltException = __webpack_require__(26).NoViableAltException;
exports.LexerNoViableAltException = __webpack_require__(26).LexerNoViableAltException;
exports.InputMismatchException = __webpack_require__(26).InputMismatchException;
exports.FailedPredicateException = __webpack_require__(26).FailedPredicateException;
exports.DiagnosticErrorListener = __webpack_require__(40).DiagnosticErrorListener;
exports.BailErrorStrategy = __webpack_require__(41).BailErrorStrategy;
exports.ErrorListener = __webpack_require__(24).ErrorListener;
/***/ }),
/* 40 */
/***/ (function(module, exports, __webpack_require__) {
//
/* 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 ANTLRErrorListener} can be used to identify
// certain potential correctness and performance problems in grammars. "Reports"
// are made by calling {@link Parser//notifyErrorListeners} with the appropriate
// message.
//
//
// Ambiguities : These are cases where more than one path through the
// grammar can match the input.
// Weak context sensitivity : These are cases where full-context
// prediction resolved an SLL conflict to a unique alternative which equaled the
// minimum alternative of the SLL conflict.
// Strong (forced) context sensitivity : These are cases where the
// full-context prediction resolved an SLL conflict to a unique alternative,
// and the minimum alternative of the SLL conflict was found to not be
// a truly viable alternative. Two-stage parsing cannot be used for inputs where
// this situation occurs.
//
var BitSet = __webpack_require__(5).BitSet;
var ErrorListener = __webpack_require__(24).ErrorListener;
var Interval = __webpack_require__(10).Interval;
function DiagnosticErrorListener(exactOnly) {
ErrorListener.call(this);
exactOnly = exactOnly || true;
// whether all ambiguities or only exact ambiguities are reported.
this.exactOnly = exactOnly;
return this;
}
DiagnosticErrorListener.prototype = Object.create(ErrorListener.prototype);
DiagnosticErrorListener.prototype.constructor = DiagnosticErrorListener;
DiagnosticErrorListener.prototype.reportAmbiguity = function(recognizer, dfa,
startIndex, stopIndex, exact, ambigAlts, configs) {
if (this.exactOnly && !exact) {
return;
}
var msg = "reportAmbiguity d=" +
this.getDecisionDescription(recognizer, dfa) +
": ambigAlts=" +
this.getConflictingAlts(ambigAlts, configs) +
", input='" +
recognizer.getTokenStream().getText(new Interval(startIndex, stopIndex)) + "'";
recognizer.notifyErrorListeners(msg);
};
DiagnosticErrorListener.prototype.reportAttemptingFullContext = function(
recognizer, dfa, startIndex, stopIndex, conflictingAlts, configs) {
var msg = "reportAttemptingFullContext d=" +
this.getDecisionDescription(recognizer, dfa) +
", input='" +
recognizer.getTokenStream().getText(new Interval(startIndex, stopIndex)) + "'";
recognizer.notifyErrorListeners(msg);
};
DiagnosticErrorListener.prototype.reportContextSensitivity = function(
recognizer, dfa, startIndex, stopIndex, prediction, configs) {
var msg = "reportContextSensitivity d=" +
this.getDecisionDescription(recognizer, dfa) +
", input='" +
recognizer.getTokenStream().getText(new Interval(startIndex, stopIndex)) + "'";
recognizer.notifyErrorListeners(msg);
};
DiagnosticErrorListener.prototype.getDecisionDescription = function(recognizer, dfa) {
var decision = dfa.decision;
var ruleIndex = dfa.atnStartState.ruleIndex;
var ruleNames = recognizer.ruleNames;
if (ruleIndex < 0 || ruleIndex >= ruleNames.length) {
return "" + decision;
}
var ruleName = ruleNames[ruleIndex] || null;
if (ruleName === null || ruleName.length === 0) {
return "" + decision;
}
return "" + decision + " (" + ruleName + ")";
};
//
// Computes the set of conflicting or ambiguous alternatives from a
// configuration set, if that information was not already provided by the
// parser.
//
// @param reportedAlts The set of conflicting or ambiguous alternatives, as
// reported by the parser.
// @param configs The conflicting or ambiguous configuration set.
// @return Returns {@code reportedAlts} if it is not {@code null}, otherwise
// returns the set of alternatives represented in {@code configs}.
//
DiagnosticErrorListener.prototype.getConflictingAlts = function(reportedAlts, configs) {
if (reportedAlts !== null) {
return reportedAlts;
}
var result = new BitSet();
for (var i = 0; i < configs.items.length; i++) {
result.add(configs.items[i].alt);
}
return "{" + result.values().join(", ") + "}";
};
exports.DiagnosticErrorListener = DiagnosticErrorListener;
/***/ }),
/* 41 */
/***/ (function(module, exports, __webpack_require__) {
//
/* 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 = __webpack_require__(6).Token;
var Errors = __webpack_require__(26);
var NoViableAltException = Errors.NoViableAltException;
var InputMismatchException = Errors.InputMismatchException;
var FailedPredicateException = Errors.FailedPredicateException;
var ParseCancellationException = Errors.ParseCancellationException;
var ATNState = __webpack_require__(8).ATNState;
var Interval = __webpack_require__(10).Interval;
var IntervalSet = __webpack_require__(10).IntervalSet;
function ErrorStrategy() {
}
ErrorStrategy.prototype.reset = function(recognizer){
};
ErrorStrategy.prototype.recoverInline = function(recognizer){
};
ErrorStrategy.prototype.recover = function(recognizer, e){
};
ErrorStrategy.prototype.sync = function(recognizer){
};
ErrorStrategy.prototype.inErrorRecoveryMode = function(recognizer){
};
ErrorStrategy.prototype.reportError = function(recognizer){
};
// This is the default implementation of {@link ANTLRErrorStrategy} used for
// error reporting and recovery in ANTLR parsers.
//
function DefaultErrorStrategy() {
ErrorStrategy.call(this);
// Indicates whether the error strategy is currently "recovering from an
// error". This is used to suppress reporting multiple error messages while
// attempting to recover from a detected syntax error.
//
// @see //inErrorRecoveryMode
//
this.errorRecoveryMode = false;
// The index into the input stream where the last error occurred.
// This is used to prevent infinite loops where an error is found
// but no token is consumed during recovery...another error is found,
// ad nauseum. This is a failsafe mechanism to guarantee that at least
// one token/tree node is consumed for two errors.
//
this.lastErrorIndex = -1;
this.lastErrorStates = null;
return this;
}
DefaultErrorStrategy.prototype = Object.create(ErrorStrategy.prototype);
DefaultErrorStrategy.prototype.constructor = DefaultErrorStrategy;
// The default implementation simply calls {@link //endErrorCondition} to
// ensure that the handler is not in error recovery mode.
DefaultErrorStrategy.prototype.reset = function(recognizer) {
this.endErrorCondition(recognizer);
};
//
// This method is called to enter error recovery mode when a recognition
// exception is reported.
//
// @param recognizer the parser instance
//
DefaultErrorStrategy.prototype.beginErrorCondition = function(recognizer) {
this.errorRecoveryMode = true;
};
DefaultErrorStrategy.prototype.inErrorRecoveryMode = function(recognizer) {
return this.errorRecoveryMode;
};
//
// This method is called to leave error recovery mode after recovering from
// a recognition exception.
//
// @param recognizer
//
DefaultErrorStrategy.prototype.endErrorCondition = function(recognizer) {
this.errorRecoveryMode = false;
this.lastErrorStates = null;
this.lastErrorIndex = -1;
};
//
// {@inheritDoc}
//
// The default implementation simply calls {@link //endErrorCondition}.
//
DefaultErrorStrategy.prototype.reportMatch = function(recognizer) {
this.endErrorCondition(recognizer);
};
//
// {@inheritDoc}
//
// The default implementation returns immediately if the handler is already
// in error recovery mode. Otherwise, it calls {@link //beginErrorCondition}
// and dispatches the reporting task based on the runtime type of {@code e}
// according to the following table.
//
//
// {@link NoViableAltException}: Dispatches the call to
// {@link //reportNoViableAlternative}
// {@link InputMismatchException}: Dispatches the call to
// {@link //reportInputMismatch}
// {@link FailedPredicateException}: Dispatches the call to
// {@link //reportFailedPredicate}
// All other types: calls {@link Parser//notifyErrorListeners} to report
// the exception
//
//
DefaultErrorStrategy.prototype.reportError = function(recognizer, e) {
// if we've already reported an error and have not matched a token
// yet successfully, don't report any errors.
if(this.inErrorRecoveryMode(recognizer)) {
return; // don't report spurious errors
}
this.beginErrorCondition(recognizer);
if ( e instanceof NoViableAltException ) {
this.reportNoViableAlternative(recognizer, e);
} else if ( e instanceof InputMismatchException ) {
this.reportInputMismatch(recognizer, e);
} else if ( e instanceof FailedPredicateException ) {
this.reportFailedPredicate(recognizer, e);
} else {
console.log("unknown recognition error type: " + e.constructor.name);
console.log(e.stack);
recognizer.notifyErrorListeners(e.getOffendingToken(), e.getMessage(), e);
}
};
//
// {@inheritDoc}
//
// The default implementation resynchronizes the parser by consuming tokens
// until we find one in the resynchronization set--loosely the set of tokens
// that can follow the current rule.
//
DefaultErrorStrategy.prototype.recover = function(recognizer, e) {
if (this.lastErrorIndex===recognizer.getInputStream().index &&
this.lastErrorStates !== null && this.lastErrorStates.indexOf(recognizer.state)>=0) {
// uh oh, another error at same token index and previously-visited
// state in ATN; must be a case where LT(1) is in the recovery
// token set so nothing got consumed. Consume a single token
// at least to prevent an infinite loop; this is a failsafe.
recognizer.consume();
}
this.lastErrorIndex = recognizer._input.index;
if (this.lastErrorStates === null) {
this.lastErrorStates = [];
}
this.lastErrorStates.push(recognizer.state);
var followSet = this.getErrorRecoverySet(recognizer);
this.consumeUntil(recognizer, followSet);
};
// The default implementation of {@link ANTLRErrorStrategy//sync} makes sure
// that the current lookahead symbol is consistent with what were expecting
// at this point in the ATN. You can call this anytime but ANTLR only
// generates code to check before subrules/loops and each iteration.
//
// Implements Jim Idle's magic sync mechanism in closures and optional
// subrules. E.g.,
//
//
// a : sync ( stuff sync )* ;
// sync : {consume to what can follow sync} ;
//
//
// At the start of a sub rule upon error, {@link //sync} performs single
// token deletion, if possible. If it can't do that, it bails on the current
// rule and uses the default error recovery, which consumes until the
// resynchronization set of the current rule.
//
// If the sub rule is optional ({@code (...)?}, {@code (...)*}, or block
// with an empty alternative), then the expected set includes what follows
// the subrule.
//
// During loop iteration, it consumes until it sees a token that can start a
// sub rule or what follows loop. Yes, that is pretty aggressive. We opt to
// stay in the loop as long as possible.
//
// ORIGINS
//
// Previous versions of ANTLR did a poor job of their recovery within loops.
// A single mismatch token or missing token would force the parser to bail
// out of the entire rules surrounding the loop. So, for rule
//
//
// classDef : 'class' ID '{' member* '}'
//
//
// input with an extra token between members would force the parser to
// consume until it found the next class definition rather than the next
// member definition of the current class.
//
// This functionality cost a little bit of effort because the parser has to
// compare token set at the start of the loop and at each iteration. If for
// some reason speed is suffering for you, you can turn off this
// functionality by simply overriding this method as a blank { }.
//
DefaultErrorStrategy.prototype.sync = function(recognizer) {
// If already recovering, don't try to sync
if (this.inErrorRecoveryMode(recognizer)) {
return;
}
var s = recognizer._interp.atn.states[recognizer.state];
var la = recognizer.getTokenStream().LA(1);
// try cheaper subset first; might get lucky. seems to shave a wee bit off
var nextTokens = recognizer.atn.nextTokens(s);
if (nextTokens.contains(Token.EPSILON) || nextTokens.contains(la)) {
return;
}
switch (s.stateType) {
case ATNState.BLOCK_START:
case ATNState.STAR_BLOCK_START:
case ATNState.PLUS_BLOCK_START:
case ATNState.STAR_LOOP_ENTRY:
// report error and recover if possible
if( this.singleTokenDeletion(recognizer) !== null) {
return;
} else {
throw new InputMismatchException(recognizer);
}
break;
case ATNState.PLUS_LOOP_BACK:
case ATNState.STAR_LOOP_BACK:
this.reportUnwantedToken(recognizer);
var expecting = new IntervalSet();
expecting.addSet(recognizer.getExpectedTokens());
var whatFollowsLoopIterationOrRule = expecting.addSet(this.getErrorRecoverySet(recognizer));
this.consumeUntil(recognizer, whatFollowsLoopIterationOrRule);
break;
default:
// do nothing if we can't identify the exact kind of ATN state
}
};
// This is called by {@link //reportError} when the exception is a
// {@link NoViableAltException}.
//
// @see //reportError
//
// @param recognizer the parser instance
// @param e the recognition exception
//
DefaultErrorStrategy.prototype.reportNoViableAlternative = function(recognizer, e) {
var tokens = recognizer.getTokenStream();
var input;
if(tokens !== null) {
if (e.startToken.type===Token.EOF) {
input = "";
} else {
input = tokens.getText(new Interval(e.startToken.tokenIndex, e.offendingToken.tokenIndex));
}
} else {
input = "";
}
var msg = "no viable alternative at input " + this.escapeWSAndQuote(input);
recognizer.notifyErrorListeners(msg, e.offendingToken, e);
};
//
// This is called by {@link //reportError} when the exception is an
// {@link InputMismatchException}.
//
// @see //reportError
//
// @param recognizer the parser instance
// @param e the recognition exception
//
DefaultErrorStrategy.prototype.reportInputMismatch = function(recognizer, e) {
var msg = "mismatched input " + this.getTokenErrorDisplay(e.offendingToken) +
" expecting " + e.getExpectedTokens().toString(recognizer.literalNames, recognizer.symbolicNames);
recognizer.notifyErrorListeners(msg, e.offendingToken, e);
};
//
// This is called by {@link //reportError} when the exception is a
// {@link FailedPredicateException}.
//
// @see //reportError
//
// @param recognizer the parser instance
// @param e the recognition exception
//
DefaultErrorStrategy.prototype.reportFailedPredicate = function(recognizer, e) {
var ruleName = recognizer.ruleNames[recognizer._ctx.ruleIndex];
var msg = "rule " + ruleName + " " + e.message;
recognizer.notifyErrorListeners(msg, e.offendingToken, e);
};
// This method is called to report a syntax error which requires the removal
// of a token from the input stream. At the time this method is called, the
// erroneous symbol is current {@code LT(1)} symbol and has not yet been
// removed from the input stream. When this method returns,
// {@code recognizer} is in error recovery mode.
//
// This method is called when {@link //singleTokenDeletion} identifies
// single-token deletion as a viable recovery strategy for a mismatched
// input error.
//
// The default implementation simply returns if the handler is already in
// error recovery mode. Otherwise, it calls {@link //beginErrorCondition} to
// enter error recovery mode, followed by calling
// {@link Parser//notifyErrorListeners}.
//
// @param recognizer the parser instance
//
DefaultErrorStrategy.prototype.reportUnwantedToken = function(recognizer) {
if (this.inErrorRecoveryMode(recognizer)) {
return;
}
this.beginErrorCondition(recognizer);
var t = recognizer.getCurrentToken();
var tokenName = this.getTokenErrorDisplay(t);
var expecting = this.getExpectedTokens(recognizer);
var msg = "extraneous input " + tokenName + " expecting " +
expecting.toString(recognizer.literalNames, recognizer.symbolicNames);
recognizer.notifyErrorListeners(msg, t, null);
};
// This method is called to report a syntax error which requires the
// insertion of a missing token into the input stream. At the time this
// method is called, the missing token has not yet been inserted. When this
// method returns, {@code recognizer} is in error recovery mode.
//
// This method is called when {@link //singleTokenInsertion} identifies
// single-token insertion as a viable recovery strategy for a mismatched
// input error.
//
// The default implementation simply returns if the handler is already in
// error recovery mode. Otherwise, it calls {@link //beginErrorCondition} to
// enter error recovery mode, followed by calling
// {@link Parser//notifyErrorListeners}.
//
// @param recognizer the parser instance
//
DefaultErrorStrategy.prototype.reportMissingToken = function(recognizer) {
if ( this.inErrorRecoveryMode(recognizer)) {
return;
}
this.beginErrorCondition(recognizer);
var t = recognizer.getCurrentToken();
var expecting = this.getExpectedTokens(recognizer);
var msg = "missing " + expecting.toString(recognizer.literalNames, recognizer.symbolicNames) +
" at " + this.getTokenErrorDisplay(t);
recognizer.notifyErrorListeners(msg, t, null);
};
// The default implementation attempts to recover from the mismatched input
// by using single token insertion and deletion as described below. If the
// recovery attempt fails, this method throws an
// {@link InputMismatchException}.
//
// EXTRA TOKEN (single token deletion)
//
// {@code LA(1)} is not what we are looking for. If {@code LA(2)} has the
// right token, however, then assume {@code LA(1)} is some extra spurious
// token and delete it. Then consume and return the next token (which was
// the {@code LA(2)} token) as the successful result of the match operation.
//
// This recovery strategy is implemented by {@link
// //singleTokenDeletion}.
//
// MISSING TOKEN (single token insertion)
//
// If current token (at {@code LA(1)}) is consistent with what could come
// after the expected {@code LA(1)} token, then assume the token is missing
// and use the parser's {@link TokenFactory} to create it on the fly. The
// "insertion" is performed by returning the created token as the successful
// result of the match operation.
//
// This recovery strategy is implemented by {@link
// //singleTokenInsertion}.
//
// EXAMPLE
//
// For example, Input {@code i=(3;} is clearly missing the {@code ')'}. When
// the parser returns from the nested call to {@code expr}, it will have
// call chain:
//
//
// stat → expr → atom
//
//
// and it will be trying to match the {@code ')'} at this point in the
// derivation:
//
//
// => ID '=' '(' INT ')' ('+' atom)* ';'
// ^
//
//
// The attempt to match {@code ')'} will fail when it sees {@code ';'} and
// call {@link //recoverInline}. To recover, it sees that {@code LA(1)==';'}
// is in the set of tokens that can follow the {@code ')'} token reference
// in rule {@code atom}. It can assume that you forgot the {@code ')'}.
//
DefaultErrorStrategy.prototype.recoverInline = function(recognizer) {
// SINGLE TOKEN DELETION
var matchedSymbol = this.singleTokenDeletion(recognizer);
if (matchedSymbol !== null) {
// we have deleted the extra token.
// now, move past ttype token as if all were ok
recognizer.consume();
return matchedSymbol;
}
// SINGLE TOKEN INSERTION
if (this.singleTokenInsertion(recognizer)) {
return this.getMissingSymbol(recognizer);
}
// even that didn't work; must throw the exception
throw new InputMismatchException(recognizer);
};
//
// This method implements the single-token insertion inline error recovery
// strategy. It is called by {@link //recoverInline} if the single-token
// deletion strategy fails to recover from the mismatched input. If this
// method returns {@code true}, {@code recognizer} will be in error recovery
// mode.
//
// This method determines whether or not single-token insertion is viable by
// checking if the {@code LA(1)} input symbol could be successfully matched
// if it were instead the {@code LA(2)} symbol. If this method returns
// {@code true}, the caller is responsible for creating and inserting a
// token with the correct type to produce this behavior.
//
// @param recognizer the parser instance
// @return {@code true} if single-token insertion is a viable recovery
// strategy for the current mismatched input, otherwise {@code false}
//
DefaultErrorStrategy.prototype.singleTokenInsertion = function(recognizer) {
var currentSymbolType = recognizer.getTokenStream().LA(1);
// if current token is consistent with what could come after current
// ATN state, then we know we're missing a token; error recovery
// is free to conjure up and insert the missing token
var atn = recognizer._interp.atn;
var currentState = atn.states[recognizer.state];
var next = currentState.transitions[0].target;
var expectingAtLL2 = atn.nextTokens(next, recognizer._ctx);
if (expectingAtLL2.contains(currentSymbolType) ){
this.reportMissingToken(recognizer);
return true;
} else {
return false;
}
};
// This method implements the single-token deletion inline error recovery
// strategy. It is called by {@link //recoverInline} to attempt to recover
// from mismatched input. If this method returns null, the parser and error
// handler state will not have changed. If this method returns non-null,
// {@code recognizer} will not be in error recovery mode since the
// returned token was a successful match.
//
// If the single-token deletion is successful, this method calls
// {@link //reportUnwantedToken} to report the error, followed by
// {@link Parser//consume} to actually "delete" the extraneous token. Then,
// before returning {@link //reportMatch} is called to signal a successful
// match.
//
// @param recognizer the parser instance
// @return the successfully matched {@link Token} instance if single-token
// deletion successfully recovers from the mismatched input, otherwise
// {@code null}
//
DefaultErrorStrategy.prototype.singleTokenDeletion = function(recognizer) {
var nextTokenType = recognizer.getTokenStream().LA(2);
var expecting = this.getExpectedTokens(recognizer);
if (expecting.contains(nextTokenType)) {
this.reportUnwantedToken(recognizer);
// print("recoverFromMismatchedToken deleting " \
// + str(recognizer.getTokenStream().LT(1)) \
// + " since " + str(recognizer.getTokenStream().LT(2)) \
// + " is what we want", file=sys.stderr)
recognizer.consume(); // simply delete extra token
// we want to return the token we're actually matching
var matchedSymbol = recognizer.getCurrentToken();
this.reportMatch(recognizer); // we know current token is correct
return matchedSymbol;
} else {
return null;
}
};
// Conjure up a missing token during error recovery.
//
// The recognizer attempts to recover from single missing
// symbols. But, actions might refer to that missing symbol.
// For example, x=ID {f($x);}. The action clearly assumes
// that there has been an identifier matched previously and that
// $x points at that token. If that token is missing, but
// the next token in the stream is what we want we assume that
// this token is missing and we keep going. Because we
// have to return some token to replace the missing token,
// we have to conjure one up. This method gives the user control
// over the tokens returned for missing tokens. Mostly,
// you will want to create something special for identifier
// tokens. For literals such as '{' and ',', the default
// action in the parser or tree parser works. It simply creates
// a CommonToken of the appropriate type. The text will be the token.
// If you change what tokens must be created by the lexer,
// override this method to create the appropriate tokens.
//
DefaultErrorStrategy.prototype.getMissingSymbol = function(recognizer) {
var currentSymbol = recognizer.getCurrentToken();
var expecting = this.getExpectedTokens(recognizer);
var expectedTokenType = expecting.first(); // get any element
var tokenText;
if (expectedTokenType===Token.EOF) {
tokenText = "";
} else {
tokenText = "";
}
var current = currentSymbol;
var lookback = recognizer.getTokenStream().LT(-1);
if (current.type===Token.EOF && lookback !== null) {
current = lookback;
}
return recognizer.getTokenFactory().create(current.source,
expectedTokenType, tokenText, Token.DEFAULT_CHANNEL,
-1, -1, current.line, current.column);
};
DefaultErrorStrategy.prototype.getExpectedTokens = function(recognizer) {
return recognizer.getExpectedTokens();
};
// 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.
//
DefaultErrorStrategy.prototype.getTokenErrorDisplay = function(t) {
if (t === null) {
return "";
}
var s = t.text;
if (s === null) {
if (t.type===Token.EOF) {
s = "";
} else {
s = "<" + t.type + ">";
}
}
return this.escapeWSAndQuote(s);
};
DefaultErrorStrategy.prototype.escapeWSAndQuote = function(s) {
s = s.replace(/\n/g,"\\n");
s = s.replace(/\r/g,"\\r");
s = s.replace(/\t/g,"\\t");
return "'" + s + "'";
};
// Compute the error recovery set for the current rule. During
// rule invocation, the parser pushes the set of tokens that can
// follow that rule reference on the stack; this amounts to
// computing FIRST of what follows the rule reference in the
// enclosing rule. See LinearApproximator.FIRST().
// This local follow set only includes tokens
// from within the rule; i.e., the FIRST computation done by
// ANTLR stops at the end of a rule.
//
// EXAMPLE
//
// When you find a "no viable alt exception", the input is not
// consistent with any of the alternatives for rule r. The best
// thing to do is to consume tokens until you see something that
// can legally follow a call to r//or* any rule that called r.
// You don't want the exact set of viable next tokens because the
// input might just be missing a token--you might consume the
// rest of the input looking for one of the missing tokens.
//
// Consider grammar:
//
// a : '[' b ']'
// | '(' b ')'
// ;
// b : c '^' INT ;
// c : ID
// | INT
// ;
//
// At each rule invocation, the set of tokens that could follow
// that rule is pushed on a stack. Here are the various
// context-sensitive follow sets:
//
// FOLLOW(b1_in_a) = FIRST(']') = ']'
// FOLLOW(b2_in_a) = FIRST(')') = ')'
// FOLLOW(c_in_b) = FIRST('^') = '^'
//
// Upon erroneous input "[]", the call chain is
//
// a -> b -> c
//
// and, hence, the follow context stack is:
//
// depth follow set start of rule execution
// 0 a (from main())
// 1 ']' b
// 2 '^' c
//
// Notice that ')' is not included, because b would have to have
// been called from a different context in rule a for ')' to be
// included.
//
// For error recovery, we cannot consider FOLLOW(c)
// (context-sensitive or otherwise). We need the combined set of
// all context-sensitive FOLLOW sets--the set of all tokens that
// could follow any reference in the call chain. We need to
// resync to one of those tokens. Note that FOLLOW(c)='^' and if
// we resync'd to that token, we'd consume until EOF. We need to
// sync to context-sensitive FOLLOWs for a, b, and c: {']','^'}.
// In this case, for input "[]", LA(1) is ']' and in the set, so we would
// not consume anything. After printing an error, rule c would
// return normally. Rule b would not find the required '^' though.
// At this point, it gets a mismatched token error and throws an
// exception (since LA(1) is not in the viable following token
// set). The rule exception handler tries to recover, but finds
// the same recovery set and doesn't consume anything. Rule b
// exits normally returning to rule a. Now it finds the ']' (and
// with the successful match exits errorRecovery mode).
//
// So, you can see that the parser walks up the call chain looking
// for the token that was a member of the recovery set.
//
// Errors are not generated in errorRecovery mode.
//
// ANTLR's error recovery mechanism is based upon original ideas:
//
// "Algorithms + Data Structures = Programs" by Niklaus Wirth
//
// and
//
// "A note on error recovery in recursive descent parsers":
// http://portal.acm.org/citation.cfm?id=947902.947905
//
// Later, Josef Grosch had some good ideas:
//
// "Efficient and Comfortable Error Recovery in Recursive Descent
// Parsers":
// ftp://www.cocolab.com/products/cocktail/doca4.ps/ell.ps.zip
//
// Like Grosch I implement context-sensitive FOLLOW sets that are combined
// at run-time upon error to avoid overhead during parsing.
//
DefaultErrorStrategy.prototype.getErrorRecoverySet = function(recognizer) {
var atn = recognizer._interp.atn;
var ctx = recognizer._ctx;
var recoverSet = new IntervalSet();
while (ctx !== null && ctx.invokingState>=0) {
// compute what follows who invoked us
var invokingState = atn.states[ctx.invokingState];
var rt = invokingState.transitions[0];
var follow = atn.nextTokens(rt.followState);
recoverSet.addSet(follow);
ctx = ctx.parentCtx;
}
recoverSet.removeOne(Token.EPSILON);
return recoverSet;
};
// Consume tokens until one matches the given token set.//
DefaultErrorStrategy.prototype.consumeUntil = function(recognizer, set) {
var ttype = recognizer.getTokenStream().LA(1);
while( ttype !== Token.EOF && !set.contains(ttype)) {
recognizer.consume();
ttype = recognizer.getTokenStream().LA(1);
}
};
//
// This implementation of {@link ANTLRErrorStrategy} responds to syntax errors
// by immediately canceling the parse operation with a
// {@link ParseCancellationException}. The implementation ensures that the
// {@link ParserRuleContext//exception} field is set for all parse tree nodes
// that were not completed prior to encountering the error.
//
//
// This error strategy is useful in the following scenarios.
//
//
// Two-stage parsing: This error strategy allows the first
// stage of two-stage parsing to immediately terminate if an error is
// encountered, and immediately fall back to the second stage. In addition to
// avoiding wasted work by attempting to recover from errors here, the empty
// implementation of {@link BailErrorStrategy//sync} improves the performance of
// the first stage.
// Silent validation: When syntax errors are not being
// reported or logged, and the parse result is simply ignored if errors occur,
// the {@link BailErrorStrategy} avoids wasting work on recovering from errors
// when the result will be ignored either way.
//
//
//
// {@code myparser.setErrorHandler(new BailErrorStrategy());}
//
// @see Parser//setErrorHandler(ANTLRErrorStrategy)
//
function BailErrorStrategy() {
DefaultErrorStrategy.call(this);
return this;
}
BailErrorStrategy.prototype = Object.create(DefaultErrorStrategy.prototype);
BailErrorStrategy.prototype.constructor = BailErrorStrategy;
// Instead of recovering from exception {@code e}, re-throw it wrapped
// in a {@link ParseCancellationException} so it is not caught by the
// rule function catches. Use {@link Exception//getCause()} to get the
// original {@link RecognitionException}.
//
BailErrorStrategy.prototype.recover = function(recognizer, e) {
var context = recognizer._ctx;
while (context !== null) {
context.exception = e;
context = context.parentCtx;
}
throw new ParseCancellationException(e);
};
// Make sure we don't attempt to recover inline; if the parser
// successfully recovers, it won't throw an exception.
//
BailErrorStrategy.prototype.recoverInline = function(recognizer) {
this.recover(recognizer, new InputMismatchException(recognizer));
};
// Make sure we don't attempt to recover from problems in subrules.//
BailErrorStrategy.prototype.sync = function(recognizer) {
// pass
};
exports.BailErrorStrategy = BailErrorStrategy;
exports.DefaultErrorStrategy = DefaultErrorStrategy;
/***/ }),
/* 42 */
/***/ (function(module, exports, __webpack_require__) {
//
/* 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 = __webpack_require__(43).InputStream;
var isNodeJs = typeof window === 'undefined' && typeof importScripts === 'undefined';
var fs = isNodeJs ? __webpack_require__(44) : 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;
/***/ }),
/* 43 */
/***/ (function(module, exports, __webpack_require__) {
//
/* 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 = __webpack_require__(6).Token;
__webpack_require__(33);
__webpack_require__(37);
// 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 = "";
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;
/***/ }),
/* 44 */
/***/ (function(module, exports) {
/***/ }),
/* 45 */
/***/ (function(module, exports, __webpack_require__) {
//
/* 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 = __webpack_require__(43).InputStream;
var isNodeJs = typeof window === 'undefined' && typeof importScripts === 'undefined';
var fs = isNodeJs ? __webpack_require__(44) : 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;
/***/ }),
/* 46 */
/***/ (function(module, exports, __webpack_require__) {
//
/* 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).
//
//
// 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}.
//
//
// 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}.
//
//
//
// 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.
///
var Token = __webpack_require__(6).Token;
var BufferedTokenStream = __webpack_require__(47).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;
/***/ }),
/* 47 */
/***/ (function(module, exports, __webpack_require__) {
//
/* 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.
//
//
// 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}.
var Token = __webpack_require__(6).Token;
var Lexer = __webpack_require__(22).Lexer;
var Interval = __webpack_require__(10).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)}.
//
// 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.
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:
//
//
// {@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}.
// {@link //fetch}: The check to prevent adding multiple EOF symbols
// into
// {@link //tokens} is trivial with this field.
//
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.
//
// For example, {@link CommonTokenStream} overrides this method to ensure
// that
// the seek target is always an on-channel token.
//
// @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;
/***/ }),
/* 48 */
/***/ (function(module, exports, __webpack_require__) {
/* 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 = __webpack_require__(6).Token;
var ParseTreeListener = __webpack_require__(14).ParseTreeListener;
var Recognizer = __webpack_require__(23).Recognizer;
var DefaultErrorStrategy = __webpack_require__(41).DefaultErrorStrategy;
var ATNDeserializer = __webpack_require__(17).ATNDeserializer;
var ATNDeserializationOptions = __webpack_require__(19).ATNDeserializationOptions;
var TerminalNode = __webpack_require__(14).TerminalNode;
var ErrorNode = __webpack_require__(14).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.
//
// 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}.
//
// @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.
//
// 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}.
//
// @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.
//
// 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.
//
// With the following specific exceptions, calls to listener events are
// deterministic , i.e. for identical input the calls to listener
// methods will be the same.
//
//
// Alterations to the grammar used to generate code may change the
// behavior of the listener calls.
// Alterations to the command line options passed to ANTLR 4 when
// generating the parser may change the behavior of the listener calls.
// Changing the version of the ANTLR Tool used to generate the parser
// may change the behavior of the listener calls.
//
//
// @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.
//
// If {@code listener} is {@code null} or has not been added as a parse
// listener, this method does nothing.
// @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:
//
//
// ParseTree t = parser.expr();
// ParseTreePattern p = parser.compileParseTreePattern("<ID>+0",
// MyParser.RULE_expr);
// ParseTreeMatch m = p.match(t);
// String id = m.get("ID");
//
var Lexer = __webpack_require__(22).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}.
//
// 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}.
//
//
// A B
// ^
//
//
// 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 is 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.
//
//
// return getExpectedTokens().contains(symbol);
//
//
// @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<String> 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;
/***/ }),
/* 49 */
/***/ (function(module, exports, __webpack_require__) {
exports.utils = __webpack_require__(50);
exports.literal = __webpack_require__(459);
exports.parser = __webpack_require__(499);
exports.problem = __webpack_require__(592);
exports.type = __webpack_require__(389);
exports.argument = __webpack_require__(119);
exports.constraint = __webpack_require__(130);
exports.instance = __webpack_require__(160);
exports.grammar = __webpack_require__(484);
exports.declaration = __webpack_require__(170);
exports.expression = __webpack_require__(331);
exports.statement = __webpack_require__(428);
exports.java = __webpack_require__(525);
exports.csharp = __webpack_require__(542);
exports.runtime = __webpack_require__(594);
exports.error = __webpack_require__(601);
exports.value = __webpack_require__(494);
exports.memstore = __webpack_require__(602);
exports.store = __webpack_require__(603);
exports.intrinsic = __webpack_require__(187);
exports.internet = __webpack_require__(604);
exports.io = __webpack_require__(609);
exports.reader = __webpack_require__(612);
/***/ }),
/* 50 */
/***/ (function(module, exports, __webpack_require__) {
exports.equalObjects = __webpack_require__(51).equalObjects;
exports.equalArrays = __webpack_require__(51).equalArrays;
exports.arrayContains = __webpack_require__(51).arrayContains;
exports.ObjectList = __webpack_require__(52).ObjectList;
exports.ExpressionList = __webpack_require__(53).ExpressionList;
exports.CodeWriter = __webpack_require__(54).CodeWriter;
exports.TypeUtils = __webpack_require__(307).TypeUtils;
/***/ }),
/* 51 */
/***/ (function(module, exports) {
function equalObjects(o1, o2) {
if(Object.is(o1, o2))
return true;
else
return o1.equals ? o1.equals(o2) : false;
}
function equalArrays(o1, o2) {
o1 = o1 || null;
o2 = o2 || null;
if(o1===o2) {
return true;
}
if(o1===null || o2===null) {
return false;
}
if(o1.length !== o2.length) {
return false;
}
for(var i=0;i>> 6);
view[idx++] = 0x80 /* 128 */ + (c & 0x3f /* 63 */);
} else if (c < 0x10000 /* 65536 */) {
/* three bytes */
view[idx++] = 0xe0 /* 224 */ + (c >>> 12);
view[idx++] = 0x80 /* 128 */ + ((c >>> 6) & 0x3f /* 63 */);
view[idx++] = 0x80 /* 128 */ + (c & 0x3f /* 63 */);
} else if (c < 0x200000 /* 2097152 */) {
/* four bytes */
view[idx++] = 0xf0 /* 240 */ + (c >>> 18);
view[idx++] = 0x80 /* 128 */ + ((c >>> 12) & 0x3f /* 63 */);
view[idx++] = 0x80 /* 128 */ + ((c >>> 6) & 0x3f /* 63 */);
view[idx++] = 0x80 /* 128 */ + (c & 0x3f /* 63 */);
} else if (c < 0x4000000 /* 67108864 */) {
/* five bytes */
view[idx++] = 0xf8 /* 248 */ + (c >>> 24);
view[idx++] = 0x80 /* 128 */ + ((c >>> 18) & 0x3f /* 63 */);
view[idx++] = 0x80 /* 128 */ + ((c >>> 12) & 0x3f /* 63 */);
view[idx++] = 0x80 /* 128 */ + ((c >>> 6) & 0x3f /* 63 */);
view[idx++] = 0x80 /* 128 */ + (c & 0x3f /* 63 */);
} else /* if (c <= 0x7fffffff) */ { /* 2147483647 */
/* six bytes */
view[idx++] = 0xfc /* 252 */ + /* (c >>> 30) may be not safe in ECMAScript! So...: */ (c / 1073741824);
view[idx++] = 0x80 /* 128 */ + ((c >>> 24) & 0x3f /* 63 */);
view[idx++] = 0x80 /* 128 */ + ((c >>> 18) & 0x3f /* 63 */);
view[idx++] = 0x80 /* 128 */ + ((c >>> 12) & 0x3f /* 63 */);
view[idx++] = 0x80 /* 128 */ + ((c >>> 6) & 0x3f /* 63 */);
view[idx++] = 0x80 /* 128 */ + (c & 0x3f /* 63 */);
}
});
return buffer;
}
function utf8BufferToString(buffer) {
if(buffer instanceof ArrayBuffer)
buffer = new Uint8Array(buffer);
var chars = [];
var idx = 0;
while(idx 251 && byte < 254 && idx + 5 < buffer.length) {
/* (byte - 252 << 30) may be not safe in ECMAScript! So...: */
/* six bytes */
code = (byte - 252) * 1073741824 + (buffer[idx + 1] - 128 << 24) + (buffer[idx + 2] - 128 << 18)
+ (buffer[idx + 3] - 128 << 12) + (buffer[idx + 4] - 128 << 6) + buffer[idx + 5] - 128;
idx += 6;
} else if (byte > 247 && byte < 252 && idx + 4 < buffer.length) {
/* five bytes */
code = (byte - 248 << 24) + (buffer[idx + 1] - 128 << 18) + (buffer[idx + 2] - 128 << 12)
+ (buffer[idx + 3] - 128 << 6) + buffer[idx + 4] - 128;
idx += 5;
} else if (byte > 239 && byte < 248 && idx + 3 < buffer.length) {
/* four bytes */
code = (byte - 240 << 18) + (buffer[idx + 1] - 128 << 12) + (buffer[idx + 2] - 128 << 6)
+ buffer[idx + 3] - 128;
idx += 4;
} else if (byte > 223 && byte < 240 && idx + 2 < buffer.length) {
/* three bytes */
code = (byte - 224 << 12) + (buffer[idx + 1] - 128 << 6) + buffer[idx + 2] - 128;
idx += 3;
} else if (byte > 191 && byte < 224 && idx + 1 < buffer.length) {
/* two bytes */
code = (byte - 192 << 6) + buffer[idx + 1] - 128;
idx += 2;
} else {
/* one byte */
code = byte;
idx += 1;
}
chars.push(String.fromCharCode(code));
}
return chars.join("");
};
function multiplyArray(items, count) {
var result = [];
while(--count>=0) {
result = result.concat(items);
}
return result;
}
function decimalToString(d) {
// mimic 0.0######
var s = d.toString();
var i = s.indexOf('.');
if(i>=0) {
// fix IEEE issue
i = s.indexOf('000000', i);
if( i < 0)
return s;
else
return s.substr(0, i);
} else
return s + ".0";
}
function isABoolean(o) {
return typeof(o) === "boolean";
}
function isAnInteger(o) {
return typeof(o) === "number" && Number.isInteger(o);
}
function isADecimal(o) {
return typeof(o) === "number" && !Number.isInteger(o);
}
function isAText(o) {
return typeof(o) === 'string' || o instanceof String;
}
function isACharacter(o) {
return isAText(o) && o.length===1;
}
function isCharacterUpperCase(char) {
return !!/[A-Z]/.exec(char[0]);
}
function compareValues(value1, value2) {
if(value1==null && value2==null) {
return 0;
} else if(value1==null) {
return -1;
} else if(value2==null) {
return 1;
} else if(value1.compareTo) {
return value1.compareTo(value2);
} else if(value2.compareTo) {
return -value2.compareTo(value1);
} else {
var s1 = value1.toString();
var s2 = value2.toString();
return s1 > s2 ? 1 : s1 == s2 ? 0 : -1;
}
};
exports.multiplyArray = multiplyArray;
exports.equalObjects = equalObjects;
exports.equalArrays = equalArrays;
exports.arrayContains = arrayContains;
exports.removeAccents = removeAccents;
exports.getUtf8StringLength = getUtf8StringLength;
exports.getUtf8CharLength = getUtf8CharLength;
exports.stringToUtf8Buffer = stringToUtf8Buffer;
exports.utf8BufferToString = utf8BufferToString;
exports.decimalToString = decimalToString;
exports.isABoolean = isABoolean;
exports.isAnInteger = isAnInteger;
exports.isADecimal = isADecimal;
exports.isAText = isAText;
exports.isACharacter = isACharacter;
exports.isCharacterUpperCase = isCharacterUpperCase;
exports.compareValues = compareValues;
/***/ }),
/* 52 */
/***/ (function(module, exports) {
function ObjectList(items, item) {
Array.call(this);
items = items || null;
if(items!==null) {
this.addAll(items);
}
item = item || null;
if(item!==null) {
this.add(item);
}
return this;
}
ObjectList.prototype = Object.create(Array.prototype);
ObjectList.prototype.constructor = ObjectList;
ObjectList.prototype.addAll = function(items) {
this.push.apply(this, items);
};
ObjectList.prototype.add = function(item) {
if(item)
this.push(item);
};
ObjectList.prototype.insert = function(before, item) {
this.splice(0, 0, item);
};
ObjectList.prototype.remove = function(index) {
this.splice(index, 1);
};
ObjectList.prototype.toString = function() {
return this.join(", ");
};
exports.ObjectList = ObjectList;
/***/ }),
/* 53 */
/***/ (function(module, exports, __webpack_require__) {
var ObjectList = __webpack_require__(52).ObjectList;
function ExpressionList(items, item) {
ObjectList.call(this, items, item);
return this;
}
ExpressionList.prototype = Object.create(ObjectList.prototype);
ExpressionList.prototype.constructor = ExpressionList;
ExpressionList.prototype.toDialect = function(writer) {
if (this.length > 0) {
for (var i = 0; i < this.length; i++) {
this[i].toDialect(writer);
writer.append(", ");
}
writer.trimLast(2);
}
};
ExpressionList.prototype.declare = function(transpiler) {
this.forEach(function(item){
item.declare(transpiler);
});
};
ExpressionList.prototype.transpile = function(transpiler) {
if (this.length > 0) {
for (var i = 0; i < this.length; i++) {
this[i].transpile(transpiler);
transpiler.append(", ");
}
transpiler.trimLast(2);
}
};
exports.ExpressionList = ExpressionList;
/***/ }),
/* 54 */
/***/ (function(module, exports, __webpack_require__) {
var Context = __webpack_require__(55).Context;
function Indenter() {
this.value = "";
this.indents = "";
this.isStartOfLine = true;
return this;
}
Indenter.prototype.appendTabsIfRequired = function(s) {
if(this.isStartOfLine) {
this.value += this.indents;
}
this.isStartOfLine = s.charAt(s.length-1)=='\n';
};
Indenter.prototype.append = function(s) {
this.value += s;
};
Indenter.prototype.trimLast = function(count) {
this.value = this.value.substring(0, this.value.length - count);
};
Indenter.prototype.indent = function() {
this.indents += '\t';
};
Indenter.prototype.dedent = function() {
if(this.indents.length==0) {
throw new Error("Illegal dedent!");
}
this.indents = this.indents.slice(1);
};
function CodeWriter(dialect, context, indenter) {
this.dialect = dialect;
this.context = context || Context.newGlobalContext();
this.indenter = indenter || new Indenter();
return this;
}
CodeWriter.prototype.isGlobalContext = function() {
return this.context.isGlobalContext();
};
CodeWriter.prototype.appendRaw = function(s) {
this.indenter.append(s);
return this;
};
CodeWriter.prototype.append = function(s) {
if(typeof(s)!==typeof(""))
console.error(s);
this.indenter.appendTabsIfRequired(s);
this.indenter.append(s);
return this;
};
CodeWriter.prototype.trimLast = function(count) {
this.indenter.trimLast(count);
return this;
};
CodeWriter.prototype.indent = function() {
this.indenter.indent();
return this;
};
CodeWriter.prototype.dedent = function() {
this.indenter.dedent();
return this;
};
CodeWriter.prototype.newLine = function() {
this.append('\n');
return this;
};
CodeWriter.prototype.toString = function() {
return this.indenter.value;
};
CodeWriter.prototype.newLocalWriter = function() {
return new CodeWriter(this.dialect, this.context.newLocalContext(), this.indenter);
};
CodeWriter.prototype.newChildWriter = function() {
return new CodeWriter(this.dialect, this.context.newChildContext(), this.indenter);
};
CodeWriter.prototype.newInstanceWriter = function(type) {
return new CodeWriter(this.dialect, this.context.newInstanceContext(null, type), this.indenter);
};
CodeWriter.prototype.newDocumentWriter = function() {
return new CodeWriter(this.dialect, this.context.newDocumentContext(null, false), this.indenter);
};
CodeWriter.prototype.newMemberWriter = function() {
return new CodeWriter (this.dialect, this.context.newChildContext(), this.indenter);
};
CodeWriter.prototype.toDialect = function(o) {
this.dialect.toDialect(this, o);
};
exports.CodeWriter = CodeWriter
/***/ }),
/* 55 */
/***/ (function(module, exports, __webpack_require__) {
var EnumeratedCategoryDeclaration = __webpack_require__(56).EnumeratedCategoryDeclaration;
var EnumeratedNativeDeclaration = __webpack_require__(173).EnumeratedNativeDeclaration;
var ConcreteCategoryDeclaration = __webpack_require__(57).ConcreteCategoryDeclaration;
var ConcreteWidgetDeclaration = __webpack_require__(171).ConcreteWidgetDeclaration;
var NativeWidgetDeclaration = __webpack_require__(324).NativeWidgetDeclaration;
var BaseMethodDeclaration = __webpack_require__(146).BaseMethodDeclaration;
var CategoryDeclaration = __webpack_require__(58).CategoryDeclaration;
var AttributeDeclaration = __webpack_require__(59).AttributeDeclaration;
var MethodExpression = __webpack_require__(355).MethodExpression;
var ConcreteInstance = __webpack_require__(498).ConcreteInstance;
var ExpressionValue = __webpack_require__(164).ExpressionValue;
var ClosureValue = __webpack_require__(154).ClosureValue;
var ProblemListener = __webpack_require__(157).ProblemListener;
var MethodType = __webpack_require__(101).MethodType;
var DecimalType = __webpack_require__(82).DecimalType;
var DecimalValue = __webpack_require__(81).DecimalValue;
var IntegerValue = __webpack_require__(80).IntegerValue;
var Variable = __webpack_require__(91).Variable;
var LinkedValue = __webpack_require__(337).LinkedValue;
function Context() {
this.globals = null;
this.calling = null;
this.parent = null; // for inner methods
this.debugger = null;
this.declarations = {};
this.tests = {};
this.instances = {};
this.values = {};
this.nativeBindings = {};
this.problemListener = new ProblemListener();
return this;
}
Context.newGlobalContext = function() {
var context = new Context();
context.globals = context;
context.calling = null;
context.parent = null;
context.debugger = null;
return context;
};
Context.prototype.isGlobalContext = function() {
return this===this.globals;
};
Context.prototype.getCallingContext = function() {
return this.calling;
};
Context.prototype.getParentMostContext = function() {
if(this.parent === null) {
return this;
} else {
return this.parent.getParentMostContext();
}
};
Context.prototype.getClosestInstanceContext = function() {
if(this.parent === null) {
return null;
} else if(this.parent instanceof InstanceContext) {
return this.parent;
} else {
return this.parent.getClosestInstanceContext();
}
};
Context.prototype.getParentContext = function() {
return this.parent;
}
Context.prototype.setParentContext = function(parent) {
this.parent = parent;
}
Context.prototype.newResourceContext = function() {
var context = new ResourceContext();
context.globals = this.globals;
context.calling = this.calling;
context.parent = this;
context.debugger = this.debugger;
context.problemListener = this.problemListener;
return context;
};
Context.prototype.newLocalContext = function() {
var context = new Context();
context.globals = this.globals;
context.calling = this;
context.parent = null;
context.debugger = this.debugger;
context.problemListener = this.problemListener;
return context;
};
Context.prototype.newDocumentContext = function(doc, isChild) {
var context = new DocumentContext(doc);
context.globals = this.globals;
context.calling = isChild ? this.calling : this;
context.parent = isChild ? this : null;
context.debugger = this.debugger;
context.problemListener = this.problemListener;
return context;
};
Context.prototype.newBuiltInContext = function(value) {
var context = new BuiltInContext(value);
context.globals = this.globals;
context.calling = this;
context.parent = null;
context.debugger = this.debugger;
context.problemListener = this.problemListener;
return context;
};
Context.prototype.newInstanceContext = function(instance, type, isChild) {
var context = new InstanceContext(instance, type);
context.globals = this.globals;
context.calling = isChild ? this.calling : this;
context.parent = isChild ? this : null;
context.debugger = this.debugger;
context.problemListener = this.problemListener;
return context;
};
Context.prototype.newChildContext = function() {
var context = new Context();
context.globals = this.globals;
context.calling = this.calling;
context.parent = this;
context.debugger = this.debugger;
context.problemListener = this.problemListener;
return context;
};
Context.prototype.newMemberContext = function(type) {
return this.newInstanceContext(null, type, false);
};
Context.prototype.clone = function() {
var context = new Context();
context.globals = context;
context.calling = null;
context.parent = null;
context.debugger = null;
// copy from
context.declarations = Object.create(this.declarations);
context.tests = Object.create(this.tests);
context.instances = Object.create(this.instances);
context.values = Object.create(this.values);
context.nativeBindings = Object.create(this.nativeBindings);
return context;
};
Context.prototype.getCatalog = function() {
if (this != this.globals)
return this.globals.getCatalog();
else
return this.getLocalCatalog();
};
Context.prototype.getLocalCatalog = function() {
var catalog = { attributes : [], methods : [], categories : [], enumerations : [], tests : [], widgets: []};
for(var name in this.declarations) {
var decl = this.declarations[name];
if(decl instanceof AttributeDeclaration)
catalog.attributes.push(name);
else if(decl instanceof EnumeratedCategoryDeclaration || decl instanceof EnumeratedNativeDeclaration) {
var info = {};
info.name = decl.name;
info.symbols = decl.symbols.map(function (s) {
return s.name;
});
catalog.enumerations.push(info);
} else if(decl instanceof CategoryDeclaration) {
if(decl.isWidget(this))
catalog.widgets.push(name);
else
catalog.categories.push(name);
} else if(decl instanceof MethodDeclarationMap) {
var method = {};
method.name = decl.name;
method.protos = [];
for (var proto in decl.protos) {
var main = decl.protos[proto].isEligibleAsMain();
method.protos.push({proto: proto, main: main});
}
catalog.methods.push(method);
}
}
for(var name in this.tests)
catalog.tests.push(name);
// minimize for UI optimization
if(catalog.attributes.length <= 0)
delete catalog.attributes;
if(catalog.categories.length <= 0)
delete catalog.categories;
if(catalog.widgets.length <= 0)
delete catalog.widgets;
if(catalog.enumerations.length <= 0)
delete catalog.enumerations;
if(catalog.methods.length <= 0)
delete catalog.methods;
if(catalog.tests.length <= 0)
delete catalog.tests;
return catalog;
};
Context.prototype.findAttribute = function(name) {
if(this===this.globals)
return this.declarations[name] || (this.parent ? this.parent.findAttribute(name) : null);
else
return this.globals.findAttribute(name);
};
Context.prototype.getAllAttributes = function() {
if(this===this.globals) {
var list = [];
for(var name in this.declarations) {
if(this.declarations[name] instanceof AttributeDeclaration)
list.push(this.declarations[name]);
}
if(this.parent)
list = list.concat(this.parent.getAllAttributes());
return list;
} else
return this.globals.getAllAttributes();
};
Context.prototype.getRegistered = function(name) {
// resolve upwards, since local names override global ones
var actual = this.declarations[name] || null;
if(actual!==null) {
return actual;
}
actual = this.instances[name] || null;
if(actual!==null) {
return actual;
} else if(this.parent!==null) {
return this.parent.getRegistered(name);
} else if(this.globals!==this) {
return this.globals.getRegistered(name);
} else {
return null;
}
};
Context.prototype.getRegisteredDeclaration = function(name) {
// resolve upwards, since local names override global ones
var actual = this.declarations[name] || null;
if(actual!==null) {
return actual;
} else if(this.parent!==null) {
return this.parent.getRegisteredDeclaration(name);
} else if(this.globals!==this) {
return this.globals.getRegisteredDeclaration(name);
} else {
return null;
}
};
Context.prototype.getLocalDeclaration = function(name) {
var actual = this.declarations[name] || null;
if (actual !== null) {
return actual;
} else if (this.parent !== null) {
return this.parent.getLocalDeclaration(name);
} else {
return null;
}
};
Context.prototype.registerDeclaration = function(declaration) {
if(this.checkDuplicate(declaration))
this.declarations[declaration.name] = declaration;
};
Context.prototype.checkDuplicate = function(declaration) {
var actual = this.getRegistered(declaration.name) || null;
if (actual !== null && actual !== declaration)
this.problemListener.reportDuplicate(declaration.name, declaration);
return actual === null;
};
Context.prototype.unregisterTestDeclaration = function(declaration) {
delete this.tests[declaration.name];
};
Context.prototype.unregisterMethodDeclaration = function(declaration, proto) {
var map = this.declarations[declaration.name];
if(map && map.unregister(proto))
delete this.declarations[declaration.name];
};
Context.prototype.unregisterDeclaration = function(declaration) {
delete this.declarations[declaration.name];
};
Context.prototype.registerMethodDeclaration = function(declaration) {
var actual = this.checkDuplicateMethod(declaration);
if (actual === null) {
actual = new MethodDeclarationMap(declaration.name);
this.declarations[declaration.name] = actual;
}
actual.register(declaration, this.problemListener);
};
Context.prototype.checkDuplicateMethod = function(declaration) {
var actual = this.getRegistered(declaration.name) || null;
if (actual !== null && !(actual instanceof MethodDeclarationMap))
this.problemListener.reportDuplicate(declaration.name, declaration);
return actual;
};
Context.prototype.registerTestDeclaration = function(declaration) {
var actual = this.tests[declaration.name] || null;
if(actual!==null)
this.problemListener.reportDuplicate(declaration.name, declaration);
this.tests[declaration.name] = declaration;
};
Context.prototype.getRegisteredTest = function(name) {
// resolve upwards, since local names override global ones
var actual = this.tests[name] || null;
if(actual!==null) {
return actual;
} else if(this.parent!==null) {
return this.parent.getRegisteredTest(name);
} else if(this.globals!==this) {
return this.globals.getRegisteredTest(name);
} else {
return null;
}
};
Context.prototype.hasTests = function() {
for(var test in this.tests)
return true;
return false;
};
Context.prototype.getTestDeclaration = function(testName) {
return this.tests[testName];
};
Context.prototype.registerNativeBinding = function(type, declaration) {
if(this === this.globals)
this.nativeBindings[type] = declaration;
else
this.globals.registerNativeBinding(type, declaration);
};
Context.prototype.getNativeBinding = function(type) {
if(this===this.globals) {
var binding = this.nativeBindings[type] || null;
if (binding !== null)
return binding;
else if (this.parent !== null)
return this.parent.getNativeBinding(type);
else
return null;
} else
return this.globals.getNativeBinding(type);
};
function MethodDeclarationMap(name) {
this.name = name;
this.protos = {};
return this;
}
MethodDeclarationMap.prototype.register = function(declaration, problemListener) {
var proto = declaration.getProto();
var current = this.protos[proto] || null;
if(current!==null)
problemListener.reportDuplicate(declaration.name, declaration);
this.protos[proto] = declaration;
};
MethodDeclarationMap.prototype.unregister = function(proto) {
delete this.protos[proto];
return Object.getOwnPropertyNames(this.protos).length === 0;
};
MethodDeclarationMap.prototype.registerIfMissing = function(declaration) {
var proto = declaration.getProto();
if(!(proto in this.protos)) {
this.protos[proto] = declaration;
}
};
MethodDeclarationMap.prototype.getFirst = function() {
for(var proto in this.protos) {
return this.protos[proto];
}
};
MethodDeclarationMap.prototype.getAll = function() {
return Object.getOwnPropertyNames(this.protos).map(function(proto) { return this.protos[proto]; }, this);
};
MethodDeclarationMap.prototype.isEmpty = function() {
return this.size()===0;
};
MethodDeclarationMap.prototype.size = function() {
return Object.getOwnPropertyNames(this.protos).length;
};
Context.prototype.getRegisteredValue = function(name) {
var context = this.contextForValue(name);
if (context === null)
return null;
else
return context.readRegisteredValue(name);
};
Context.prototype.readRegisteredValue = function(name) {
return this.instances[name] || null;
};
Context.prototype.registerValue = function(value, checkDuplicate) {
if(checkDuplicate === undefined)
checkDuplicate = true;
if(checkDuplicate) {
// only explore current context
var actual = this.instances[value.name] || null;
if(actual!==null)
this.problemListener.reportDuplicate(value.id);
}
this.instances[value.name] = value;
};
Context.prototype.unregisterValue = function(value) {
delete this.instances[value.name];
};
Context.prototype.hasValue = function(id) {
return this.contextForValue(id.name) !== null;
};
Context.prototype.getValue = function(id) {
var context = this.contextForValue(id.name);
if(context===null)
this.problemListener.reportUnknownVariable(id);
return context.readValue(id);
};
Context.prototype.readValue = function(id) {
var value = this.values[id.name] || null;
if(value===null)
this.problemListener.reportEmptyVariable(id);
if(value instanceof LinkedValue)
return value.context.getValue(id);
else
return value;
};
Context.prototype.setValue = function(id, value) {
var context = this.contextForValue(id.name);
if(context===null)
this.problemListener.reportUnknownVariable(id);
context.writeValue(id, value);
};
Context.prototype.writeValue = function(id, value) {
value = this.autocast(id.name, value);
var current = this.values[id.name];
if(current instanceof LinkedValue)
current.context.setValue(id, value);
else
this.values[id.name] = value;
};
Context.prototype.autocast = function(name, value) {
if(value !== null && value instanceof IntegerValue) {
var actual = this.instances[name];
if(actual.getType(this) === DecimalType.instance)
value = new DecimalValue(value.DecimalValue());
}
return value;
};
Context.prototype.contextForValue = function(name) {
// resolve upwards, since local names override global ones
var actual = this.instances[name] || null;
if(actual!==null) {
return this;
} else if(this.parent!==null) {
return this.parent.contextForValue(name);
} else if(this.globals!==this) {
return this.globals.contextForValue(name);
} else {
return null;
}
};
Context.prototype.contextForDeclaration = function(name) {
// resolve upwards, since local names override global ones
var actual = this.declarations[name] || null;
if(actual!==null) {
return this;
} else if(this.parent!==null) {
return this.parent.contextForDeclaration(name);
} else if(this.globals!==this) {
return this.globals.contextForDeclaration(name);
} else {
return null;
}
};
function ResourceContext() {
Context.call(this);
return this;
}
ResourceContext.prototype = Object.create(Context.prototype);
ResourceContext.prototype.constructor = ResourceContext;
function InstanceContext(instance, type) {
Context.call(this);
this.instance = instance || null;
this.instanceType = type !== null ? type : instance.type;
return this;
}
InstanceContext.prototype = Object.create(Context.prototype);
InstanceContext.prototype.constructor = InstanceContext;
InstanceContext.prototype.getRegistered = function(name) {
var actual = Context.prototype.getRegistered.call(this, name);
if (actual)
return actual;
var decl = this.getDeclaration();
if (decl==null)
return null;
var methods = decl.getMemberMethodsMap(this, name);
if(methods && !methods.isEmpty())
return methods;
else if(decl.hasAttribute(this, name))
return this.getRegisteredDeclaration(typeof(AttributeDeclaration), name);
else
return null;
};
InstanceContext.prototype.getRegisteredDeclaration = function(klass, name) {
if (klass === MethodDeclarationMap) {
var decl = this.getDeclaration();
if (decl) {
var methods = decl.getMemberMethodsMap(this, name);
if (methods && !methods.isEmpty())
return methods;
}
}
return Context.prototype.getRegisteredDeclaration.call(this, klass, name)
};
InstanceContext.prototype.readRegisteredValue = function(name) {
var actual = this.instances[name] || null;
// not very pure, but avoids a lot of complexity when registering a value
if(actual === null) {
var attr = this.getRegisteredDeclaration(name);
if(attr instanceof AttributeDeclaration) {
var type = attr.getType();
actual = new Variable(name, type);
this.instances[name] = actual;
}
}
return actual;
};
InstanceContext.prototype.contextForValue = function(name) {
// params and variables have precedence over members
// so first look in context values
var context = Context.prototype.contextForValue.call(this, name);
if(context !== null) {
return context;
}
var decl = this.getDeclaration();
if(decl.hasAttribute(this, name) || decl.hasMethod(this, name)) {
return this;
} else {
return null;
}
};
InstanceContext.prototype.getDeclaration = function() {
if(this.instance !== null)
return this.instance.declaration;
else
return this.getRegisteredDeclaration(this.instanceType.name);
};
InstanceContext.prototype.readValue = function(id) {
var decl = this.getDeclaration();
if(decl.hasAttribute(this, id.name)) {
return this.instance.getMemberValue(this.calling, id.name);
} else if(decl.hasMethod(this, id.name)) {
var method = decl.getMemberMethodsMap(this, id.name).getFirst()
return new ClosureValue(this, new MethodType(method));
} else
return null;
};
InstanceContext.prototype.writeValue = function(id, value) {
this.instance.setMember(this.calling, id.name, value);
};
function BuiltInContext(value) {
Context.call(this);
this.value = value;
return this;
}
BuiltInContext.prototype = Object.create(Context.prototype);
BuiltInContext.prototype.constructor = BuiltInContext;
function DocumentContext(document) {
Context.call(this);
this.document = document;
return this;
}
DocumentContext.prototype = Object.create(Context.prototype);
DocumentContext.prototype.constructor = DocumentContext;
DocumentContext.prototype.contextForValue = function(name) {
// params and variables have precedence over members
// so first look in context values
var context = Context.prototype.contextForValue.call(this, name);
if (context !== null)
return context;
// since any name is valid in the context of a document
// simply return this document context
else
return this;
};
DocumentContext.prototype.readValue = function(name) {
return this.document.getMemberValue(this.calling, name);
};
DocumentContext.prototype.writeValue = function(name) {
this.document.setMember(this.calling, name, value);
};
Context.prototype.enterMethod = function(method) {
if(this.debugger !== null) {
this.debugger.enterMethod(this, method);
}
};
Context.prototype.leaveMethod = function(method) {
if(this.debugger !== null) {
this.debugger.leaveMethod(this, method);
}
};
Context.prototype.enterStatement = function(statement) {
if(this.debugger !== null) {
this.debugger.enterStatement(this, statement);
}
};
Context.prototype.leaveStatement = function(statement) {
if(this.debugger !== null) {
this.debugger.leaveStatement(this, statement);
}
};
Context.prototype.terminated = function() {
if (this.debugger !== null) {
this.debugger.terminated();
}
};
Context.prototype.loadSingleton = function(type) {
if(this === this.globals) {
var value = this.values[type.name] || null;
if(value === null) {
var decl = this.declarations[type.name] || null;
if(!(decl instanceof ConcreteCategoryDeclaration))
throw new InternalError("No such singleton:" + type.name);
value = new ConcreteInstance(this, decl);
value.mutable = true; // a singleton is protected by "with x do", so always mutable in that context
this.values[type.name] = value;
}
if(value instanceof ConcreteInstance)
return value;
else
throw new InternalError("Not a concrete instance:" + value);
} else
return this.globals.loadSingleton(type);
};
exports.Context = Context;
exports.BuiltInContext = BuiltInContext;
exports.InstanceContext = InstanceContext;
exports.DocumentContext = DocumentContext;
exports.ResourceContext = ResourceContext;
exports.MethodDeclarationMap = MethodDeclarationMap;
/***/ }),
/* 56 */
/***/ (function(module, exports, __webpack_require__) {
var ConcreteCategoryDeclaration = __webpack_require__(57).ConcreteCategoryDeclaration;
var EnumeratedCategoryType = __webpack_require__(92).EnumeratedCategoryType;
var IdentifierList = __webpack_require__(123).IdentifierList;
var Identifier = __webpack_require__(73).Identifier;
var List = __webpack_require__(136).List;
function EnumeratedCategoryDeclaration(id, attrs, derived, symbols) {
ConcreteCategoryDeclaration.call(this, id, attrs, derived, null);
this.setSymbols(symbols);
return this;
}
EnumeratedCategoryDeclaration.prototype = Object.create(ConcreteCategoryDeclaration.prototype);
EnumeratedCategoryDeclaration.prototype.constructor = EnumeratedCategoryDeclaration;
EnumeratedCategoryDeclaration.prototype.getDeclarationType = function() {
return "Enumerated";
};
EnumeratedCategoryDeclaration.prototype.unregister = function(context) {
context.unregisterDeclaration (this);
this.symbols.forEach(function(symbol) {
symbol.unregister(context);
});
};
EnumeratedCategoryDeclaration.prototype.getLocalAttributes = function() {
var attributes = ConcreteCategoryDeclaration.prototype.getLocalAttributes.call(this);
if(!attributes)
attributes = new IdentifierList();
if(!attributes.hasAttribute("name"))
attributes.add(new Identifier("name"));
return attributes;
};
EnumeratedCategoryDeclaration.prototype.hasAttribute = function(context, name) {
if("name"==name)
return true;
else
return ConcreteCategoryDeclaration.prototype.hasAttribute.call(this, context, name);
};
EnumeratedCategoryDeclaration.prototype.setSymbols = function(symbols) {
this.symbols = symbols || [];
var type = new EnumeratedCategoryType(this.id);
this.symbols.forEach(function(symbol) {
symbol.type = type;
});
};
EnumeratedCategoryDeclaration.prototype.register = function(context) {
context.registerDeclaration(this);
this.symbols.forEach(function(symbol) {
symbol.register(context);
});
};
EnumeratedCategoryDeclaration.prototype.check = function(context, isStart) {
ConcreteCategoryDeclaration.prototype.check.call(this, context, isStart);
this.symbols.forEach(function(symbol) {
symbol.check(context);
});
return this.getType(context);
};
EnumeratedCategoryDeclaration.prototype.getType = function(context) {
return new EnumeratedCategoryType(this.id);
};
EnumeratedCategoryDeclaration.prototype.toODialect = function(writer) {
writer.append("enumerated category ").append(this.name);
if(this.attributes!=null) {
writer.append('(');
this.attributes.toDialect(writer, true);
writer.append(")");
}
if(this.derivedFrom!=null) {
writer.append(" extends ");
this.derivedFrom.toDialect(writer, true);
}
writer.append(" {").newLine().indent();
this.symbols.forEach(function(symbol) {
symbol.toDialect(writer);
writer.append(";").newLine();
});
writer.dedent().append("}").newLine();
};
EnumeratedCategoryDeclaration.prototype.toEDialect = function(writer) {
writer.append("define ").append(this.name).append(" as enumerated ");
if(this.derivedFrom!=null)
this.derivedFrom.toDialect(writer, true);
else
writer.append("category");
if(this.attributes!=null && this.attributes.length>0) {
if(this.attributes.length==1)
writer.append(" with attribute ");
else
writer.append(" with attributes ");
this.attributes.toDialect(writer, true);
if(this.symbols!=null && this.symbols.length>0)
writer.append(", and symbols:").newLine();
} else
writer.append(" with symbols:").newLine();
writer.indent();
this.symbols.forEach(function(symbol) {
symbol.toDialect(writer);
writer.newLine();
});
writer.dedent();
};
EnumeratedCategoryDeclaration.prototype.toMDialect = function(writer) {
writer.append("enum ").append(this.name).append("(");
if(this.derivedFrom!=null) {
this.derivedFrom.toDialect(writer, false);
if(this.attributes!=null && this.attributes.length>0)
writer.append(", ");
}
if(this.attributes!=null && this.attributes.length>0)
this.attributes.toDialect(writer, false);
writer.append("):").newLine().indent();
this.symbols.forEach(function(symbol) {
symbol.toDialect(writer);
writer.newLine();
});
writer.dedent();
};
EnumeratedCategoryDeclaration.prototype.isUserError = function(context) {
return this.derivedFrom && this.derivedFrom.length===1 && this.derivedFrom[0].name==="Error";
};
EnumeratedCategoryDeclaration.prototype.ensureDeclarationOrder = function(context, list, set) {
if(set.has(this))
return;
if (this.isUserError(context)) {
list.push(this);
set.add(this);
// don't declare inherited Error
} else
ConcreteCategoryDeclaration.prototype.ensureDeclarationOrder.call(this, context, list, set);
};
EnumeratedCategoryDeclaration.prototype.declare = function(transpiler) {
if(this.name==="Error")
return;
ConcreteCategoryDeclaration.prototype.declare.call(this, transpiler);
transpiler.require(List);
};
EnumeratedCategoryDeclaration.prototype.transpile = function(transpiler) {
if (this.isUserError(transpiler.context))
this.transpileUserError(transpiler);
else
this.transpileEnumerated(transpiler);
};
EnumeratedCategoryDeclaration.prototype.transpileUserError = function(transpiler) {
transpiler.append("class ").append(this.name).append(" extends Error {").indent();
transpiler.newLine();
transpiler.append("constructor(values) {").indent();
transpiler.append("super(values.text);").newLine();
transpiler.append("this.name = '").append(this.name).append("';").newLine();
transpiler.append("this.promptoName = values.name;").newLine();
transpiler.append("return this;").dedent();
transpiler.append("}").newLine();
transpiler.append("toString() {").indent().append("return this.message;").dedent().append("}").newLine();
transpiler.append("getText() {").indent().append("return this.message;").dedent().append("}").newLine();
transpiler.dedent().append("}").newLine();
this.symbols.forEach(function(symbol) { symbol.initializeError(transpiler); });
this.transpileSymbols(transpiler);
};
EnumeratedCategoryDeclaration.prototype.transpileSymbols = function(transpiler) {
var names = this.symbols.map(function (symbol) {
return symbol.name;
});
transpiler.append(this.name).append(".symbols = new List(false, [").append(names.join(", ")).append("]);").newLine();
};
EnumeratedCategoryDeclaration.prototype.transpileEnumerated = function(transpiler) {
ConcreteCategoryDeclaration.prototype.transpile.call(this, transpiler);
transpiler.newLine();
transpiler.append(this.name).append(".prototype.toString = function() { return this.name; };").newLine();
if(this.hasAttribute(transpiler.context, "text"))
transpiler.append(this.name).append(".prototype.getText = function() { return this.text; };").newLine();
else
transpiler.append(this.name).append(".prototype.getText = ").append(this.name).append(".prototype.toString;").newLine();
this.symbols.forEach(function(symbol) { symbol.initialize(transpiler); });
this.transpileSymbols(transpiler);
};
exports.EnumeratedCategoryDeclaration = EnumeratedCategoryDeclaration;
/***/ }),
/* 57 */
/***/ (function(module, exports, __webpack_require__) {
var CategoryDeclaration = __webpack_require__(58).CategoryDeclaration;
var SetterMethodDeclaration = __webpack_require__(327).SetterMethodDeclaration;
var GetterMethodDeclaration = __webpack_require__(326).GetterMethodDeclaration;
var MethodDeclarationMap = null;
var ConcreteInstance = __webpack_require__(498).ConcreteInstance;
var CategoryType = __webpack_require__(93).CategoryType;
var DataStore = __webpack_require__(308).DataStore;
var $Root = __webpack_require__(591).$Root;
var EnumeratedCategoryDeclaration = null;
var EnumeratedNativeDeclaration = null;
exports.resolve = function() {
MethodDeclarationMap = __webpack_require__(55).MethodDeclarationMap;
EnumeratedCategoryDeclaration = __webpack_require__(56).EnumeratedCategoryDeclaration;
EnumeratedNativeDeclaration = __webpack_require__(173).EnumeratedNativeDeclaration;
}
function ConcreteCategoryDeclaration(id, attributes, derivedFrom, methods) {
CategoryDeclaration.call(this, id, attributes);
this.derivedFrom = derivedFrom || null;
this.methodsMap = null;
this.methods = methods || [];
return this;
}
ConcreteCategoryDeclaration.prototype = Object.create(CategoryDeclaration.prototype);
ConcreteCategoryDeclaration.prototype.constructor = ConcreteCategoryDeclaration;
ConcreteCategoryDeclaration.prototype.isWidget = function(context) {
if(this.derivedFrom==null || this.derivedFrom.length!=1)
return false;
var derived = context.getRegisteredDeclaration(this.derivedFrom[0]);
return derived.isWidget(context);
};
ConcreteCategoryDeclaration.prototype.toEDialect = function(writer) {
var hasMethods = this.methods!=null && this.methods.length>0;
this.protoToEDialect(writer, hasMethods, false); // no bindings
if(hasMethods)
this.methodsToEDialect(writer, this.methods);
}
ConcreteCategoryDeclaration.prototype.categoryTypeToEDialect = function(writer) {
if(this.derivedFrom==null)
writer.append("category");
else
this.derivedFrom.toDialect(writer, true);
};
ConcreteCategoryDeclaration.prototype.toODialect = function(writer) {
var hasMethods = this.methods!=null && this.methods.length>0;
this.allToODialect(writer, hasMethods);
};
ConcreteCategoryDeclaration.prototype.categoryTypeToODialect = function(writer) {
writer.append("category");
};
ConcreteCategoryDeclaration.prototype.categoryExtensionToODialect = function(writer) {
if(this.derivedFrom!=null) {
writer.append(" extends ");
this.derivedFrom.toDialect(writer, true);
}
};
ConcreteCategoryDeclaration.prototype.bodyToODialect = function(writer) {
this.methodsToODialect (writer, this.methods);
};
ConcreteCategoryDeclaration.prototype.toMDialect = function(writer) {
this.protoToMDialect(writer, this.derivedFrom);
this.methodsToMDialect(writer);
};
ConcreteCategoryDeclaration.prototype.categoryTypeToMDialect = function(writer) {
writer.append("class");
};
ConcreteCategoryDeclaration.prototype.methodsToMDialect = function(writer) {
writer.indent();
if(this.methods==null || this.methods.length==0)
writer.append("pass").newLine();
else {
writer.newLine();
this.methods.forEach(function(method) {
if(method.comments) {
method.comments.forEach(function (cmt) {
cmt.toDialect(writer);
});
}
if(method.annotations) {
method.annotations.forEach(function (ann) {
ann.toDialect(writer);
});
}
var w = writer.newMemberWriter();
method.toDialect(w);
writer.newLine();
});
}
writer.dedent();
};
ConcreteCategoryDeclaration.prototype.hasAttribute = function(context, name) {
if (CategoryDeclaration.prototype.hasAttribute.call(this, context, name)) {
return true;
} else {
return this.hasDerivedAttribute(context, name);
}
};
ConcreteCategoryDeclaration.prototype.hasDerivedAttribute = function(context, name) {
if(this.derivedFrom==null) {
return false;
}
for(var i=0;i 0 ? local : null;
};
ConcreteCategoryDeclaration.prototype.getAncestorAttributes = function(context, id) {
var decl = context.getRegisteredDeclaration(id.name);
if(decl==null)
return null;
else
return decl.getAllAttributes(context);
};
ConcreteCategoryDeclaration.prototype.findGetter = function(context, attrName) {
if(this.methodsMap==null) {
return null;
}
var method = this.methodsMap["getter:" + attrName] || null;
if(method instanceof GetterMethodDeclaration) {
return method;
}
if(method!=null)
context.problemListener.reportBadGetter(method.id);
return this.findDerivedGetter(context, attrName);
};
ConcreteCategoryDeclaration.prototype.findDerivedGetter = function(context, attrName) {
if(this.derivedFrom==null) {
return null;
}
for(var i=0;i0;
writer.append("define ");
writer.append(this.name);
writer.append(" as ");
if(this.storable)
writer.append("storable ");
this.categoryTypeToEDialect(writer);
if(hasAttributes) {
if(this.attributes.length==1)
writer.append(" with attribute ");
else
writer.append(" with attributes ");
this.attributes.toDialect(writer, true);
}
if(hasMethods) {
if(hasAttributes)
writer.append(", and methods:");
else
writer.append(" with methods:");
} else if (hasBindings) {
if(hasAttributes)
writer.append(", and bindings:");
else
writer.append(" with bindings:");
}
writer.newLine();
};
CategoryDeclaration.prototype.methodsToEDialect = function(writer, methods) {
writer.indent();
methods.forEach(function(method) {
writer.newLine();
if(method.comments) {
method.comments.forEach(function (cmt) {
cmt.toDialect(writer);
});
}
if(method.annotations) {
method.annotations.forEach(function (ann) {
ann.toDialect(writer);
});
}
var w = writer.newMemberWriter();
method.toDialect(w);
});
writer.dedent();
};
CategoryDeclaration.prototype.methodsToODialect = function(writer, methods) {
methods.forEach(function(method) {
if(method.comments) {
method.comments.forEach(function (cmt) {
cmt.toDialect(writer);
});
}
if(method.annotations) {
method.annotations.forEach(function (ann) {
ann.toDialect(writer);
});
}
var w = writer.newMemberWriter();
method.toDialect(w);
w.newLine();
});
}
CategoryDeclaration.prototype.allToODialect = function(writer, hasBody) {
if(this.storable)
writer.append("storable ");
this.categoryTypeToODialect(writer);
writer.append(" ").append(this.name);
if(this.attributes!=null) {
writer.append('(');
this.attributes.toDialect(writer, true);
writer.append(')');
}
this.categoryExtensionToODialect(writer);
if(hasBody) {
writer.append(" {").newLine().newLine().indent();
this.bodyToODialect(writer);
writer.dedent().append('}').newLine();
} else
writer.append(';');
};
CategoryDeclaration.prototype.categoryExtensionToODialect = function(writer) {
// by default no extension
};
CategoryDeclaration.prototype.protoToMDialect = function(writer, derivedFrom) {
if(this.storable)
writer.append("storable ");
this.categoryTypeToMDialect(writer);
writer.append(" ").append(this.name).append("(");
if(this.derivedFrom!=null) {
this.derivedFrom.toDialect(writer, false);
if(this.attributes!=null)
writer.append(", ");
}
if(this.attributes!=null)
this.attributes.toDialect(writer, false);
writer.append("):").newLine();
};
exports.CategoryDeclaration = CategoryDeclaration;
/***/ }),
/* 59 */
/***/ (function(module, exports, __webpack_require__) {
var BaseDeclaration = __webpack_require__(60).BaseDeclaration;
var InternalError = __webpack_require__(63).InternalError;
var ContainerType = __webpack_require__(65).ContainerType;
var AttributeInfo = __webpack_require__(340).AttributeInfo;
var Value = __webpack_require__(77).Value;
function AttributeDeclaration(id, type, constraint, indexTypes) {
BaseDeclaration.call(this, id);
this.type = type;
this.constraint = constraint;
this.indexTypes = indexTypes;
this.storable = false;
return this;
}
AttributeDeclaration.prototype = Object.create(BaseDeclaration.prototype);
AttributeDeclaration.prototype.constructor = AttributeDeclaration;
AttributeDeclaration.prototype.getDeclarationType = function() {
return "Attribute";
};
AttributeDeclaration.prototype.getType = function() {
return this.type;
};
AttributeDeclaration.prototype.toString = function() {
return this.name + ':' + this.type.toString();
};
AttributeDeclaration.prototype.toDialect = function(writer) {
writer.toDialect(this);
};
AttributeDeclaration.prototype.toEDialect = function(writer) {
writer.append("define ");
writer.append(this.name);
writer.append(" as ");
if(this.storable)
writer.append("storable ");
this.type.toDialect(writer);
writer.append(" attribute");
if (this.constraint != null)
this.constraint.toDialect(writer);
if (this.indexTypes != null) {
writer.append(" with ");
this.indexTypes.toDialect(writer, true);
writer.append(" index");
}
};
AttributeDeclaration.prototype.toODialect = function(writer) {
if(this.storable)
writer.append("storable ");
writer.append("attribute ");
writer.append(this.name);
writer.append(" : ");
this.type.toDialect(writer);
if (this.constraint != null)
this.constraint.toDialect(writer);
if (this.indexTypes != null) {
writer.append(" with index")
if (this.indexTypes.length > 0) {
writer.append(" (");
this.indexTypes.toDialect(writer, false);
writer.append(')');
}
}
writer.append(';');
};
AttributeDeclaration.prototype.toMDialect = function(writer) {
if(this.storable)
writer.append("storable ");
writer.append("attr ");
writer.append(this.name);
writer.append(" ( ");
this.type.toDialect(writer);
writer.append(" ):").newLine();
writer.indent();
if (this.constraint != null)
this.constraint.toDialect(writer);
if (this.indexTypes != null) {
if (this.constraint != null)
writer.newLine();
writer.append("index (");
this.indexTypes.toDialect(writer, false);
writer.append(')');
}
if (this.constraint ==null && this.indexTypes ==null)
writer.append("pass");
writer.dedent();
};
AttributeDeclaration.prototype.register = function(context) {
context.registerDeclaration(this);
};
AttributeDeclaration.prototype.check = function(context, isStart) {
this.type.checkExists(context);
return this.type;
};
AttributeDeclaration.prototype.checkValue = function(context, expression) {
var value = expression.interpret(context);
if(this.constraint==null) {
return value;
}
this.constraint.checkValue(context, value);
return value;
};
AttributeDeclaration.prototype.getAttributeInfo = function() {
var collection = this.type instanceof ContainerType;
var family = collection ? this.type.itemType.family : this.type.family;
return new AttributeInfo(this.name, family, collection, this.indexTypes);
};
AttributeDeclaration.prototype.declare = function(transpiler) {
this.type.declare(transpiler);
if(this.constraint)
this.constraint.declare(transpiler, this.name, this.type);
};
exports.AttributeDeclaration = AttributeDeclaration;
/***/ }),
/* 60 */
/***/ (function(module, exports, __webpack_require__) {
var Section = __webpack_require__(61).Section;
function BaseDeclaration(id) {
Section.call(this);
this.id = id;
this.comments = null;
this.annotations = null;
this.declaring = false;
return this;
}
BaseDeclaration.prototype = Object.create(Section.prototype);
BaseDeclaration.prototype.constructor = BaseDeclaration;
Object.defineProperty(BaseDeclaration.prototype, "name", {
get : function() {
return this.id.name;
}
});
BaseDeclaration.prototype.unregister = function(context) {
context.unregisterDeclaration (this);
};
BaseDeclaration.prototype.toDialect = function(writer) {
writer.toDialect(this);
};
BaseDeclaration.prototype.fetchBody = function(parser) {
var section = null;
if(section==null && this.comments && this.comments.length > 0)
section = this.comments[0];
if(section==null && this.annotations && this.annotations.length > 0)
section = this.annotations[0];
if(section==null)
section = this;
return parser.getTokenStream().getText({ start: section.start.tokenIndex, stop: this.end.tokenIndex + 1 });
};
BaseDeclaration.prototype.locateSectionAtLine = function(line) {
return null;
};
exports.BaseDeclaration = BaseDeclaration;
/***/ }),
/* 61 */
/***/ (function(module, exports, __webpack_require__) {
var Location = __webpack_require__(62).Location;
function Section(section) {
if(!section)
section = { path : "", start : null, end : null, dialect : null, breakpoint : null };
this.copySectionFrom(section);
return this;
}
Section.prototype.copySectionFrom = function(section) {
this.path = section.path;
this.start = section.start;
this.end = section.end;
this.dialect = section.dialect;
this.breakpoint = section.breakpoint;
};
Section.prototype.setSectionFrom = function(path, start, end, dialect) {
this.path = path;
this.start = new Location(start);
this.end = new Location(end, true);
this.dialect = dialect;
this.breakpoint = false;
};
Section.prototype.containsLine = function(line) {
return this.start.line <= line && this.end.line >= line;
};
Section.prototype.asObject = function() {
// return an object that can pass through PostMessage and is aligned on server-side debugger Section definition
return { path : this.path, start : this.start.asObject(), end : this.end.asObject(), dialect : this.dialect.name, breakpoint : this.breakpoint };
};
exports.Section = Section;
/***/ }),
/* 62 */
/***/ (function(module, exports) {
function Location(token, isEnd) {
this.tokenIndex = token.tokenIndex;
this.line = token.line;
this.column = token.column;
this.start = token.start;
if(isEnd && token.text!==null) {
this.start += token.text.length;
this.column += token.text.length;
}
}
Location.prototype.asObject = function() {
return { tokenIndex: this.tokenIndex, line: this.line, column: this.column };
};
exports.Location = Location;
/***/ }),
/* 63 */
/***/ (function(module, exports, __webpack_require__) {
var PromptoError = __webpack_require__(64).PromptoError;
function InternalError(message) {
PromptoError.call(this, message);
return this;
}
InternalError.prototype = Object.create(InternalError.prototype);
InternalError.prototype.constructor = InternalError;
exports.InternalError = InternalError;
/***/ }),
/* 64 */
/***/ (function(module, exports) {
function PromptoError() {
var tmp = Error.apply(this, arguments);
this.message = tmp.message
tmp.name = this.name = 'PromptoError'
Object.defineProperty(this, "stack", {
get: function () {
return tmp.stack
}
});
return this;
}
exports.PromptoError = PromptoError;
/***/ }),
/* 65 */
/***/ (function(module, exports, __webpack_require__) {
var IterableType = __webpack_require__(66).IterableType;
var BooleanType = __webpack_require__(72).BooleanType;
var Variable = __webpack_require__(91).Variable;
function ContainerType(id, itemType) {
IterableType.call(this, id);
this.itemType = itemType;
return this;
}
ContainerType.prototype = Object.create(IterableType.prototype);
ContainerType.prototype.constructor = ContainerType;
ContainerType.prototype.checkContains = function(context, other) {
if(other.isAssignableFrom(context, this.itemType)) {
return BooleanType.instance;
} else {
return IterableType.prototype.checkContains.call(this, context, other);
}
};
ContainerType.prototype.checkMember = function(context, section, name) {
if ("count" == name) {
var IntegerType = __webpack_require__(83).IntegerType;
return IntegerType.instance;
} else {
return IterableType.prototype.checkMember.call(this, context, section, name);
}
};
ContainerType.prototype.declareMember = function(transpiler, name) {
if ("count" !== name) {
return IterableType.prototype.declareMember.call(this, transpiler, name);
}
};
ContainerType.prototype.transpileMember = function(transpiler, name) {
if ("count" == name) {
transpiler.append("length");
} else {
return IterableType.prototype.transpileMember.call(this, transpiler, name);
}
};
ContainerType.prototype.declareSorted = function(transpiler, key) {
// nothing to do
};
ContainerType.prototype.declareIterator = function(transpiler, name, expression) {
transpiler = transpiler.newChildTranspiler();
transpiler.context.registerValue(new Variable(name, this.itemType));
expression.declare(transpiler);
};
ContainerType.prototype.transpileIterator = function(transpiler, name, expression) {
transpiler.append(".iterate(function(").append(name).append(") { return ");
transpiler = transpiler.newChildTranspiler();
transpiler.context.registerValue(new Variable(name, this.itemType));
expression.transpile(transpiler);
transpiler.append("; }, this)");
transpiler.flush();
};
exports.ContainerType = ContainerType;
/***/ }),
/* 66 */
/***/ (function(module, exports, __webpack_require__) {
var NativeType = __webpack_require__(67).NativeType;
var BooleanType = __webpack_require__(72).BooleanType;
function IterableType(id, itemType) {
NativeType.call(this, id);
this.itemType = itemType;
return this;
}
IterableType.prototype = Object.create(NativeType.prototype);
IterableType.prototype.constructor = IterableType;
IterableType.prototype.isMoreSpecificThan = function(context, other) {
return (other instanceof IterableType &&
this.itemType.isMoreSpecificThan(context, other.itemType));
};
exports.IterableType = IterableType;
/***/ }),
/* 67 */
/***/ (function(module, exports, __webpack_require__) {
var BaseType = __webpack_require__(68).BaseType;
function NativeType(id) {
BaseType.call(this, id);
return this;
}
NativeType.prototype = Object.create(BaseType.prototype);
NativeType.prototype.constructor = NativeType;
NativeType.prototype.checkUnique = function(context) {
// nothing to do
};
NativeType.prototype.checkExists = function(context) {
// nothing to do
};
NativeType.prototype.isMoreSpecificThan = function(context, other) {
return false;
};
NativeType.prototype.equals = function(obj) {
return obj===this;
};
NativeType.prototype.sort = function(context, list, desc) {
function cmp(o1, o2) {
o1 = o1.value;
o2 = o2.value;
return o1 > o2 ? 1 : o1 === o2 ? 0 : -1;
}
return this.doSort(context, list, cmp, desc);
};
NativeType.prototype.declareSorted = function(transpiler, key) {
// nothing to do
};
NativeType.prototype.transpileSorted = function(transpiler, desc, key) {
if(desc)
transpiler.append("function(o1, o2) { return o1 === o2 ? 0 : o1 > o2 ? -1 : 1; }");
};
exports.NativeType = NativeType;
/***/ }),
/* 68 */
/***/ (function(module, exports, __webpack_require__) {
var SyntaxError = __webpack_require__(69).SyntaxError;
var EnumeratedNativeType = null;
var VoidType = null;
var TextType = null;
var NullType = null;
var TupleValue = null;
var SetValue = null;
var ListValue = null;
exports.resolve = function() {
EnumeratedNativeType = __webpack_require__(70).EnumeratedNativeType;
VoidType = __webpack_require__(153).VoidType;
TextType = __webpack_require__(135).TextType;
NullType = __webpack_require__(109).NullType;
TupleValue = __webpack_require__(358).TupleValue;
SetValue = __webpack_require__(143).SetValue;
ListValue = __webpack_require__(141).ListValue;
};
function BaseType(id) {
this.id = id;
return this;
};
Object.defineProperty(BaseType.prototype, "name", {
get : function() {
return this.id.name;
}
});
BaseType.prototype.getTranspiledName = function() {
return this.name;
};
BaseType.prototype.toString = function() {
return this.name;
};
BaseType.prototype.equals = function(other) {
return (other instanceof BaseType) && this.name==other.name;
};
BaseType.prototype.isAssignableFrom = function(context, other) {
return this==other || this.equals(other) || other.equals(NullType.instance);
};
BaseType.prototype.getMemberMethods = function(context, name) {
return [];
};
BaseType.prototype.transpile = function(transpiler) {
throw new Error("Transpile not implemented by " + this.constructor.name);
};
BaseType.prototype.transpileAssignMemberValue = function(transpiler, name, expression) {
throw new SyntaxError("Cannot transpile assign member value from " + this.name);
};
BaseType.prototype.transpileAssignItemValue = function(transpiler, item, expression) {
throw new SyntaxError("Cannot transpile assign item value from " + this.name);
};
BaseType.prototype.checkAdd = function(context, other, tryReverse) {
if(other instanceof EnumeratedNativeType)
return this.checkAdd(context, other.derivedFrom, tryReverse);
else if(tryReverse)
return other.checkAdd(context, this, false);
else
throw new SyntaxError("Cannot add " + this.name + " to " + other.name);
};
BaseType.prototype.declareAdd = function(transpiler, other, tryReverse, left, right) {
if(other instanceof EnumeratedNativeType)
return this.declareAdd(transpiler, other.derivedFrom, tryReverse, left, right);
else if(tryReverse)
return other.declareAdd(transpiler, this, false, right, left);
else
throw new SyntaxError("Cannot declare add " + this.name + " to " + other.name);
};
BaseType.prototype.transpileAdd = function(transpiler, other, tryReverse, left, right) {
if(other instanceof EnumeratedNativeType)
return this.transpileAdd(transpiler, other.derivedFrom, tryReverse, left, right);
else if(tryReverse)
return other.transpileAdd(transpiler, this, false, right, left);
else
throw new SyntaxError("Cannot transpile add " + this.name + " to " + other.name);
};
BaseType.prototype.checkSubtract = function(context, other) {
if(other instanceof EnumeratedNativeType)
return this.checkSubtract(context, other.derivedFrom);
else
throw new SyntaxError("Cannot substract " + this.name + " from " + other.name);
};
BaseType.prototype.declareSubtract = function(transpiler, other, left, right) {
if(other instanceof EnumeratedNativeType)
return this.declareSubtract(transpiler, other.derivedFrom, left, right);
else
throw new SyntaxError("Cannot declare substract " + this.name + " to " + other.name);
};
BaseType.prototype.transpileSubtract = function(transpiler, other, left, right) {
if(other instanceof EnumeratedNativeType)
return this.transpileSubtract(transpiler, other.derivedFrom, left, right);
else
throw new SyntaxError("Cannot transpile substract " + this.name + " to " + other.name);
};
BaseType.prototype.checkDivide = function(context, other) {
if(other instanceof EnumeratedNativeType)
return this.checkDivide(context, other.derivedFrom);
else
throw new SyntaxError("Cannot divide " + this.name + " with " + other.name);
};
BaseType.prototype.declareDivide = function(transpiler, other, left, right) {
if(other instanceof EnumeratedNativeType)
return this.declareDivide(transpiler, other.derivedFrom, left, right);
else
throw new SyntaxError("Cannot declare divide " + this.name + " to " + other.name);
};
BaseType.prototype.transpileDivide = function(transpiler, other, left, right) {
if(other instanceof EnumeratedNativeType)
return this.transpileDivide(transpiler, other.derivedFrom, left, right);
else
throw new SyntaxError("Cannot transpile divide " + this.name + " to " + other.name);
};
BaseType.prototype.checkIntDivide = function(context, other) {
if(other instanceof EnumeratedNativeType)
return this.checkIntDivide(context, other.derivedFrom);
else
throw new SyntaxError("Cannot divide " + this.name + " with " + other.name);
};
BaseType.prototype.declareIntDivide = function(transpiler, other, left, right) {
if(other instanceof EnumeratedNativeType)
return this.declareIntDivide(transpiler, other.derivedFrom, left, right);
else
throw new SyntaxError("Cannot declare int divide " + this.name + " to " + other.name);
};
BaseType.prototype.transpileIntDivide = function(transpiler, other, left, right) {
if(other instanceof EnumeratedNativeType)
return this.transpileIntDivide(transpiler, other.derivedFrom, left, right);
else
throw new SyntaxError("Cannot transpile int divide " + this.name + " to " + other.name);
};
BaseType.prototype.checkModulo = function(context, other) {
if(other instanceof EnumeratedNativeType)
return this.checkModulo(context, other.derivedFrom);
else
throw new SyntaxError("Cannot modulo " + this.name + " with " + other.name);
};
BaseType.prototype.declareModulo = function(transpiler, other, left, right) {
if(other instanceof EnumeratedNativeType)
return this.declareModulo(transpiler, other.derivedFrom, left, right);
else
throw new SyntaxError("Cannot declare modulo " + this.name + " to " + other.name);
};
BaseType.prototype.transpileModulo = function(transpiler, other, left, right) {
if(other instanceof EnumeratedNativeType)
return this.transpileModulo(transpiler, other.derivedFrom, left, right);
else
throw new SyntaxError("Cannot transpile modulo " + this.name + " to " + other.name);
};
BaseType.prototype.checkMultiply = function(context, other, tryReverse) {
if(other instanceof EnumeratedNativeType)
return this.checkMultiply(context, other.derivedFrom, tryReverse);
else if(tryReverse)
return other.checkMultiply(context, this, false);
else
throw new SyntaxError("Cannot multiply " + this.name + " with " + other.name);
};
BaseType.prototype.declareMultiply = function(transpiler, other, tryReverse, left, right) {
if(other instanceof EnumeratedNativeType)
return this.declareMultiply(transpiler, other.derivedFrom, tryReverse, left, right);
else if(tryReverse)
return other.declareMultiply(transpiler, this, false, right, left);
else
throw new SyntaxError("Cannot declare multiply " + this.name + " to " + other.name);
};
BaseType.prototype.transpileMultiply = function(transpiler, other, tryReverse, left, right) {
if(other instanceof EnumeratedNativeType)
return this.transpileMultiply(transpiler, other.derivedFrom, tryReverse, left, right);
else if(tryReverse)
return other.transpileMultiply(transpiler, this, false, right, left);
else
throw new SyntaxError("Cannot transpile multiply " + this.name + " to " + other.name);
};
BaseType.prototype.checkMinus = function(context) {
if(this instanceof EnumeratedNativeType)
return this.derivedFrom.checkMinus(context);
else
throw new SyntaxError("Cannot negate " + this.name);
};
BaseType.prototype.declareMinus = function(transpiler, value) {
if(this instanceof EnumeratedNativeType)
return this.derivedFrom.declareMinus(transpiler, value);
else
throw new SyntaxError("Cannot declare negate " + this.name);
};
BaseType.prototype.transpileMinus = function(transpiler, value) {
if(this instanceof EnumeratedNativeType)
return this.derivedFrom.transpileMinus(transpiler, value);
else
throw new SyntaxError("Cannot transpile negate of " + this.name );
};
BaseType.prototype.checkCompare = function(context, other) {
if(other instanceof EnumeratedNativeType)
return this.checkCompare(context, other.derivedFrom);
else
throw new SyntaxError("Cannot compare " + this.name + " to " + other.name);
};
BaseType.prototype.declareCompare = function(transpiler, other) {
if(other instanceof EnumeratedNativeType)
return this.declareCompare(transpiler, other.derivedFrom);
else
throw new SyntaxError(this.name + " cannot declare compare " + other.name);
};
BaseType.prototype.transpileCompare = function(transpiler, other, operator, left, right) {
if(other instanceof EnumeratedNativeType)
return this.transpileCompare(transpiler, other.derivedFrom, operator, left, right);
else
throw new SyntaxError(this.name + " cannot transpile compare " + other.name);
};
BaseType.prototype.checkContains = function(context, other) {
if(other instanceof EnumeratedNativeType)
return this.checkContains(context, other.derivedFrom);
else
throw new SyntaxError(this.name + " cannot contain " + other.name);
};
BaseType.prototype.declareContains = function(transpiler, other, container, item) {
if(other instanceof EnumeratedNativeType)
return this.declareContains(transpiler, other.derivedFrom, container, item);
else
throw new SyntaxError(this.name + " cannot declare contain " + other.name);
};
BaseType.prototype.transpileContains = function(transpiler, other, container, item) {
if(other instanceof EnumeratedNativeType)
return this.transpileContains(transpiler, other.derivedFrom, container, item);
else
throw new SyntaxError(this.name + " cannot transpile contain " + other.name);
};
BaseType.prototype.checkContainsAllOrAny = function(context, other) {
if(other instanceof EnumeratedNativeType)
return this.checkContainsAllOrAny(context, other.derivedFrom);
else
throw new SyntaxError(this.name + " cannot contain all or any " + other.name);
};
BaseType.prototype.declareContainsAllOrAny = function(transpiler, other, container, item) {
if(other instanceof EnumeratedNativeType)
return this.declareContainsAllOrAny(transpiler, other.derivedFrom, container, item);
else
throw new SyntaxError(this.name + " cannot declare contain all or any " + other.name);
};
BaseType.prototype.transpileContainsAll = function(transpiler, other, container, item) {
if(other instanceof EnumeratedNativeType)
return this.transpileContainsAll(transpiler, other.derivedFrom, container, item);
else
throw new SyntaxError(this.name + " cannot transpile contain all " + other.name);
};
BaseType.prototype.transpileContainsAny = function(transpiler, other, container, item) {
if(other instanceof EnumeratedNativeType)
return this.transpileContainsAny(transpiler, other.derivedFrom, container, item);
else
throw new SyntaxError(this.name + " cannot transpile contain any " + other.name);
};
BaseType.prototype.checkItem = function(context, itemType, expression) {
if(itemType instanceof EnumeratedNativeType)
return this.checkItem(context, itemType.derivedFrom, expression);
else {
context.problemListener.reportInvalidItem(this, itemType, expression);
return VoidType.instance;
}
};
BaseType.prototype.declareItem = function(transpiler, itemType, item) {
if(itemType instanceof EnumeratedNativeType)
return this.declareItem(transpiler, itemType.derivedFrom, item);
else
throw new SyntaxError("Cannot declare item from: " + this.name);
};
BaseType.prototype.transpileItem = function(transpiler, itemType, item) {
if(itemType instanceof EnumeratedNativeType)
return this.transpileItem(transpiler, itemType.derivedFrom);
else
throw new SyntaxError("Cannot transpile item from: " + this.name);
};
BaseType.prototype.checkMember = function(context, section, name) {
if("text" == name)
return TextType.instance;
else {
context.problemListener.reportInvalidMember(section, name);
return VoidType.instance;
}
};
BaseType.prototype.declareMember = function(transpiler, name) {
if("text" !== name)
throw new SyntaxError("Cannot declare member: " + name + " from " + this.name);
};
BaseType.prototype.transpileMember = function(transpiler, name) {
if("text" == name)
transpiler.append("getText()");
else
throw new SyntaxError("Cannot transpile member: " + name + " from " + this.name);
};
BaseType.prototype.checkSlice = function(context) {
throw new SyntaxError("Cannot slice " + this.name);
};
BaseType.prototype.declareSlice = function(transpiler, first, last) {
throw new SyntaxError("Cannot declare slice for " + this.name);
};
BaseType.prototype.transpileSlice = function(transpiler, first, last) {
throw new SyntaxError("Cannot transpile slice for " + this.name);
};
BaseType.prototype.checkIterator = function(context, source) {
context.problemListener.reportCannotIterate(source);
return VoidType.instance;
};
BaseType.prototype.declareIterator = function(transpiler, name, expression) {
throw new SyntaxError("Cannot declare iterate over " + this.name);
};
BaseType.prototype.transpileIterator = function(transpiler, name, expression) {
throw new SyntaxError("Cannot transpile iterate over " + this.name);
};
BaseType.prototype.checkAssignableFrom = function(context, other, section) {
if (!this.isAssignableFrom(context, other))
context.problemListener.reportIncompatibleTypes(section, this, other);
};
BaseType.prototype.checkRange = function(context, other) {
throw new SyntaxError("Cannot create range of " + this.name + " and " + other.name);
};
BaseType.prototype.declareRange = function(context, other) {
throw new SyntaxError("Cannot declare range of " + this.name + " and " + other.name);
};
BaseType.prototype.transpileRange = function(transpiler, first, last) {
throw new SyntaxError("Cannot transpile range of " + this.name);
};
BaseType.prototype.checkAnd = function(context, other) {
throw new SyntaxError("Cannot logically combine " + this.name + " and " + other.name);
};
BaseType.prototype.checkOr = function(context, other) {
throw new SyntaxError("Cannot logically combine " + this.name + " or " + other.name);
};
BaseType.prototype.checkNot = function(context) {
throw new SyntaxError("Cannot logically negate " + this.name);
};
BaseType.prototype.getMember = function(context, name) {
throw new SyntaxError("Cannot read member from " + this.name);
};
BaseType.prototype.readJSONValue = function(context, node, parts) {
throw new Error("Unsupported!")
};
BaseType.prototype.declareSorted = function(transpiler, key) {
throw new Error("Cannot declare sorted from " + this.name);
};
BaseType.prototype.sort = function(context, list, desc) {
throw new Error("Unsupported!")
};
BaseType.prototype.doSort = function(context, list, cmp, desc) {
// only sort if required
if(list.size()<=1) {
return list;
}
// create result list we can sort in place
var items = null;
if( list instanceof ListValue || list instanceof TupleValue) {
items = [].concat(list.items);
} else if ( list instanceof SetValue) {
items = Array.from(list.items.set.values());
}
items.sort(cmp);
if(desc)
items.reverse(); // TODO optimize
return new ListValue(list.type.itemType, items);
};
BaseType.prototype.convertJavaScriptValueToPromptoValue = function(context, value, returnType) {
return value; // TODO for now
};
BaseType.prototype.toDialect = function(writer) {
writer.append(this.name);
};
exports.BaseType = BaseType;
/***/ }),
/* 69 */
/***/ (function(module, exports, __webpack_require__) {
var PromptoError = __webpack_require__(64).PromptoError;
function SyntaxError(message) {
PromptoError.call(this, message);
return this;
}
SyntaxError.prototype = Object.create(PromptoError.prototype);
SyntaxError.prototype.constructor = SyntaxError;
exports.SyntaxError = SyntaxError;
/***/ }),
/* 70 */
/***/ (function(module, exports, __webpack_require__) {
var BaseType = __webpack_require__(68).BaseType;
var ListType = __webpack_require__(71).ListType;
var TextType = __webpack_require__(135).TextType;
var SyntaxError = __webpack_require__(69).SyntaxError;
var List = __webpack_require__(136).List;
function EnumeratedNativeType(name, derivedFrom) {
BaseType.call(this, name);
this.derivedFrom = derivedFrom;
return this;
}
EnumeratedNativeType.prototype = Object.create(BaseType.prototype);
EnumeratedNativeType.prototype.constructor = EnumeratedNativeType;
EnumeratedNativeType.prototype.checkMember = function(context, section, name) {
if ("symbols"==name) {
return new ListType(this);
} else if ("value"==name) {
return this.derivedFrom;
} else if ("name"==name) {
return TextType.instance;
} else {
return BaseType.prototype.checkMember.call(this, context, section, name);
}
};
EnumeratedNativeType.prototype.declare = function(transpiler) {
var decl = transpiler.context.getRegisteredDeclaration(this.name);
transpiler.declare(decl);
transpiler.require(List);
};
EnumeratedNativeType.prototype.transpile = function(transpiler) {
transpiler.append(this.name);
};
EnumeratedNativeType.prototype.declareMember = function(transpiler, name) {
if("symbols"==name || "value"==name || "name"==name) {
var decl = transpiler.context.getRegisteredDeclaration(this.name);
transpiler.declare(decl);
} else
BaseType.prototype.declareMember.call(this, transpiler, name);
};
EnumeratedNativeType.prototype.transpileMember = function(transpiler, name) {
if ("symbols"==name || "value"==name || "name"==name) {
transpiler.append(name);
} else {
return BaseType.prototype.transpileMember.call(this, transpiler, name);
}
};
EnumeratedNativeType.prototype.getMemberValue = function(context, name) {
var decl = context.getRegisteredDeclaration(this.name);
if(!decl || !decl.symbols) {
throw new SyntaxError(name + " is not an enumerated type!");
}
if ("symbols"==name) {
return decl.symbols;
} else {
throw new SyntaxError("Unknown member:" + name);
}
};
EnumeratedNativeType.prototype.isAssignableFrom = function(context, other) {
return this.id.name === other.id.name;
};
exports.EnumeratedNativeType = EnumeratedNativeType;
/***/ }),
/* 71 */
/***/ (function(module, exports, __webpack_require__) {
var ContainerType = __webpack_require__(65).ContainerType;
var SetType = null;
var IntegerType = null;
var BooleanType = __webpack_require__(72).BooleanType;
var Identifier = __webpack_require__(73).Identifier;
var ListValue = __webpack_require__(141).ListValue;
var Variable = __webpack_require__(91).Variable;
var List = __webpack_require__(136).List;
exports.resolve = function() {
IntegerType = __webpack_require__(83).IntegerType;
SetType = __webpack_require__(144).SetType;
};
function ListType(itemType) {
ContainerType.call(this, new Identifier(itemType.name+"[]"), itemType);
return this;
}
ListType.prototype = Object.create(ContainerType.prototype);
ListType.prototype.constructor = ListType;
ListType.prototype.withItemType = function(itemType) {
return new ListType(itemType);
};
ListType.prototype.declare = function(transpiler) {
transpiler.register(List);
this.itemType.declare(transpiler);
};
ListType.prototype.transpile = function(transpiler) {
transpiler.append('List')
};
ListType.prototype.getTranspiledName = function(context) {
return this.itemType.getTranspiledName(context) + "_list";
};
ListType.prototype.convertJavaScriptValueToPromptoValue = function(context, value, returnType) {
var values = value.map(function(item) {
return this.itemType.convertJavaScriptValueToPromptoValue(context, item, null);
}, this);
return new ListValue(this.itemType, values);
};
ListType.prototype.isAssignableFrom = function(context, other) {
return ContainerType.prototype.isAssignableFrom.call(this, context, other)
|| ((other instanceof ListType) && this.itemType.isAssignableFrom(context, other.itemType));
};
ListType.prototype.equals = function(obj) {
if(obj===this) {
return true;
}
if(obj===null) {
return false;
}
if(!(obj instanceof ListType)) {
return false;
}
return this.itemType.equals(obj.itemType);
};
ListType.prototype.checkAdd = function(context, other, tryReverse) {
if((other instanceof ListType || other instanceof SetType) && this.itemType.equals(other.itemType)) {
return this;
} else {
return ContainerType.prototype.checkAdd.call(this, context, other, tryReverse);
}
};
ListType.prototype.declareAdd = function(transpiler, other, tryReverse, left, right) {
if((other instanceof ListType || other instanceof SetType) && this.itemType.equals(other.itemType)) {
left.declare(transpiler);
right.declare(transpiler);
} else {
return ContainerType.prototype.declareAdd.call(this, transpiler, other, tryReverse, left, right);
}
};
ListType.prototype.transpileAdd = function(transpiler, other, tryReverse, left, right) {
if((other instanceof ListType || other instanceof SetType) && this.itemType.equals(other.itemType)) {
left.transpile(transpiler);
transpiler.append(".add(");
right.transpile(transpiler);
transpiler.append(")");
} else {
return ContainerType.prototype.transpileAdd.call(this, transpiler, other, tryReverse, left, right);
}
};
ListType.prototype.checkSubtract= function(context, other) {
if((other instanceof ListType || other instanceof SetType) && this.itemType.equals(other.itemType)) {
return this;
} else {
return ContainerType.prototype.checkSubtract.call(this, context, other);
}
};
ListType.prototype.declareSubtract = function(transpiler, other, left, right) {
if((other instanceof ListType || other instanceof SetType) && this.itemType.equals(other.itemType)) {
left.declare(transpiler);
right.declare(transpiler);
} else {
return ContainerType.prototype.declareSubtract.call(this, transpiler, other, left, right);
}
};
ListType.prototype.transpileSubtract = function(transpiler, other, left, right) {
if((other instanceof ListType || other instanceof SetType) && this.itemType.equals(other.itemType)) {
left.transpile(transpiler);
transpiler.append(".remove(");
right.transpile(transpiler);
transpiler.append(")");
} else {
return ContainerType.prototype.transpileSubtract.call(this, transpiler, other, tryReverse, left, right);
}
};
ListType.prototype.checkItem = function(context, itemType, expression) {
if(itemType==IntegerType.instance) {
return this.itemType;
} else {
return ContainerType.prototype.checkItem.call(this, context, itemType, expression);
}
};
ListType.prototype.declareItem = function(transpiler, itemType, item) {
if(itemType===IntegerType.instance) {
item.declare(transpiler);
} else {
return ContainerType.prototype.declareItem.call(this, transpiler, itemType, item);
}
};
ListType.prototype.transpileItem = function(transpiler, itemType, item) {
if(itemType===IntegerType.instance) {
transpiler.append(".item(");
item.transpile(transpiler);
transpiler.append(")");
} else {
return ContainerType.prototype.transpileItem.call(this, transpiler, itemType, item);
}
};
ListType.prototype.transpileAssignItemValue = function(transpiler, item, expression) {
transpiler.append(".setItem(");
item.transpile(transpiler);
transpiler.append(", ");
expression.transpile(transpiler);
transpiler.append(")");
};
ListType.prototype.checkMultiply = function(context, other, tryReverse) {
if(other === IntegerType.instance) {
return this;
} else {
return ContainerType.prototype.checkMultiply.call(this, context, other, tryReverse);
}
};
ListType.prototype.declareMultiply = function(transpiler, other, tryReverse, left, right) {
if(other === IntegerType.instance) {
var multiplyArray = __webpack_require__(51).multiplyArray;
transpiler.require(multiplyArray);
left.declare(transpiler);
right.declare(transpiler);
} else {
return ContainerType.prototype.declareMultiply.call(this, transpiler, other, tryReverse, left, right);
}
};
ListType.prototype.transpileMultiply = function(transpiler, other, tryReverse, left, right) {
if(other === IntegerType.instance) {
transpiler.append("multiplyArray(");
left.transpile(transpiler);
transpiler.append(",");
right.transpile(transpiler);
transpiler.append(")");
} else {
return ContainerType.prototype.transpileMultiply.call(this, transpiler, other, tryReverse, left, right);
}
};
ListType.prototype.checkSlice = function(context) {
return this;
};
ListType.prototype.declareSlice = function(transpiler, first, last) {
// nothing to do
};
ListType.prototype.transpileSlice = function(transpiler, first, last) {
transpiler.append(".slice1Based(");
if(first) {
first.transpile(transpiler);
} else
transpiler.append("null");
if(last) {
transpiler.append(",");
last.transpile(transpiler);
}
transpiler.append(")");
};
ListType.prototype.declareContains = function(transpiler, other, container, item) {
container.declare(transpiler);
item.declare(transpiler);
};
ListType.prototype.transpileContains = function(transpiler, other, container, item) {
container.transpile(transpiler);
transpiler.append(".includes(");
item.transpile(transpiler);
transpiler.append(")");
};
ListType.prototype.checkContainsAllOrAny = function(context, other) {
return BooleanType.instance;
};
ListType.prototype.declareContainsAllOrAny = function(transpiler, other, container, items) {
var StrictSet = __webpack_require__(85).StrictSet;
transpiler.require(StrictSet);
container.declare(transpiler);
items.declare(transpiler);
};
ListType.prototype.transpileContainsAll = function(transpiler, other, container, items) {
container.transpile(transpiler);
transpiler.append(".hasAll(");
items.transpile(transpiler);
transpiler.append(")");
};
ListType.prototype.transpileContainsAny = function(transpiler, other, container, items) {
container.transpile(transpiler);
transpiler.append(".hasAny(");
items.transpile(transpiler);
transpiler.append(")");
};
ListType.prototype.checkIterator = function(context, source) {
return this.itemType;
};
exports.ListType = ListType;
/***/ }),
/* 72 */
/***/ (function(module, exports, __webpack_require__) {
var NativeType = __webpack_require__(67).NativeType;
var Identifier = __webpack_require__(73).Identifier;
var AnyType = __webpack_require__(74).AnyType;
var BooleanValue = null;
exports.resolve = function() {
BooleanValue = __webpack_require__(76).BooleanValue;
}
function BooleanType() {
NativeType.call(this, new Identifier("Boolean"));
return this;
}
BooleanType.prototype = Object.create(NativeType.prototype);
BooleanType.prototype.constructor = BooleanType;
BooleanType.instance = new BooleanType();
BooleanType.prototype.checkAnd = function(context, other) {
if(other instanceof BooleanType) {
return BooleanType.instance;
} else {
return NativeType.prototype.checkAnd.call(this, context, other);
}
};
BooleanType.prototype.checkOr = function(context, other) {
if(other instanceof BooleanType) {
return BooleanType.instance;
} else {
return NativeType.prototype.checkOr.call(this, context, other);
}
};
BooleanType.prototype.checkNot = function(context) {
return BooleanType.instance;
};
BooleanType.prototype.convertJavaScriptValueToPromptoValue = function(context, value, returnType) {
if (typeof(value)=='boolean') {
return BooleanValue.ValueOf(value);
} else {
return value; // TODO for now
}
};
BooleanType.prototype.declare = function(transpiler) {
var isABoolean = __webpack_require__(51).isABoolean;
transpiler.require(isABoolean);
};
BooleanType.prototype.transpile = function(transpiler) {
transpiler.append('"Boolean"');
};
BooleanType.prototype.transpileSorted = function(transpiler, desc, key) {
if(desc)
transpiler.append("function(o1, o2) { return o1 === o2 ? 0 : o1 > o2 ? -1 : 1; }");
else
transpiler.append("function(o1, o2) { return o1 === o2 ? 0 : o1 > o2 ? 1 : -1; }");
};
exports.BooleanType = BooleanType;
/***/ }),
/* 73 */
/***/ (function(module, exports, __webpack_require__) {
var Section = __webpack_require__(61).Section;
function Identifier(name) {
Section.call(this);
this.name = name;
return this;
}
Identifier.prototype = Object.create(Section.prototype);
Identifier.prototype.constructor = Identifier;
Identifier.prototype.toString = function() {
return this.name;
};
Identifier.prototype.equals = function(other) {
if(!other || !(other instanceof Identifier))
return false;
else
return this.name==other.name;
};
exports.Identifier = Identifier;
/***/ }),
/* 74 */
/***/ (function(module, exports, __webpack_require__) {
var NativeType = __webpack_require__(67).NativeType;
var Identifier = __webpack_require__(73).Identifier;
var Any = __webpack_require__(75).Any;
function AnyType() {
NativeType.call(this, new Identifier("any"));
return this;
}
AnyType.prototype = Object.create(NativeType.prototype);
AnyType.prototype.constructor = AnyType;
AnyType.instance = new AnyType();
AnyType.prototype.checkItem = function(context, item) {
return AnyType.instance; // required to support Document items
};
AnyType.prototype.declare = function(transpiler) {
transpiler.register(Any);
};
AnyType.prototype.transpile = function(transpiler) {
transpiler.append('Any');
};
AnyType.prototype.declareItem = function(transpiler, type, item) {
// required to support Document items
type.declare(transpiler);
item.declare(transpiler);
};
AnyType.prototype.transpileItem = function(transpiler, type, item) {
// required to support Document items
transpiler.append(".item(");
item.transpile(transpiler);
transpiler.append(")");
};
AnyType.prototype.checkMember = function(context, section, name) {
// required to support Document members
return AnyType.instance;
};
AnyType.prototype.transpileAssignMemberValue = function(transpiler, name, expression) {
// required to support Document members
transpiler.append(".setMember('").append(name).append("', ");
expression.transpile(transpiler);
transpiler.append(")");
};
AnyType.prototype.transpileAssignItemValue = function(transpiler, item, expression) {
// required to support Document members
transpiler.append(".setItem(");
item.transpile(transpiler);
transpiler.append(", ");
expression.transpile(transpiler);
transpiler.append(")");
};
AnyType.prototype.declare = function(transpiler) {
// nothing to do
};
AnyType.prototype.isAssignableFrom = function(context, other) {
return true;
};
exports.AnyType = AnyType;
/***/ }),
/* 75 */
/***/ (function(module, exports) {
function Any() {
return this;
}
Any.prototype.getText = Any.prototype.toString;
exports.Any = Any;
/***/ }),
/* 76 */
/***/ (function(module, exports, __webpack_require__) {
var BooleanType = __webpack_require__(72).BooleanType;
var Value = __webpack_require__(77).Value;
function BooleanValue(value) {
Value.call(this, BooleanType.instance);
this.value = value;
return this;
}
BooleanValue.prototype = Object.create(Value.prototype);
BooleanValue.prototype.constructor = BooleanValue;
BooleanValue.TRUE = new BooleanValue(true);
BooleanValue.FALSE = new BooleanValue(false);
BooleanValue.TRUE.not = BooleanValue.FALSE;
BooleanValue.FALSE.not = BooleanValue.TRUE;
BooleanValue.ValueOf = function(value) {
return value ? BooleanValue.TRUE : BooleanValue.FALSE;
};
BooleanValue.Parse = function(text) {
var bool = text==="true";
return BooleanValue.ValueOf(bool);
};
BooleanValue.prototype.getValue = function() {
return this.value;
};
BooleanValue.prototype.And = function(value) {
if(value instanceof BooleanValue) {
return BooleanValue.ValueOf(this.value && value.value);
} else {
throw new SyntaxError("Illegal: Boolean and " + typeof(value));
}
return this.value;
};
BooleanValue.prototype.Or = function(value) {
if(value instanceof BooleanValue) {
return BooleanValue.ValueOf(this.value || value.value);
} else {
throw new SyntaxError("Illegal: Boolean or " + typeof(value));
}
return this.value;
};
BooleanValue.prototype.Not = function() {
return this.not;
};
/*
public Boolean getNot() {
return not;
}
public int CompareTo(Context context, IValue value) throws SyntaxError {
if (value instanceof Boolean)
return compareTo((Boolean) value);
else
throw new SyntaxError("Illegal comparison: Boolean + " + value.getClass().getSimpleName());
}
public int compareTo(Boolean other) {
return java.lang.Boolean.compare(this.value, other.value);
}
public Object ConvertTo(Class> type) {
return value;
}
*/
BooleanValue.prototype.toString = function() {
return this.value.toString();
};
BooleanValue.prototype.equals = function(obj) {
if (obj instanceof BooleanValue) {
return this.value == obj.value;
} else {
return false;
}
};
exports.BooleanValue = BooleanValue;
/***/ }),
/* 77 */
/***/ (function(module, exports, __webpack_require__) {
var TextValue = null;
exports.resolve = function() {
TextValue = __webpack_require__(78).TextValue;
};
var id = 0;
function Value (type) {
this.id = ++id;
this.type = type;
this.mutable = false;
return this;
}
Value.prototype.collectStorables = function(list) {
// do nothing
};
Value.prototype.And = function(context, value) {
throw new SyntaxError("Logical and not supported by " + this.constructor.name);
};
Value.prototype.Or = function(context, value) {
throw new SyntaxError("Logical or not supported by " + this.constructor.name);
};
Value.prototype.Not = function(context) {
throw new SyntaxError("Logical negation not supported by " + this.constructor.name);
};
Value.prototype.Add = function(context, value) {
throw new SyntaxError("Add not supported by " + this.constructor.name);
};
Value.prototype.transpile = function(transpiler) {
throw new Error("Transpile not implemented by " + this.constructor.name);
};
Value.prototype.Subtract = function(context, value) {
throw new SyntaxError("Subtract not supported by " + this.constructor.name);
};
Value.prototype.Multiply = function(context, value) {
throw new SyntaxError("Multiply not supported by " + this.constructor.name);
};
Value.prototype.Divide = function(context, value) {
throw new SyntaxError("Divide not supported by " + this.constructor.name);
};
Value.prototype.IntDivide = function(context, value) {
throw new SyntaxError("Integer divide not supported by " + this.constructor.name);
};
Value.prototype.Modulo = function(context, value) {
throw new SyntaxError("Modulo not supported by " + this.constructor.name);
};
Value.prototype.Minus = function(context) {
throw new SyntaxError("Minus not supported by " + this.constructor.name);
};
Value.prototype.CompareTo = function(context, value) {
throw new SyntaxError("Compare not supported by " + this.constructor.name);
};
Value.prototype.getMemberValue = function(context, name) {
if("text" == name) {
return new TextValue(this.toString());
}
else
throw new SyntaxError("No member support for " + name + " in " + this.constructor.name);
};
Value.prototype.ConvertTo = function(type) {
return this;
};
Value.prototype.Roughly = function(context, value) {
return this.equals(value);
};
Value.prototype.Contains = function(context, value) {
throw new SyntaxError("Contains not supported by " + this.constructor.name);
};
function Instance(type) {
Value.call(this, type);
return this;
}
Instance.prototype = Object.create(Value.prototype);
Instance.prototype.constructor = Instance;
function Container(type) {
Value.call(this, type);
return this;
}
Container.prototype = Object.create(Value.prototype);
Container.prototype.constructor = Container;
exports.Value = Value;
exports.Instance = Instance;
exports.Container = Container;
/***/ }),
/* 78 */
/***/ (function(module, exports, __webpack_require__) {
var Value = __webpack_require__(77).Value;
var CharacterValue = __webpack_require__(79).CharacterValue;
var IntegerValue = __webpack_require__(80).IntegerValue;
var TextType = __webpack_require__(135).TextType;
var IndexOutOfRangeError = __webpack_require__(88).IndexOutOfRangeError;
var removeAccents = __webpack_require__(51).removeAccents;
function TextValue(value) {
Value.call(this, TextType.instance);
this.value = value;
return this;
}
TextValue.prototype = Object.create(Value.prototype);
TextValue.prototype.constructor = TextValue;
TextValue.prototype.getStorableData = function() {
return this.value;
};
TextValue.prototype.getValue = function() {
return this.value;
};
TextValue.prototype.toString = function() {
return this.value;
};
TextValue.prototype.Add = function(context, value) {
return new TextValue(this.value + value.toString());
};
TextValue.prototype.Multiply = function(context, value) {
if (value instanceof IntegerValue) {
try {
var text = this.value.repeat(value.value);
return new TextValue(text);
} catch(error) {
throw new SyntaxError("Negative repeat count:" + count);
}
} else {
throw new SyntaxError("Illegal: Chararacter * " + typeof(value));
}
};
TextValue.prototype.CompareTo = function(context, value) {
if(value instanceof TextValue || value instanceof CharacterValue) {
return this.value > value.value ? 1 : this.value == value.value ? 0 : -1;
} else {
throw new SyntaxError("Illegal: Compare TextValue with " + typeof(value));
}
};
TextValue.prototype.hasItem = function(context, value) {
if (value instanceof CharacterValue || value instanceof TextValue) {
return this.value.indexOf(value.value) >= 0;
} else {
throw new SyntaxError("Illegal contains: TextValue + " + typeof(value));
}
};
TextValue.prototype.getMemberValue = function(context, name) {
if ("count"==name) {
return new IntegerValue(this.value.length);
} else {
return Value.prototype.getMemberValue.call(this, context, name);
}
};
TextValue.prototype.getItemInContext = function(context, index) {
try {
if (index instanceof IntegerValue) {
return new CharacterValue(this.value[index.IntegerValue() - 1]);
} else {
throw new InvalidDataError("No such item:" + index.toString());
}
} catch (e) {
if(e instanceof IndexOutOfBoundsException) {
throw new IndexOutOfRangeError();
} else {
throw e;
}
}
}
TextValue.prototype.getIterator = function(context) {
return new TextIterator(this.value);
};
function TextIterator(value) {
this.index = -1;
this.value = value;
return this;
}
TextIterator.prototype.hasNext = function() {
return this.index < this.value.length - 1;
};
TextIterator.prototype.next = function() {
return new CharacterValue(this.value[++this.index]);
};
TextValue.prototype.convertToJavaScript = function() {
return this.value;
};
TextValue.prototype.slice = function(fi, li) {
var first = this.checkFirst(fi);
var last = this.checkLast(li);
return new TextValue(this.value.slice(first - 1, last));
};
TextValue.prototype.checkFirst = function(fi) {
var value = (fi == null) ? 1 : fi.IntegerValue();
if (value < 1 || value > this.value.length) {
throw new IndexOutOfRangeError();
}
return value;
};
TextValue.prototype.checkLast = function(li) {
var value = (li == null) ? this.value.length : li.IntegerValue();
if (value < 0) {
value = this.value.length + 1 + li.IntegerValue();
}
if (value < 1 || value > this.value.length) {
throw new IndexOutOfRangeError();
}
return value;
};
TextValue.prototype.equals = function(obj) {
if (obj instanceof TextValue) {
return this.value == obj.value;
} else {
return false;
}
};
TextValue.prototype.Roughly = function(context, obj) {
if (obj instanceof TextValue || obj instanceof CharacterValue) {
return removeAccents(this.value.toLowerCase()) == removeAccents(obj.value.toLowerCase());
} else {
return false;
}
};
TextValue.prototype.Contains = function(context, obj) {
if (obj instanceof TextValue || obj instanceof CharacterValue) {
return this.value.indexOf(obj.value) >= 0;
} else {
return false;
}
};
TextValue.prototype.toJson = function(context, json, instanceId, fieldName, withType, binaries) {
if(Array.isArray(json))
json.push(this.value);
else
json[fieldName] = this.value;
};
exports.TextValue = TextValue;
/***/ }),
/* 79 */
/***/ (function(module, exports, __webpack_require__) {
var Value = __webpack_require__(77).Value;
var IntegerValue = __webpack_require__(80).IntegerValue;
var CharacterType = __webpack_require__(138).CharacterType;
var TextValue = null; // circular dependency
var removeAccents = __webpack_require__(51).removeAccents;
exports.resolve = function() {
TextValue = __webpack_require__(78).TextValue;
}
function CharacterValue(value) {
Value.call(this, CharacterType.instance);
this.value = value;
return this;
}
CharacterValue.prototype = Object.create(Value.prototype);
CharacterValue.prototype.constructor = CharacterValue;
var whitespace = [];
whitespace[" ".charCodeAt(0)] = true;
whitespace["\t".charCodeAt(0)] = true;
whitespace["\r".charCodeAt(0)] = true;
whitespace["\n".charCodeAt(0)] = true;
CharacterValue.isWhitespace = function(c) {
return !!whitespace[c.charCodeAt(0)];
};
CharacterValue.prototype.getMemberValue = function(context, name) {
if ("codePoint"==name) {
return new IntegerValue(this.value.charCodeAt(0));
} else {
return Value.prototype.getMemberValue.call(this, context, name);
}
};
CharacterValue.prototype.Add = function(context, value) {
return new TextValue(this.value + value.toString());
}
CharacterValue.prototype.Multiply = function(context, value) {
if (value instanceof IntegerValue) {
try {
var text = this.value.repeat(value.value);
return new TextValue(text);
} catch(error) {
throw new SyntaxError("Negative repeat count:" + count);
}
} else {
throw new SyntaxError("Illegal: Chararacter * " + typeof(value));
}
};
CharacterValue.prototype.cmp = function(obj) {
return this.value > obj.value ? 1 : this.value == obj.value ? 0 : -1 ;
};
CharacterValue.prototype.CompareTo = function(context, value) {
if(value instanceof TextValue || value instanceof CharacterValue) {
return this.value > value.value ? 1 : this.value == value.value ? 0 : -1;
} else {
throw new SyntaxError("Illegal: Compare CharacterValue with " + typeof(value));
}
};
CharacterValue.prototype.convertToJavaScript = function() {
return this.value;
};
CharacterValue.prototype.toString = function() {
return this.value;
};
CharacterValue.prototype.equals = function(obj) {
if (obj instanceof CharacterValue) {
return this.value == obj.value;
} else {
return false;
}
};
CharacterValue.prototype.Roughly = function(context, obj) {
if (obj instanceof TextValue || obj instanceof CharacterValue) {
return removeAccents(this.value.toLowerCase()) == removeAccents(obj.value.toLowerCase());
} else {
return false;
}
};
exports.CharacterValue = CharacterValue;
/***/ }),
/* 80 */
/***/ (function(module, exports, __webpack_require__) {
var Value = __webpack_require__(77).Value;
var DecimalValue = __webpack_require__(81).DecimalValue;
var IntegerType = null;
var DivideByZeroError = __webpack_require__(590).DivideByZeroError;
exports.resolve = function() {
IntegerType = __webpack_require__(83).IntegerType;
};
function IntegerValue(value) {
Value.call(this, IntegerType.instance);
this.value = value>0 ? Math.floor(value) : Math.ceil(value);
return this;
}
IntegerValue.prototype = Object.create(Value.prototype);
IntegerValue.prototype.constructor = IntegerValue;
IntegerValue.Parse = function(text) {
return new IntegerValue(parseInt(text));
};
IntegerValue.prototype.toString = function() {
return this.value.toString();
};
IntegerValue.prototype.getStorableData = function() {
return this.value;
};
IntegerValue.prototype.IntegerValue = function() {
return this.value;
};
IntegerValue.prototype.DecimalValue = function() {
return this.value * 1.0;
};
IntegerValue.prototype.Add = function(context, value) {
if (value instanceof IntegerValue) {
return new IntegerValue(this.value + value.value);
} else if (value instanceof DecimalValue) {
return new DecimalValue(value.DecimalValue() + this.value);
} else {
throw new SyntaxError("Illegal: IntegerValue + " + typeof(value));
}
};
IntegerValue.prototype.Subtract = function(context, value) {
if (value instanceof IntegerValue) {
return new IntegerValue(this.value - value.value);
} else if (value instanceof DecimalValue) {
return new DecimalValue(this.value - value.DecimalValue());
} else {
throw new SyntaxError("Illegal: IntegerValue - " + typeof(value));
}
};
IntegerValue.prototype.Multiply = function(context, value) {
if (value instanceof IntegerValue) {
return new IntegerValue(this.value * value.value);
} else if (value instanceof DecimalValue) {
return new DecimalValue(value.value * this.value);
} else if (value.Multiply) {
return value.Multiply(context, this);
} else {
throw new SyntaxError("Illegal: IntegerValue * " + typeof(value));
}
};
IntegerValue.prototype.Divide = function(context, value) {
if (value instanceof IntegerValue || value instanceof DecimalValue) {
if (value.DecimalValue() == 0.0) {
throw new DivideByZeroError();
} else {
return new DecimalValue(this.DecimalValue() / value.DecimalValue());
}
} else {
throw new SyntaxError("Illegal: IntegerValue / " + typeof(value));
}
};
IntegerValue.prototype.IntDivide = function(context, value) {
if (value instanceof IntegerValue) {
if (value.IntegerValue() == 0) {
throw new DivideByZeroError();
} else {
return new IntegerValue(this.IntegerValue() / value.IntegerValue());
}
} else {
throw new SyntaxError("Illegal: IntegerValue \\ " + typeof(value));
}
};
IntegerValue.prototype.Modulo = function(context, value) {
if (value instanceof IntegerValue) {
if (value.IntegerValue() == 0) {
throw new DivideByZeroError();
} else {
return new IntegerValue(this.IntegerValue() % value.IntegerValue());
}
} else {
throw new SyntaxError("Illegal: IntegerValue \\ " + typeof(value));
}
};
IntegerValue.prototype.Minus = function(context) {
return new IntegerValue(-this.value);
};
IntegerValue.prototype.cmp = function(obj) {
return this.value > obj.IntegerValue() ? 1 : this.value == obj.IntegerValue() ? 0 : -1 ;
};
IntegerValue.prototype.CompareTo = function(context, value) {
if (value instanceof IntegerValue || value instanceof DecimalValue) {
return this.value > value.value ? 1 : this.value == value.value ? 0 : -1;
} else {
throw new SyntaxError("Illegal comparison: IntegerValue and " + typeof(value));
}
};
IntegerValue.prototype.equals = function(obj) {
if (obj instanceof IntegerValue) {
return this.value == obj.value;
} else if (obj instanceof DecimalValue) {
return this.value == obj.value;
} else {
return false;
}
};
IntegerValue.prototype.toJson = function(context, json, instanceId, fieldName, withType, binaries) {
if(Array.isArray(json))
json.push(this.value);
else
json[fieldName] = this.value;
};
exports.IntegerValue = IntegerValue;
/***/ }),
/* 81 */
/***/ (function(module, exports, __webpack_require__) {
var Value = __webpack_require__(77).Value;
var IntegerValue = null; // circular dependency
var DecimalType = null;
var decimalTostring = __webpack_require__(51).decimalToString;
exports.resolve = function() {
IntegerValue = __webpack_require__(80).IntegerValue;
DecimalType = __webpack_require__(82).DecimalType;
};
function DecimalValue(value) {
Value.call(this, DecimalType.instance);
this.value = value;
return this;
}
DecimalValue.prototype = Object.create(Value.prototype);
DecimalValue.prototype.constructor = DecimalValue;
DecimalValue.Parse = function(text) {
return new DecimalValue(parseFloat(text));
};
DecimalValue.prototype.toString = function() {
return decimalTostring(this.value);
};
/*jshint bitwise:false*/
DecimalValue.prototype.IntegerValue = function() {
return Math.floor(this.value);
};
DecimalValue.prototype.DecimalValue = function() {
return this.value;
};
DecimalValue.prototype.getStorableData = function() {
return this.value;
};
DecimalValue.prototype.Add = function(context, value) {
if (value instanceof IntegerValue) {
return new DecimalValue(this.value + value.IntegerValue());
} else if (value instanceof DecimalValue) {
return new DecimalValue(this.value + value.DecimalValue());
} else {
throw new SyntaxError("Illegal: DecimalValue + " + typeof(value));
}
};
DecimalValue.prototype.Subtract = function(context, value) {
if (value instanceof IntegerValue) {
return new DecimalValue(this.value - value.IntegerValue());
} else if (value instanceof DecimalValue) {
return new DecimalValue(this.value - value.DecimalValue());
} else {
throw new SyntaxError("Illegal: DecimalValue - " + typeof(value));
}
};
DecimalValue.prototype.Multiply = function(context, value) {
if (value instanceof IntegerValue) {
return new DecimalValue(this.value * value.IntegerValue());
} else if (value instanceof DecimalValue) {
return new DecimalValue(this.value * value.DecimalValue());
} else {
throw new SyntaxError("Illegal: DecimalValue * " + typeof(value));
}
};
DecimalValue.prototype.Divide = function(context, value) {
if (value instanceof IntegerValue || value instanceof DecimalValue) {
if (value.DecimalValue() == 0.0) {
throw new DivideByZeroError();
} else {
return new DecimalValue(this.DecimalValue() / value.DecimalValue());
}
} else {
throw new SyntaxError("Illegal: DecimalValue / " + typeof(value));
}
};
DecimalValue.prototype.IntDivide = function(context, value) {
if (value instanceof IntegerValue) {
if (value.IntegerValue() == 0) {
throw new DivideByZeroError();
} else {
return new IntegerValue(this.DecimalValue() / value.IntegerValue());
}
} else {
throw new SyntaxError("Illegal: DecimalValue \\ " + typeof(value));
}
};
DecimalValue.prototype.Modulo = function(context, value) {
if (value instanceof IntegerValue || value instanceof DecimalValue) {
if (value.DecimalValue() == 0.0) {
throw new DivideByZeroError();
} else {
return new DecimalValue(this.DecimalValue() % value.DecimalValue());
}
} else {
throw new SyntaxError("Illegal: DecimalValue % " + typeof(value));
}
};
DecimalValue.prototype.Minus = function(context) {
return new DecimalValue(-this.value);
};
DecimalValue.prototype.CompareTo = function(context, value) {
if (value instanceof IntegerValue || value instanceof DecimalValue) {
return this.value > value.value ? 1 : this.value == value.value ? 0 : -1;
} else {
throw new SyntaxError("Illegal comparison: IntegerValue and " + typeof(value));
}
};
/*
@Override
public Object ConvertTo(Class> type) {
return value;
}
*/
DecimalValue.prototype.equals = function(obj) {
if (obj instanceof IntegerValue || obj instanceof DecimalValue) {
return this.value == obj.value;
} else {
return false;
}
};
exports.DecimalValue = DecimalValue;
/***/ }),
/* 82 */
/***/ (function(module, exports, __webpack_require__) {
var NativeType = __webpack_require__(67).NativeType;
var BooleanType = __webpack_require__(72).BooleanType;
var IntegerType = null; // circular dependency
var AnyType = __webpack_require__(74).AnyType;
var DecimalValue = __webpack_require__(81).DecimalValue;
var Identifier = __webpack_require__(73).Identifier;
exports.resolve = function() {
IntegerType = __webpack_require__(83).IntegerType;
}
function DecimalType() {
NativeType.call(this, new Identifier("Decimal"));
return this;
}
DecimalType.prototype = Object.create(NativeType.prototype);
DecimalType.prototype.constructor = DecimalType;
DecimalType.instance = new DecimalType();
DecimalType.prototype.declare = function(transpiler) {
var isADecimal = __webpack_require__(51).isADecimal;
transpiler.require(isADecimal);
};
DecimalType.prototype.transpile = function(transpiler) {
transpiler.append('"Decimal"')
};
DecimalType.prototype.isAssignableFrom = function(context, other) {
return NativeType.prototype.isAssignableFrom.call(this, context, other)
|| (other == IntegerType.instance);
};
DecimalType.prototype.checkAdd = function(context, other, tryReverse) {
if(other === IntegerType.instance || other === DecimalType.instance) {
return this;
} else {
return NativeType.prototype.checkAdd.call(this, context, other, tryReverse);
}
};
DecimalType.prototype.declareAdd = function(transpiler, other, tryReverse, left, right) {
if(other === IntegerType.instance || other === DecimalType.instance) {
left.declare(transpiler);
right.declare(transpiler);
} else
return NativeType.prototype.declareAdd.call(this, context, other, tryReverse, left, right);
};
DecimalType.prototype.transpileAdd = function(transpiler, other, tryReverse, left, right) {
if(other === IntegerType.instance || other === DecimalType.instance) {
left.transpile(transpiler);
transpiler.append(" + ");
right.transpile(transpiler);
} else
return NativeType.prototype.transpileAdd.call(this, context, other, tryReverse, left, right);
};
DecimalType.prototype.checkSubtract = function(context, other) {
if(other === IntegerType.instance || other === DecimalType.instance) {
return this;
} else {
return NativeType.prototype.checkSubtract.call(this, context, other);
}
};
DecimalType.prototype.declareSubtract = function(transpiler, other, left, right) {
if(other === IntegerType.instance || other === DecimalType.instance) {
left.declare(transpiler);
right.declare(transpiler);
} else
return NativeType.prototype.declareSubtract.call(this, transpiler, other, left, right);
};
DecimalType.prototype.transpileSubtract = function(transpiler, other, left, right) {
if(other === IntegerType.instance || other === DecimalType.instance) {
left.transpile(transpiler);
transpiler.append(" - ");
right.transpile(transpiler);
} else
return NativeType.prototype.transpileSubtract.call(this, transpiler, other, left, right);
};
DecimalType.prototype.checkMultiply = function(context, other, tryReverse) {
if(other === IntegerType.instance || other === DecimalType.instance) {
return this;
} else {
return NativeType.prototype.checkMultiply.call(this, context, other, tryReverse);
}
};
DecimalType.prototype.declareMultiply = function(transpiler, other, tryReverse, left, right) {
if(other === IntegerType.instance || other === DecimalType.instance) {
left.declare(transpiler);
right.declare(transpiler);
} else
return NativeType.prototype.declareMultiply.call(this, transpiler, other, tryReverse, left, right);
};
DecimalType.prototype.transpileMultiply = function(transpiler, other, tryReverse, left, right) {
if(other === IntegerType.instance || other === DecimalType.instance) {
left.transpile(transpiler);
transpiler.append(" * ");
right.transpile(transpiler);
} else
return NativeType.prototype.transpileMultiply.call(this, transpiler, other, tryReverse, left, right);
};
DecimalType.prototype.checkDivide = function(context, other) {
if(other === IntegerType.instance || other === DecimalType.instance) {
return this;
} else {
return NativeType.prototype.checkDivide.call(this, context, other);
}
};
DecimalType.prototype.declareDivide = function(transpiler, other, left, right) {
if(other === IntegerType.instance || other === DecimalType.instance) {
left.declare(transpiler);
right.declare(transpiler);
} else
return NativeType.prototype.declareDivide.call(this, transpiler, other, left, right);
};
DecimalType.prototype.transpileDivide = function(transpiler, other, left, right) {
if(other === IntegerType.instance || other === DecimalType.instance) {
transpiler.append("divide(");
left.transpile(transpiler);
transpiler.append(", ");
right.transpile(transpiler);
transpiler.append(")");
} else
return NativeType.prototype.transpileDivide.call(this, transpiler, other, left, right);
};
DecimalType.prototype.checkIntDivide = function(context, other) {
if(other === IntegerType.instance) {
return IntegerType.instance;
} else {
return NativeType.prototype.checkIntDivide.call(this, context, other);
}
};
DecimalType.prototype.declareIntDivide = function(transpiler, other, left, right) {
if(other === IntegerType.instance) {
left.declare(transpiler);
right.declare(transpiler);
} else
return NativeType.prototype.declareIntDivide.call(this, transpiler, other, left, right);
};
DecimalType.prototype.transpileIntDivide = function(transpiler, other, left, right) {
if (other === IntegerType.instance ) {
transpiler.append("Math.floor(divide(");
left.transpile(transpiler);
transpiler.append(", ");
right.transpile(transpiler);
transpiler.append("))");
} else
return NativeType.prototype.transpileIntDivide.call(this, transpiler, other, left, right);
};
DecimalType.prototype.checkModulo = function(context, other) {
if(other === IntegerType.instance || other === DecimalType.instance) {
return this;
} else {
return NativeType.prototype.checkModulo.call(this, context, other);
}
};
DecimalType.prototype.declareModulo = function(transpiler, other, left, right) {
if(other === IntegerType.instance || other === DecimalType.instance) {
return;
} else {
return NativeType.prototype.declareModulo.call(this, transpiler, other, left, right);
}
};
DecimalType.prototype.transpileModulo = function(transpiler, other, left, right) {
if(other === IntegerType.instance || other === DecimalType.instance) {
left.transpile(transpiler);
transpiler.append(" % ");
right.transpile(transpiler);
} else
return NativeType.prototype.transpileModulo.call(this, transpiler, other, left, right);
};
DecimalType.prototype.checkMinus = function(context) {
return this;
};
DecimalType.prototype.declareMinus = function(transpiler, value) {
// nothing to do
};
DecimalType.prototype.transpileMinus = function(transpiler, value) {
transpiler.append(" -");
value.transpile(transpiler);
};
DecimalType.prototype.transpileMember = function(transpiler, name) {
if("text" == name)
transpiler.append("toDecimalString()");
else
NativeType.prototype.transpileMember.call(this, transpiler, name);
};
DecimalType.prototype.checkCompare = function(context, other) {
if(other instanceof IntegerType || other instanceof DecimalType) {
return BooleanType.instance;
} else {
return NativeType.prototype.checkCompare.call(this, context, other);
}
};
DecimalType.prototype.declareCompare = function(context, other) {
// nothing to do
};
DecimalType.prototype.transpileCompare = function(transpiler, other, operator, left, right) {
left.transpile(transpiler);
transpiler.append(" ").append(operator.toString()).append(" ");
right.transpile(transpiler);
};
DecimalType.prototype.convertJavaScriptValueToPromptoValue = function(context, value, returnType) {
if (typeof(value)=='number') {
return new DecimalValue(value);
} else {
return value; // TODO for now
}
};
exports.DecimalType = DecimalType;
/***/ }),
/* 83 */
/***/ (function(module, exports, __webpack_require__) {
var CategoryArgument = null;
var NativeType = __webpack_require__(67).NativeType;
var BooleanType = __webpack_require__(72).BooleanType;
var DecimalType = __webpack_require__(82).DecimalType;
var CharacterType = null;
var ListType = __webpack_require__(71).ListType;
var RangeType = __webpack_require__(84).RangeType;
var TextType = null;
var AnyType = __webpack_require__(74).AnyType;
var TextValue = null;
var IntegerValue = __webpack_require__(80).IntegerValue;
var IntegerRange = __webpack_require__(86).IntegerRange;
var Identifier = __webpack_require__(73).Identifier;
var PeriodType = null;
var BuiltInMethodDeclaration = null;
exports.resolve = function() {
CategoryArgument = __webpack_require__(122).CategoryArgument;
CharacterType = __webpack_require__(138).CharacterType;
TextType = __webpack_require__(135).TextType;
PeriodType = __webpack_require__(392).PeriodType;
TextValue = __webpack_require__(78).TextValue;
resolveBuiltInMethodDeclaration();
}
function IntegerType() {
NativeType.call(this, new Identifier("Integer"));
return this;
}
IntegerType.prototype = Object.create(NativeType.prototype);
IntegerType.prototype.constructor = IntegerType;
IntegerType.instance = new IntegerType();
IntegerType.prototype.isAssignableFrom = function(context, other) {
return NativeType.prototype.isAssignableFrom.call(this, context, other)
|| (other == DecimalType.instance);
};
IntegerType.prototype.declare = function(transpiler) {
var isAnInteger = __webpack_require__(51).isAnInteger;
transpiler.require(isAnInteger);
};
IntegerType.prototype.transpile = function(transpiler) {
transpiler.append('"Integer"');
};
IntegerType.prototype.checkAdd = function(context, other, tryReverse) {
if(other === IntegerType.instance || other === DecimalType.instance) {
return other;
} else {
return NativeType.prototype.checkAdd.call(this, context, other, tryReverse);
}
};
IntegerType.prototype.declareAdd = function(transpiler, other, tryReverse, left, right) {
if (other === IntegerType.instance || other === DecimalType.instance) {
left.declare(transpiler);
right.declare(transpiler);
} else
return NativeType.prototype.declareAdd.call(this, transpiler, other, tryReverse, left, right);
}
IntegerType.prototype.transpileAdd = function(transpiler, other, tryReverse, left, right) {
if (other === IntegerType.instance || other === DecimalType.instance) {
left.transpile(transpiler);
transpiler.append(" + ");
right.transpile(transpiler);
} else
return NativeType.prototype.transpileAdd.call(this, transpiler, other, tryReverse, left, right);
};
IntegerType.prototype.checkSubtract = function(context, other) {
if(other === IntegerType.instance) {
return this;
} else if(other === DecimalType.instance) {
return other;
} else {
return NativeType.prototype.checkSubtract.call(this, context, other);
}
};
IntegerType.prototype.declareSubtract = function(transpiler, other, left, right) {
if (other === IntegerType.instance || other === DecimalType.instance) {
left.declare(transpiler);
right.declare(transpiler);
} else
return NativeType.prototype.declareSubtract.call(this, transpiler, other, left, right);
};
IntegerType.prototype.transpileSubtract = function(transpiler, other, left, right) {
if (other === IntegerType.instance || other === DecimalType.instance) {
left.transpile(transpiler);
transpiler.append(" - ");
right.transpile(transpiler);
} else
return NativeType.prototype.transpileSubtract.call(this, transpiler, other, left, right);
};
IntegerType.prototype.checkMultiply = function(context, other, tryReverse) {
if(other === IntegerType.instance) {
return this;
} else if(other === DecimalType.instance) {
return other;
} else if(other === CharacterType.instance) {
return TextType.instance;
} else if(other === TextType.instance) {
return other;
} else if(other === PeriodType.instance) {
return other;
} else if(other instanceof ListType) {
return other;
} else {
return NativeType.prototype.checkMultiply.call(this, context, other, tryReverse);
}
};
IntegerType.prototype.declareMultiply = function(transpiler, other, tryReverse, left, right) {
if (other === IntegerType.instance || other === DecimalType.instance) {
left.declare(transpiler);
right.declare(transpiler);
} else
return NativeType.prototype.declareMultiply.call(this, transpiler, other, tryReverse, left, right);
};
IntegerType.prototype.transpileMultiply = function(transpiler, other, tryReverse, left, right) {
if (other === IntegerType.instance || other === DecimalType.instance) {
left.transpile(transpiler);
transpiler.append(" * ");
right.transpile(transpiler);
} else
return NativeType.prototype.transpileMultiply.call(this, transpiler, other, tryReverse, left, right);
};
IntegerType.prototype.checkDivide = function(context, other) {
if(other === IntegerType.instance || other === DecimalType.instance) {
return DecimalType.instance;
} else {
return NativeType.prototype.checkDivide.call(this, context, other);
}
};
IntegerType.prototype.declareDivide = function(transpiler, other, left, right) {
if (other === IntegerType.instance || other === DecimalType.instance) {
left.declare(transpiler);
right.declare(transpiler);
} else
return NativeType.prototype.declareDivide.call(this, transpiler, other, left, right);
};
IntegerType.prototype.transpileDivide = function(transpiler, other, left, right) {
if (other === IntegerType.instance || other === DecimalType.instance) {
transpiler.append("divide(");
left.transpile(transpiler);
transpiler.append(", ");
right.transpile(transpiler);
transpiler.append(")");
} else
return NativeType.prototype.transpileDivide.call(this, transpiler, other, left, right);
};
IntegerType.prototype.checkIntDivide = function(context, other) {
if(other === IntegerType.instance) {
return this;
} else {
return NativeType.prototype.checkIntDivide.call(this, context, other);
}
};
IntegerType.prototype.declareIntDivide = function(transpiler, other, left, right) {
if (other === IntegerType.instance ) {
left.declare(transpiler);
right.declare(transpiler);
} else
return NativeType.prototype.declareIntDivide.call(this, transpiler, other, left, right);
};
IntegerType.prototype.transpileIntDivide = function(transpiler, other, left, right) {
if (other === IntegerType.instance ) {
// TODO check negative values
transpiler.append("Math.floor(divide(");
left.transpile(transpiler);
transpiler.append(", ");
right.transpile(transpiler);
transpiler.append("))");
} else
return NativeType.prototype.transpileIntDivide.call(this, transpiler, other, left, right);
};
IntegerType.prototype.checkModulo = function(context, other) {
if(other === IntegerType.instance) {
return this;
} else {
return NativeType.prototype.checkModulo.call(this, context, other);
}
};
IntegerType.prototype.declareModulo = function(transpiler, other, left, right) {
if (other === IntegerType.instance ) {
left.declare(transpiler);
right.declare(transpiler);
} else
return NativeType.prototype.declareModulo.call(this, transpiler, other, left, right);
};
IntegerType.prototype.transpileModulo = function(transpiler, other, left, right) {
if (other === IntegerType.instance ) {
// TODO check negative values
left.transpile(transpiler);
transpiler.append(" % ");
right.transpile(transpiler);
} else
return NativeType.prototype.transpileModulo.call(this, transpiler, other, left, right);
};
IntegerType.prototype.checkMinus = function(context) {
return this;
};
IntegerType.prototype.declareMinus = function(transpiler, value) {
// nothing to do
};
IntegerType.prototype.transpileMinus = function(transpiler, value) {
transpiler.append(" -");
value.transpile(transpiler);
};
IntegerType.prototype.checkCompare = function(context, other) {
if(other === IntegerType.instance || other === DecimalType.instance) {
return BooleanType.instance;
} else {
return NativeType.prototype.checkCompare.call(this, context, other);
}
};
IntegerType.prototype.declareCompare = function(context, other) {
// nothing to do
};
IntegerType.prototype.transpileCompare = function(transpiler, other, operator, left, right) {
left.transpile(transpiler);
transpiler.append(" ").append(operator.toString()).append(" ");
right.transpile(transpiler);
};
IntegerType.prototype.checkRange = function(context, other) {
if(other === IntegerType.instance) {
return new RangeType(this);
} else {
return NativeType.prototype.checkRange.call(this, context, other);
}
};
IntegerType.prototype.declareRange = function(transpiler, other) {
if(other === IntegerType.instance) {
var module = __webpack_require__(140);
transpiler.require(module.Range);
transpiler.require(module.IntegerRange);
} else {
return NativeType.prototype.declareRange.call(this, transpiler, other);
}
};
IntegerType.prototype.transpileRange = function(transpiler, first, last) {
transpiler.append("new IntegerRange(");
first.transpile(transpiler);
transpiler.append(",");
last.transpile(transpiler);
transpiler.append(")");
};
IntegerType.prototype.newRange = function(left, right) {
if(left instanceof IntegerValue && right instanceof IntegerValue) {
return new IntegerRange(left, right);
} else {
return NativeType.prototype.newRange.call(this, left, right);
}
};
IntegerType.prototype.convertJavaScriptValueToPromptoValue = function(context, value, returnType) {
if (typeof(value)=='number') {
return new IntegerValue(value);
} else {
return value; // TODO for now
}
};
IntegerType.prototype.getMemberMethods = function(context, name) {
switch (name) {
case "format":
return [new FormatMethodDeclaration()];
default:
return NativeType.prototype.getMemberMethods.call(context, name);
}
};
exports.IntegerType = IntegerType;
function FormatMethodDeclaration() {
BuiltInMethodDeclaration.call(this, "format",
new CategoryArgument(TextType.instance, new Identifier("format")));
return this;
}
function resolveBuiltInMethodDeclaration() {
BuiltInMethodDeclaration = __webpack_require__(145).BuiltInMethodDeclaration;
FormatMethodDeclaration.prototype = Object.create(BuiltInMethodDeclaration.prototype);
FormatMethodDeclaration.prototype.constructor = FormatMethodDeclaration;
FormatMethodDeclaration.prototype.interpret = function(context) {
var value = this.getValue(context).getStorableData();
var format = context.getValue(new Identifier("format")).getStorableData();
value = this.format(value, format);
return new TextValue(value);
};
FormatMethodDeclaration.prototype.check = function(context) {
return TextType.instance;
};
FormatMethodDeclaration.prototype.format = function(value, format) {
// TODO support more than leading 0's
value = "000000000000" + value;
return value.substr(value.length - format.length);
};
FormatMethodDeclaration.prototype.transpileCall = function(transpiler, assignments) {
transpiler.append("formatInteger(");
assignments[0].transpile(transpiler);
transpiler.append(")");
};
}
/***/ }),
/* 84 */
/***/ (function(module, exports, __webpack_require__) {
var ContainerType = __webpack_require__(65).ContainerType;
var StrictSet = __webpack_require__(85).StrictSet;
var Identifier = __webpack_require__(73).Identifier;
var IntegerType = null;
var BooleanType = null;
exports.resolve = function() {
IntegerType = __webpack_require__(83).IntegerType;
BooleanType = __webpack_require__(72).BooleanType;
};
function RangeType(itemType) {
ContainerType.call(this, new Identifier(itemType.name+"[..]"),itemType);
return this;
}
RangeType.prototype = Object.create(ContainerType.prototype);
RangeType.prototype.constructor = RangeType;
RangeType.prototype.withItemType = function(itemType) {
return new RangeType(itemType);
};
RangeType.prototype.checkItem = function(context, other, expression) {
if (other == IntegerType.instance) {
return this.itemType;
} else {
return ContainerType.prototype.checkItem.call(this, context, other, expression);
}
};
RangeType.prototype.declareItem = function(transpiler, itemType, item) {
// nothing to do
};
RangeType.prototype.transpileItem = function(transpiler, itemType, item) {
transpiler.append(".item(");
item.transpile(transpiler);
transpiler.append(")");
};
RangeType.prototype.checkSlice = function(context) {
return this;
};
RangeType.prototype.declareSlice = function(transpiler, first, last) {
if(first) {
first.declare(transpiler);
}
if(last) {
last.declare(transpiler);
}
};
RangeType.prototype.transpileSlice = function(transpiler, first, last) {
transpiler.append(".slice1Based(");
if(first) {
first.transpile(transpiler);
} else
transpiler.append("null");
if(last) {
transpiler.append(",");
last.transpile(transpiler);
}
transpiler.append(")");
};
RangeType.prototype.checkIterator = function(context, source) {
return this.itemType;
};
RangeType.prototype.checkContainsAllOrAny = function(context, other) {
return BooleanType.instance;
};
RangeType.prototype.declareContains = function(transpiler, other, container, item) {
transpiler.require(StrictSet);
container.declare(transpiler);
item.declare(transpiler);
};
RangeType.prototype.transpileContains = function(transpiler, other, container, item) {
container.transpile(transpiler);
transpiler.append(".has(");
item.transpile(transpiler);
transpiler.append(")");
};
RangeType.prototype.declareContainsAllOrAny = function(transpiler, other, container, items) {
transpiler.require(StrictSet);
container.declare(transpiler);
items.declare(transpiler);
};
RangeType.prototype.transpileContainsAll = function(transpiler, other, container, items) {
container.transpile(transpiler);
transpiler.append(".hasAll(");
items.transpile(transpiler);
transpiler.append(")");
};
RangeType.prototype.transpileContainsAny = function(transpiler, other, container, items) {
container.transpile(transpiler);
transpiler.append(".hasAny(");
items.transpile(transpiler);
transpiler.append(")");
};
exports.RangeType = RangeType;
/***/ }),
/* 85 */
/***/ (function(module, exports) {
function StrictSet(values) {
this.set = new Set(values);
return this;
}
Object.defineProperty(StrictSet.prototype, "length", {
get : function() {
return this.set.size;
}
});
StrictSet.prototype.toString = function() {
return "<" + Array.from(this.set.values()).join(", ") + ">";
};
StrictSet.prototype.getText = StrictSet.prototype.toString;
StrictSet.prototype.iterator = function() {
var iter = this.set.values();
var item = iter.next();
return {
hasNext: function() { return !item.done; },
next: function() { var value = item.value; item = iter.next(); return value; }
};
};
StrictSet.prototype.item = function(idx) {
var iter = this.set.values();
var item = iter.next();
while(--idx>=0 && !item.done)
item = iter.next();
if(item.done)
return null;
else
return item.value;
};
StrictSet.prototype.addItems = function(items) {
if(items instanceof StrictSet)
items = Array.from(items.set.values());
items.forEach(function(item){
this.add(item);
}, this);
return this; // enable fluid API
};
StrictSet.prototype.addAll = function(items) {
var result = new StrictSet(this.set);
result.addItems(items);
return result;
};
StrictSet.prototype.remove = function(items) {
var excluded = (items instanceof StrictSet) ? items : new Set(items);
var items = Array.from(this.set.values());
var remaining = items.filter(function(item) { return !excluded.has(item); });
return new StrictSet(remaining);
};
StrictSet.prototype.add = function(value) {
if(this.has(value))
return false;
else {
this.set.add(value);
return true;
}
};
StrictSet.prototype.has = function(value, noCheckEquals) {
if(this.set.has(value))
return true;
if(noCheckEquals)
return false;
var iter = this.set.values();
var item = iter.next();
while(!item.done) {
if(value.equals && value.equals(item.value))
return true;
item = iter.next();
}
return false;
};
StrictSet.prototype.hasAll = function(items, noCheckEquals) {
if(items instanceof StrictSet)
items = Array.from(items.set.values());
for (var i = 0; i < items.length; i++) {
if (!this.has(items[i], noCheckEquals))
return false;
}
return true;
};
StrictSet.prototype.hasAny = function(items, noCheckEquals) {
if(items instanceof StrictSet)
items = Array.from(items.set.values());
if(noCheckEquals) {
for (var i = 0; i < items.length; i++) {
if (this.set.has(items[i]))
return true;
}
return false;
} else {
for (var i = 0; i < items.length; i++) {
if (this.has(items[i]))
return true;
}
return false;
}
};
StrictSet.prototype.equals = function(other) {
if(!(other instanceof StrictSet))
return false;
else if(this.length!=other.length)
return false;
else {
var iter = this.set.values();
var item = iter.next();
while(!item.done) {
if(!other.has(item.value))
return false;
item = iter.next();
}
return true;
}
};
StrictSet.prototype.intersect = function(other) {
var items = [];
this.set.forEach( function(item) {
if(other.has(item))
items.push(item);
});
return new StrictSet(items);
};
StrictSet.prototype.sorted = function(sortFunction) {
var sorted = Array.from(this.set).sort(sortFunction);
return new List(false, sorted);
};
StrictSet.prototype.filtered = function(filterFunction) {
var filtered = Array.from(this.set).filter(filterFunction);
return new StrictSet(filtered);
};
exports.StrictSet = StrictSet;
/***/ }),
/* 86 */
/***/ (function(module, exports, __webpack_require__) {
var RangeValue = __webpack_require__(87).RangeValue;
var IntegerValue = __webpack_require__(80).IntegerValue;
var IntegerType = null;
exports.resolve =function() {
IntegerType = __webpack_require__(83).IntegerType;
};
function IntegerRange(left, right) {
RangeValue.call(this, IntegerType.instance, left, right);
return this;
}
IntegerRange.prototype = Object.create(RangeValue.prototype);
IntegerRange.prototype.constructor = IntegerRange;
IntegerRange.prototype.size = function() {
return 1 + this.high.IntegerValue() - this.low.IntegerValue();
};
IntegerRange.prototype.getItem = function(index) {
var result = this.low.IntegerValue() + index - 1;
if(result>this.high.IntegerValue()) {
throw new IndexOutOfBoundsException();
}
return new IntegerValue(result);
};
IntegerRange.prototype.newInstance = function(left, right) {
return new IntegerRange(left, right);
};
exports.IntegerRange = IntegerRange;
/***/ }),
/* 87 */
/***/ (function(module, exports, __webpack_require__) {
var Value = __webpack_require__(77).Value;
var IntegerValue = __webpack_require__(80).IntegerValue;
var IndexOutOfRangeError = __webpack_require__(88).IndexOutOfRangeError;
var BaseType = __webpack_require__(68).BaseType;
var RangeType = __webpack_require__(84).RangeType;
function RangeValue(itemType, left, right) {
if(!(itemType instanceof BaseType))
return;
Value.call(this, new RangeType(itemType));
var cmp = left.cmp(right);
if(cmp<0) {
this.low = left;
this.high = right;
} else {
this.low = right;
this.high = left;
}
return this;
}
RangeValue.prototype = Object.create(Value.prototype);
RangeValue.prototype.constructor = RangeValue;
RangeValue.prototype.toString = function() {
return "[" + (this.low==null?"":this.low.toString()) + ".."
+ (this.high==null?"":this.high.toString()) + "]";
};
RangeValue.prototype.equals = function(obj) {
if(obj instanceof RangeValue) {
return this.low.equals(obj.low) && this.high.equals(obj.high);
} else {
return false;
}
};
RangeValue.prototype.hasItem = function(context, lval) {
var a = lval.cmp(this.low);
var b = this.high.cmp(lval);
return a>=0 && b>=0;
};
RangeValue.prototype.getItemInContext = function(context, index) {
if (index instanceof IntegerValue) {
try {
var value = this.getItem(index.IntegerValue());
if (value instanceof Value) {
return value;
} else {
throw new InternalError("Item not a value!");
}
} catch (e) {
throw new IndexOutOfRangeError();
}
} else {
throw new SyntaxError("No such item:" + index.toString());
}
};
RangeValue.prototype.slice = function(fi, li) {
var size = this.size();
var first = this.checkFirst(fi, size);
var last = this.checkLast(li, size);
return this.newInstance(this.getItem(first),this.getItem(last));
}
RangeValue.prototype.checkFirst = function(fi, size) {
var value = (fi == null) ? 1 : fi.IntegerValue();
if (value < 1 || value > size) {
throw new IndexOutOfRangeError();
}
return value;
};
RangeValue.prototype.checkLast = function(li, size) {
var value = (li == null) ? size : li.IntegerValue();
if (value < 0) {
value = size + 1 + li.IntegerValue();
}
if (value < 1 || value > size) {
throw new IndexOutOfRangeError();
}
return value;
};
RangeValue.prototype.getIterator = function(context) {
return new RangeIterator(context, this);
};
function RangeIterator(context, range) {
this.context = context;
this.range = range;
this.index = 0;
return this;
}
RangeIterator.prototype.hasNext = function() {
return this.index o2.");
key.transpile(transpiler);
};
CategoryType.prototype.transpileSortedByGlobalMethod = function(transpiler, desc, name) {
transpiler.append("function(o1, o2) { return ")
.append(name).append("(o1) === ").append(name).append("(o2)").append(" ? 0 : ")
.append(name).append("(o1) > ").append(name).append("(o2)").append(" ? ");
if(desc)
transpiler.append("-1 : 1; }");
else
transpiler.append("1 : -1; }");
};
CategoryType.prototype.transpileAssignMemberValue = function(transpiler, name, expression) {
transpiler.append(".setMember('").append(name).append("', ");
expression.transpile(transpiler);
transpiler.append(")");
};
exports.CategoryType = CategoryType;
/***/ }),
/* 94 */
/***/ (function(module, exports, __webpack_require__) {
var MethodCall = __webpack_require__(95).MethodCall;
var EnumeratedCategoryDeclaration = null;
var CategoryDeclaration = null;
var EnumeratedNativeDeclaration = __webpack_require__(173).EnumeratedNativeDeclaration;
var ConstructorExpression = null;
var InstanceExpression = __webpack_require__(151).InstanceExpression;
var SymbolExpression = __webpack_require__(104).SymbolExpression;
var TypeExpression = __webpack_require__(105).TypeExpression;
var ProblemListener = __webpack_require__(157).ProblemListener;
var PromptoError = __webpack_require__(64).PromptoError;
var Section = __webpack_require__(61).Section;
var Dialect = __webpack_require__(110).Dialect;
var VoidType = __webpack_require__(153).VoidType;
var EnumeratedCategoryType = null;
var CategoryType = null;
var MethodSelector = null;
exports.resolve = function() {
EnumeratedCategoryDeclaration = __webpack_require__(56).EnumeratedCategoryDeclaration;
EnumeratedCategoryType = __webpack_require__(92).EnumeratedCategoryType;
MethodSelector = __webpack_require__(100).MethodSelector;
CategoryType = __webpack_require__(93).CategoryType;
CategoryDeclaration = __webpack_require__(58).CategoryDeclaration;
ConstructorExpression = __webpack_require__(369).ConstructorExpression;
}
function UnresolvedIdentifier(id) {
Section.call(this);
this.id = id;
this.resolved = null;
return this;
}
UnresolvedIdentifier.prototype = Object.create(Section.prototype);
UnresolvedIdentifier.prototype.constructor = UnresolvedIdentifier;
Object.defineProperty(UnresolvedIdentifier.prototype, "name", {
get : function() {
return this.id.name;
}
});
UnresolvedIdentifier.prototype.toString = function() {
return this.id.name;
};
UnresolvedIdentifier.prototype.toDialect = function(writer) {
try {
this.resolve(writer.context, false, false);
} catch(e) {
}
if(this.resolved!=null)
this.resolved.toDialect(writer);
else
writer.append(this.id.name);
};
UnresolvedIdentifier.prototype.check = function(context) {
return this.resolveAndCheck(context, false);
};
UnresolvedIdentifier.prototype.checkMember = function(context) {
return this.resolveAndCheck(context, true);
};
UnresolvedIdentifier.prototype.interpret = function(context) {
if(this.resolved==null) {
this.resolveAndCheck(context, false);
}
return this.resolved.interpret(context);
};
UnresolvedIdentifier.prototype.resolveAndCheck = function(context, forMember) {
this.resolve(context, forMember);
return this.resolved ? this.resolved.check(context) : VoidType.instance;
};
UnresolvedIdentifier.prototype.resolve = function(context, forMember, updateSelectorParent) {
if(updateSelectorParent)
this.resolved = null;
if(this.resolved==null) {
// ignore resolution problems during resolution
var listener = context.problemListener;
try {
context.problemListener = new ProblemListener();
this.resolved = this.doResolve(context, forMember, updateSelectorParent);
} finally {
// restore listener
context.problemListener = listener;
}
}
if(this.resolved==null)
context.problemListener.reportUnknownIdentifier(this.id);
return this.resolved;
};
UnresolvedIdentifier.prototype.doResolve = function(context, forMember, updateSelectorParent) {
var resolved = this.resolveSymbol(context);
if(resolved)
return resolved;
resolved = this.resolveTypeOrConstructor(context, forMember);
if(resolved)
return resolved;
resolved = this.resolveMethodCall(context, updateSelectorParent);
if(resolved)
return resolved;
resolved = this.resolveInstance(context);
return resolved;
};
UnresolvedIdentifier.prototype.resolveTypeOrConstructor = function(context, forMember) {
// is first char uppercase?
if (this.id.name[0].toUpperCase() != this.id.name[0])
return null;
if (forMember) {
return this.resolveType(context);
} else {
return this.resolveConstructor(context);
}
};
UnresolvedIdentifier.prototype.resolveInstance = function(context) {
try {
var id = new InstanceExpression(this.id);
id.check(context);
return id;
} catch(e) {
if(e instanceof PromptoError) {
return null;
} else {
throw e;
}
}
};
UnresolvedIdentifier.prototype.resolveMethodCall = function(context, updateSelectorParent) {
if(this.id.dialect!=Dialect.E)
return null;
try {
var selector = new MethodSelector(null, this.id);
var call = new MethodCall(selector);
call.check(context, updateSelectorParent);
return call;
} catch(e) {
if(e instanceof PromptoError) {
return null;
} else {
throw e;
}
}
};
UnresolvedIdentifier.prototype.resolveConstructor = function(context) {
try {
var method = new ConstructorExpression(new CategoryType(this.id), null, null, true);
method.check(context);
return method;
} catch(e) {
if(e instanceof PromptoError) {
return null;
} else {
throw e;
}
}
};
UnresolvedIdentifier.prototype.resolveType = function(context) {
var decl = context.getRegisteredDeclaration(this.name);
if(decl instanceof EnumeratedCategoryDeclaration) {
return new TypeExpression(new EnumeratedCategoryType(this.id));
} else if(decl instanceof CategoryDeclaration) {
return new TypeExpression(new CategoryType(this.id));
} else if(decl instanceof EnumeratedNativeDeclaration) {
return new TypeExpression(decl.getType(context));
} else {
var allTypes = NativeType.getAll();
for(var i=0;i 0))
return false;
try {
finder = new MethodFinder(writer.context, this);
var declaration = finder.findMethod(false);
/* if method is a reference, need to prefix with invoke */
return declaration instanceof AbstractMethodDeclaration || declaration.closureOf !== null;
} catch(e) {
// ok
}
return false;
}
MethodCall.prototype.toString = function() {
return this.selector.toString() + " " + (this.assignments!==null ? this.assignments.toString() : "");
};
MethodCall.prototype.check = function(context, updateSelectorParent) {
var finder = new MethodFinder(context, this);
var declaration = finder.findMethod(false);
if(!declaration) {
context.problemListener.reportUnknownMethod(this.selector.id);
return VoidType.instance;
}
if(updateSelectorParent && declaration.memberOf && !this.selector.parent)
this.selector.parent = new ThisExpression();
var local = this.isLocalClosure(context) ? context : this.selector.newLocalCheckContext(context, declaration);
return this.checkDeclaration(declaration, context, local);
};
MethodCall.prototype.isLocalClosure = function(context) {
if (this.selector.parent !== null) {
return false;
}
var decl = context.getLocalDeclaration(this.selector.name)
return decl instanceof MethodDeclarationMap;
};
MethodCall.prototype.checkDeclaration = function(declaration, parent, local) {
if(declaration instanceof ConcreteMethodDeclaration && declaration.mustBeCheckedInCallContext(parent)) {
return this.fullCheck(declaration, parent, local);
} else {
return this.lightCheck(declaration, local);
}
};
MethodCall.prototype.lightCheck = function(declaration, local) {
declaration.registerArguments(local);
return declaration.check(local, false);
};
MethodCall.prototype.fullCheck = function(declaration, parent, local) {
try {
var assignments = this.makeAssignments(parent, declaration);
declaration.registerArguments(local);
assignments.forEach(function(assignment) {
var expression = assignment.resolve(local, declaration, true);
var value = assignment.argument.checkValue(parent, expression);
local.setValue(assignment.id, value);
});
return declaration.check(local, false);
} catch (e) {
if(e instanceof PromptoError) {
throw new SyntaxError(e.message);
}
}
};
MethodCall.prototype.declare = function(transpiler) {
if (this.assignments != null)
this.assignments.declare(transpiler);
var finder = new MethodFinder(transpiler.context, this);
var declarations = finder.findCompatibleMethods(false, true);
var first = declarations.size===1 ? declarations.values().next().value : null;
if(declarations.size===1 && first instanceof BuiltInMethodDeclaration) {
if(first.declareCall)
first.declareCall(transpiler);
} else {
if(!this.isLocalClosure(transpiler.context)) {
declarations.forEach(function(declaration) {
var local = this.selector.newLocalCheckContext(transpiler.context, declaration);
this.declareDeclaration(transpiler, declaration, local);
}, this);
}
if(declarations.size>1 && !this.dispatcher) {
var declaration = finder.findMethod(false);
var sorted = finder.sortMostSpecificFirst(declarations);
this.dispatcher = new DispatchMethodDeclaration(transpiler.context, this, declaration, sorted);
transpiler.declare(this.dispatcher);
}
}
};
MethodCall.prototype.declareDeclaration = function(transpiler, declaration, local) {
if(declaration instanceof ConcreteMethodDeclaration && declaration.mustBeCheckedInCallContext(transpiler.context)) {
this.fullDeclareDeclaration(declaration, transpiler, local);
} else {
this.lightDeclareDeclaration(declaration, transpiler, local);
}
};
MethodCall.prototype.lightDeclareDeclaration = function(declaration, transpiler, local) {
transpiler = transpiler.copyTranspiler(local);
declaration.declare(transpiler);
};
var fullDeclareCounter = 0;
MethodCall.prototype.fullDeclareDeclaration = function(declaration, transpiler, local) {
if(!this.fullSelector) {
var assignments = this.makeAssignments(transpiler.context, declaration);
declaration.registerArguments(local);
assignments.forEach(function(assignment) {
var expression = assignment.resolve(local, declaration, true);
var value = assignment.argument.checkValue(transpiler.context, expression);
local.setValue(assignment.id, value);
});
transpiler = transpiler.copyTranspiler(local);
this.fullSelector = this.selector.newFullSelector(++fullDeclareCounter);
declaration.fullDeclare(transpiler, this.fullSelector.id);
}
};
MethodCall.prototype.transpile = function(transpiler) {
var finder = new MethodFinder(transpiler.context, this);
var declarations = finder.findCompatibleMethods(false, true);
if (declarations.size === 1) {
var first = declarations.values().next().value;
this.transpileSingle(transpiler, first, false);
} else
this.transpileMultiple(transpiler, declarations);
};
MethodCall.prototype.transpileMultiple = function(transpiler, declarations) {
var name = this.dispatcher.getTranspiledName(transpiler.context);
var parent = this.selector.resolveParent(transpiler.context);
var first = declarations.values().next().value;
if(parent==null && first.memberOf && transpiler.context.parent instanceof InstanceContext)
parent = new ThisExpression();
var selector = new MethodSelector(parent, new Identifier(name));
selector.transpile(transpiler);
this.transpileAssignments(transpiler, this.dispatcher);
};
MethodCall.prototype.transpileSingle = function(transpiler, declaration, allowDerived) {
if (declaration instanceof BuiltInMethodDeclaration)
this.transpileBuiltin(transpiler, declaration);
else {
this.transpileSelector(transpiler, declaration);
this.transpileAssignments(transpiler, declaration, allowDerived);
}
};
MethodCall.prototype.transpileBuiltin = function(transpiler, declaration) {
var parent = this.selector.resolveParent(transpiler.context);
parent.transpile(transpiler);
transpiler.append(".");
declaration.transpileCall(transpiler, this.assignments);
};
MethodCall.prototype.transpileSelector = function(transpiler, declaration) {
var selector = this.fullSelector || this.selector;
var parent = selector.resolveParent(transpiler.context);
if (parent == null && declaration.memberOf && transpiler.context.parent instanceof InstanceContext)
parent = new ThisExpression();
var name = null;
if(this.variableName)
name = this.variableName;
else if(this.fullSelector)
name = this.fullSelector.name;
else
name = declaration.getTranspiledName(transpiler.context);
selector = new MethodSelector(parent, new Identifier(name));
selector.transpile(transpiler);
};
MethodCall.prototype.transpileAssignments = function(transpiler, declaration, allowDerived) {
var assignments = this.makeAssignments(transpiler.context, declaration);
assignments = assignments.filter(function(assignment) {
return !(assignment.argument instanceof CodeArgument);
});
if(assignments.length > 0) {
transpiler.append("(");
assignments.forEach(function (assignment) {
var argument = assignment.argument;
var expression = assignment.resolve(transpiler.context, declaration, false, allowDerived);
argument.transpileCall(transpiler, expression);
transpiler.append(", ");
});
transpiler.trimLast(2);
transpiler.append(")");
} else
transpiler.append("()");
};
MethodCall.prototype.makeAssignments = function(context, declaration) {
return (this.assignments || new ArgumentAssignmentList()).makeAssignments(context, declaration);
};
MethodCall.prototype.interpret = function(context) {
var declaration = this.findDeclaration(context);
var local = this.selector.newLocalContext(context, declaration);
declaration.registerArguments(local);
var assignments = this.makeAssignments(context, declaration);
assignments.forEach(function(assignment) {
var expression = assignment.resolve(local, declaration, true);
var argument = assignment.argument;
var value = argument.checkValue(context, expression);
if(value!=null && argument.mutable && !value.mutable)
throw new NotMutableError();
local.setValue(assignment.id, value);
});
return declaration.interpret(local, true);
};
MethodCall.prototype.interpretAssert = function(context, testMethodDeclaration) {
var value = this.interpret(context);
if(value instanceof BooleanValue)
return value.value;
else {
var expected = this.getExpected(context, this.dialect);
throw new SyntaxError("Cannot test '" + expected + "'");
}
};
MethodCall.prototype.getExpected = function(context, dialect, escapeMode) {
var writer = new CodeWriter(this.dialect, context);
writer.escapeMode = escapeMode;
this.toDialect(writer);
return writer.toString();
};
MethodCall.prototype.transpileFound = function(transpiler, dialect) {
transpiler.append("''");
};
MethodCall.prototype.findDeclaration = function(context) {
// look for method as value
try {
var o = context.getValue(this.selector.id);
if(o instanceof ClosureValue) {
return new ClosureDeclaration(o);
}
} catch (e) {
if(!(e instanceof PromptoError)) {
throw e;
}
}
// look for declared method
var finder = new MethodFinder(context,this);
return finder.findMethod(true);
};
exports.MethodCall = MethodCall;
/***/ }),
/* 96 */
/***/ (function(module, exports, __webpack_require__) {
var BaseStatement = __webpack_require__(97).BaseStatement;
function SimpleStatement() {
BaseStatement.call(this);
return this;
}
SimpleStatement.prototype = Object.create(BaseStatement.prototype);
SimpleStatement.prototype.constructor = SimpleStatement;
SimpleStatement.prototype.isSimple = function() {
return true;
};
exports.SimpleStatement = SimpleStatement;
/***/ }),
/* 97 */
/***/ (function(module, exports, __webpack_require__) {
var Section = __webpack_require__(61).Section;
function BaseStatement() {
Section.call(this);
return this;
}
BaseStatement.prototype = Object.create(Section.prototype);
BaseStatement.prototype.constructor = BaseStatement;
BaseStatement.prototype.canReturn = function() {
return false;
};
BaseStatement.prototype.isSimple = function() {
return false;
};
BaseStatement.prototype.transpile = function(transpiler) {
throw new Error("Transpile not implemented by " + this.constructor.name);
};
BaseStatement.prototype.declare = function(transpiler) {
throw new Error("Declare not implemented by " + this.constructor.name);
};
BaseStatement.prototype.locateSectionAtLine = function(line) {
return this;
};
exports.BaseStatement = BaseStatement;
/***/ }),
/* 98 */
/***/ (function(module, exports, __webpack_require__) {
var PromptoError = __webpack_require__(64).PromptoError;
var CategoryType = null;
var Score = __webpack_require__(99).Score;
exports.resolve = function() {
CategoryType = __webpack_require__(93).CategoryType;
}
function MethodFinder(context, methodCall) {
this.context = context;
this.methodCall = methodCall;
return this;
}
MethodFinder.prototype.findCompatibleMethods = function(checkInstance, allowDerived) {
var candidates = this.methodCall.selector.getCandidates(this.context, checkInstance);
if(candidates.size==0)
this.context.problemListener.reportUnknownMethod(this.methodCall.selector.id);
return this.filterCompatible(candidates, checkInstance, allowDerived);
};
MethodFinder.prototype.findMethod = function(checkInstance) {
var compatibles = this.findCompatibleMethods(checkInstance, false);
switch(compatibles.size) {
case 0:
this.context.problemListener.reportNoMatchingPrototype(this.methodCall);
return null;
case 1:
return compatibles.values().next().value;
default:
return this.findMostSpecific(compatibles, checkInstance);
}
};
MethodFinder.prototype.findMostSpecific = function(candidates, checkInstance) {
var candidate = null;
var ambiguous = [];
candidates.forEach(function(c) {
if(candidate==null)
candidate = c;
else {
var score = this.scoreMostSpecific(candidate, c, checkInstance);
switch(score) {
case Score.WORSE:
candidate = c;
ambiguous = [];
break;
case Score.BETTER:
break;
case Score.SIMILAR:
ambiguous.push(c);
break;
}
}
}, this);
if(ambiguous.length>0) {
throw new SyntaxError("Too many prototypes!"); // TODO refine
}
return candidate;
}
MethodFinder.prototype.sortMostSpecificFirst = function(declarations) {
var self = this;
declarations = Array.from(declarations);
// console.error("sorting:"+ declarations.map(function(decl) { return decl.getProto(); }).join(","));
declarations.sort(function(d1, d2) {
// console.error( d1.getProto() + "/" + d2.getProto() );
var score = self.scoreMostSpecific(d2, d1, false, true);
// console.error( "-> " + score.name );
return score.value;
});
// console.error("sorted:"+ declarations.map(function(decl) { return decl.getProto(); }).join(","));
return declarations;
};
MethodFinder.prototype.scoreMostSpecific = function(decl1, decl2, checkInstance, allowDerived) {
try {
var ctx1 = this.context.newLocalContext();
decl1.registerArguments(ctx1);
var ctx2 = this.context.newLocalContext();
decl2.registerArguments(ctx2);
var ass1 = this.methodCall.makeAssignments(this.context, decl1);
var ass2 = this.methodCall.makeAssignments(this.context, decl2);
for(var i=0;i0) {
return this.tokens.shift();
}
this.interpret(this.nextLexerToken());
return this.nextToken();
};
EIndentingLexer.prototype.interpret = function(token) {
switch(token.type) {
case ELexer.EOF:
this.interpretEOF(token);
break;
case ELexer.LF_TAB:
this.interpretLFTAB(token);
break;
default:
this.interpretAnyToken(token);
}
};
EIndentingLexer.prototype.interpretEOF = function(eof) {
// gracefully handle missing dedents
while(this.indents.length>1) {
this.tokens.push(this.deriveToken(eof, ELexer.DEDENT));
this.tokens.push(this.deriveToken(eof, ELexer.LF));
this.wasLF = true;
this.indents.pop();
}
// gracefully handle missing lf
if(!this.wasLF && this.addLF) {
this.tokens.push(this.deriveToken(eof, ELexer.LF));
}
this.tokens.push(eof);
};
EIndentingLexer.prototype.interpretLFTAB = function(lftab) {
// count TABs following LF
var indentCount = this.countIndents(lftab.text);
var next = this.nextLexerToken();
// if this was an empty line, simply skip it
if(next.type===ELexer.EOF || next.type===ELexer.LF_TAB) {
this.tokens.push(this.deriveToken(lftab, ELexer.LF));
this.interpret(next);
} else if(indentCount===this.indents[this.indents.length-1]) {
this.tokens.push(this.deriveToken(lftab, ELexer.LF));
this.interpret(next);
} else if(indentCount>this.indents[this.indents.length-1]) {
this.tokens.push(this.deriveToken(lftab, ELexer.LF));
this.tokens.push(this.deriveToken(lftab, ELexer.INDENT));
this.indents.push(indentCount);
this.interpret(next);
} else {
while(this.indents.length>1 && indentCountthis.indents[this.indents.length-1]) {
// TODO, fire an error through token
}
this.interpret(next);
/*jshint noempty:true*/
}
};
EIndentingLexer.prototype.deriveToken = function(token, type) {
var res = token.clone();
res.type = type;
if(token.type === ELexer.EOF)
res._text = ""
return res;
};
EIndentingLexer.prototype.countIndents = function(text) {
var count = 0;
for(var i=0;i\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\u0003\u0002\u0003\u0002\u0007\u0002\u0194\n\u0002\f\u0002",
"\u000e\u0002\u0197\u000b\u0002\u0003\u0003\u0003\u0003\u0003\u0003\u0003",
"\u0004\u0005\u0004\u019d\n\u0004\u0003\u0004\u0003\u0004\u0003\u0005",
"\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0006\u0003\u0006\u0003\u0006",
"\u0003\u0006\u0003\u0007\u0003\u0007\u0003\u0007\u0003\u0007\u0007\u0007",
"\u01ad\n\u0007\f\u0007\u000e\u0007\u01b0\u000b\u0007\u0003\u0007\u0003",
"\u0007\u0003\u0007\u0003\u0007\u0003\u0007\u0003\u0007\u0007\u0007\u01b8",
"\n\u0007\f\u0007\u000e\u0007\u01bb\u000b\u0007\u0005\u0007\u01bd\n\u0007",
"\u0003\b\u0007\b\u01c0\n\b\f\b\u000e\b\u01c3\u000b\b\u0003\t\u0003\t",
"\u0003\t\u0003\t\u0003\t\u0003\t\u0003\n\u0003\n\u0003\n\u0003\n\u0003",
"\u000b\u0003\u000b\u0003\u000b\u0003\u000b\u0003\u000b\u0003\u000b\u0003",
"\u000b\u0003\u000b\u0003\u000b\u0003\f\u0003\f\u0003\f\u0003\f\u0003",
"\f\u0003\f\u0003\f\u0003\f\u0003\f\u0003\r\u0003\r\u0003\r\u0003\r\u0003",
"\r\u0003\r\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\u000f\u0003\u000f\u0003\u0010\u0003\u0010\u0003\u0011\u0003\u0011",
"\u0005\u0011\u01fa\n\u0011\u0003\u0012\u0003\u0012\u0003\u0012\u0003",
"\u0013\u0003\u0013\u0005\u0013\u0201\n\u0013\u0003\u0014\u0003\u0014",
"\u0005\u0014\u0205\n\u0014\u0003\u0015\u0003\u0015\u0007\u0015\u0209",
"\n\u0015\f\u0015\u000e\u0015\u020c\u000b\u0015\u0005\u0015\u020e\n\u0015",
"\u0003\u0015\u0003\u0015\u0003\u0016\u0003\u0016\u0005\u0016\u0214\n",
"\u0016\u0003\u0017\u0003\u0017\u0007\u0017\u0218\n\u0017\f\u0017\u000e",
"\u0017\u021b\u000b\u0017\u0005\u0017\u021d\n\u0017\u0003\u0017\u0003",
"\u0017\u0003\u0018\u0003\u0018\u0005\u0018\u0223\n\u0018\u0003\u0019",
"\u0003\u0019\u0007\u0019\u0227\n\u0019\f\u0019\u000e\u0019\u022a\u000b",
"\u0019\u0005\u0019\u022c\n\u0019\u0003\u0019\u0003\u0019\u0003\u001a",
"\u0003\u001a\u0005\u001a\u0232\n\u001a\u0003\u001b\u0003\u001b\u0003",
"\u001c\u0003\u001c\u0003\u001d\u0003\u001d\u0003\u001d\u0003\u001e\u0003",
"\u001e\u0003\u001f\u0003\u001f\u0003\u001f\u0003 \u0003 \u0005 \u0242",
"\n \u0003!\u0003!\u0003\"\u0003\"\u0003#\u0003#\u0003$\u0003$\u0003",
"%\u0003%\u0003&\u0003&\u0003\'\u0003\'\u0003\'\u0003(\u0003(\u0003)",
"\u0003)\u0003)\u0003*\u0003*\u0003*\u0003+\u0003+\u0003+\u0003+\u0003",
",\u0003,\u0003-\u0003-\u0003-\u0003.\u0003.\u0003.\u0003/\u0003/\u0003",
"/\u00030\u00030\u00031\u00031\u00031\u00032\u00032\u00032\u00033\u0003",
"3\u00033\u00033\u00033\u00033\u00033\u00033\u00034\u00034\u00034\u0003",
"4\u00034\u00034\u00034\u00034\u00034\u00034\u00035\u00035\u00035\u0003",
"5\u00035\u00036\u00036\u00036\u00036\u00036\u00036\u00036\u00036\u0003",
"7\u00037\u00037\u00037\u00037\u00037\u00037\u00037\u00038\u00038\u0003",
"8\u00038\u00038\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@\u0003A\u0003A\u0003",
"A\u0003A\u0003A\u0003A\u0003B\u0003B\u0003B\u0003B\u0003B\u0003C\u0003",
"C\u0003C\u0003C\u0003C\u0003C\u0003C\u0003C\u0003C\u0003D\u0003D\u0003",
"D\u0003D\u0003D\u0003D\u0003D\u0003E\u0003E\u0003E\u0003E\u0003E\u0003",
"F\u0003F\u0003F\u0003F\u0003F\u0003F\u0003F\u0003F\u0003F\u0003G\u0003",
"G\u0003G\u0003G\u0003H\u0003H\u0003H\u0003H\u0003H\u0003H\u0003H\u0003",
"I\u0003I\u0003I\u0003I\u0003J\u0003J\u0003J\u0003J\u0003K\u0003K\u0003",
"K\u0003L\u0003L\u0003L\u0003L\u0003L\u0003L\u0003L\u0003L\u0003L\u0003",
"L\u0003L\u0003L\u0005L\u0320\nL\u0003M\u0003M\u0003M\u0003M\u0003M\u0003",
"N\u0003N\u0003N\u0003N\u0003N\u0003N\u0003N\u0003N\u0003N\u0003N\u0003",
"O\u0003O\u0003O\u0003O\u0003O\u0003O\u0003O\u0003O\u0003O\u0003O\u0003",
"O\u0003P\u0003P\u0003P\u0003P\u0003P\u0003P\u0003P\u0003P\u0003P\u0003",
"Q\u0003Q\u0003Q\u0003Q\u0003Q\u0003Q\u0003R\u0003R\u0003R\u0003S\u0003",
"S\u0003S\u0003S\u0003S\u0003T\u0003T\u0003T\u0003T\u0003T\u0003T\u0003",
"U\u0003U\u0003U\u0003U\u0003U\u0003U\u0003U\u0003U\u0003U\u0003V\u0003",
"V\u0003V\u0003V\u0003V\u0003V\u0003W\u0003W\u0003W\u0003W\u0003W\u0003",
"W\u0003X\u0003X\u0003X\u0003X\u0003X\u0003X\u0003X\u0003X\u0003X\u0003",
"Y\u0003Y\u0003Y\u0003Y\u0003Z\u0003Z\u0003Z\u0003Z\u0003Z\u0003Z\u0003",
"Z\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",
"]\u0005]\u039f\n]\u0003^\u0003^\u0003^\u0003_\u0003_\u0003_\u0003_\u0003",
"_\u0003_\u0003`\u0003`\u0003`\u0003`\u0003`\u0003a\u0003a\u0003a\u0003",
"a\u0003a\u0003b\u0003b\u0003b\u0003b\u0003b\u0003c\u0003c\u0003c\u0003",
"c\u0003c\u0003c\u0003c\u0003c\u0003c\u0003c\u0003c\u0003d\u0003d\u0003",
"d\u0003d\u0003d\u0003d\u0003d\u0003e\u0003e\u0003e\u0003e\u0003e\u0003",
"e\u0003e\u0003e\u0003f\u0003f\u0003f\u0003f\u0003f\u0003f\u0003f\u0003",
"f\u0003f\u0003f\u0003g\u0003g\u0003g\u0003g\u0003g\u0003g\u0003g\u0003",
"g\u0003h\u0003h\u0003h\u0003h\u0003h\u0003h\u0003i\u0003i\u0003i\u0003",
"i\u0003i\u0003i\u0003i\u0003i\u0003i\u0003j\u0003j\u0003j\u0003j\u0003",
"j\u0003j\u0003j\u0003j\u0003k\u0003k\u0003k\u0003k\u0003k\u0003k\u0003",
"l\u0003l\u0003l\u0003l\u0003m\u0003m\u0003m\u0003m\u0003m\u0003n\u0003",
"n\u0003n\u0003n\u0003n\u0003n\u0003n\u0003o\u0003o\u0003o\u0003o\u0003",
"p\u0003p\u0003p\u0003q\u0003q\u0003q\u0003r\u0003r\u0003r\u0003r\u0003",
"r\u0003r\u0003s\u0003s\u0003s\u0003s\u0003s\u0003s\u0003s\u0003t\u0003",
"t\u0003t\u0003u\u0003u\u0003u\u0003u\u0003u\u0003u\u0003u\u0003u\u0003",
"u\u0003v\u0003v\u0003v\u0003v\u0003v\u0003v\u0003v\u0003w\u0003w\u0003",
"w\u0003w\u0003w\u0003w\u0003w\u0003w\u0003x\u0003x\u0003x\u0003x\u0003",
"x\u0003x\u0003x\u0003y\u0003y\u0003y\u0003y\u0003y\u0003y\u0003y\u0003",
"y\u0003z\u0003z\u0003z\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",
"}\u0005}\u0471\n}\u0003~\u0003~\u0003~\u0003~\u0003~\u0003\u007f\u0003",
"\u007f\u0003\u007f\u0003\u0080\u0003\u0080\u0003\u0080\u0003\u0080\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\u0082\u0003\u0083\u0003\u0083\u0003\u0083\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",
"\u0085\u0003\u0085\u0003\u0085\u0003\u0086\u0003\u0086\u0003\u0086\u0003",
"\u0086\u0003\u0086\u0003\u0087\u0003\u0087\u0003\u0087\u0003\u0087\u0003",
"\u0087\u0003\u0087\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\u0089\u0003\u0089\u0003\u0089\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\u008c\u0003\u008c\u0003\u008c\u0003",
"\u008c\u0003\u008c\u0003\u008c\u0003\u008c\u0003\u008c\u0003\u008c\u0003",
"\u008c\u0003\u008d\u0003\u008d\u0003\u008d\u0003\u008d\u0003\u008d\u0003",
"\u008e\u0003\u008e\u0003\u008e\u0003\u008e\u0003\u008e\u0003\u008f\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\u0090\u0003\u0091\u0003\u0091\u0003",
"\u0091\u0003\u0091\u0003\u0091\u0003\u0091\u0003\u0091\u0003\u0092\u0003",
"\u0092\u0003\u0092\u0003\u0092\u0003\u0092\u0003\u0092\u0003\u0092\u0003",
"\u0092\u0003\u0092\u0003\u0093\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\u0096\u0003\u0096\u0003\u0096\u0003\u0096\u0003",
"\u0096\u0003\u0097\u0003\u0097\u0003\u0097\u0003\u0097\u0003\u0097\u0003",
"\u0098\u0003\u0098\u0003\u0098\u0003\u0098\u0003\u0098\u0003\u0098\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",
"\u009b\u0003\u009b\u0003\u009b\u0003\u009b\u0003\u009b\u0003\u009c\u0003",
"\u009c\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\u009f\u0003\u009f\u0003",
"\u009f\u0003\u009f\u0003\u009f\u0003\u009f\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\u00a2\u0003\u00a2\u0003",
"\u00a2\u0003\u00a2\u0003\u00a2\u0003\u00a2\u0003\u00a2\u0003\u00a2\u0003",
"\u00a2\u0003\u00a2\u0003\u00a2\u0003\u00a2\u0003\u00a2\u0003\u00a2\u0003",
"\u00a2\u0003\u00a2\u0003\u00a2\u0003\u00a2\u0005\u00a2\u0567\n\u00a2",
"\u0003\u00a3\u0003\u00a3\u0003\u00a3\u0005\u00a3\u056c\n\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\u00a5\u0003\u00a5\u0003\u00a5\u0003\u00a5\u0003\u00a5\u0003",
"\u00a5\u0003\u00a5\u0003\u00a6\u0003\u00a6\u0007\u00a6\u058a\n\u00a6",
"\f\u00a6\u000e\u00a6\u058d\u000b\u00a6\u0003\u00a7\u0003\u00a7\u0007",
"\u00a7\u0591\n\u00a7\f\u00a7\u000e\u00a7\u0594\u000b\u00a7\u0003\u00a8",
"\u0003\u00a8\u0007\u00a8\u0598\n\u00a8\f\u00a8\u000e\u00a8\u059b\u000b",
"\u00a8\u0003\u00a9\u0003\u00a9\u0007\u00a9\u059f\n\u00a9\f\u00a9\u000e",
"\u00a9\u05a2\u000b\u00a9\u0003\u00aa\u0003\u00aa\u0006\u00aa\u05a6\n",
"\u00aa\r\u00aa\u000e\u00aa\u05a7\u0003\u00ab\u0003\u00ab\u0006\u00ab",
"\u05ac\n\u00ab\r\u00ab\u000e\u00ab\u05ad\u0003\u00ac\u0003\u00ac\u0005",
"\u00ac\u05b2\n\u00ac\u0003\u00ad\u0003\u00ad\u0003\u00ae\u0003\u00ae",
"\u0003\u00af\u0003\u00af\u0003\u00af\u0007\u00af\u05bb\n\u00af\f\u00af",
"\u000e\u00af\u05be\u000b\u00af\u0003\u00af\u0003\u00af\u0003\u00b0\u0003",
"\u00b0\u0003\u00b0\u0003\u00b0\u0003\u00b0\u0003\u00b0\u0003\u00b0\u0003",
"\u00b0\u0003\u00b0\u0003\u00b0\u0003\u00b0\u0003\u00b0\u0003\u00b0\u0003",
"\u00b0\u0003\u00b0\u0003\u00b0\u0003\u00b0\u0003\u00b0\u0003\u00b0\u0003",
"\u00b0\u0003\u00b0\u0003\u00b0\u0003\u00b0\u0003\u00b1\u0003\u00b1\u0003",
"\u00b2\u0003\u00b2\u0003\u00b3\u0003\u00b3\u0003\u00b4\u0003\u00b4\u0003",
"\u00b4\u0007\u00b4\u05e2\n\u00b4\f\u00b4\u000e\u00b4\u05e5\u000b\u00b4",
"\u0005\u00b4\u05e7\n\u00b4\u0003\u00b5\u0003\u00b5\u0003\u00b5\u0006",
"\u00b5\u05ec\n\u00b5\r\u00b5\u000e\u00b5\u05ed\u0003\u00b5\u0005\u00b5",
"\u05f1\n\u00b5\u0003\u00b6\u0003\u00b6\u0005\u00b6\u05f5\n\u00b6\u0003",
"\u00b6\u0006\u00b6\u05f8\n\u00b6\r\u00b6\u000e\u00b6\u05f9\u0003\u00b7",
"\u0003\u00b7\u0003\u00b7\u0003\u00b7\u0005\u00b7\u0600\n\u00b7\u0003",
"\u00b7\u0006\u00b7\u0603\n\u00b7\r\u00b7\u000e\u00b7\u0604\u0003\u00b8",
"\u0003\u00b8\u0003\u00b9\u0003\u00b9\u0003\u00b9\u0003\u00b9\u0006\u00b9",
"\u060d\n\u00b9\r\u00b9\u000e\u00b9\u060e\u0005\u00b9\u0611\n\u00b9\u0003",
"\u00ba\u0003\u00ba\u0003\u00ba\u0003\u00ba\u0003\u00ba\u0005\u00ba\u0618",
"\n\u00ba\u0003\u00ba\u0003\u00ba\u0003\u00bb\u0003\u00bb\u0003\u00bb",
"\u0003\u00bb\u0003\u00bc\u0003\u00bc\u0003\u00bc\u0003\u00bc\u0003\u00bc",
"\u0003\u00bc\u0003\u00bc\u0003\u00bc\u0003\u00bc\u0003\u00bc\u0003\u00bc",
"\u0003\u00bc\u0005\u00bc\u062c\n\u00bc\u0005\u00bc\u062e\n\u00bc\u0005",
"\u00bc\u0630\n\u00bc\u0005\u00bc\u0632\n\u00bc\u0003\u00bd\u0003\u00bd",
"\u0003\u00bd\u0003\u00bd\u0003\u00be\u0003\u00be\u0003\u00be\u0003\u00be",
"\u0003\u00be\u0003\u00be\u0003\u00be\u0003\u00be\u0003\u00be\u0003\u00be",
"\u0003\u00be\u0003\u00bf\u0003\u00bf\u0003\u00bf\u0003\u00bf\u0003\u00bf",
"\u0003\u00bf\u0003\u00bf\u0005\u00bf\u064a\n\u00bf\u0003\u00c0\u0003",
"\u00c0\u0003\u00c0\u0005\u00c0\u064f\n\u00c0\u0003\u00c0\u0005\u00c0",
"\u0652\n\u00c0\u0003\u00c0\u0005\u00c0\u0655\n\u00c0\u0003\u00c0\u0003",
"\u00c0\u0003\u00c0\u0005\u00c0\u065a\n\u00c0\u0003\u00c0\u0005\u00c0",
"\u065d\n\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0005\u00c0\u0662",
"\n\u00c0\u0003\u00c0\u0003\u00c0\u0005\u00c0\u0666\n\u00c0\u0003\u00c0",
"\u0003\u00c0\u0003\u00c1\u0005\u00c1\u066b\n\u00c1\u0003\u00c1\u0003",
"\u00c1\u0003\u00c1\u0003\u00c2\u0005\u00c2\u0671\n\u00c2\u0003\u00c2",
"\u0003\u00c2\u0003\u00c2\u0003\u00c3\u0005\u00c3\u0677\n\u00c3\u0003",
"\u00c3\u0003\u00c3\u0003\u00c3\u0003\u00c4\u0005\u00c4\u067d\n\u00c4",
"\u0003\u00c4\u0003\u00c4\u0003\u00c4\u0003\u00c5\u0005\u00c5\u0683\n",
"\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c6\u0005\u00c6\u0689",
"\n\u00c6\u0003\u00c6\u0003\u00c6\u0003\u00c6\u0007\u00c6\u068e\n\u00c6",
"\f\u00c6\u000e\u00c6\u0691\u000b\u00c6\u0003\u00c6\u0003\u00c6\u0005",
"\u00c6\u0695\n\u00c6\u0003\u00c6\u0003\u00c6\u0003\u00c7\u0003\u00c7",
"\u0003\u00c7\u0003\u00c8\u0003\u00c8\u0003\u00c8\u0003\u00c8\u0003\u00c8",
"\u0003\u00c8\u0003\u00c8\u0003\u00c8\u0003\u00c8\u0003\u00c8\u0003\u00c8",
"\u0005\u00c8\u06a7\n\u00c8\u0005\u00c8\u06a9\n\u00c8\u0003\u00c8\u0003",
"\u00c8\u0004\u01ae\u01c1\u0002\u00c9\u0003\u0005\u0005\u0006\u0007\u0007",
"\t\b\u000b\t\r\n\u000f\u0002\u0011\u000b\u0013\f\u0015\r\u0017\u000e",
"\u0019\u000f\u001b\u0010\u001d\u0011\u001f\u0012!\u0013#\u0014%\u0015",
"\'\u0016)\u0017+\u0018-\u0019/\u001a1\u001b3\u001c5\u001d7\u001e9\u001f",
"; =!?\"A#C$E%G&I\'K(M)O*Q+S,U-W.Y/[0]1_2a3c4e5g6i7k8m9o:q;sy?{",
"@}A\u007fB\u0081C\u0083D\u0085E\u0087F\u0089G\u008bH\u008dI\u008fJ\u0091",
"K\u0093L\u0095M\u0097N\u0099O\u009bP\u009dQ\u009fR\u00a1S\u00a3T\u00a5",
"U\u00a7V\u00a9W\u00abX\u00adY\u00afZ\u00b1[\u00b3\\\u00b5]\u00b7^\u00b9",
"_\u00bb`\u00bda\u00bfb\u00c1c\u00c3d\u00c5e\u00c7f\u00c9g\u00cbh\u00cd",
"i\u00cfj\u00d1k\u00d3l\u00d5m\u00d7n\u00d9o\u00dbp\u00ddq\u00dfr\u00e1",
"s\u00e3t\u00e5u\u00e7v\u00e9w\u00ebx\u00edy\u00efz\u00f1{\u00f3|\u00f5",
"}\u00f7~\u00f9\u007f\u00fb\u0080\u00fd\u0081\u00ff\u0082\u0101\u0083",
"\u0103\u0084\u0105\u0085\u0107\u0086\u0109\u0087\u010b\u0088\u010d\u0089",
"\u010f\u008a\u0111\u008b\u0113\u008c\u0115\u008d\u0117\u008e\u0119\u008f",
"\u011b\u0090\u011d\u0091\u011f\u0092\u0121\u0093\u0123\u0094\u0125\u0095",
"\u0127\u0096\u0129\u0097\u012b\u0098\u012d\u0099\u012f\u009a\u0131\u009b",
"\u0133\u009c\u0135\u009d\u0137\u009e\u0139\u009f\u013b\u00a0\u013d\u00a1",
"\u013f\u00a2\u0141\u00a3\u0143\u00a4\u0145\u00a5\u0147\u00a6\u0149\u00a7",
"\u014b\u00a8\u014d\u00a9\u014f\u00aa\u0151\u00ab\u0153\u00ac\u0155\u00ad",
"\u0157\u0002\u0159\u0002\u015b\u0002\u015d\u00ae\u015f\u00af\u0161\u00b0",
"\u0163\u00b1\u0165\u00b2\u0167\u0002\u0169\u0002\u016b\u0002\u016d\u0002",
"\u016f\u0002\u0171\u0002\u0173\u00b3\u0175\u00b4\u0177\u0002\u0179\u00b5",
"\u017b\u0002\u017d\u0002\u017f\u00b6\u0181\u0002\u0183\u0002\u0185\u0002",
"\u0187\u0002\u0189\u0002\u018b\u0002\u018d\u0002\u018f\u00b7\u0003\u0002",
"\u0012\u0004\u0002\u000b\u000b\"\"\u0004\u0002\f\f\u000f\u000f\u0006",
"\u0002>>@@}}\u007f\u007f\u0006\u0002\f\f\u000f\u000f))^^\u0003\u0002",
"C\\\u0005\u00022;C\\aa\u0003\u0002c|\u0006\u00022;C\\aac|\u0005\u0002",
"C\\aac|\u0003\u00022;\u0006\u0002\f\f\u000f\u000f$$^^\u0003\u00023;",
"\u0004\u0002GGgg\u0004\u0002--//\u0005\u00022;CHch\n\u0002$$))^^ddh",
"hppttvv\u0002\u06dd\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\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\u0002",
"5\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\u0002",
"K\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_\u0003\u0002\u0002\u0002\u0002",
"a\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",
"\u0002s\u0003\u0002\u0002\u0002\u0002u\u0003\u0002\u0002\u0002\u0002",
"w\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\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\u0173\u0003\u0002\u0002\u0002\u0002\u0175\u0003",
"\u0002\u0002\u0002\u0002\u0179\u0003\u0002\u0002\u0002\u0002\u017f\u0003",
"\u0002\u0002\u0002\u0002\u018f\u0003\u0002\u0002\u0002\u0003\u0191\u0003",
"\u0002\u0002\u0002\u0005\u0198\u0003\u0002\u0002\u0002\u0007\u019c\u0003",
"\u0002\u0002\u0002\t\u01a0\u0003\u0002\u0002\u0002\u000b\u01a4\u0003",
"\u0002\u0002\u0002\r\u01bc\u0003\u0002\u0002\u0002\u000f\u01c1\u0003",
"\u0002\u0002\u0002\u0011\u01c4\u0003\u0002\u0002\u0002\u0013\u01ca\u0003",
"\u0002\u0002\u0002\u0015\u01ce\u0003\u0002\u0002\u0002\u0017\u01d7\u0003",
"\u0002\u0002\u0002\u0019\u01e0\u0003\u0002\u0002\u0002\u001b\u01ec\u0003",
"\u0002\u0002\u0002\u001d\u01f3\u0003\u0002\u0002\u0002\u001f\u01f5\u0003",
"\u0002\u0002\u0002!\u01f7\u0003\u0002\u0002\u0002#\u01fb\u0003\u0002",
"\u0002\u0002%\u01fe\u0003\u0002\u0002\u0002\'\u0202\u0003\u0002\u0002",
"\u0002)\u020d\u0003\u0002\u0002\u0002+\u0211\u0003\u0002\u0002\u0002",
"-\u021c\u0003\u0002\u0002\u0002/\u0220\u0003\u0002\u0002\u00021\u022b",
"\u0003\u0002\u0002\u00023\u022f\u0003\u0002\u0002\u00025\u0233\u0003",
"\u0002\u0002\u00027\u0235\u0003\u0002\u0002\u00029\u0237\u0003\u0002",
"\u0002\u0002;\u023a\u0003\u0002\u0002\u0002=\u023c\u0003\u0002\u0002",
"\u0002?\u023f\u0003\u0002\u0002\u0002A\u0243\u0003\u0002\u0002\u0002",
"C\u0245\u0003\u0002\u0002\u0002E\u0247\u0003\u0002\u0002\u0002G\u0249",
"\u0003\u0002\u0002\u0002I\u024b\u0003\u0002\u0002\u0002K\u024d\u0003",
"\u0002\u0002\u0002M\u024f\u0003\u0002\u0002\u0002O\u0252\u0003\u0002",
"\u0002\u0002Q\u0254\u0003\u0002\u0002\u0002S\u0257\u0003\u0002\u0002",
"\u0002U\u025a\u0003\u0002\u0002\u0002W\u025e\u0003\u0002\u0002\u0002",
"Y\u0260\u0003\u0002\u0002\u0002[\u0263\u0003\u0002\u0002\u0002]\u0266",
"\u0003\u0002\u0002\u0002_\u0269\u0003\u0002\u0002\u0002a\u026b\u0003",
"\u0002\u0002\u0002c\u026e\u0003\u0002\u0002\u0002e\u0271\u0003\u0002",
"\u0002\u0002g\u0279\u0003\u0002\u0002\u0002i\u0283\u0003\u0002\u0002",
"\u0002k\u0288\u0003\u0002\u0002\u0002m\u0290\u0003\u0002\u0002\u0002",
"o\u0298\u0003\u0002\u0002\u0002q\u029d\u0003\u0002\u0002\u0002s\u02a2",
"\u0003\u0002\u0002\u0002u\u02ab\u0003\u0002\u0002\u0002w\u02b2\u0003",
"\u0002\u0002\u0002y\u02ba\u0003\u0002\u0002\u0002{\u02c1\u0003\u0002",
"\u0002\u0002}\u02c6\u0003\u0002\u0002\u0002\u007f\u02cf\u0003\u0002",
"\u0002\u0002\u0081\u02d4\u0003\u0002\u0002\u0002\u0083\u02da\u0003\u0002",
"\u0002\u0002\u0085\u02df\u0003\u0002\u0002\u0002\u0087\u02e8\u0003\u0002",
"\u0002\u0002\u0089\u02ef\u0003\u0002\u0002\u0002\u008b\u02f4\u0003\u0002",
"\u0002\u0002\u008d\u02fd\u0003\u0002\u0002\u0002\u008f\u0301\u0003\u0002",
"\u0002\u0002\u0091\u0308\u0003\u0002\u0002\u0002\u0093\u030c\u0003\u0002",
"\u0002\u0002\u0095\u0310\u0003\u0002\u0002\u0002\u0097\u031f\u0003\u0002",
"\u0002\u0002\u0099\u0321\u0003\u0002\u0002\u0002\u009b\u0326\u0003\u0002",
"\u0002\u0002\u009d\u0330\u0003\u0002\u0002\u0002\u009f\u033b\u0003\u0002",
"\u0002\u0002\u00a1\u0344\u0003\u0002\u0002\u0002\u00a3\u034a\u0003\u0002",
"\u0002\u0002\u00a5\u034d\u0003\u0002\u0002\u0002\u00a7\u0352\u0003\u0002",
"\u0002\u0002\u00a9\u0358\u0003\u0002\u0002\u0002\u00ab\u0361\u0003\u0002",
"\u0002\u0002\u00ad\u0367\u0003\u0002\u0002\u0002\u00af\u036d\u0003\u0002",
"\u0002\u0002\u00b1\u0376\u0003\u0002\u0002\u0002\u00b3\u037a\u0003\u0002",
"\u0002\u0002\u00b5\u0382\u0003\u0002\u0002\u0002\u00b7\u0389\u0003\u0002",
"\u0002\u0002\u00b9\u039e\u0003\u0002\u0002\u0002\u00bb\u03a0\u0003\u0002",
"\u0002\u0002\u00bd\u03a3\u0003\u0002\u0002\u0002\u00bf\u03a9\u0003\u0002",
"\u0002\u0002\u00c1\u03ae\u0003\u0002\u0002\u0002\u00c3\u03b3\u0003\u0002",
"\u0002\u0002\u00c5\u03b8\u0003\u0002\u0002\u0002\u00c7\u03c3\u0003\u0002",
"\u0002\u0002\u00c9\u03ca\u0003\u0002\u0002\u0002\u00cb\u03d2\u0003\u0002",
"\u0002\u0002\u00cd\u03dc\u0003\u0002\u0002\u0002\u00cf\u03e4\u0003\u0002",
"\u0002\u0002\u00d1\u03ea\u0003\u0002\u0002\u0002\u00d3\u03f3\u0003\u0002",
"\u0002\u0002\u00d5\u03fb\u0003\u0002\u0002\u0002\u00d7\u0401\u0003\u0002",
"\u0002\u0002\u00d9\u0405\u0003\u0002\u0002\u0002\u00db\u040a\u0003\u0002",
"\u0002\u0002\u00dd\u0411\u0003\u0002\u0002\u0002\u00df\u0415\u0003\u0002",
"\u0002\u0002\u00e1\u0418\u0003\u0002\u0002\u0002\u00e3\u041b\u0003\u0002",
"\u0002\u0002\u00e5\u0421\u0003\u0002\u0002\u0002\u00e7\u0428\u0003\u0002",
"\u0002\u0002\u00e9\u042b\u0003\u0002\u0002\u0002\u00eb\u0434\u0003\u0002",
"\u0002\u0002\u00ed\u043b\u0003\u0002\u0002\u0002\u00ef\u0443\u0003\u0002",
"\u0002\u0002\u00f1\u044a\u0003\u0002\u0002\u0002\u00f3\u0452\u0003\u0002",
"\u0002\u0002\u00f5\u0459\u0003\u0002\u0002\u0002\u00f7\u045e\u0003\u0002",
"\u0002\u0002\u00f9\u0470\u0003\u0002\u0002\u0002\u00fb\u0472\u0003\u0002",
"\u0002\u0002\u00fd\u0477\u0003\u0002\u0002\u0002\u00ff\u047a\u0003\u0002",
"\u0002\u0002\u0101\u047e\u0003\u0002\u0002\u0002\u0103\u0483\u0003\u0002",
"\u0002\u0002\u0105\u048c\u0003\u0002\u0002\u0002\u0107\u048f\u0003\u0002",
"\u0002\u0002\u0109\u0495\u0003\u0002\u0002\u0002\u010b\u049f\u0003\u0002",
"\u0002\u0002\u010d\u04a4\u0003\u0002\u0002\u0002\u010f\u04aa\u0003\u0002",
"\u0002\u0002\u0111\u04af\u0003\u0002\u0002\u0002\u0113\u04b9\u0003\u0002",
"\u0002\u0002\u0115\u04c2\u0003\u0002\u0002\u0002\u0117\u04c9\u0003\u0002",
"\u0002\u0002\u0119\u04d3\u0003\u0002\u0002\u0002\u011b\u04d8\u0003\u0002",
"\u0002\u0002\u011d\u04dd\u0003\u0002\u0002\u0002\u011f\u04e4\u0003\u0002",
"\u0002\u0002\u0121\u04ee\u0003\u0002\u0002\u0002\u0123\u04f5\u0003\u0002",
"\u0002\u0002\u0125\u04fe\u0003\u0002\u0002\u0002\u0127\u0504\u0003\u0002",
"\u0002\u0002\u0129\u050b\u0003\u0002\u0002\u0002\u012b\u0510\u0003\u0002",
"\u0002\u0002\u012d\u0515\u0003\u0002\u0002\u0002\u012f\u051a\u0003\u0002",
"\u0002\u0002\u0131\u0520\u0003\u0002\u0002\u0002\u0133\u0523\u0003\u0002",
"\u0002\u0002\u0135\u0527\u0003\u0002\u0002\u0002\u0137\u0531\u0003\u0002",
"\u0002\u0002\u0139\u0538\u0003\u0002\u0002\u0002\u013b\u053d\u0003\u0002",
"\u0002\u0002\u013d\u0542\u0003\u0002\u0002\u0002\u013f\u0548\u0003\u0002",
"\u0002\u0002\u0141\u054e\u0003\u0002\u0002\u0002\u0143\u0566\u0003\u0002",
"\u0002\u0002\u0145\u0568\u0003\u0002\u0002\u0002\u0147\u056f\u0003\u0002",
"\u0002\u0002\u0149\u057b\u0003\u0002\u0002\u0002\u014b\u0587\u0003\u0002",
"\u0002\u0002\u014d\u058e\u0003\u0002\u0002\u0002\u014f\u0595\u0003\u0002",
"\u0002\u0002\u0151\u059c\u0003\u0002\u0002\u0002\u0153\u05a3\u0003\u0002",
"\u0002\u0002\u0155\u05a9\u0003\u0002\u0002\u0002\u0157\u05b1\u0003\u0002",
"\u0002\u0002\u0159\u05b3\u0003\u0002\u0002\u0002\u015b\u05b5\u0003\u0002",
"\u0002\u0002\u015d\u05b7\u0003\u0002\u0002\u0002\u015f\u05c1\u0003\u0002",
"\u0002\u0002\u0161\u05d8\u0003\u0002\u0002\u0002\u0163\u05da\u0003\u0002",
"\u0002\u0002\u0165\u05dc\u0003\u0002\u0002\u0002\u0167\u05e6\u0003\u0002",
"\u0002\u0002\u0169\u05e8\u0003\u0002\u0002\u0002\u016b\u05f2\u0003\u0002",
"\u0002\u0002\u016d\u05ff\u0003\u0002\u0002\u0002\u016f\u0606\u0003\u0002",
"\u0002\u0002\u0171\u0608\u0003\u0002\u0002\u0002\u0173\u0612\u0003\u0002",
"\u0002\u0002\u0175\u061b\u0003\u0002\u0002\u0002\u0177\u061f\u0003\u0002",
"\u0002\u0002\u0179\u0633\u0003\u0002\u0002\u0002\u017b\u0637\u0003\u0002",
"\u0002\u0002\u017d\u0649\u0003\u0002\u0002\u0002\u017f\u064b\u0003\u0002",
"\u0002\u0002\u0181\u066a\u0003\u0002\u0002\u0002\u0183\u0670\u0003\u0002",
"\u0002\u0002\u0185\u0676\u0003\u0002\u0002\u0002\u0187\u067c\u0003\u0002",
"\u0002\u0002\u0189\u0682\u0003\u0002\u0002\u0002\u018b\u0688\u0003\u0002",
"\u0002\u0002\u018d\u0698\u0003\u0002\u0002\u0002\u018f\u069b\u0003\u0002",
"\u0002\u0002\u0191\u0195\u0005\u0007\u0004\u0002\u0192\u0194\t\u0002",
"\u0002\u0002\u0193\u0192\u0003\u0002\u0002\u0002\u0194\u0197\u0003\u0002",
"\u0002\u0002\u0195\u0193\u0003\u0002\u0002\u0002\u0195\u0196\u0003\u0002",
"\u0002\u0002\u0196\u0004\u0003\u0002\u0002\u0002\u0197\u0195\u0003\u0002",
"\u0002\u0002\u0198\u0199\u0007^\u0002\u0002\u0199\u019a\u0005\u0003",
"\u0002\u0002\u019a\u0006\u0003\u0002\u0002\u0002\u019b\u019d\u0007\u000f",
"\u0002\u0002\u019c\u019b\u0003\u0002\u0002\u0002\u019c\u019d\u0003\u0002",
"\u0002\u0002\u019d\u019e\u0003\u0002\u0002\u0002\u019e\u019f\u0007\f",
"\u0002\u0002\u019f\b\u0003\u0002\u0002\u0002\u01a0\u01a1\u0007\u000b",
"\u0002\u0002\u01a1\u01a2\u0003\u0002\u0002\u0002\u01a2\u01a3\b\u0005",
"\u0002\u0002\u01a3\n\u0003\u0002\u0002\u0002\u01a4\u01a5\u0007\"\u0002",
"\u0002\u01a5\u01a6\u0003\u0002\u0002\u0002\u01a6\u01a7\b\u0006\u0002",
"\u0002\u01a7\f\u0003\u0002\u0002\u0002\u01a8\u01a9\u00071\u0002\u0002",
"\u01a9\u01aa\u0007,\u0002\u0002\u01aa\u01ae\u0003\u0002\u0002\u0002",
"\u01ab\u01ad\u000b\u0002\u0002\u0002\u01ac\u01ab\u0003\u0002\u0002\u0002",
"\u01ad\u01b0\u0003\u0002\u0002\u0002\u01ae\u01af\u0003\u0002\u0002\u0002",
"\u01ae\u01ac\u0003\u0002\u0002\u0002\u01af\u01b1\u0003\u0002\u0002\u0002",
"\u01b0\u01ae\u0003\u0002\u0002\u0002\u01b1\u01b2\u0007,\u0002\u0002",
"\u01b2\u01bd\u00071\u0002\u0002\u01b3\u01b4\u00071\u0002\u0002\u01b4",
"\u01b5\u00071\u0002\u0002\u01b5\u01b9\u0003\u0002\u0002\u0002\u01b6",
"\u01b8\n\u0003\u0002\u0002\u01b7\u01b6\u0003\u0002\u0002\u0002\u01b8",
"\u01bb\u0003\u0002\u0002\u0002\u01b9\u01b7\u0003\u0002\u0002\u0002\u01b9",
"\u01ba\u0003\u0002\u0002\u0002\u01ba\u01bd\u0003\u0002\u0002\u0002\u01bb",
"\u01b9\u0003\u0002\u0002\u0002\u01bc\u01a8\u0003\u0002\u0002\u0002\u01bc",
"\u01b3\u0003\u0002\u0002\u0002\u01bd\u000e\u0003\u0002\u0002\u0002\u01be",
"\u01c0\n\u0004\u0002\u0002\u01bf\u01be\u0003\u0002\u0002\u0002\u01c0",
"\u01c3\u0003\u0002\u0002\u0002\u01c1\u01c2\u0003\u0002\u0002\u0002\u01c1",
"\u01bf\u0003\u0002\u0002\u0002\u01c2\u0010\u0003\u0002\u0002\u0002\u01c3",
"\u01c1\u0003\u0002\u0002\u0002\u01c4\u01c5\u0007L\u0002\u0002\u01c5",
"\u01c6\u0007c\u0002\u0002\u01c6\u01c7\u0007x\u0002\u0002\u01c7\u01c8",
"\u0007c\u0002\u0002\u01c8\u01c9\u0007<\u0002\u0002\u01c9\u0012\u0003",
"\u0002\u0002\u0002\u01ca\u01cb\u0007E\u0002\u0002\u01cb\u01cc\u0007",
"%\u0002\u0002\u01cc\u01cd\u0007<\u0002\u0002\u01cd\u0014\u0003\u0002",
"\u0002\u0002\u01ce\u01cf\u0007R\u0002\u0002\u01cf\u01d0\u0007{\u0002",
"\u0002\u01d0\u01d1\u0007v\u0002\u0002\u01d1\u01d2\u0007j\u0002\u0002",
"\u01d2\u01d3\u0007q\u0002\u0002\u01d3\u01d4\u0007p\u0002\u0002\u01d4",
"\u01d5\u00074\u0002\u0002\u01d5\u01d6\u0007<\u0002\u0002\u01d6\u0016",
"\u0003\u0002\u0002\u0002\u01d7\u01d8\u0007R\u0002\u0002\u01d8\u01d9",
"\u0007{\u0002\u0002\u01d9\u01da\u0007v\u0002\u0002\u01da\u01db\u0007",
"j\u0002\u0002\u01db\u01dc\u0007q\u0002\u0002\u01dc\u01dd\u0007p\u0002",
"\u0002\u01dd\u01de\u00075\u0002\u0002\u01de\u01df\u0007<\u0002\u0002",
"\u01df\u0018\u0003\u0002\u0002\u0002\u01e0\u01e1\u0007L\u0002\u0002",
"\u01e1\u01e2\u0007c\u0002\u0002\u01e2\u01e3\u0007x\u0002\u0002\u01e3",
"\u01e4\u0007c\u0002\u0002\u01e4\u01e5\u0007U\u0002\u0002\u01e5\u01e6",
"\u0007e\u0002\u0002\u01e6\u01e7\u0007t\u0002\u0002\u01e7\u01e8\u0007",
"k\u0002\u0002\u01e8\u01e9\u0007r\u0002\u0002\u01e9\u01ea\u0007v\u0002",
"\u0002\u01ea\u01eb\u0007<\u0002\u0002\u01eb\u001a\u0003\u0002\u0002",
"\u0002\u01ec\u01ed\u0007U\u0002\u0002\u01ed\u01ee\u0007y\u0002\u0002",
"\u01ee\u01ef\u0007k\u0002\u0002\u01ef\u01f0\u0007h\u0002\u0002\u01f0",
"\u01f1\u0007v\u0002\u0002\u01f1\u01f2\u0007<\u0002\u0002\u01f2\u001c",
"\u0003\u0002\u0002\u0002\u01f3\u01f4\u0007<\u0002\u0002\u01f4\u001e",
"\u0003\u0002\u0002\u0002\u01f5\u01f6\u0007=\u0002\u0002\u01f6 \u0003",
"\u0002\u0002\u0002\u01f7\u01f9\u0007.\u0002\u0002\u01f8\u01fa\u0007",
"\f\u0002\u0002\u01f9\u01f8\u0003\u0002\u0002\u0002\u01f9\u01fa\u0003",
"\u0002\u0002\u0002\u01fa\"\u0003\u0002\u0002\u0002\u01fb\u01fc\u0007",
"0\u0002\u0002\u01fc\u01fd\u00070\u0002\u0002\u01fd$\u0003\u0002\u0002",
"\u0002\u01fe\u0200\u00070\u0002\u0002\u01ff\u0201\u0007\f\u0002\u0002",
"\u0200\u01ff\u0003\u0002\u0002\u0002\u0200\u0201\u0003\u0002\u0002\u0002",
"\u0201&\u0003\u0002\u0002\u0002\u0202\u0204\u0007*\u0002\u0002\u0203",
"\u0205\u0007\f\u0002\u0002\u0204\u0203\u0003\u0002\u0002\u0002\u0204",
"\u0205\u0003\u0002\u0002\u0002\u0205(\u0003\u0002\u0002\u0002\u0206",
"\u020a\u0007\f\u0002\u0002\u0207\u0209\t\u0002\u0002\u0002\u0208\u0207",
"\u0003\u0002\u0002\u0002\u0209\u020c\u0003\u0002\u0002\u0002\u020a\u0208",
"\u0003\u0002\u0002\u0002\u020a\u020b\u0003\u0002\u0002\u0002\u020b\u020e",
"\u0003\u0002\u0002\u0002\u020c\u020a\u0003\u0002\u0002\u0002\u020d\u0206",
"\u0003\u0002\u0002\u0002\u020d\u020e\u0003\u0002\u0002\u0002\u020e\u020f",
"\u0003\u0002\u0002\u0002\u020f\u0210\u0007+\u0002\u0002\u0210*\u0003",
"\u0002\u0002\u0002\u0211\u0213\u0007]\u0002\u0002\u0212\u0214\u0007",
"\f\u0002\u0002\u0213\u0212\u0003\u0002\u0002\u0002\u0213\u0214\u0003",
"\u0002\u0002\u0002\u0214,\u0003\u0002\u0002\u0002\u0215\u0219\u0007",
"\f\u0002\u0002\u0216\u0218\t\u0002\u0002\u0002\u0217\u0216\u0003\u0002",
"\u0002\u0002\u0218\u021b\u0003\u0002\u0002\u0002\u0219\u0217\u0003\u0002",
"\u0002\u0002\u0219\u021a\u0003\u0002\u0002\u0002\u021a\u021d\u0003\u0002",
"\u0002\u0002\u021b\u0219\u0003\u0002\u0002\u0002\u021c\u0215\u0003\u0002",
"\u0002\u0002\u021c\u021d\u0003\u0002\u0002\u0002\u021d\u021e\u0003\u0002",
"\u0002\u0002\u021e\u021f\u0007_\u0002\u0002\u021f.\u0003\u0002\u0002",
"\u0002\u0220\u0222\u0007}\u0002\u0002\u0221\u0223\u0007\f\u0002\u0002",
"\u0222\u0221\u0003\u0002\u0002\u0002\u0222\u0223\u0003\u0002\u0002\u0002",
"\u02230\u0003\u0002\u0002\u0002\u0224\u0228\u0007\f\u0002\u0002\u0225",
"\u0227\t\u0002\u0002\u0002\u0226\u0225\u0003\u0002\u0002\u0002\u0227",
"\u022a\u0003\u0002\u0002\u0002\u0228\u0226\u0003\u0002\u0002\u0002\u0228",
"\u0229\u0003\u0002\u0002\u0002\u0229\u022c\u0003\u0002\u0002\u0002\u022a",
"\u0228\u0003\u0002\u0002\u0002\u022b\u0224\u0003\u0002\u0002\u0002\u022b",
"\u022c\u0003\u0002\u0002\u0002\u022c\u022d\u0003\u0002\u0002\u0002\u022d",
"\u022e\u0007\u007f\u0002\u0002\u022e2\u0003\u0002\u0002\u0002\u022f",
"\u0231\u0007A\u0002\u0002\u0230\u0232\u0007\f\u0002\u0002\u0231\u0230",
"\u0003\u0002\u0002\u0002\u0231\u0232\u0003\u0002\u0002\u0002\u02324",
"\u0003\u0002\u0002\u0002\u0233\u0234\u0007#\u0002\u0002\u02346\u0003",
"\u0002\u0002\u0002\u0235\u0236\u0007(\u0002\u0002\u02368\u0003\u0002",
"\u0002\u0002\u0237\u0238\u0007(\u0002\u0002\u0238\u0239\u0007(\u0002",
"\u0002\u0239:\u0003\u0002\u0002\u0002\u023a\u023b\u0007~\u0002\u0002",
"\u023b<\u0003\u0002\u0002\u0002\u023c\u023d\u0007~\u0002\u0002\u023d",
"\u023e\u0007~\u0002\u0002\u023e>\u0003\u0002\u0002\u0002\u023f\u0241",
"\u0007-\u0002\u0002\u0240\u0242\u0007\f\u0002\u0002\u0241\u0240\u0003",
"\u0002\u0002\u0002\u0241\u0242\u0003\u0002\u0002\u0002\u0242@\u0003",
"\u0002\u0002\u0002\u0243\u0244\u0007/\u0002\u0002\u0244B\u0003\u0002",
"\u0002\u0002\u0245\u0246\u0007,\u0002\u0002\u0246D\u0003\u0002\u0002",
"\u0002\u0247\u0248\u00071\u0002\u0002\u0248F\u0003\u0002\u0002\u0002",
"\u0249\u024a\u0007^\u0002\u0002\u024aH\u0003\u0002\u0002\u0002\u024b",
"\u024c\u0007\'\u0002\u0002\u024cJ\u0003\u0002\u0002\u0002\u024d\u024e",
"\u0007@\u0002\u0002\u024eL\u0003\u0002\u0002\u0002\u024f\u0250\u0007",
"@\u0002\u0002\u0250\u0251\u0007?\u0002\u0002\u0251N\u0003\u0002\u0002",
"\u0002\u0252\u0253\u0007>\u0002\u0002\u0253P\u0003\u0002\u0002\u0002",
"\u0254\u0255\u0007>\u0002\u0002\u0255\u0256\u0007?\u0002\u0002\u0256",
"R\u0003\u0002\u0002\u0002\u0257\u0258\u0007>\u0002\u0002\u0258\u0259",
"\u0007@\u0002\u0002\u0259T\u0003\u0002\u0002\u0002\u025a\u025b\u0007",
">\u0002\u0002\u025b\u025c\u0007<\u0002\u0002\u025c\u025d\u0007@\u0002",
"\u0002\u025dV\u0003\u0002\u0002\u0002\u025e\u025f\u0007?\u0002\u0002",
"\u025fX\u0003\u0002\u0002\u0002\u0260\u0261\u0007#\u0002\u0002\u0261",
"\u0262\u0007?\u0002\u0002\u0262Z\u0003\u0002\u0002\u0002\u0263\u0264",
"\u0007?\u0002\u0002\u0264\u0265\u0007?\u0002\u0002\u0265\\\u0003\u0002",
"\u0002\u0002\u0266\u0267\u0007\u0080\u0002\u0002\u0267\u0268\u0007?",
"\u0002\u0002\u0268^\u0003\u0002\u0002\u0002\u0269\u026a\u0007\u0080",
"\u0002\u0002\u026a`\u0003\u0002\u0002\u0002\u026b\u026c\u0007>\u0002",
"\u0002\u026c\u026d\u0007/\u0002\u0002\u026db\u0003\u0002\u0002\u0002",
"\u026e\u026f\u0007/\u0002\u0002\u026f\u0270\u0007@\u0002\u0002\u0270",
"d\u0003\u0002\u0002\u0002\u0271\u0272\u0007D\u0002\u0002\u0272\u0273",
"\u0007q\u0002\u0002\u0273\u0274\u0007q\u0002\u0002\u0274\u0275\u0007",
"n\u0002\u0002\u0275\u0276\u0007g\u0002\u0002\u0276\u0277\u0007c\u0002",
"\u0002\u0277\u0278\u0007p\u0002\u0002\u0278f\u0003\u0002\u0002\u0002",
"\u0279\u027a\u0007E\u0002\u0002\u027a\u027b\u0007j\u0002\u0002\u027b",
"\u027c\u0007c\u0002\u0002\u027c\u027d\u0007t\u0002\u0002\u027d\u027e",
"\u0007c\u0002\u0002\u027e\u027f\u0007e\u0002\u0002\u027f\u0280\u0007",
"v\u0002\u0002\u0280\u0281\u0007g\u0002\u0002\u0281\u0282\u0007t\u0002",
"\u0002\u0282h\u0003\u0002\u0002\u0002\u0283\u0284\u0007V\u0002\u0002",
"\u0284\u0285\u0007g\u0002\u0002\u0285\u0286\u0007z\u0002\u0002\u0286",
"\u0287\u0007v\u0002\u0002\u0287j\u0003\u0002\u0002\u0002\u0288\u0289",
"\u0007K\u0002\u0002\u0289\u028a\u0007p\u0002\u0002\u028a\u028b\u0007",
"v\u0002\u0002\u028b\u028c\u0007g\u0002\u0002\u028c\u028d\u0007i\u0002",
"\u0002\u028d\u028e\u0007g\u0002\u0002\u028e\u028f\u0007t\u0002\u0002",
"\u028fl\u0003\u0002\u0002\u0002\u0290\u0291\u0007F\u0002\u0002\u0291",
"\u0292\u0007g\u0002\u0002\u0292\u0293\u0007e\u0002\u0002\u0293\u0294",
"\u0007k\u0002\u0002\u0294\u0295\u0007o\u0002\u0002\u0295\u0296\u0007",
"c\u0002\u0002\u0296\u0297\u0007n\u0002\u0002\u0297n\u0003\u0002\u0002",
"\u0002\u0298\u0299\u0007F\u0002\u0002\u0299\u029a\u0007c\u0002\u0002",
"\u029a\u029b\u0007v\u0002\u0002\u029b\u029c\u0007g\u0002\u0002\u029c",
"p\u0003\u0002\u0002\u0002\u029d\u029e\u0007V\u0002\u0002\u029e\u029f",
"\u0007k\u0002\u0002\u029f\u02a0\u0007o\u0002\u0002\u02a0\u02a1\u0007",
"g\u0002\u0002\u02a1r\u0003\u0002\u0002\u0002\u02a2\u02a3\u0007F\u0002",
"\u0002\u02a3\u02a4\u0007c\u0002\u0002\u02a4\u02a5\u0007v\u0002\u0002",
"\u02a5\u02a6\u0007g\u0002\u0002\u02a6\u02a7\u0007V\u0002\u0002\u02a7",
"\u02a8\u0007k\u0002\u0002\u02a8\u02a9\u0007o\u0002\u0002\u02a9\u02aa",
"\u0007g\u0002\u0002\u02aat\u0003\u0002\u0002\u0002\u02ab\u02ac\u0007",
"R\u0002\u0002\u02ac\u02ad\u0007g\u0002\u0002\u02ad\u02ae\u0007t\u0002",
"\u0002\u02ae\u02af\u0007k\u0002\u0002\u02af\u02b0\u0007q\u0002\u0002",
"\u02b0\u02b1\u0007f\u0002\u0002\u02b1v\u0003\u0002\u0002\u0002\u02b2",
"\u02b3\u0007X\u0002\u0002\u02b3\u02b4\u0007g\u0002\u0002\u02b4\u02b5",
"\u0007t\u0002\u0002\u02b5\u02b6\u0007u\u0002\u0002\u02b6\u02b7\u0007",
"k\u0002\u0002\u02b7\u02b8\u0007q\u0002\u0002\u02b8\u02b9\u0007p\u0002",
"\u0002\u02b9x\u0003\u0002\u0002\u0002\u02ba\u02bb\u0007O\u0002\u0002",
"\u02bb\u02bc\u0007g\u0002\u0002\u02bc\u02bd\u0007v\u0002\u0002\u02bd",
"\u02be\u0007j\u0002\u0002\u02be\u02bf\u0007q\u0002\u0002\u02bf\u02c0",
"\u0007f\u0002\u0002\u02c0z\u0003\u0002\u0002\u0002\u02c1\u02c2\u0007",
"E\u0002\u0002\u02c2\u02c3\u0007q\u0002\u0002\u02c3\u02c4\u0007f\u0002",
"\u0002\u02c4\u02c5\u0007g\u0002\u0002\u02c5|\u0003\u0002\u0002\u0002",
"\u02c6\u02c7\u0007F\u0002\u0002\u02c7\u02c8\u0007q\u0002\u0002\u02c8",
"\u02c9\u0007e\u0002\u0002\u02c9\u02ca\u0007w\u0002\u0002\u02ca\u02cb",
"\u0007o\u0002\u0002\u02cb\u02cc\u0007g\u0002\u0002\u02cc\u02cd\u0007",
"p\u0002\u0002\u02cd\u02ce\u0007v\u0002\u0002\u02ce~\u0003\u0002\u0002",
"\u0002\u02cf\u02d0\u0007D\u0002\u0002\u02d0\u02d1\u0007n\u0002\u0002",
"\u02d1\u02d2\u0007q\u0002\u0002\u02d2\u02d3\u0007d\u0002\u0002\u02d3",
"\u0080\u0003\u0002\u0002\u0002\u02d4\u02d5\u0007K\u0002\u0002\u02d5",
"\u02d6\u0007o\u0002\u0002\u02d6\u02d7\u0007c\u0002\u0002\u02d7\u02d8",
"\u0007i\u0002\u0002\u02d8\u02d9\u0007g\u0002\u0002\u02d9\u0082\u0003",
"\u0002\u0002\u0002\u02da\u02db\u0007W\u0002\u0002\u02db\u02dc\u0007",
"w\u0002\u0002\u02dc\u02dd\u0007k\u0002\u0002\u02dd\u02de\u0007f\u0002",
"\u0002\u02de\u0084\u0003\u0002\u0002\u0002\u02df\u02e0\u0007K\u0002",
"\u0002\u02e0\u02e1\u0007v\u0002\u0002\u02e1\u02e2\u0007g\u0002\u0002",
"\u02e2\u02e3\u0007t\u0002\u0002\u02e3\u02e4\u0007c\u0002\u0002\u02e4",
"\u02e5\u0007v\u0002\u0002\u02e5\u02e6\u0007q\u0002\u0002\u02e6\u02e7",
"\u0007t\u0002\u0002\u02e7\u0086\u0003\u0002\u0002\u0002\u02e8\u02e9",
"\u0007E\u0002\u0002\u02e9\u02ea\u0007w\u0002\u0002\u02ea\u02eb\u0007",
"t\u0002\u0002\u02eb\u02ec\u0007u\u0002\u0002\u02ec\u02ed\u0007q\u0002",
"\u0002\u02ed\u02ee\u0007t\u0002\u0002\u02ee\u0088\u0003\u0002\u0002",
"\u0002\u02ef\u02f0\u0007J\u0002\u0002\u02f0\u02f1\u0007v\u0002\u0002",
"\u02f1\u02f2\u0007o\u0002\u0002\u02f2\u02f3\u0007n\u0002\u0002\u02f3",
"\u008a\u0003\u0002\u0002\u0002\u02f4\u02f5\u0007c\u0002\u0002\u02f5",
"\u02f6\u0007d\u0002\u0002\u02f6\u02f7\u0007u\u0002\u0002\u02f7\u02f8",
"\u0007v\u0002\u0002\u02f8\u02f9\u0007t\u0002\u0002\u02f9\u02fa\u0007",
"c\u0002\u0002\u02fa\u02fb\u0007e\u0002\u0002\u02fb\u02fc\u0007v\u0002",
"\u0002\u02fc\u008c\u0003\u0002\u0002\u0002\u02fd\u02fe\u0007c\u0002",
"\u0002\u02fe\u02ff\u0007n\u0002\u0002\u02ff\u0300\u0007n\u0002\u0002",
"\u0300\u008e\u0003\u0002\u0002\u0002\u0301\u0302\u0007c\u0002\u0002",
"\u0302\u0303\u0007n\u0002\u0002\u0303\u0304\u0007y\u0002\u0002\u0304",
"\u0305\u0007c\u0002\u0002\u0305\u0306\u0007{\u0002\u0002\u0306\u0307",
"\u0007u\u0002\u0002\u0307\u0090\u0003\u0002\u0002\u0002\u0308\u0309",
"\u0007c\u0002\u0002\u0309\u030a\u0007p\u0002\u0002\u030a\u030b\u0007",
"f\u0002\u0002\u030b\u0092\u0003\u0002\u0002\u0002\u030c\u030d\u0007",
"c\u0002\u0002\u030d\u030e\u0007p\u0002\u0002\u030e\u030f\u0007{\u0002",
"\u0002\u030f\u0094\u0003\u0002\u0002\u0002\u0310\u0311\u0007c\u0002",
"\u0002\u0311\u0312\u0007u\u0002\u0002\u0312\u0096\u0003\u0002\u0002",
"\u0002\u0313\u0314\u0007c\u0002\u0002\u0314\u0315\u0007u\u0002\u0002",
"\u0315\u0320\u0007e\u0002\u0002\u0316\u0317\u0007c\u0002\u0002\u0317",
"\u0318\u0007u\u0002\u0002\u0318\u0319\u0007e\u0002\u0002\u0319\u031a",
"\u0007g\u0002\u0002\u031a\u031b\u0007p\u0002\u0002\u031b\u031c\u0007",
"f\u0002\u0002\u031c\u031d\u0007k\u0002\u0002\u031d\u031e\u0007p\u0002",
"\u0002\u031e\u0320\u0007i\u0002\u0002\u031f\u0313\u0003\u0002\u0002",
"\u0002\u031f\u0316\u0003\u0002\u0002\u0002\u0320\u0098\u0003\u0002\u0002",
"\u0002\u0321\u0322\u0007c\u0002\u0002\u0322\u0323\u0007v\u0002\u0002",
"\u0323\u0324\u0007v\u0002\u0002\u0324\u0325\u0007t\u0002\u0002\u0325",
"\u009a\u0003\u0002\u0002\u0002\u0326\u0327\u0007c\u0002\u0002\u0327",
"\u0328\u0007v\u0002\u0002\u0328\u0329\u0007v\u0002\u0002\u0329\u032a",
"\u0007t\u0002\u0002\u032a\u032b\u0007k\u0002\u0002\u032b\u032c\u0007",
"d\u0002\u0002\u032c\u032d\u0007w\u0002\u0002\u032d\u032e\u0007v\u0002",
"\u0002\u032e\u032f\u0007g\u0002\u0002\u032f\u009c\u0003\u0002\u0002",
"\u0002\u0330\u0331\u0007c\u0002\u0002\u0331\u0332\u0007v\u0002\u0002",
"\u0332\u0333\u0007v\u0002\u0002\u0333\u0334\u0007t\u0002\u0002\u0334",
"\u0335\u0007k\u0002\u0002\u0335\u0336\u0007d\u0002\u0002\u0336\u0337",
"\u0007w\u0002\u0002\u0337\u0338\u0007v\u0002\u0002\u0338\u0339\u0007",
"g\u0002\u0002\u0339\u033a\u0007u\u0002\u0002\u033a\u009e\u0003\u0002",
"\u0002\u0002\u033b\u033c\u0007d\u0002\u0002\u033c\u033d\u0007k\u0002",
"\u0002\u033d\u033e\u0007p\u0002\u0002\u033e\u033f\u0007f\u0002\u0002",
"\u033f\u0340\u0007k\u0002\u0002\u0340\u0341\u0007p\u0002\u0002\u0341",
"\u0342\u0007i\u0002\u0002\u0342\u0343\u0007u\u0002\u0002\u0343\u00a0",
"\u0003\u0002\u0002\u0002\u0344\u0345\u0007d\u0002\u0002\u0345\u0346",
"\u0007t\u0002\u0002\u0346\u0347\u0007g\u0002\u0002\u0347\u0348\u0007",
"c\u0002\u0002\u0348\u0349\u0007m\u0002\u0002\u0349\u00a2\u0003\u0002",
"\u0002\u0002\u034a\u034b\u0007d\u0002\u0002\u034b\u034c\u0007{\u0002",
"\u0002\u034c\u00a4\u0003\u0002\u0002\u0002\u034d\u034e\u0007e\u0002",
"\u0002\u034e\u034f\u0007c\u0002\u0002\u034f\u0350\u0007u\u0002\u0002",
"\u0350\u0351\u0007g\u0002\u0002\u0351\u00a6\u0003\u0002\u0002\u0002",
"\u0352\u0353\u0007e\u0002\u0002\u0353\u0354\u0007c\u0002\u0002\u0354",
"\u0355\u0007v\u0002\u0002\u0355\u0356\u0007e\u0002\u0002\u0356\u0357",
"\u0007j\u0002\u0002\u0357\u00a8\u0003\u0002\u0002\u0002\u0358\u0359",
"\u0007e\u0002\u0002\u0359\u035a\u0007c\u0002\u0002\u035a\u035b\u0007",
"v\u0002\u0002\u035b\u035c\u0007g\u0002\u0002\u035c\u035d\u0007i\u0002",
"\u0002\u035d\u035e\u0007q\u0002\u0002\u035e\u035f\u0007t\u0002\u0002",
"\u035f\u0360\u0007{\u0002\u0002\u0360\u00aa\u0003\u0002\u0002\u0002",
"\u0361\u0362\u0007e\u0002\u0002\u0362\u0363\u0007n\u0002\u0002\u0363",
"\u0364\u0007c\u0002\u0002\u0364\u0365\u0007u\u0002\u0002\u0365\u0366",
"\u0007u\u0002\u0002\u0366\u00ac\u0003\u0002\u0002\u0002\u0367\u0368",
"\u0007e\u0002\u0002\u0368\u0369\u0007n\u0002\u0002\u0369\u036a\u0007",
"q\u0002\u0002\u036a\u036b\u0007u\u0002\u0002\u036b\u036c\u0007g\u0002",
"\u0002\u036c\u00ae\u0003\u0002\u0002\u0002\u036d\u036e\u0007e\u0002",
"\u0002\u036e\u036f\u0007q\u0002\u0002\u036f\u0370\u0007p\u0002\u0002",
"\u0370\u0371\u0007v\u0002\u0002\u0371\u0372\u0007c\u0002\u0002\u0372",
"\u0373\u0007k\u0002\u0002\u0373\u0374\u0007p\u0002\u0002\u0374\u0375",
"\u0007u\u0002\u0002\u0375\u00b0\u0003\u0002\u0002\u0002\u0376\u0377",
"\u0007f\u0002\u0002\u0377\u0378\u0007g\u0002\u0002\u0378\u0379\u0007",
"h\u0002\u0002\u0379\u00b2\u0003\u0002\u0002\u0002\u037a\u037b\u0007",
"f\u0002\u0002\u037b\u037c\u0007g\u0002\u0002\u037c\u037d\u0007h\u0002",
"\u0002\u037d\u037e\u0007c\u0002\u0002\u037e\u037f\u0007w\u0002\u0002",
"\u037f\u0380\u0007n\u0002\u0002\u0380\u0381\u0007v\u0002\u0002\u0381",
"\u00b4\u0003\u0002\u0002\u0002\u0382\u0383\u0007f\u0002\u0002\u0383",
"\u0384\u0007g\u0002\u0002\u0384\u0385\u0007h\u0002\u0002\u0385\u0386",
"\u0007k\u0002\u0002\u0386\u0387\u0007p\u0002\u0002\u0387\u0388\u0007",
"g\u0002\u0002\u0388\u00b6\u0003\u0002\u0002\u0002\u0389\u038a\u0007",
"f\u0002\u0002\u038a\u038b\u0007g\u0002\u0002\u038b\u038c\u0007n\u0002",
"\u0002\u038c\u038d\u0007g\u0002\u0002\u038d\u038e\u0007v\u0002\u0002",
"\u038e\u038f\u0007g\u0002\u0002\u038f\u00b8\u0003\u0002\u0002\u0002",
"\u0390\u0391\u0007f\u0002\u0002\u0391\u0392\u0007g\u0002\u0002\u0392",
"\u0393\u0007u\u0002\u0002\u0393\u039f\u0007e\u0002\u0002\u0394\u0395",
"\u0007f\u0002\u0002\u0395\u0396\u0007g\u0002\u0002\u0396\u0397\u0007",
"u\u0002\u0002\u0397\u0398\u0007e\u0002\u0002\u0398\u0399\u0007g\u0002",
"\u0002\u0399\u039a\u0007p\u0002\u0002\u039a\u039b\u0007f\u0002\u0002",
"\u039b\u039c\u0007k\u0002\u0002\u039c\u039d\u0007p\u0002\u0002\u039d",
"\u039f\u0007i\u0002\u0002\u039e\u0390\u0003\u0002\u0002\u0002\u039e",
"\u0394\u0003\u0002\u0002\u0002\u039f\u00ba\u0003\u0002\u0002\u0002\u03a0",
"\u03a1\u0007f\u0002\u0002\u03a1\u03a2\u0007q\u0002\u0002\u03a2\u00bc",
"\u0003\u0002\u0002\u0002\u03a3\u03a4\u0007f\u0002\u0002\u03a4\u03a5",
"\u0007q\u0002\u0002\u03a5\u03a6\u0007k\u0002\u0002\u03a6\u03a7\u0007",
"p\u0002\u0002\u03a7\u03a8\u0007i\u0002\u0002\u03a8\u00be\u0003\u0002",
"\u0002\u0002\u03a9\u03aa\u0007g\u0002\u0002\u03aa\u03ab\u0007c\u0002",
"\u0002\u03ab\u03ac\u0007e\u0002\u0002\u03ac\u03ad\u0007j\u0002\u0002",
"\u03ad\u00c0\u0003\u0002\u0002\u0002\u03ae\u03af\u0007g\u0002\u0002",
"\u03af\u03b0\u0007n\u0002\u0002\u03b0\u03b1\u0007u\u0002\u0002\u03b1",
"\u03b2\u0007g\u0002\u0002\u03b2\u00c2\u0003\u0002\u0002\u0002\u03b3",
"\u03b4\u0007g\u0002\u0002\u03b4\u03b5\u0007p\u0002\u0002\u03b5\u03b6",
"\u0007w\u0002\u0002\u03b6\u03b7\u0007o\u0002\u0002\u03b7\u00c4\u0003",
"\u0002\u0002\u0002\u03b8\u03b9\u0007g\u0002\u0002\u03b9\u03ba\u0007",
"p\u0002\u0002\u03ba\u03bb\u0007w\u0002\u0002\u03bb\u03bc\u0007o\u0002",
"\u0002\u03bc\u03bd\u0007g\u0002\u0002\u03bd\u03be\u0007t\u0002\u0002",
"\u03be\u03bf\u0007c\u0002\u0002\u03bf\u03c0\u0007v\u0002\u0002\u03c0",
"\u03c1\u0007g\u0002\u0002\u03c1\u03c2\u0007f\u0002\u0002\u03c2\u00c6",
"\u0003\u0002\u0002\u0002\u03c3\u03c4\u0007g\u0002\u0002\u03c4\u03c5",
"\u0007z\u0002\u0002\u03c5\u03c6\u0007e\u0002\u0002\u03c6\u03c7\u0007",
"g\u0002\u0002\u03c7\u03c8\u0007r\u0002\u0002\u03c8\u03c9\u0007v\u0002",
"\u0002\u03c9\u00c8\u0003\u0002\u0002\u0002\u03ca\u03cb\u0007g\u0002",
"\u0002\u03cb\u03cc\u0007z\u0002\u0002\u03cc\u03cd\u0007g\u0002\u0002",
"\u03cd\u03ce\u0007e\u0002\u0002\u03ce\u03cf\u0007w\u0002\u0002\u03cf",
"\u03d0\u0007v\u0002\u0002\u03d0\u03d1\u0007g\u0002\u0002\u03d1\u00ca",
"\u0003\u0002\u0002\u0002\u03d2\u03d3\u0007g\u0002\u0002\u03d3\u03d4",
"\u0007z\u0002\u0002\u03d4\u03d5\u0007r\u0002\u0002\u03d5\u03d6\u0007",
"g\u0002\u0002\u03d6\u03d7\u0007e\u0002\u0002\u03d7\u03d8\u0007v\u0002",
"\u0002\u03d8\u03d9\u0007k\u0002\u0002\u03d9\u03da\u0007p\u0002\u0002",
"\u03da\u03db\u0007i\u0002\u0002\u03db\u00cc\u0003\u0002\u0002\u0002",
"\u03dc\u03dd\u0007g\u0002\u0002\u03dd\u03de\u0007z\u0002\u0002\u03de",
"\u03df\u0007v\u0002\u0002\u03df\u03e0\u0007g\u0002\u0002\u03e0\u03e1",
"\u0007p\u0002\u0002\u03e1\u03e2\u0007f\u0002\u0002\u03e2\u03e3\u0007",
"u\u0002\u0002\u03e3\u00ce\u0003\u0002\u0002\u0002\u03e4\u03e5\u0007",
"h\u0002\u0002\u03e5\u03e6\u0007g\u0002\u0002\u03e6\u03e7\u0007v\u0002",
"\u0002\u03e7\u03e8\u0007e\u0002\u0002\u03e8\u03e9\u0007j\u0002\u0002",
"\u03e9\u00d0\u0003\u0002\u0002\u0002\u03ea\u03eb\u0007h\u0002\u0002",
"\u03eb\u03ec\u0007k\u0002\u0002\u03ec\u03ed\u0007n\u0002\u0002\u03ed",
"\u03ee\u0007v\u0002\u0002\u03ee\u03ef\u0007g\u0002\u0002\u03ef\u03f0",
"\u0007t\u0002\u0002\u03f0\u03f1\u0007g\u0002\u0002\u03f1\u03f2\u0007",
"f\u0002\u0002\u03f2\u00d2\u0003\u0002\u0002\u0002\u03f3\u03f4\u0007",
"h\u0002\u0002\u03f4\u03f5\u0007k\u0002\u0002\u03f5\u03f6\u0007p\u0002",
"\u0002\u03f6\u03f7\u0007c\u0002\u0002\u03f7\u03f8\u0007n\u0002\u0002",
"\u03f8\u03f9\u0007n\u0002\u0002\u03f9\u03fa\u0007{\u0002\u0002\u03fa",
"\u00d4\u0003\u0002\u0002\u0002\u03fb\u03fc\u0007h\u0002\u0002\u03fc",
"\u03fd\u0007n\u0002\u0002\u03fd\u03fe\u0007w\u0002\u0002\u03fe\u03ff",
"\u0007u\u0002\u0002\u03ff\u0400\u0007j\u0002\u0002\u0400\u00d6\u0003",
"\u0002\u0002\u0002\u0401\u0402\u0007h\u0002\u0002\u0402\u0403\u0007",
"q\u0002\u0002\u0403\u0404\u0007t\u0002\u0002\u0404\u00d8\u0003\u0002",
"\u0002\u0002\u0405\u0406\u0007h\u0002\u0002\u0406\u0407\u0007t\u0002",
"\u0002\u0407\u0408\u0007q\u0002\u0002\u0408\u0409\u0007o\u0002\u0002",
"\u0409\u00da\u0003\u0002\u0002\u0002\u040a\u040b\u0007i\u0002\u0002",
"\u040b\u040c\u0007g\u0002\u0002\u040c\u040d\u0007v\u0002\u0002\u040d",
"\u040e\u0007v\u0002\u0002\u040e\u040f\u0007g\u0002\u0002\u040f\u0410",
"\u0007t\u0002\u0002\u0410\u00dc\u0003\u0002\u0002\u0002\u0411\u0412",
"\u0007j\u0002\u0002\u0412\u0413\u0007c\u0002\u0002\u0413\u0414\u0007",
"u\u0002\u0002\u0414\u00de\u0003\u0002\u0002\u0002\u0415\u0416\u0007",
"k\u0002\u0002\u0416\u0417\u0007h\u0002\u0002\u0417\u00e0\u0003\u0002",
"\u0002\u0002\u0418\u0419\u0007k\u0002\u0002\u0419\u041a\u0007p\u0002",
"\u0002\u041a\u00e2\u0003\u0002\u0002\u0002\u041b\u041c\u0007k\u0002",
"\u0002\u041c\u041d\u0007p\u0002\u0002\u041d\u041e\u0007f\u0002\u0002",
"\u041e\u041f\u0007g\u0002\u0002\u041f\u0420\u0007z\u0002\u0002\u0420",
"\u00e4\u0003\u0002\u0002\u0002\u0421\u0422\u0007k\u0002\u0002\u0422",
"\u0423\u0007p\u0002\u0002\u0423\u0424\u0007x\u0002\u0002\u0424\u0425",
"\u0007q\u0002\u0002\u0425\u0426\u0007m\u0002\u0002\u0426\u0427\u0007",
"g\u0002\u0002\u0427\u00e6\u0003\u0002\u0002\u0002\u0428\u0429\u0007",
"k\u0002\u0002\u0429\u042a\u0007u\u0002\u0002\u042a\u00e8\u0003\u0002",
"\u0002\u0002\u042b\u042c\u0007o\u0002\u0002\u042c\u042d\u0007c\u0002",
"\u0002\u042d\u042e\u0007v\u0002\u0002\u042e\u042f\u0007e\u0002\u0002",
"\u042f\u0430\u0007j\u0002\u0002\u0430\u0431\u0007k\u0002\u0002\u0431",
"\u0432\u0007p\u0002\u0002\u0432\u0433\u0007i\u0002\u0002\u0433\u00ea",
"\u0003\u0002\u0002\u0002\u0434\u0435\u0007o\u0002\u0002\u0435\u0436",
"\u0007g\u0002\u0002\u0436\u0437\u0007v\u0002\u0002\u0437\u0438\u0007",
"j\u0002\u0002\u0438\u0439\u0007q\u0002\u0002\u0439\u043a\u0007f\u0002",
"\u0002\u043a\u00ec\u0003\u0002\u0002\u0002\u043b\u043c\u0007o\u0002",
"\u0002\u043c\u043d\u0007g\u0002\u0002\u043d\u043e\u0007v\u0002\u0002",
"\u043e\u043f\u0007j\u0002\u0002\u043f\u0440\u0007q\u0002\u0002\u0440",
"\u0441\u0007f\u0002\u0002\u0441\u0442\u0007u\u0002\u0002\u0442\u00ee",
"\u0003\u0002\u0002\u0002\u0443\u0444\u0007o\u0002\u0002\u0444\u0445",
"\u0007q\u0002\u0002\u0445\u0446\u0007f\u0002\u0002\u0446\u0447\u0007",
"w\u0002\u0002\u0447\u0448\u0007n\u0002\u0002\u0448\u0449\u0007q\u0002",
"\u0002\u0449\u00f0\u0003\u0002\u0002\u0002\u044a\u044b\u0007o\u0002",
"\u0002\u044b\u044c\u0007w\u0002\u0002\u044c\u044d\u0007v\u0002\u0002",
"\u044d\u044e\u0007c\u0002\u0002\u044e\u044f\u0007d\u0002\u0002\u044f",
"\u0450\u0007n\u0002\u0002\u0450\u0451\u0007g\u0002\u0002\u0451\u00f2",
"\u0003\u0002\u0002\u0002\u0452\u0453\u0007p\u0002\u0002\u0453\u0454",
"\u0007c\u0002\u0002\u0454\u0455\u0007v\u0002\u0002\u0455\u0456\u0007",
"k\u0002\u0002\u0456\u0457\u0007x\u0002\u0002\u0457\u0458\u0007g\u0002",
"\u0002\u0458\u00f4\u0003\u0002\u0002\u0002\u0459\u045a\u0007P\u0002",
"\u0002\u045a\u045b\u0007q\u0002\u0002\u045b\u045c\u0007p\u0002\u0002",
"\u045c\u045d\u0007g\u0002\u0002\u045d\u00f6\u0003\u0002\u0002\u0002",
"\u045e\u045f\u0007p\u0002\u0002\u045f\u0460\u0007q\u0002\u0002\u0460",
"\u0461\u0007v\u0002\u0002\u0461\u00f8\u0003\u0002\u0002\u0002\u0462",
"\u0463\u0007p\u0002\u0002\u0463\u0464\u0007q\u0002\u0002\u0464\u0465",
"\u0007v\u0002\u0002\u0465\u0466\u0007j\u0002\u0002\u0466\u0467\u0007",
"k\u0002\u0002\u0467\u0468\u0007p\u0002\u0002\u0468\u0471\u0007i\u0002",
"\u0002\u0469\u046a\u0007P\u0002\u0002\u046a\u046b\u0007q\u0002\u0002",
"\u046b\u046c\u0007v\u0002\u0002\u046c\u046d\u0007j\u0002\u0002\u046d",
"\u046e\u0007k\u0002\u0002\u046e\u046f\u0007p\u0002\u0002\u046f\u0471",
"\u0007i\u0002\u0002\u0470\u0462\u0003\u0002\u0002\u0002\u0470\u0469",
"\u0003\u0002\u0002\u0002\u0471\u00fa\u0003\u0002\u0002\u0002\u0472\u0473",
"\u0007p\u0002\u0002\u0473\u0474\u0007w\u0002\u0002\u0474\u0475\u0007",
"n\u0002\u0002\u0475\u0476\u0007n\u0002\u0002\u0476\u00fc\u0003\u0002",
"\u0002\u0002\u0477\u0478\u0007q\u0002\u0002\u0478\u0479\u0007p\u0002",
"\u0002\u0479\u00fe\u0003\u0002\u0002\u0002\u047a\u047b\u0007q\u0002",
"\u0002\u047b\u047c\u0007p\u0002\u0002\u047c\u047d\u0007g\u0002\u0002",
"\u047d\u0100\u0003\u0002\u0002\u0002\u047e\u047f\u0007q\u0002\u0002",
"\u047f\u0480\u0007r\u0002\u0002\u0480\u0481\u0007g\u0002\u0002\u0481",
"\u0482\u0007p\u0002\u0002\u0482\u0102\u0003\u0002\u0002\u0002\u0483",
"\u0484\u0007q\u0002\u0002\u0484\u0485\u0007r\u0002\u0002\u0485\u0486",
"\u0007g\u0002\u0002\u0486\u0487\u0007t\u0002\u0002\u0487\u0488\u0007",
"c\u0002\u0002\u0488\u0489\u0007v\u0002\u0002\u0489\u048a\u0007q\u0002",
"\u0002\u048a\u048b\u0007t\u0002\u0002\u048b\u0104\u0003\u0002\u0002",
"\u0002\u048c\u048d\u0007q\u0002\u0002\u048d\u048e\u0007t\u0002\u0002",
"\u048e\u0106\u0003\u0002\u0002\u0002\u048f\u0490\u0007q\u0002\u0002",
"\u0490\u0491\u0007t\u0002\u0002\u0491\u0492\u0007f\u0002\u0002\u0492",
"\u0493\u0007g\u0002\u0002\u0493\u0494\u0007t\u0002\u0002\u0494\u0108",
"\u0003\u0002\u0002\u0002\u0495\u0496\u0007q\u0002\u0002\u0496\u0497",
"\u0007v\u0002\u0002\u0497\u0498\u0007j\u0002\u0002\u0498\u0499\u0007",
"g\u0002\u0002\u0499\u049a\u0007t\u0002\u0002\u049a\u049b\u0007y\u0002",
"\u0002\u049b\u049c\u0007k\u0002\u0002\u049c\u049d\u0007u\u0002\u0002",
"\u049d\u049e\u0007g\u0002\u0002\u049e\u010a\u0003\u0002\u0002\u0002",
"\u049f\u04a0\u0007r\u0002\u0002\u04a0\u04a1\u0007c\u0002\u0002\u04a1",
"\u04a2\u0007u\u0002\u0002\u04a2\u04a3\u0007u\u0002\u0002\u04a3\u010c",
"\u0003\u0002\u0002\u0002\u04a4\u04a5\u0007t\u0002\u0002\u04a5\u04a6",
"\u0007c\u0002\u0002\u04a6\u04a7\u0007k\u0002\u0002\u04a7\u04a8\u0007",
"u\u0002\u0002\u04a8\u04a9\u0007g\u0002\u0002\u04a9\u010e\u0003\u0002",
"\u0002\u0002\u04aa\u04ab\u0007t\u0002\u0002\u04ab\u04ac\u0007g\u0002",
"\u0002\u04ac\u04ad\u0007c\u0002\u0002\u04ad\u04ae\u0007f\u0002\u0002",
"\u04ae\u0110\u0003\u0002\u0002\u0002\u04af\u04b0\u0007t\u0002\u0002",
"\u04b0\u04b1\u0007g\u0002\u0002\u04b1\u04b2\u0007e\u0002\u0002\u04b2",
"\u04b3\u0007g\u0002\u0002\u04b3\u04b4\u0007k\u0002\u0002\u04b4\u04b5",
"\u0007x\u0002\u0002\u04b5\u04b6\u0007k\u0002\u0002\u04b6\u04b7\u0007",
"p\u0002\u0002\u04b7\u04b8\u0007i\u0002\u0002\u04b8\u0112\u0003\u0002",
"\u0002\u0002\u04b9\u04ba\u0007t\u0002\u0002\u04ba\u04bb\u0007g\u0002",
"\u0002\u04bb\u04bc\u0007u\u0002\u0002\u04bc\u04bd\u0007q\u0002\u0002",
"\u04bd\u04be\u0007w\u0002\u0002\u04be\u04bf\u0007t\u0002\u0002\u04bf",
"\u04c0\u0007e\u0002\u0002\u04c0\u04c1\u0007g\u0002\u0002\u04c1\u0114",
"\u0003\u0002\u0002\u0002\u04c2\u04c3\u0007t\u0002\u0002\u04c3\u04c4",
"\u0007g\u0002\u0002\u04c4\u04c5\u0007v\u0002\u0002\u04c5\u04c6\u0007",
"w\u0002\u0002\u04c6\u04c7\u0007t\u0002\u0002\u04c7\u04c8\u0007p\u0002",
"\u0002\u04c8\u0116\u0003\u0002\u0002\u0002\u04c9\u04ca\u0007t\u0002",
"\u0002\u04ca\u04cb\u0007g\u0002\u0002\u04cb\u04cc\u0007v\u0002\u0002",
"\u04cc\u04cd\u0007w\u0002\u0002\u04cd\u04ce\u0007t\u0002\u0002\u04ce",
"\u04cf\u0007p\u0002\u0002\u04cf\u04d0\u0007k\u0002\u0002\u04d0\u04d1",
"\u0007p\u0002\u0002\u04d1\u04d2\u0007i\u0002\u0002\u04d2\u0118\u0003",
"\u0002\u0002\u0002\u04d3\u04d4\u0007t\u0002\u0002\u04d4\u04d5\u0007",
"q\u0002\u0002\u04d5\u04d6\u0007y\u0002\u0002\u04d6\u04d7\u0007u\u0002",
"\u0002\u04d7\u011a\u0003\u0002\u0002\u0002\u04d8\u04d9\u0007u\u0002",
"\u0002\u04d9\u04da\u0007g\u0002\u0002\u04da\u04db\u0007n\u0002\u0002",
"\u04db\u04dc\u0007h\u0002\u0002\u04dc\u011c\u0003\u0002\u0002\u0002",
"\u04dd\u04de\u0007u\u0002\u0002\u04de\u04df\u0007g\u0002\u0002\u04df",
"\u04e0\u0007v\u0002\u0002\u04e0\u04e1\u0007v\u0002\u0002\u04e1\u04e2",
"\u0007g\u0002\u0002\u04e2\u04e3\u0007t\u0002\u0002\u04e3\u011e\u0003",
"\u0002\u0002\u0002\u04e4\u04e5\u0007u\u0002\u0002\u04e5\u04e6\u0007",
"k\u0002\u0002\u04e6\u04e7\u0007p\u0002\u0002\u04e7\u04e8\u0007i\u0002",
"\u0002\u04e8\u04e9\u0007n\u0002\u0002\u04e9\u04ea\u0007g\u0002\u0002",
"\u04ea\u04eb\u0007v\u0002\u0002\u04eb\u04ec\u0007q\u0002\u0002\u04ec",
"\u04ed\u0007p\u0002\u0002\u04ed\u0120\u0003\u0002\u0002\u0002\u04ee",
"\u04ef\u0007u\u0002\u0002\u04ef\u04f0\u0007q\u0002\u0002\u04f0\u04f1",
"\u0007t\u0002\u0002\u04f1\u04f2\u0007v\u0002\u0002\u04f2\u04f3\u0007",
"g\u0002\u0002\u04f3\u04f4\u0007f\u0002\u0002\u04f4\u0122\u0003\u0002",
"\u0002\u0002\u04f5\u04f6\u0007u\u0002\u0002\u04f6\u04f7\u0007v\u0002",
"\u0002\u04f7\u04f8\u0007q\u0002\u0002\u04f8\u04f9\u0007t\u0002\u0002",
"\u04f9\u04fa\u0007c\u0002\u0002\u04fa\u04fb\u0007d\u0002\u0002\u04fb",
"\u04fc\u0007n\u0002\u0002\u04fc\u04fd\u0007g\u0002\u0002\u04fd\u0124",
"\u0003\u0002\u0002\u0002\u04fe\u04ff\u0007u\u0002\u0002\u04ff\u0500",
"\u0007v\u0002\u0002\u0500\u0501\u0007q\u0002\u0002\u0501\u0502\u0007",
"t\u0002\u0002\u0502\u0503\u0007g\u0002\u0002\u0503\u0126\u0003\u0002",
"\u0002\u0002\u0504\u0505\u0007u\u0002\u0002\u0505\u0506\u0007y\u0002",
"\u0002\u0506\u0507\u0007k\u0002\u0002\u0507\u0508\u0007v\u0002\u0002",
"\u0508\u0509\u0007e\u0002\u0002\u0509\u050a\u0007j\u0002\u0002\u050a",
"\u0128\u0003\u0002\u0002\u0002\u050b\u050c\u0007v\u0002\u0002\u050c",
"\u050d\u0007g\u0002\u0002\u050d\u050e\u0007u\u0002\u0002\u050e\u050f",
"\u0007v\u0002\u0002\u050f\u012a\u0003\u0002\u0002\u0002\u0510\u0511",
"\u0007v\u0002\u0002\u0511\u0512\u0007j\u0002\u0002\u0512\u0513\u0007",
"g\u0002\u0002\u0513\u0514\u0007p\u0002\u0002\u0514\u012c\u0003\u0002",
"\u0002\u0002\u0515\u0516\u0007v\u0002\u0002\u0516\u0517\u0007j\u0002",
"\u0002\u0517\u0518\u0007k\u0002\u0002\u0518\u0519\u0007u\u0002\u0002",
"\u0519\u012e\u0003\u0002\u0002\u0002\u051a\u051b\u0007v\u0002\u0002",
"\u051b\u051c\u0007j\u0002\u0002\u051c\u051d\u0007t\u0002\u0002\u051d",
"\u051e\u0007q\u0002\u0002\u051e\u051f\u0007y\u0002\u0002\u051f\u0130",
"\u0003\u0002\u0002\u0002\u0520\u0521\u0007v\u0002\u0002\u0521\u0522",
"\u0007q\u0002\u0002\u0522\u0132\u0003\u0002\u0002\u0002\u0523\u0524",
"\u0007v\u0002\u0002\u0524\u0525\u0007t\u0002\u0002\u0525\u0526\u0007",
"{\u0002\u0002\u0526\u0134\u0003\u0002\u0002\u0002\u0527\u0528\u0007",
"x\u0002\u0002\u0528\u0529\u0007g\u0002\u0002\u0529\u052a\u0007t\u0002",
"\u0002\u052a\u052b\u0007k\u0002\u0002\u052b\u052c\u0007h\u0002\u0002",
"\u052c\u052d\u0007{\u0002\u0002\u052d\u052e\u0007k\u0002\u0002\u052e",
"\u052f\u0007p\u0002\u0002\u052f\u0530\u0007i\u0002\u0002\u0530\u0136",
"\u0003\u0002\u0002\u0002\u0531\u0532\u0007y\u0002\u0002\u0532\u0533",
"\u0007k\u0002\u0002\u0533\u0534\u0007f\u0002\u0002\u0534\u0535\u0007",
"i\u0002\u0002\u0535\u0536\u0007g\u0002\u0002\u0536\u0537\u0007v\u0002",
"\u0002\u0537\u0138\u0003\u0002\u0002\u0002\u0538\u0539\u0007y\u0002",
"\u0002\u0539\u053a\u0007k\u0002\u0002\u053a\u053b\u0007v\u0002\u0002",
"\u053b\u053c\u0007j\u0002\u0002\u053c\u013a\u0003\u0002\u0002\u0002",
"\u053d\u053e\u0007y\u0002\u0002\u053e\u053f\u0007j\u0002\u0002\u053f",
"\u0540\u0007g\u0002\u0002\u0540\u0541\u0007p\u0002\u0002\u0541\u013c",
"\u0003\u0002\u0002\u0002\u0542\u0543\u0007y\u0002\u0002\u0543\u0544",
"\u0007j\u0002\u0002\u0544\u0545\u0007g\u0002\u0002\u0545\u0546\u0007",
"t\u0002\u0002\u0546\u0547\u0007g\u0002\u0002\u0547\u013e\u0003\u0002",
"\u0002\u0002\u0548\u0549\u0007y\u0002\u0002\u0549\u054a\u0007j\u0002",
"\u0002\u054a\u054b\u0007k\u0002\u0002\u054b\u054c\u0007n\u0002\u0002",
"\u054c\u054d\u0007g\u0002\u0002\u054d\u0140\u0003\u0002\u0002\u0002",
"\u054e\u054f\u0007y\u0002\u0002\u054f\u0550\u0007t\u0002\u0002\u0550",
"\u0551\u0007k\u0002\u0002\u0551\u0552\u0007v\u0002\u0002\u0552\u0553",
"\u0007g\u0002\u0002\u0553\u0142\u0003\u0002\u0002\u0002\u0554\u0555",
"\u0007v\u0002\u0002\u0555\u0556\u0007t\u0002\u0002\u0556\u0557\u0007",
"w\u0002\u0002\u0557\u0567\u0007g\u0002\u0002\u0558\u0559\u0007V\u0002",
"\u0002\u0559\u055a\u0007t\u0002\u0002\u055a\u055b\u0007w\u0002\u0002",
"\u055b\u0567\u0007g\u0002\u0002\u055c\u055d\u0007h\u0002\u0002\u055d",
"\u055e\u0007c\u0002\u0002\u055e\u055f\u0007n\u0002\u0002\u055f\u0560",
"\u0007u\u0002\u0002\u0560\u0567\u0007g\u0002\u0002\u0561\u0562\u0007",
"H\u0002\u0002\u0562\u0563\u0007c\u0002\u0002\u0563\u0564\u0007n\u0002",
"\u0002\u0564\u0565\u0007u\u0002\u0002\u0565\u0567\u0007g\u0002\u0002",
"\u0566\u0554\u0003\u0002\u0002\u0002\u0566\u0558\u0003\u0002\u0002\u0002",
"\u0566\u055c\u0003\u0002\u0002\u0002\u0566\u0561\u0003\u0002\u0002\u0002",
"\u0567\u0144\u0003\u0002\u0002\u0002\u0568\u056b\u0007)\u0002\u0002",
"\u0569\u056c\u0005\u0171\u00b9\u0002\u056a\u056c\n\u0005\u0002\u0002",
"\u056b\u0569\u0003\u0002\u0002\u0002\u056b\u056a\u0003\u0002\u0002\u0002",
"\u056c\u056d\u0003\u0002\u0002\u0002\u056d\u056e\u0007)\u0002\u0002",
"\u056e\u0146\u0003\u0002\u0002\u0002\u056f\u0570\u0007O\u0002\u0002",
"\u0570\u0571\u0007K\u0002\u0002\u0571\u0572\u0007P\u0002\u0002\u0572",
"\u0573\u0007a\u0002\u0002\u0573\u0574\u0007K\u0002\u0002\u0574\u0575",
"\u0007P\u0002\u0002\u0575\u0576\u0007V\u0002\u0002\u0576\u0577\u0007",
"G\u0002\u0002\u0577\u0578\u0007I\u0002\u0002\u0578\u0579\u0007G\u0002",
"\u0002\u0579\u057a\u0007T\u0002\u0002\u057a\u0148\u0003\u0002\u0002",
"\u0002\u057b\u057c\u0007O\u0002\u0002\u057c\u057d\u0007C\u0002\u0002",
"\u057d\u057e\u0007Z\u0002\u0002\u057e\u057f\u0007a\u0002\u0002\u057f",
"\u0580\u0007K\u0002\u0002\u0580\u0581\u0007P\u0002\u0002\u0581\u0582",
"\u0007V\u0002\u0002\u0582\u0583\u0007G\u0002\u0002\u0583\u0584\u0007",
"I\u0002\u0002\u0584\u0585\u0007G\u0002\u0002\u0585\u0586\u0007T\u0002",
"\u0002\u0586\u014a\u0003\u0002\u0002\u0002\u0587\u058b\t\u0006\u0002",
"\u0002\u0588\u058a\t\u0007\u0002\u0002\u0589\u0588\u0003\u0002\u0002",
"\u0002\u058a\u058d\u0003\u0002\u0002\u0002\u058b\u0589\u0003\u0002\u0002",
"\u0002\u058b\u058c\u0003\u0002\u0002\u0002\u058c\u014c\u0003\u0002\u0002",
"\u0002\u058d\u058b\u0003\u0002\u0002\u0002\u058e\u0592\t\u0006\u0002",
"\u0002\u058f\u0591\u0005\u0157\u00ac\u0002\u0590\u058f\u0003\u0002\u0002",
"\u0002\u0591\u0594\u0003\u0002\u0002\u0002\u0592\u0590\u0003\u0002\u0002",
"\u0002\u0592\u0593\u0003\u0002\u0002\u0002\u0593\u014e\u0003\u0002\u0002",
"\u0002\u0594\u0592\u0003\u0002\u0002\u0002\u0595\u0599\t\b\u0002\u0002",
"\u0596\u0598\u0005\u0157\u00ac\u0002\u0597\u0596\u0003\u0002\u0002\u0002",
"\u0598\u059b\u0003\u0002\u0002\u0002\u0599\u0597\u0003\u0002\u0002\u0002",
"\u0599\u059a\u0003\u0002\u0002\u0002\u059a\u0150\u0003\u0002\u0002\u0002",
"\u059b\u0599\u0003\u0002\u0002\u0002\u059c\u05a0\u0007a\u0002\u0002",
"\u059d\u059f\u0005\u0157\u00ac\u0002\u059e\u059d\u0003\u0002\u0002\u0002",
"\u059f\u05a2\u0003\u0002\u0002\u0002\u05a0\u059e\u0003\u0002\u0002\u0002",
"\u05a0\u05a1\u0003\u0002\u0002\u0002\u05a1\u0152\u0003\u0002\u0002\u0002",
"\u05a2\u05a0\u0003\u0002\u0002\u0002\u05a3\u05a5\u0007&\u0002\u0002",
"\u05a4\u05a6\u0005\u0157\u00ac\u0002\u05a5\u05a4\u0003\u0002\u0002\u0002",
"\u05a6\u05a7\u0003\u0002\u0002\u0002\u05a7\u05a5\u0003\u0002\u0002\u0002",
"\u05a7\u05a8\u0003\u0002\u0002\u0002\u05a8\u0154\u0003\u0002\u0002\u0002",
"\u05a9\u05ab\u0007B\u0002\u0002\u05aa\u05ac\t\t\u0002\u0002\u05ab\u05aa",
"\u0003\u0002\u0002\u0002\u05ac\u05ad\u0003\u0002\u0002\u0002\u05ad\u05ab",
"\u0003\u0002\u0002\u0002\u05ad\u05ae\u0003\u0002\u0002\u0002\u05ae\u0156",
"\u0003\u0002\u0002\u0002\u05af\u05b2\u0005\u0159\u00ad\u0002\u05b0\u05b2",
"\u0005\u015b\u00ae\u0002\u05b1\u05af\u0003\u0002\u0002\u0002\u05b1\u05b0",
"\u0003\u0002\u0002\u0002\u05b2\u0158\u0003\u0002\u0002\u0002\u05b3\u05b4",
"\t\n\u0002\u0002\u05b4\u015a\u0003\u0002\u0002\u0002\u05b5\u05b6\t\u000b",
"\u0002\u0002\u05b6\u015c\u0003\u0002\u0002\u0002\u05b7\u05bc\u0007$",
"\u0002\u0002\u05b8\u05bb\u0005\u0171\u00b9\u0002\u05b9\u05bb\n\f\u0002",
"\u0002\u05ba\u05b8\u0003\u0002\u0002\u0002\u05ba\u05b9\u0003\u0002\u0002",
"\u0002\u05bb\u05be\u0003\u0002\u0002\u0002\u05bc\u05ba\u0003\u0002\u0002",
"\u0002\u05bc\u05bd\u0003\u0002\u0002\u0002\u05bd\u05bf\u0003\u0002\u0002",
"\u0002\u05be\u05bc\u0003\u0002\u0002\u0002\u05bf\u05c0\u0007$\u0002",
"\u0002\u05c0\u015e\u0003\u0002\u0002\u0002\u05c1\u05c2\u0007)\u0002",
"\u0002\u05c2\u05c3\u0005\u018d\u00c7\u0002\u05c3\u05c4\u0005\u018d\u00c7",
"\u0002\u05c4\u05c5\u0005\u018d\u00c7\u0002\u05c5\u05c6\u0005\u018d\u00c7",
"\u0002\u05c6\u05c7\u0007/\u0002\u0002\u05c7\u05c8\u0005\u018d\u00c7",
"\u0002\u05c8\u05c9\u0005\u018d\u00c7\u0002\u05c9\u05ca\u0007/\u0002",
"\u0002\u05ca\u05cb\u0005\u018d\u00c7\u0002\u05cb\u05cc\u0005\u018d\u00c7",
"\u0002\u05cc\u05cd\u0007/\u0002\u0002\u05cd\u05ce\u0005\u018d\u00c7",
"\u0002\u05ce\u05cf\u0005\u018d\u00c7\u0002\u05cf\u05d0\u0007/\u0002",
"\u0002\u05d0\u05d1\u0005\u018d\u00c7\u0002\u05d1\u05d2\u0005\u018d\u00c7",
"\u0002\u05d2\u05d3\u0005\u018d\u00c7\u0002\u05d3\u05d4\u0005\u018d\u00c7",
"\u0002\u05d4\u05d5\u0005\u018d\u00c7\u0002\u05d5\u05d6\u0005\u018d\u00c7",
"\u0002\u05d6\u05d7\u0007)\u0002\u0002\u05d7\u0160\u0003\u0002\u0002",
"\u0002\u05d8\u05d9\u0005\u0167\u00b4\u0002\u05d9\u0162\u0003\u0002\u0002",
"\u0002\u05da\u05db\u0005\u016d\u00b7\u0002\u05db\u0164\u0003\u0002\u0002",
"\u0002\u05dc\u05dd\u0005\u0169\u00b5\u0002\u05dd\u0166\u0003\u0002\u0002",
"\u0002\u05de\u05e7\u00072\u0002\u0002\u05df\u05e3\t\r\u0002\u0002\u05e0",
"\u05e2\t\u000b\u0002\u0002\u05e1\u05e0\u0003\u0002\u0002\u0002\u05e2",
"\u05e5\u0003\u0002\u0002\u0002\u05e3\u05e1\u0003\u0002\u0002\u0002\u05e3",
"\u05e4\u0003\u0002\u0002\u0002\u05e4\u05e7\u0003\u0002\u0002\u0002\u05e5",
"\u05e3\u0003\u0002\u0002\u0002\u05e6\u05de\u0003\u0002\u0002\u0002\u05e6",
"\u05df\u0003\u0002\u0002\u0002\u05e7\u0168\u0003\u0002\u0002\u0002\u05e8",
"\u05e9\u0005\u0167\u00b4\u0002\u05e9\u05eb\u0005%\u0013\u0002\u05ea",
"\u05ec\t\u000b\u0002\u0002\u05eb\u05ea\u0003\u0002\u0002\u0002\u05ec",
"\u05ed\u0003\u0002\u0002\u0002\u05ed\u05eb\u0003\u0002\u0002\u0002\u05ed",
"\u05ee\u0003\u0002\u0002\u0002\u05ee\u05f0\u0003\u0002\u0002\u0002\u05ef",
"\u05f1\u0005\u016b\u00b6\u0002\u05f0\u05ef\u0003\u0002\u0002\u0002\u05f0",
"\u05f1\u0003\u0002\u0002\u0002\u05f1\u016a\u0003\u0002\u0002\u0002\u05f2",
"\u05f4\t\u000e\u0002\u0002\u05f3\u05f5\t\u000f\u0002\u0002\u05f4\u05f3",
"\u0003\u0002\u0002\u0002\u05f4\u05f5\u0003\u0002\u0002\u0002\u05f5\u05f7",
"\u0003\u0002\u0002\u0002\u05f6\u05f8\u00042;\u0002\u05f7\u05f6\u0003",
"\u0002\u0002\u0002\u05f8\u05f9\u0003\u0002\u0002\u0002\u05f9\u05f7\u0003",
"\u0002\u0002\u0002\u05f9\u05fa\u0003\u0002\u0002\u0002\u05fa\u016c\u0003",
"\u0002\u0002\u0002\u05fb\u05fc\u00072\u0002\u0002\u05fc\u0600\u0007",
"z\u0002\u0002\u05fd\u05fe\u00072\u0002\u0002\u05fe\u0600\u0007Z\u0002",
"\u0002\u05ff\u05fb\u0003\u0002\u0002\u0002\u05ff\u05fd\u0003\u0002\u0002",
"\u0002\u0600\u0602\u0003\u0002\u0002\u0002\u0601\u0603\u0005\u016f\u00b8",
"\u0002\u0602\u0601\u0003\u0002\u0002\u0002\u0603\u0604\u0003\u0002\u0002",
"\u0002\u0604\u0602\u0003\u0002\u0002\u0002\u0604\u0605\u0003\u0002\u0002",
"\u0002\u0605\u016e\u0003\u0002\u0002\u0002\u0606\u0607\t\u0010\u0002",
"\u0002\u0607\u0170\u0003\u0002\u0002\u0002\u0608\u0610\u0007^\u0002",
"\u0002\u0609\u0611\t\u0011\u0002\u0002\u060a\u060c\u0007w\u0002\u0002",
"\u060b\u060d\t\u0010\u0002\u0002\u060c\u060b\u0003\u0002\u0002\u0002",
"\u060d\u060e\u0003\u0002\u0002\u0002\u060e\u060c\u0003\u0002\u0002\u0002",
"\u060e\u060f\u0003\u0002\u0002\u0002\u060f\u0611\u0003\u0002\u0002\u0002",
"\u0610\u0609\u0003\u0002\u0002\u0002\u0610\u060a\u0003\u0002\u0002\u0002",
"\u0611\u0172\u0003\u0002\u0002\u0002\u0612\u0613\u0007)\u0002\u0002",
"\u0613\u0614\u0005\u017b\u00be\u0002\u0614\u0615\u0007V\u0002\u0002",
"\u0615\u0617\u0005\u0177\u00bc\u0002\u0616\u0618\u0005\u017d\u00bf\u0002",
"\u0617\u0616\u0003\u0002\u0002\u0002\u0617\u0618\u0003\u0002\u0002\u0002",
"\u0618\u0619\u0003\u0002\u0002\u0002\u0619\u061a\u0007)\u0002\u0002",
"\u061a\u0174\u0003\u0002\u0002\u0002\u061b\u061c\u0007)\u0002\u0002",
"\u061c\u061d\u0005\u0177\u00bc\u0002\u061d\u061e\u0007)\u0002\u0002",
"\u061e\u0176\u0003\u0002\u0002\u0002\u061f\u0620\u000424\u0002\u0620",
"\u0621\u00042;\u0002\u0621\u0622\u0007<\u0002\u0002\u0622\u0623\u0004",
"27\u0002\u0623\u0631\u00042;\u0002\u0624\u0625\u0007<\u0002\u0002\u0625",
"\u0626\u000427\u0002\u0626\u062f\u00042;\u0002\u0627\u0628\u0005%\u0013",
"\u0002\u0628\u062d\u00042;\u0002\u0629\u062b\u00042;\u0002\u062a\u062c",
"\u00042;\u0002\u062b\u062a\u0003\u0002\u0002\u0002\u062b\u062c\u0003",
"\u0002\u0002\u0002\u062c\u062e\u0003\u0002\u0002\u0002\u062d\u0629\u0003",
"\u0002\u0002\u0002\u062d\u062e\u0003\u0002\u0002\u0002\u062e\u0630\u0003",
"\u0002\u0002\u0002\u062f\u0627\u0003\u0002\u0002\u0002\u062f\u0630\u0003",
"\u0002\u0002\u0002\u0630\u0632\u0003\u0002\u0002\u0002\u0631\u0624\u0003",
"\u0002\u0002\u0002\u0631\u0632\u0003\u0002\u0002\u0002\u0632\u0178\u0003",
"\u0002\u0002\u0002\u0633\u0634\u0007)\u0002\u0002\u0634\u0635\u0005",
"\u017b\u00be\u0002\u0635\u0636\u0007)\u0002\u0002\u0636\u017a\u0003",
"\u0002\u0002\u0002\u0637\u0638\u00042;\u0002\u0638\u0639\u00042;\u0002",
"\u0639\u063a\u00042;\u0002\u063a\u063b\u00042;\u0002\u063b\u063c\u0007",
"/\u0002\u0002\u063c\u063d\u000423\u0002\u063d\u063e\u00042;\u0002\u063e",
"\u063f\u0007/\u0002\u0002\u063f\u0640\u000425\u0002\u0640\u0641\u0004",
"2;\u0002\u0641\u017c\u0003\u0002\u0002\u0002\u0642\u064a\u0007\\\u0002",
"\u0002\u0643\u0644\t\u000f\u0002\u0002\u0644\u0645\u000423\u0002\u0645",
"\u0646\u00042;\u0002\u0646\u0647\u0007<\u0002\u0002\u0647\u0648\u0004",
"2;\u0002\u0648\u064a\u00042;\u0002\u0649\u0642\u0003\u0002\u0002\u0002",
"\u0649\u0643\u0003\u0002\u0002\u0002\u064a\u017e\u0003\u0002\u0002\u0002",
"\u064b\u064c\u0007)\u0002\u0002\u064c\u064e\u0007R\u0002\u0002\u064d",
"\u064f\u0005\u0181\u00c1\u0002\u064e\u064d\u0003\u0002\u0002\u0002\u064e",
"\u064f\u0003\u0002\u0002\u0002\u064f\u0651\u0003\u0002\u0002\u0002\u0650",
"\u0652\u0005\u0183\u00c2\u0002\u0651\u0650\u0003\u0002\u0002\u0002\u0651",
"\u0652\u0003\u0002\u0002\u0002\u0652\u0654\u0003\u0002\u0002\u0002\u0653",
"\u0655\u0005\u0185\u00c3\u0002\u0654\u0653\u0003\u0002\u0002\u0002\u0654",
"\u0655\u0003\u0002\u0002\u0002\u0655\u0665\u0003\u0002\u0002\u0002\u0656",
"\u0657\u0007V\u0002\u0002\u0657\u0659\u0005\u0187\u00c4\u0002\u0658",
"\u065a\u0005\u0189\u00c5\u0002\u0659\u0658\u0003\u0002\u0002\u0002\u0659",
"\u065a\u0003\u0002\u0002\u0002\u065a\u065c\u0003\u0002\u0002\u0002\u065b",
"\u065d\u0005\u018b\u00c6\u0002\u065c\u065b\u0003\u0002\u0002\u0002\u065c",
"\u065d\u0003\u0002\u0002\u0002\u065d\u0666\u0003\u0002\u0002\u0002\u065e",
"\u065f\u0007V\u0002\u0002\u065f\u0661\u0005\u0189\u00c5\u0002\u0660",
"\u0662\u0005\u018b\u00c6\u0002\u0661\u0660\u0003\u0002\u0002\u0002\u0661",
"\u0662\u0003\u0002\u0002\u0002\u0662\u0666\u0003\u0002\u0002\u0002\u0663",
"\u0664\u0007V\u0002\u0002\u0664\u0666\u0005\u018b\u00c6\u0002\u0665",
"\u0656\u0003\u0002\u0002\u0002\u0665\u065e\u0003\u0002\u0002\u0002\u0665",
"\u0663\u0003\u0002\u0002\u0002\u0665\u0666\u0003\u0002\u0002\u0002\u0666",
"\u0667\u0003\u0002\u0002\u0002\u0667\u0668\u0007)\u0002\u0002\u0668",
"\u0180\u0003\u0002\u0002\u0002\u0669\u066b\u0007/\u0002\u0002\u066a",
"\u0669\u0003\u0002\u0002\u0002\u066a\u066b\u0003\u0002\u0002\u0002\u066b",
"\u066c\u0003\u0002\u0002\u0002\u066c\u066d\u0005\u0167\u00b4\u0002\u066d",
"\u066e\u0007[\u0002\u0002\u066e\u0182\u0003\u0002\u0002\u0002\u066f",
"\u0671\u0007/\u0002\u0002\u0670\u066f\u0003\u0002\u0002\u0002\u0670",
"\u0671\u0003\u0002\u0002\u0002\u0671\u0672\u0003\u0002\u0002\u0002\u0672",
"\u0673\u0005\u0167\u00b4\u0002\u0673\u0674\u0007O\u0002\u0002\u0674",
"\u0184\u0003\u0002\u0002\u0002\u0675\u0677\u0007/\u0002\u0002\u0676",
"\u0675\u0003\u0002\u0002\u0002\u0676\u0677\u0003\u0002\u0002\u0002\u0677",
"\u0678\u0003\u0002\u0002\u0002\u0678\u0679\u0005\u0167\u00b4\u0002\u0679",
"\u067a\u0007F\u0002\u0002\u067a\u0186\u0003\u0002\u0002\u0002\u067b",
"\u067d\u0007/\u0002\u0002\u067c\u067b\u0003\u0002\u0002\u0002\u067c",
"\u067d\u0003\u0002\u0002\u0002\u067d\u067e\u0003\u0002\u0002\u0002\u067e",
"\u067f\u0005\u0167\u00b4\u0002\u067f\u0680\u0007J\u0002\u0002\u0680",
"\u0188\u0003\u0002\u0002\u0002\u0681\u0683\u0007/\u0002\u0002\u0682",
"\u0681\u0003\u0002\u0002\u0002\u0682\u0683\u0003\u0002\u0002\u0002\u0683",
"\u0684\u0003\u0002\u0002\u0002\u0684\u0685\u0005\u0167\u00b4\u0002\u0685",
"\u0686\u0007O\u0002\u0002\u0686\u018a\u0003\u0002\u0002\u0002\u0687",
"\u0689\u0007/\u0002\u0002\u0688\u0687\u0003\u0002\u0002\u0002\u0688",
"\u0689\u0003\u0002\u0002\u0002\u0689\u068a\u0003\u0002\u0002\u0002\u068a",
"\u0694\u0005\u0167\u00b4\u0002\u068b\u068f\u0005%\u0013\u0002\u068c",
"\u068e\u00072\u0002\u0002\u068d\u068c\u0003\u0002\u0002\u0002\u068e",
"\u0691\u0003\u0002\u0002\u0002\u068f\u068d\u0003\u0002\u0002\u0002\u068f",
"\u0690\u0003\u0002\u0002\u0002\u0690\u0692\u0003\u0002\u0002\u0002\u0691",
"\u068f\u0003\u0002\u0002\u0002\u0692\u0693\u0005\u0167\u00b4\u0002\u0693",
"\u0695\u0003\u0002\u0002\u0002\u0694\u068b\u0003\u0002\u0002\u0002\u0694",
"\u0695\u0003\u0002\u0002\u0002\u0695\u0696\u0003\u0002\u0002\u0002\u0696",
"\u0697\u0007U\u0002\u0002\u0697\u018c\u0003\u0002\u0002\u0002\u0698",
"\u0699\u0005\u016f\u00b8\u0002\u0699\u069a\u0005\u016f\u00b8\u0002\u069a",
"\u018e\u0003\u0002\u0002\u0002\u069b\u069c\u0007)\u0002\u0002\u069c",
"\u069d\u0007x\u0002\u0002\u069d\u069e\u0003\u0002\u0002\u0002\u069e",
"\u069f\u0005\u0167\u00b4\u0002\u069f\u06a0\u0005%\u0013\u0002\u06a0",
"\u06a8\u0005\u0167\u00b4\u0002\u06a1\u06a2\u0005%\u0013\u0002\u06a2",
"\u06a6\u0005\u0167\u00b4\u0002\u06a3\u06a4\u0005%\u0013\u0002\u06a4",
"\u06a5\u0005\u0167\u00b4\u0002\u06a5\u06a7\u0003\u0002\u0002\u0002\u06a6",
"\u06a3\u0003\u0002\u0002\u0002\u06a6\u06a7\u0003\u0002\u0002\u0002\u06a7",
"\u06a9\u0003\u0002\u0002\u0002\u06a8\u06a1\u0003\u0002\u0002\u0002\u06a8",
"\u06a9\u0003\u0002\u0002\u0002\u06a9\u06aa\u0003\u0002\u0002\u0002\u06aa",
"\u06ab\u0007)\u0002\u0002\u06ab\u0190\u0003\u0002\u0002\u0002E\u0002",
"\u0195\u019c\u01ae\u01b9\u01bc\u01c1\u01f9\u0200\u0204\u020a\u020d\u0213",
"\u0219\u021c\u0222\u0228\u022b\u0231\u0241\u031f\u039e\u0470\u0566\u056b",
"\u058b\u0592\u0599\u05a0\u05a7\u05ad\u05b1\u05ba\u05bc\u05e3\u05e6\u05ed",
"\u05f0\u05f4\u05f9\u05ff\u0604\u060e\u0610\u0617\u062b\u062d\u062f\u0631",
"\u0649\u064e\u0651\u0654\u0659\u065c\u0661\u0665\u066a\u0670\u0676\u067c",
"\u0682\u0688\u068f\u0694\u06a6\u06a8\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 ELexer(input) {
antlr4.Lexer.call(this, input);
this._interp = new antlr4.atn.LexerATNSimulator(this, atn, decisionsToDFA, new antlr4.PredictionContextCache());
return this;
}
ELexer.prototype = Object.create(antlr4.Lexer.prototype);
ELexer.prototype.constructor = ELexer;
Object.defineProperty(ELexer.prototype, "atn", {
get : function() {
return atn;
}
});
ELexer.EOF = antlr4.Token.EOF;
ELexer.INDENT = 1;
ELexer.DEDENT = 2;
ELexer.LF_TAB = 3;
ELexer.LF_MORE = 4;
ELexer.LF = 5;
ELexer.TAB = 6;
ELexer.WS = 7;
ELexer.COMMENT = 8;
ELexer.JAVA = 9;
ELexer.CSHARP = 10;
ELexer.PYTHON2 = 11;
ELexer.PYTHON3 = 12;
ELexer.JAVASCRIPT = 13;
ELexer.SWIFT = 14;
ELexer.COLON = 15;
ELexer.SEMI = 16;
ELexer.COMMA = 17;
ELexer.RANGE = 18;
ELexer.DOT = 19;
ELexer.LPAR = 20;
ELexer.RPAR = 21;
ELexer.LBRAK = 22;
ELexer.RBRAK = 23;
ELexer.LCURL = 24;
ELexer.RCURL = 25;
ELexer.QMARK = 26;
ELexer.XMARK = 27;
ELexer.AMP = 28;
ELexer.AMP2 = 29;
ELexer.PIPE = 30;
ELexer.PIPE2 = 31;
ELexer.PLUS = 32;
ELexer.MINUS = 33;
ELexer.STAR = 34;
ELexer.SLASH = 35;
ELexer.BSLASH = 36;
ELexer.PERCENT = 37;
ELexer.GT = 38;
ELexer.GTE = 39;
ELexer.LT = 40;
ELexer.LTE = 41;
ELexer.LTGT = 42;
ELexer.LTCOLONGT = 43;
ELexer.EQ = 44;
ELexer.XEQ = 45;
ELexer.EQ2 = 46;
ELexer.TEQ = 47;
ELexer.TILDE = 48;
ELexer.LARROW = 49;
ELexer.RARROW = 50;
ELexer.BOOLEAN = 51;
ELexer.CHARACTER = 52;
ELexer.TEXT = 53;
ELexer.INTEGER = 54;
ELexer.DECIMAL = 55;
ELexer.DATE = 56;
ELexer.TIME = 57;
ELexer.DATETIME = 58;
ELexer.PERIOD = 59;
ELexer.VERSION = 60;
ELexer.METHOD_T = 61;
ELexer.CODE = 62;
ELexer.DOCUMENT = 63;
ELexer.BLOB = 64;
ELexer.IMAGE = 65;
ELexer.UUID = 66;
ELexer.ITERATOR = 67;
ELexer.CURSOR = 68;
ELexer.HTML = 69;
ELexer.ABSTRACT = 70;
ELexer.ALL = 71;
ELexer.ALWAYS = 72;
ELexer.AND = 73;
ELexer.ANY = 74;
ELexer.AS = 75;
ELexer.ASC = 76;
ELexer.ATTR = 77;
ELexer.ATTRIBUTE = 78;
ELexer.ATTRIBUTES = 79;
ELexer.BINDINGS = 80;
ELexer.BREAK = 81;
ELexer.BY = 82;
ELexer.CASE = 83;
ELexer.CATCH = 84;
ELexer.CATEGORY = 85;
ELexer.CLASS = 86;
ELexer.CLOSE = 87;
ELexer.CONTAINS = 88;
ELexer.DEF = 89;
ELexer.DEFAULT = 90;
ELexer.DEFINE = 91;
ELexer.DELETE = 92;
ELexer.DESC = 93;
ELexer.DO = 94;
ELexer.DOING = 95;
ELexer.EACH = 96;
ELexer.ELSE = 97;
ELexer.ENUM = 98;
ELexer.ENUMERATED = 99;
ELexer.EXCEPT = 100;
ELexer.EXECUTE = 101;
ELexer.EXPECTING = 102;
ELexer.EXTENDS = 103;
ELexer.FETCH = 104;
ELexer.FILTERED = 105;
ELexer.FINALLY = 106;
ELexer.FLUSH = 107;
ELexer.FOR = 108;
ELexer.FROM = 109;
ELexer.GETTER = 110;
ELexer.HAS = 111;
ELexer.IF = 112;
ELexer.IN = 113;
ELexer.INDEX = 114;
ELexer.INVOKE = 115;
ELexer.IS = 116;
ELexer.MATCHING = 117;
ELexer.METHOD = 118;
ELexer.METHODS = 119;
ELexer.MODULO = 120;
ELexer.MUTABLE = 121;
ELexer.NATIVE = 122;
ELexer.NONE = 123;
ELexer.NOT = 124;
ELexer.NOTHING = 125;
ELexer.NULL = 126;
ELexer.ON = 127;
ELexer.ONE = 128;
ELexer.OPEN = 129;
ELexer.OPERATOR = 130;
ELexer.OR = 131;
ELexer.ORDER = 132;
ELexer.OTHERWISE = 133;
ELexer.PASS = 134;
ELexer.RAISE = 135;
ELexer.READ = 136;
ELexer.RECEIVING = 137;
ELexer.RESOURCE = 138;
ELexer.RETURN = 139;
ELexer.RETURNING = 140;
ELexer.ROWS = 141;
ELexer.SELF = 142;
ELexer.SETTER = 143;
ELexer.SINGLETON = 144;
ELexer.SORTED = 145;
ELexer.STORABLE = 146;
ELexer.STORE = 147;
ELexer.SWITCH = 148;
ELexer.TEST = 149;
ELexer.THEN = 150;
ELexer.THIS = 151;
ELexer.THROW = 152;
ELexer.TO = 153;
ELexer.TRY = 154;
ELexer.VERIFYING = 155;
ELexer.WIDGET = 156;
ELexer.WITH = 157;
ELexer.WHEN = 158;
ELexer.WHERE = 159;
ELexer.WHILE = 160;
ELexer.WRITE = 161;
ELexer.BOOLEAN_LITERAL = 162;
ELexer.CHAR_LITERAL = 163;
ELexer.MIN_INTEGER = 164;
ELexer.MAX_INTEGER = 165;
ELexer.SYMBOL_IDENTIFIER = 166;
ELexer.TYPE_IDENTIFIER = 167;
ELexer.VARIABLE_IDENTIFIER = 168;
ELexer.NATIVE_IDENTIFIER = 169;
ELexer.DOLLAR_IDENTIFIER = 170;
ELexer.ARONDBASE_IDENTIFIER = 171;
ELexer.TEXT_LITERAL = 172;
ELexer.UUID_LITERAL = 173;
ELexer.INTEGER_LITERAL = 174;
ELexer.HEXA_LITERAL = 175;
ELexer.DECIMAL_LITERAL = 176;
ELexer.DATETIME_LITERAL = 177;
ELexer.TIME_LITERAL = 178;
ELexer.DATE_LITERAL = 179;
ELexer.PERIOD_LITERAL = 180;
ELexer.VERSION_LITERAL = 181;
ELexer.prototype.channelNames = [ "DEFAULT_TOKEN_CHANNEL", "HIDDEN" ];
ELexer.prototype.modeNames = [ "DEFAULT_MODE" ];
ELexer.prototype.literalNames = [ null, null, null, null, null, null, "'\t'",
"' '", null, "'Java:'", "'C#:'", "'Python2:'",
"'Python3:'", "'JavaScript:'", "'Swift:'",
"':'", "';'", null, "'..'", null, null,
null, null, null, null, null, null, "'!'",
"'&'", "'&&'", "'|'", "'||'", null, "'-'",
"'*'", "'/'", "'\\'", "'%'", "'>'", "'>='",
"'<'", "'<='", "'<>'", "'<:>'", "'='",
"'!='", "'=='", "'~='", "'~'", "'<-'",
"'->'", "'Boolean'", "'Character'", "'Text'",
"'Integer'", "'Decimal'", "'Date'", "'Time'",
"'DateTime'", "'Period'", "'Version'",
"'Method'", "'Code'", "'Document'", "'Blob'",
"'Image'", "'Uuid'", "'Iterator'", "'Cursor'",
"'Html'", "'abstract'", "'all'", "'always'",
"'and'", "'any'", "'as'", null, "'attr'",
"'attribute'", "'attributes'", "'bindings'",
"'break'", "'by'", "'case'", "'catch'",
"'category'", "'class'", "'close'", "'contains'",
"'def'", "'default'", "'define'", "'delete'",
null, "'do'", "'doing'", "'each'", "'else'",
"'enum'", "'enumerated'", "'except'",
"'execute'", "'expecting'", "'extends'",
"'fetch'", "'filtered'", "'finally'",
"'flush'", "'for'", "'from'", "'getter'",
"'has'", "'if'", "'in'", "'index'", "'invoke'",
"'is'", "'matching'", "'method'", "'methods'",
"'modulo'", "'mutable'", "'native'", "'None'",
"'not'", null, "'null'", "'on'", "'one'",
"'open'", "'operator'", "'or'", "'order'",
"'otherwise'", "'pass'", "'raise'", "'read'",
"'receiving'", "'resource'", "'return'",
"'returning'", "'rows'", "'self'", "'setter'",
"'singleton'", "'sorted'", "'storable'",
"'store'", "'switch'", "'test'", "'then'",
"'this'", "'throw'", "'to'", "'try'",
"'verifying'", "'widget'", "'with'", "'when'",
"'where'", "'while'", "'write'", null,
null, "'MIN_INTEGER'", "'MAX_INTEGER'" ];
ELexer.prototype.symbolicNames = [ null, "INDENT", "DEDENT", "LF_TAB", "LF_MORE",
"LF", "TAB", "WS", "COMMENT", "JAVA",
"CSHARP", "PYTHON2", "PYTHON3", "JAVASCRIPT",
"SWIFT", "COLON", "SEMI", "COMMA", "RANGE",
"DOT", "LPAR", "RPAR", "LBRAK", "RBRAK",
"LCURL", "RCURL", "QMARK", "XMARK", "AMP",
"AMP2", "PIPE", "PIPE2", "PLUS", "MINUS",
"STAR", "SLASH", "BSLASH", "PERCENT",
"GT", "GTE", "LT", "LTE", "LTGT", "LTCOLONGT",
"EQ", "XEQ", "EQ2", "TEQ", "TILDE", "LARROW",
"RARROW", "BOOLEAN", "CHARACTER", "TEXT",
"INTEGER", "DECIMAL", "DATE", "TIME",
"DATETIME", "PERIOD", "VERSION", "METHOD_T",
"CODE", "DOCUMENT", "BLOB", "IMAGE",
"UUID", "ITERATOR", "CURSOR", "HTML",
"ABSTRACT", "ALL", "ALWAYS", "AND", "ANY",
"AS", "ASC", "ATTR", "ATTRIBUTE", "ATTRIBUTES",
"BINDINGS", "BREAK", "BY", "CASE", "CATCH",
"CATEGORY", "CLASS", "CLOSE", "CONTAINS",
"DEF", "DEFAULT", "DEFINE", "DELETE",
"DESC", "DO", "DOING", "EACH", "ELSE",
"ENUM", "ENUMERATED", "EXCEPT", "EXECUTE",
"EXPECTING", "EXTENDS", "FETCH", "FILTERED",
"FINALLY", "FLUSH", "FOR", "FROM", "GETTER",
"HAS", "IF", "IN", "INDEX", "INVOKE",
"IS", "MATCHING", "METHOD", "METHODS",
"MODULO", "MUTABLE", "NATIVE", "NONE",
"NOT", "NOTHING", "NULL", "ON", "ONE",
"OPEN", "OPERATOR", "OR", "ORDER", "OTHERWISE",
"PASS", "RAISE", "READ", "RECEIVING",
"RESOURCE", "RETURN", "RETURNING", "ROWS",
"SELF", "SETTER", "SINGLETON", "SORTED",
"STORABLE", "STORE", "SWITCH", "TEST",
"THEN", "THIS", "THROW", "TO", "TRY",
"VERIFYING", "WIDGET", "WITH", "WHEN",
"WHERE", "WHILE", "WRITE", "BOOLEAN_LITERAL",
"CHAR_LITERAL", "MIN_INTEGER", "MAX_INTEGER",
"SYMBOL_IDENTIFIER", "TYPE_IDENTIFIER",
"VARIABLE_IDENTIFIER", "NATIVE_IDENTIFIER",
"DOLLAR_IDENTIFIER", "ARONDBASE_IDENTIFIER",
"TEXT_LITERAL", "UUID_LITERAL", "INTEGER_LITERAL",
"HEXA_LITERAL", "DECIMAL_LITERAL", "DATETIME_LITERAL",
"TIME_LITERAL", "DATE_LITERAL", "PERIOD_LITERAL",
"VERSION_LITERAL" ];
ELexer.prototype.ruleNames = [ "LF_TAB", "LF_MORE", "LF", "TAB", "WS", "COMMENT",
"JSX_TEXT", "JAVA", "CSHARP", "PYTHON2",
"PYTHON3", "JAVASCRIPT", "SWIFT", "COLON",
"SEMI", "COMMA", "RANGE", "DOT", "LPAR",
"RPAR", "LBRAK", "RBRAK", "LCURL", "RCURL",
"QMARK", "XMARK", "AMP", "AMP2", "PIPE",
"PIPE2", "PLUS", "MINUS", "STAR", "SLASH",
"BSLASH", "PERCENT", "GT", "GTE", "LT", "LTE",
"LTGT", "LTCOLONGT", "EQ", "XEQ", "EQ2",
"TEQ", "TILDE", "LARROW", "RARROW", "BOOLEAN",
"CHARACTER", "TEXT", "INTEGER", "DECIMAL",
"DATE", "TIME", "DATETIME", "PERIOD", "VERSION",
"METHOD_T", "CODE", "DOCUMENT", "BLOB", "IMAGE",
"UUID", "ITERATOR", "CURSOR", "HTML", "ABSTRACT",
"ALL", "ALWAYS", "AND", "ANY", "AS", "ASC",
"ATTR", "ATTRIBUTE", "ATTRIBUTES", "BINDINGS",
"BREAK", "BY", "CASE", "CATCH", "CATEGORY",
"CLASS", "CLOSE", "CONTAINS", "DEF", "DEFAULT",
"DEFINE", "DELETE", "DESC", "DO", "DOING",
"EACH", "ELSE", "ENUM", "ENUMERATED", "EXCEPT",
"EXECUTE", "EXPECTING", "EXTENDS", "FETCH",
"FILTERED", "FINALLY", "FLUSH", "FOR", "FROM",
"GETTER", "HAS", "IF", "IN", "INDEX", "INVOKE",
"IS", "MATCHING", "METHOD", "METHODS", "MODULO",
"MUTABLE", "NATIVE", "NONE", "NOT", "NOTHING",
"NULL", "ON", "ONE", "OPEN", "OPERATOR",
"OR", "ORDER", "OTHERWISE", "PASS", "RAISE",
"READ", "RECEIVING", "RESOURCE", "RETURN",
"RETURNING", "ROWS", "SELF", "SETTER", "SINGLETON",
"SORTED", "STORABLE", "STORE", "SWITCH",
"TEST", "THEN", "THIS", "THROW", "TO", "TRY",
"VERIFYING", "WIDGET", "WITH", "WHEN", "WHERE",
"WHILE", "WRITE", "BOOLEAN_LITERAL", "CHAR_LITERAL",
"MIN_INTEGER", "MAX_INTEGER", "SYMBOL_IDENTIFIER",
"TYPE_IDENTIFIER", "VARIABLE_IDENTIFIER",
"NATIVE_IDENTIFIER", "DOLLAR_IDENTIFIER",
"ARONDBASE_IDENTIFIER", "LetterOrDigit",
"Letter", "Digit", "TEXT_LITERAL", "UUID_LITERAL",
"INTEGER_LITERAL", "HEXA_LITERAL", "DECIMAL_LITERAL",
"Integer", "Decimal", "Exponent", "Hexadecimal",
"HexNibble", "EscapeSequence", "DATETIME_LITERAL",
"TIME_LITERAL", "Time", "DATE_LITERAL", "Date",
"TimeZone", "PERIOD_LITERAL", "Years", "Months",
"Days", "Hours", "Minutes", "Seconds", "HexByte",
"VERSION_LITERAL" ];
ELexer.prototype.grammarFileName = "ELexer.g4";
exports.ELexer = ELexer;
/***/ }),
/* 114 */
/***/ (function(module, exports, __webpack_require__) {
var isNodeJs = typeof window === 'undefined' && typeof importScripts === 'undefined';
var fs = isNodeJs ? __webpack_require__(44) : {}; // nodejs only
var antlr4 = __webpack_require__(1);
var EIndentingLexer = __webpack_require__(112).EIndentingLexer;
var EParser = __webpack_require__(115).EParser;
var EPromptoBuilder = __webpack_require__(118).EPromptoBuilder;
function createInput(input) {
if(typeof(input)==='string' || input instanceof String) {
if(isNodeJs && fs.existsSync(input)) {
input = new antlr4.FileStream(input);
} else {
input = new antlr4.InputStream(input);
}
}
if(input instanceof antlr4.InputStream) {
input = new EIndentingLexer(input);
}
if(input instanceof antlr4.Lexer) {
input = new antlr4.CommonTokenStream(input);
}
return input;
}
function ECleverParser(input) {
EParser.call(this,createInput(input));
this.path = "";
return this;
}
ECleverParser.prototype = Object.create(EParser.prototype);
ECleverParser.prototype.constructor = ECleverParser;
ECleverParser.prototype.parse = function() {
return this.parse_declaration_list();
};
ECleverParser.prototype.parse_declaration_list = function() {
return this.doParse(this.declaration_list, true);
};
ECleverParser.prototype.parse_standalone_type = function() {
return this.doParse(this.category_or_any_type, false);
};
ECleverParser.prototype.doParse = function(rule, addLF) {
this.getTokenStream().tokenSource.addLF = addLF;
var tree = rule.bind(this)();
var builder = new EPromptoBuilder(this);
var walker = new antlr4.tree.ParseTreeWalker();
walker.walk(builder, tree);
return builder.getNodeValue(tree);
};
exports.ECleverParser = ECleverParser;
/***/ }),
/* 115 */
/***/ (function(module, exports, __webpack_require__) {
// Generated from EParser.g4 by ANTLR 4.7.1
// jshint ignore: start
var antlr4 = __webpack_require__(1);
var EParserListener = __webpack_require__(116).EParserListener;
var AbstractParser = __webpack_require__(117).AbstractParser;
var grammarFileName = "EParser.g4";
var serializedATN = ["\u0003\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964",
"\u0003\u00b7\u0ad6\u0004\u0002\t\u0002\u0004\u0003\t\u0003\u0004\u0004",
"\t\u0004\u0004\u0005\t\u0005\u0004\u0006\t\u0006\u0004\u0007\t\u0007",
"\u0004\b\t\b\u0004\t\t\t\u0004\n\t\n\u0004\u000b\t\u000b\u0004\f\t\f",
"\u0004\r\t\r\u0004\u000e\t\u000e\u0004\u000f\t\u000f\u0004\u0010\t\u0010",
"\u0004\u0011\t\u0011\u0004\u0012\t\u0012\u0004\u0013\t\u0013\u0004\u0014",
"\t\u0014\u0004\u0015\t\u0015\u0004\u0016\t\u0016\u0004\u0017\t\u0017",
"\u0004\u0018\t\u0018\u0004\u0019\t\u0019\u0004\u001a\t\u001a\u0004\u001b",
"\t\u001b\u0004\u001c\t\u001c\u0004\u001d\t\u001d\u0004\u001e\t\u001e",
"\u0004\u001f\t\u001f\u0004 \t \u0004!\t!\u0004\"\t\"\u0004#\t#\u0004",
"$\t$\u0004%\t%\u0004&\t&\u0004\'\t\'\u0004(\t(\u0004)\t)\u0004*\t*\u0004",
"+\t+\u0004,\t,\u0004-\t-\u0004.\t.\u0004/\t/\u00040\t0\u00041\t1\u0004",
"2\t2\u00043\t3\u00044\t4\u00045\t5\u00046\t6\u00047\t7\u00048\t8\u0004",
"9\t9\u0004:\t:\u0004;\t;\u0004<\t<\u0004=\t=\u0004>\t>\u0004?\t?\u0004",
"@\t@\u0004A\tA\u0004B\tB\u0004C\tC\u0004D\tD\u0004E\tE\u0004F\tF\u0004",
"G\tG\u0004H\tH\u0004I\tI\u0004J\tJ\u0004K\tK\u0004L\tL\u0004M\tM\u0004",
"N\tN\u0004O\tO\u0004P\tP\u0004Q\tQ\u0004R\tR\u0004S\tS\u0004T\tT\u0004",
"U\tU\u0004V\tV\u0004W\tW\u0004X\tX\u0004Y\tY\u0004Z\tZ\u0004[\t[\u0004",
"\\\t\\\u0004]\t]\u0004^\t^\u0004_\t_\u0004`\t`\u0004a\ta\u0004b\tb\u0004",
"c\tc\u0004d\td\u0004e\te\u0004f\tf\u0004g\tg\u0004h\th\u0004i\ti\u0004",
"j\tj\u0004k\tk\u0004l\tl\u0004m\tm\u0004n\tn\u0004o\to\u0004p\tp\u0004",
"q\tq\u0004r\tr\u0004s\ts\u0004t\tt\u0004u\tu\u0004v\tv\u0004w\tw\u0004",
"x\tx\u0004y\ty\u0004z\tz\u0004{\t{\u0004|\t|\u0004}\t}\u0004~\t~\u0004",
"\u007f\t\u007f\u0004\u0080\t\u0080\u0004\u0081\t\u0081\u0004\u0082\t",
"\u0082\u0004\u0083\t\u0083\u0004\u0084\t\u0084\u0004\u0085\t\u0085\u0004",
"\u0086\t\u0086\u0004\u0087\t\u0087\u0004\u0088\t\u0088\u0004\u0089\t",
"\u0089\u0004\u008a\t\u008a\u0004\u008b\t\u008b\u0004\u008c\t\u008c\u0004",
"\u008d\t\u008d\u0004\u008e\t\u008e\u0004\u008f\t\u008f\u0004\u0090\t",
"\u0090\u0004\u0091\t\u0091\u0004\u0092\t\u0092\u0004\u0093\t\u0093\u0004",
"\u0094\t\u0094\u0004\u0095\t\u0095\u0004\u0096\t\u0096\u0004\u0097\t",
"\u0097\u0004\u0098\t\u0098\u0004\u0099\t\u0099\u0004\u009a\t\u009a\u0004",
"\u009b\t\u009b\u0004\u009c\t\u009c\u0004\u009d\t\u009d\u0004\u009e\t",
"\u009e\u0004\u009f\t\u009f\u0004\u00a0\t\u00a0\u0004\u00a1\t\u00a1\u0004",
"\u00a2\t\u00a2\u0004\u00a3\t\u00a3\u0004\u00a4\t\u00a4\u0004\u00a5\t",
"\u00a5\u0004\u00a6\t\u00a6\u0004\u00a7\t\u00a7\u0004\u00a8\t\u00a8\u0004",
"\u00a9\t\u00a9\u0004\u00aa\t\u00aa\u0004\u00ab\t\u00ab\u0004\u00ac\t",
"\u00ac\u0004\u00ad\t\u00ad\u0004\u00ae\t\u00ae\u0004\u00af\t\u00af\u0004",
"\u00b0\t\u00b0\u0004\u00b1\t\u00b1\u0004\u00b2\t\u00b2\u0004\u00b3\t",
"\u00b3\u0004\u00b4\t\u00b4\u0004\u00b5\t\u00b5\u0004\u00b6\t\u00b6\u0004",
"\u00b7\t\u00b7\u0004\u00b8\t\u00b8\u0004\u00b9\t\u00b9\u0004\u00ba\t",
"\u00ba\u0004\u00bb\t\u00bb\u0004\u00bc\t\u00bc\u0004\u00bd\t\u00bd\u0004",
"\u00be\t\u00be\u0004\u00bf\t\u00bf\u0004\u00c0\t\u00c0\u0004\u00c1\t",
"\u00c1\u0004\u00c2\t\u00c2\u0004\u00c3\t\u00c3\u0004\u00c4\t\u00c4\u0004",
"\u00c5\t\u00c5\u0004\u00c6\t\u00c6\u0004\u00c7\t\u00c7\u0004\u00c8\t",
"\u00c8\u0004\u00c9\t\u00c9\u0004\u00ca\t\u00ca\u0004\u00cb\t\u00cb\u0004",
"\u00cc\t\u00cc\u0004\u00cd\t\u00cd\u0004\u00ce\t\u00ce\u0004\u00cf\t",
"\u00cf\u0004\u00d0\t\u00d0\u0004\u00d1\t\u00d1\u0004\u00d2\t\u00d2\u0004",
"\u00d3\t\u00d3\u0004\u00d4\t\u00d4\u0004\u00d5\t\u00d5\u0004\u00d6\t",
"\u00d6\u0004\u00d7\t\u00d7\u0004\u00d8\t\u00d8\u0004\u00d9\t\u00d9\u0004",
"\u00da\t\u00da\u0004\u00db\t\u00db\u0004\u00dc\t\u00dc\u0004\u00dd\t",
"\u00dd\u0004\u00de\t\u00de\u0004\u00df\t\u00df\u0004\u00e0\t\u00e0\u0004",
"\u00e1\t\u00e1\u0004\u00e2\t\u00e2\u0004\u00e3\t\u00e3\u0004\u00e4\t",
"\u00e4\u0004\u00e5\t\u00e5\u0004\u00e6\t\u00e6\u0004\u00e7\t\u00e7\u0004",
"\u00e8\t\u00e8\u0004\u00e9\t\u00e9\u0004\u00ea\t\u00ea\u0004\u00eb\t",
"\u00eb\u0004\u00ec\t\u00ec\u0004\u00ed\t\u00ed\u0004\u00ee\t\u00ee\u0004",
"\u00ef\t\u00ef\u0004\u00f0\t\u00f0\u0004\u00f1\t\u00f1\u0004\u00f2\t",
"\u00f2\u0004\u00f3\t\u00f3\u0004\u00f4\t\u00f4\u0003\u0002\u0003\u0002",
"\u0003\u0002\u0003\u0002\u0003\u0002\u0003\u0002\u0005\u0002\u01ef\n",
"\u0002\u0003\u0002\u0003\u0002\u0003\u0002\u0003\u0002\u0003\u0002\u0005",
"\u0002\u01f6\n\u0002\u0003\u0002\u0003\u0002\u0003\u0002\u0003\u0002",
"\u0003\u0002\u0003\u0002\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\u0004\u0003\u0004\u0003\u0004\u0003\u0004",
"\u0003\u0004\u0003\u0004\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005",
"\u0005\u0005\u0214\n\u0005\u0003\u0006\u0003\u0006\u0003\u0006\u0003",
"\u0006\u0005\u0006\u021a\n\u0006\u0003\u0006\u0003\u0006\u0003\u0006",
"\u0005\u0006\u021f\n\u0006\u0003\u0006\u0003\u0006\u0003\u0006\u0003",
"\u0006\u0005\u0006\u0225\n\u0006\u0005\u0006\u0227\n\u0006\u0003\u0006",
"\u0005\u0006\u022a\n\u0006\u0003\u0007\u0003\u0007\u0003\u0007\u0003",
"\u0007\u0003\u0007\u0005\u0007\u0231\n\u0007\u0003\u0007\u0003\u0007",
"\u0003\u0007\u0003\u0007\u0003\u0007\u0003\u0007\u0003\u0007\u0005\u0007",
"\u023a\n\u0007\u0003\b\u0003\b\u0003\b\u0003\b\u0003\b\u0003\b\u0003",
"\b\u0003\b\u0003\b\u0003\b\u0003\b\u0003\b\u0003\b\u0003\b\u0003\b\u0003",
"\b\u0003\b\u0003\b\u0003\b\u0003\t\u0003\t\u0003\t\u0003\t\u0005\t\u0253",
"\n\t\u0003\t\u0003\t\u0005\t\u0257\n\t\u0003\t\u0003\t\u0003\t\u0003",
"\t\u0003\t\u0003\t\u0003\t\u0003\t\u0003\t\u0005\t\u0262\n\t\u0003\t",
"\u0003\t\u0003\t\u0003\t\u0003\t\u0003\t\u0003\t\u0005\t\u026b\n\t\u0003",
"\n\u0003\n\u0003\n\u0003\n\u0003\n\u0003\n\u0003\n\u0003\n\u0003\n\u0003",
"\n\u0003\n\u0003\n\u0003\n\u0005\n\u027a\n\n\u0003\n\u0003\n\u0003\n",
"\u0003\n\u0003\n\u0003\n\u0003\n\u0005\n\u0283\n\n\u0003\u000b\u0003",
"\u000b\u0003\u000b\u0003\u000b\u0003\u000b\u0005\u000b\u028a\n\u000b",
"\u0003\f\u0003\f\u0003\f\u0003\f\u0003\f\u0003\f\u0003\f\u0003\f\u0005",
"\f\u0294\n\f\u0003\f\u0003\f\u0003\f\u0003\f\u0003\f\u0003\f\u0003\r",
"\u0003\r\u0003\r\u0003\r\u0003\r\u0003\r\u0003\r\u0003\r\u0003\r\u0003",
"\r\u0003\u000e\u0003\u000e\u0003\u000e\u0003\u000e\u0005\u000e\u02aa",
"\n\u000e\u0003\u000e\u0003\u000e\u0003\u000e\u0003\u000e\u0003\u000e",
"\u0003\u000e\u0003\u000e\u0003\u000f\u0003\u000f\u0003\u000f\u0003\u000f",
"\u0003\u000f\u0003\u000f\u0003\u000f\u0003\u000f\u0003\u000f\u0003\u000f",
"\u0003\u0010\u0003\u0010\u0003\u0010\u0003\u0010\u0005\u0010\u02c1\n",
"\u0010\u0003\u0010\u0003\u0010\u0003\u0010\u0003\u0010\u0003\u0010\u0003",
"\u0010\u0003\u0010\u0003\u0011\u0003\u0011\u0003\u0011\u0003\u0011\u0005",
"\u0011\u02ce\n\u0011\u0003\u0011\u0003\u0011\u0003\u0011\u0003\u0011",
"\u0003\u0011\u0003\u0011\u0003\u0011\u0003\u0011\u0003\u0011\u0005\u0011",
"\u02d9\n\u0011\u0003\u0011\u0003\u0011\u0003\u0011\u0003\u0011\u0003",
"\u0011\u0003\u0011\u0003\u0011\u0003\u0011\u0003\u0011\u0003\u0011\u0003",
"\u0011\u0003\u0011\u0005\u0011\u02e7\n\u0011\u0003\u0012\u0003\u0012",
"\u0003\u0012\u0003\u0012\u0005\u0012\u02ed\n\u0012\u0003\u0012\u0003",
"\u0012\u0003\u0012\u0003\u0012\u0003\u0012\u0003\u0012\u0003\u0012\u0003",
"\u0012\u0003\u0012\u0005\u0012\u02f8\n\u0012\u0003\u0012\u0003\u0012",
"\u0003\u0012\u0003\u0012\u0003\u0012\u0003\u0012\u0003\u0012\u0003\u0012",
"\u0003\u0012\u0003\u0012\u0003\u0012\u0003\u0012\u0005\u0012\u0306\n",
"\u0012\u0003\u0013\u0003\u0013\u0003\u0013\u0003\u0013\u0003\u0013\u0003",
"\u0013\u0003\u0013\u0003\u0013\u0003\u0013\u0003\u0014\u0003\u0014\u0003",
"\u0014\u0003\u0014\u0003\u0014\u0003\u0014\u0003\u0014\u0007\u0014\u0318",
"\n\u0014\f\u0014\u000e\u0014\u031b\u000b\u0014\u0003\u0015\u0003\u0015",
"\u0003\u0015\u0003\u0015\u0003\u0015\u0003\u0015\u0003\u0015\u0003\u0015",
"\u0005\u0015\u0325\n\u0015\u0005\u0015\u0327\n\u0015\u0003\u0016\u0003",
"\u0016\u0003\u0016\u0003\u0016\u0003\u0016\u0003\u0016\u0003\u0016\u0005",
"\u0016\u0330\n\u0016\u0003\u0016\u0003\u0016\u0005\u0016\u0334\n\u0016",
"\u0003\u0017\u0003\u0017\u0003\u0017\u0003\u0017\u0003\u0017\u0003\u0017",
"\u0005\u0017\u033c\n\u0017\u0003\u0017\u0003\u0017\u0005\u0017\u0340",
"\n\u0017\u0003\u0017\u0003\u0017\u0003\u0017\u0003\u0017\u0003\u0017",
"\u0005\u0017\u0347\n\u0017\u0003\u0017\u0003\u0017\u0003\u0018\u0003",
"\u0018\u0003\u0018\u0003\u0018\u0005\u0018\u034f\n\u0018\u0003\u0018",
"\u0003\u0018\u0003\u0018\u0005\u0018\u0354\n\u0018\u0003\u0018\u0003",
"\u0018\u0005\u0018\u0358\n\u0018\u0003\u0018\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\u0019",
"\u0003\u0019\u0003\u0019\u0003\u0019\u0003\u0019\u0003\u0019\u0003\u0019",
"\u0003\u0019\u0003\u0019\u0003\u0019\u0003\u0019\u0005\u0019\u0373\n",
"\u0019\u0003\u001a\u0003\u001a\u0003\u001b\u0003\u001b\u0003\u001b\u0005",
"\u001b\u037a\n\u001b\u0003\u001c\u0003\u001c\u0003\u001c\u0005\u001c",
"\u037f\n\u001c\u0003\u001c\u0003\u001c\u0005\u001c\u0383\n\u001c\u0003",
"\u001d\u0003\u001d\u0003\u001d\u0003\u001d\u0003\u001d\u0003\u001d\u0003",
"\u001d\u0003\u001d\u0003\u001d\u0003\u001d\u0003\u001d\u0003\u001d\u0003",
"\u001d\u0003\u001d\u0003\u001d\u0003\u001d\u0003\u001d\u0003\u001d\u0003",
"\u001d\u0003\u001d\u0005\u001d\u0399\n\u001d\u0003\u001e\u0003\u001e",
"\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0005\u001f",
"\u03a2\n\u001f\u0003\u001f\u0003\u001f\u0005\u001f\u03a6\n\u001f\u0003",
"\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0005",
"\u001f\u03ae\n\u001f\u0003 \u0003 \u0005 \u03b2\n \u0003 \u0003 \u0003",
" \u0005 \u03b7\n \u0003 \u0003 \u0003 \u0003 \u0003 \u0005 \u03be\n",
" \u0003 \u0005 \u03c1\n \u0003!\u0003!\u0003!\u0003!\u0003!\u0003!\u0003",
"!\u0003!\u0003!\u0003\"\u0003\"\u0003\"\u0003\"\u0003\"\u0003\"\u0003",
"\"\u0003\"\u0003\"\u0003#\u0003#\u0003#\u0003#\u0003#\u0003#\u0003#",
"\u0003#\u0003#\u0003#\u0003#\u0003#\u0003#\u0005#\u03e2\n#\u0003#\u0003",
"#\u0003$\u0003$\u0003$\u0003$\u0003$\u0003$\u0003$\u0003$\u0003$\u0003",
"$\u0003$\u0003$\u0003$\u0003$\u0003$\u0005$\u03f5\n$\u0003%\u0003%\u0003",
"%\u0003%\u0003%\u0005%\u03fc\n%\u0003%\u0003%\u0003%\u0003%\u0003%\u0003",
"%\u0003%\u0003&\u0003&\u0003&\u0003&\u0003&\u0003&\u0003&\u0003&\u0003",
"&\u0003\'\u0003\'\u0003\'\u0003\'\u0003\'\u0003\'\u0003\'\u0003(\u0003",
"(\u0003(\u0003(\u0003(\u0003(\u0003(\u0003(\u0003(\u0005(\u041e\n(\u0003",
"(\u0003(\u0003(\u0003(\u0003(\u0003(\u0003(\u0005(\u0427\n(\u0003)\u0003",
")\u0003)\u0003)\u0003)\u0003)\u0003)\u0003)\u0003)\u0003)\u0003)\u0003",
")\u0003)\u0003)\u0003)\u0003)\u0003)\u0003)\u0003)\u0007)\u043c\n)\f",
")\u000e)\u043f\u000b)\u0003*\u0003*\u0003*\u0003+\u0003+\u0003+\u0003",
"+\u0003+\u0003+\u0003+\u0003+\u0003+\u0003+\u0005+\u044e\n+\u0003+\u0003",
"+\u0003+\u0005+\u0453\n+\u0003+\u0003+\u0003+\u0003+\u0003+\u0003+\u0005",
"+\u045b\n+\u0003+\u0003+\u0003+\u0003+\u0003+\u0003+\u0003+\u0005+\u0464",
"\n+\u0003+\u0003+\u0003,\u0003,\u0003,\u0003,\u0003,\u0003,\u0003,\u0003",
",\u0003,\u0003,\u0003,\u0003,\u0003,\u0003,\u0003,\u0003,\u0003,\u0003",
",\u0003,\u0005,\u047b\n,\u0003-\u0003-\u0003.\u0003.\u0005.\u0481\n",
".\u0003/\u0003/\u0003/\u0003/\u0003/\u0003/\u0003/\u0005/\u048a\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/\u0005/\u04a4\n/\u0003/\u0003/\u0003/\u0003/\u0003",
"/\u0003/\u0003/\u0003/\u0003/\u0003/\u0003/\u0003/\u0003/\u0003/\u0003",
"/\u0003/\u0003/\u0003/\u0003/\u0003/\u0003/\u0003/\u0003/\u0003/\u0003",
"/\u0003/\u0003/\u0003/\u0003/\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/\u0007/\u0514\n/\f/\u000e/\u0517",
"\u000b/\u00030\u00030\u00030\u00030\u00030\u00070\u051e\n0\f0\u000e",
"0\u0521\u000b0\u00031\u00031\u00031\u00031\u00032\u00032\u00032\u0003",
"2\u00032\u00033\u00033\u00034\u00034\u00034\u00034\u00054\u0532\n4\u0003",
"5\u00035\u00035\u00035\u00035\u00075\u0539\n5\f5\u000e5\u053c\u000b",
"5\u00036\u00036\u00036\u00036\u00036\u00036\u00036\u00036\u00036\u0003",
"6\u00036\u00036\u00036\u00056\u054b\n6\u00037\u00037\u00037\u00057\u0550",
"\n7\u00038\u00038\u00038\u00038\u00039\u00039\u00039\u00039\u00059\u055a",
"\n9\u00039\u00039\u00039\u00059\u055f\n9\u00059\u0561\n9\u00039\u0003",
"9\u00039\u00039\u00059\u0567\n9\u00059\u0569\n9\u00059\u056b\n9\u0003",
":\u0003:\u0003:\u0003:\u0003:\u0003;\u0003;\u0003;\u0003;\u0003<\u0003",
"<\u0003<\u0003<\u0003<\u0003<\u0003=\u0003=\u0003=\u0005=\u057f\n=\u0003",
"=\u0003=\u0003=\u0003=\u0003=\u0005=\u0586\n=\u0003=\u0003=\u0005=\u058a",
"\n=\u0003=\u0003=\u0003=\u0003=\u0003=\u0003=\u0003=\u0003=\u0003=\u0005",
"=\u0595\n=\u0003=\u0003=\u0005=\u0599\n=\u0003=\u0003=\u0003=\u0005",
"=\u059e\n=\u0005=\u05a0\n=\u0003>\u0003>\u0003>\u0005>\u05a5\n>\u0003",
">\u0003>\u0003>\u0003>\u0003>\u0003>\u0003>\u0003>\u0003>\u0003>\u0003",
">\u0003>\u0003>\u0005>\u05b4\n>\u0003>\u0003>\u0005>\u05b8\n>\u0003",
">\u0003>\u0003>\u0003>\u0003>\u0003>\u0003>\u0003>\u0003>\u0005>\u05c3",
"\n>\u0003>\u0003>\u0005>\u05c7\n>\u0003>\u0003>\u0003>\u0005>\u05cc",
"\n>\u0003>\u0003>\u0003>\u0003>\u0003>\u0003>\u0003>\u0003>\u0005>\u05d6",
"\n>\u0003?\u0003?\u0005?\u05da\n?\u0003?\u0003?\u0003?\u0003?\u0003",
"?\u0003?\u0005?\u05e2\n?\u0003@\u0003@\u0003@\u0003@\u0003@\u0005@\u05e9",
"\n@\u0005@\u05eb\n@\u0003@\u0003@\u0003@\u0005@\u05f0\n@\u0005@\u05f2",
"\n@\u0003A\u0003A\u0003A\u0003A\u0003A\u0003A\u0003A\u0007A\u05fb\n",
"A\fA\u000eA\u05fe\u000bA\u0003B\u0003B\u0003B\u0005B\u0603\nB\u0003",
"B\u0003B\u0003C\u0003C\u0003C\u0003C\u0003D\u0003D\u0003D\u0003D\u0003",
"D\u0003D\u0003D\u0003D\u0005D\u0613\nD\u0003E\u0003E\u0003E\u0003E\u0003",
"F\u0007F\u061a\nF\fF\u000eF\u061d\u000bF\u0003G\u0006G\u0620\nG\rG\u000e",
"G\u0621\u0003H\u0007H\u0625\nH\fH\u000eH\u0628\u000bH\u0003I\u0006I",
"\u062b\nI\rI\u000eI\u062c\u0003I\u0003I\u0003J\u0007J\u0632\nJ\fJ\u000e",
"J\u0635\u000bJ\u0003J\u0003J\u0003K\u0003K\u0003L\u0005L\u063c\nL\u0003",
"L\u0003L\u0003L\u0003M\u0003M\u0003M\u0003M\u0007M\u0645\nM\fM\u000e",
"M\u0648\u000bM\u0003N\u0003N\u0003N\u0007N\u064d\nN\fN\u000eN\u0650",
"\u000bN\u0003N\u0003N\u0003N\u0007N\u0655\nN\fN\u000eN\u0658\u000bN",
"\u0003N\u0003N\u0003N\u0003N\u0003N\u0003N\u0005N\u0660\nN\u0003O\u0003",
"O\u0003O\u0003O\u0003O\u0005O\u0667\nO\u0003P\u0003P\u0003Q\u0003Q\u0003",
"R\u0003R\u0005R\u066f\nR\u0003S\u0003S\u0003S\u0003S\u0007S\u0675\n",
"S\fS\u000eS\u0678\u000bS\u0003T\u0003T\u0003T\u0003T\u0007T\u067e\n",
"T\fT\u000eT\u0681\u000bT\u0003U\u0003U\u0003U\u0007U\u0686\nU\fU\u000e",
"U\u0689\u000bU\u0003V\u0003V\u0003V\u0003V\u0003V\u0003V\u0003V\u0003",
"V\u0003V\u0003V\u0005V\u0695\nV\u0003W\u0005W\u0698\nW\u0003W\u0003",
"W\u0005W\u069c\nW\u0003W\u0003W\u0003X\u0005X\u06a1\nX\u0003X\u0003",
"X\u0005X\u06a5\nX\u0003X\u0003X\u0003Y\u0003Y\u0003Y\u0007Y\u06ac\n",
"Y\fY\u000eY\u06af\u000bY\u0003Z\u0003Z\u0003Z\u0003Z\u0003Z\u0003Z\u0003",
"[\u0003[\u0003[\u0003[\u0003[\u0003[\u0003[\u0003[\u0003[\u0003[\u0003",
"[\u0003[\u0005[\u06c3\n[\u0003[\u0003[\u0003[\u0003[\u0003[\u0003[\u0003",
"[\u0007[\u06cc\n[\f[\u000e[\u06cf\u000b[\u0003\\\u0003\\\u0005\\\u06d3",
"\n\\\u0003]\u0003]\u0003]\u0003]\u0003]\u0003]\u0003]\u0003]\u0003]",
"\u0003]\u0003]\u0003]\u0003]\u0003]\u0003]\u0003]\u0005]\u06e5\n]\u0003",
"^\u0003^\u0003_\u0005_\u06ea\n_\u0003_\u0003_\u0003`\u0003`\u0003a\u0003",
"a\u0003a\u0005a\u06f3\na\u0003b\u0003b\u0005b\u06f7\nb\u0003c\u0003",
"c\u0003c\u0007c\u06fc\nc\fc\u000ec\u06ff\u000bc\u0003d\u0003d\u0005",
"d\u0703\nd\u0003e\u0003e\u0005e\u0707\ne\u0003f\u0003f\u0003f\u0003",
"f\u0003g\u0003g\u0003g\u0003h\u0003h\u0003h\u0005h\u0713\nh\u0003i\u0003",
"i\u0003j\u0003j\u0003k\u0003k\u0003l\u0003l\u0003m\u0003m\u0003n\u0003",
"n\u0003n\u0007n\u0722\nn\fn\u000en\u0725\u000bn\u0003o\u0003o\u0005",
"o\u0729\no\u0003o\u0005o\u072c\no\u0003p\u0003p\u0005p\u0730\np\u0003",
"q\u0003q\u0003q\u0005q\u0735\nq\u0003r\u0003r\u0003r\u0003s\u0003s\u0005",
"s\u073c\ns\u0003t\u0003t\u0003t\u0003t\u0003t\u0003t\u0003t\u0003t\u0003",
"t\u0007t\u0747\nt\ft\u000et\u074a\u000bt\u0003u\u0003u\u0003u\u0003",
"u\u0007u\u0750\nu\fu\u000eu\u0753\u000bu\u0003v\u0003v\u0003v\u0007",
"v\u0758\nv\fv\u000ev\u075b\u000bv\u0003v\u0003v\u0003v\u0007v\u0760",
"\nv\fv\u000ev\u0763\u000bv\u0003v\u0003v\u0003v\u0003v\u0003v\u0005",
"v\u076a\nv\u0003w\u0003w\u0003w\u0003w\u0007w\u0770\nw\fw\u000ew\u0773",
"\u000bw\u0003x\u0003x\u0003x\u0005x\u0778\nx\u0003y\u0003y\u0003y\u0003",
"y\u0003y\u0003y\u0003y\u0003y\u0003y\u0003y\u0005y\u0784\ny\u0003z\u0003",
"z\u0005z\u0788\nz\u0003{\u0003{\u0003{\u0003{\u0003{\u0003{\u0007{\u0790",
"\n{\f{\u000e{\u0793\u000b{\u0003|\u0003|\u0003|\u0007|\u0798\n|\f|\u000e",
"|\u079b\u000b|\u0003|\u0005|\u079e\n|\u0003}\u0003}\u0003}\u0003}\u0005",
"}\u07a4\n}\u0003}\u0003}\u0003}\u0007}\u07a9\n}\f}\u000e}\u07ac\u000b",
"}\u0003}\u0003}\u0005}\u07b0\n}\u0003~\u0003~\u0003~\u0007~\u07b5\n",
"~\f~\u000e~\u07b8\u000b~\u0003\u007f\u0003\u007f\u0003\u007f\u0007\u007f",
"\u07bd\n\u007f\f\u007f\u000e\u007f\u07c0\u000b\u007f\u0003\u0080\u0003",
"\u0080\u0003\u0080\u0003\u0080\u0005\u0080\u07c6\n\u0080\u0003\u0081",
"\u0003\u0081\u0003\u0082\u0003\u0082\u0003\u0082\u0003\u0082\u0007\u0082",
"\u07ce\n\u0082\f\u0082\u000e\u0082\u07d1\u000b\u0082\u0003\u0083\u0003",
"\u0083\u0003\u0083\u0003\u0083\u0003\u0083\u0003\u0083\u0003\u0083\u0003",
"\u0083\u0003\u0083\u0003\u0083\u0005\u0083\u07dd\n\u0083\u0003\u0084",
"\u0003\u0084\u0005\u0084\u07e1\n\u0084\u0003\u0084\u0005\u0084\u07e4",
"\n\u0084\u0003\u0085\u0003\u0085\u0005\u0085\u07e8\n\u0085\u0003\u0085",
"\u0005\u0085\u07eb\n\u0085\u0003\u0086\u0003\u0086\u0003\u0086\u0003",
"\u0086\u0007\u0086\u07f1\n\u0086\f\u0086\u000e\u0086\u07f4\u000b\u0086",
"\u0003\u0087\u0003\u0087\u0003\u0087\u0003\u0087\u0007\u0087\u07fa\n",
"\u0087\f\u0087\u000e\u0087\u07fd\u000b\u0087\u0003\u0088\u0003\u0088",
"\u0003\u0088\u0003\u0088\u0007\u0088\u0803\n\u0088\f\u0088\u000e\u0088",
"\u0806\u000b\u0088\u0003\u0089\u0003\u0089\u0003\u0089\u0003\u0089\u0007",
"\u0089\u080c\n\u0089\f\u0089\u000e\u0089\u080f\u000b\u0089\u0003\u008a",
"\u0003\u008a\u0003\u008a\u0003\u008a\u0003\u008a\u0003\u008a\u0003\u008a",
"\u0003\u008a\u0003\u008a\u0003\u008a\u0003\u008a\u0003\u008a\u0003\u008a",
"\u0003\u008a\u0005\u008a\u081f\n\u008a\u0003\u008b\u0003\u008b\u0003",
"\u008b\u0003\u008b\u0003\u008b\u0003\u008b\u0003\u008b\u0003\u008b\u0003",
"\u008b\u0003\u008b\u0003\u008b\u0003\u008b\u0003\u008b\u0003\u008b\u0003",
"\u008b\u0005\u008b\u0830\n\u008b\u0003\u008c\u0003\u008c\u0003\u008c",
"\u0007\u008c\u0835\n\u008c\f\u008c\u000e\u008c\u0838\u000b\u008c\u0003",
"\u008d\u0003\u008d\u0003\u008e\u0003\u008e\u0003\u008e\u0003\u008e\u0003",
"\u008f\u0003\u008f\u0005\u008f\u0842\n\u008f\u0003\u0090\u0003\u0090",
"\u0003\u0090\u0003\u0090\u0003\u0090\u0003\u0090\u0005\u0090\u084a\n",
"\u0090\u0003\u0091\u0005\u0091\u084d\n\u0091\u0003\u0091\u0003\u0091",
"\u0005\u0091\u0851\n\u0091\u0003\u0091\u0003\u0091\u0003\u0092\u0005",
"\u0092\u0856\n\u0092\u0003\u0092\u0003\u0092\u0003\u0092\u0003\u0092",
"\u0003\u0092\u0003\u0092\u0003\u0092\u0003\u0092\u0005\u0092\u0860\n",
"\u0092\u0003\u0093\u0003\u0093\u0005\u0093\u0864\n\u0093\u0003\u0093",
"\u0003\u0093\u0003\u0094\u0003\u0094\u0003\u0094\u0003\u0094\u0003\u0094",
"\u0007\u0094\u086d\n\u0094\f\u0094\u000e\u0094\u0870\u000b\u0094\u0005",
"\u0094\u0872\n\u0094\u0003\u0095\u0003\u0095\u0003\u0095\u0007\u0095",
"\u0877\n\u0095\f\u0095\u000e\u0095\u087a\u000b\u0095\u0003\u0096\u0003",
"\u0096\u0003\u0096\u0003\u0096\u0003\u0097\u0003\u0097\u0005\u0097\u0882",
"\n\u0097\u0003\u0098\u0003\u0098\u0003\u0098\u0003\u0098\u0003\u0098",
"\u0003\u0098\u0003\u0098\u0003\u0098\u0003\u0098\u0005\u0098\u088d\n",
"\u0098\u0003\u0099\u0003\u0099\u0003\u0099\u0003\u0099\u0003\u009a\u0003",
"\u009a\u0003\u009a\u0003\u009a\u0003\u009a\u0007\u009a\u0898\n\u009a",
"\f\u009a\u000e\u009a\u089b\u000b\u009a\u0003\u009b\u0003\u009b\u0003",
"\u009b\u0003\u009b\u0005\u009b\u08a1\n\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\u0007\u009e",
"\u08b0\n\u009e\f\u009e\u000e\u009e\u08b3\u000b\u009e\u0003\u009f\u0003",
"\u009f\u0003\u009f\u0007\u009f\u08b8\n\u009f\f\u009f\u000e\u009f\u08bb",
"\u000b\u009f\u0003\u009f\u0005\u009f\u08be\n\u009f\u0003\u00a0\u0003",
"\u00a0\u0003\u00a0\u0003\u00a0\u0003\u00a0\u0003\u00a0\u0005\u00a0\u08c6",
"\n\u00a0\u0003\u00a1\u0003\u00a1\u0003\u00a2\u0003\u00a2\u0003\u00a2",
"\u0003\u00a3\u0003\u00a3\u0003\u00a3\u0003\u00a4\u0003\u00a4\u0003\u00a4",
"\u0003\u00a5\u0003\u00a5\u0003\u00a5\u0003\u00a6\u0003\u00a6\u0003\u00a6",
"\u0003\u00a7\u0003\u00a7\u0003\u00a8\u0003\u00a8\u0003\u00a9\u0003\u00a9",
"\u0003\u00aa\u0003\u00aa\u0003\u00ab\u0003\u00ab\u0003\u00ac\u0003\u00ac",
"\u0003\u00ac\u0003\u00ac\u0003\u00ac\u0003\u00ac\u0003\u00ac\u0005\u00ac",
"\u08ea\n\u00ac\u0003\u00ad\u0003\u00ad\u0003\u00ad\u0003\u00ad\u0003",
"\u00ad\u0007\u00ad\u08f1\n\u00ad\f\u00ad\u000e\u00ad\u08f4\u000b\u00ad",
"\u0003\u00ae\u0003\u00ae\u0003\u00ae\u0003\u00ae\u0003\u00ae\u0003\u00ae",
"\u0003\u00ae\u0005\u00ae\u08fd\n\u00ae\u0003\u00af\u0003\u00af\u0003",
"\u00b0\u0003\u00b0\u0003\u00b0\u0003\u00b1\u0003\u00b1\u0003\u00b1\u0003",
"\u00b1\u0003\u00b1\u0005\u00b1\u0909\n\u00b1\u0003\u00b2\u0003\u00b2",
"\u0003\u00b2\u0005\u00b2\u090e\n\u00b2\u0003\u00b2\u0003\u00b2\u0003",
"\u00b3\u0003\u00b3\u0003\u00b3\u0003\u00b3\u0003\u00b3\u0003\u00b3\u0007",
"\u00b3\u0918\n\u00b3\f\u00b3\u000e\u00b3\u091b\u000b\u00b3\u0003\u00b4",
"\u0003\u00b4\u0003\u00b4\u0003\u00b4\u0003\u00b5\u0003\u00b5\u0003\u00b5",
"\u0003\u00b5\u0003\u00b6\u0003\u00b6\u0003\u00b7\u0003\u00b7\u0003\u00b7",
"\u0003\u00b7\u0003\u00b7\u0005\u00b7\u092c\n\u00b7\u0003\u00b8\u0003",
"\u00b8\u0003\u00b9\u0003\u00b9\u0003\u00b9\u0005\u00b9\u0933\n\u00b9",
"\u0003\u00ba\u0003\u00ba\u0003\u00ba\u0003\u00ba\u0003\u00ba\u0007\u00ba",
"\u093a\n\u00ba\f\u00ba\u000e\u00ba\u093d\u000b\u00ba\u0003\u00bb\u0003",
"\u00bb\u0003\u00bb\u0003\u00bb\u0003\u00bb\u0005\u00bb\u0944\n\u00bb",
"\u0003\u00bc\u0003\u00bc\u0003\u00bd\u0003\u00bd\u0003\u00bd\u0003\u00bd",
"\u0003\u00bd\u0003\u00bd\u0005\u00bd\u094e\n\u00bd\u0003\u00be\u0003",
"\u00be\u0003\u00be\u0005\u00be\u0953\n\u00be\u0003\u00be\u0003\u00be",
"\u0003\u00bf\u0003\u00bf\u0003\u00bf\u0003\u00bf\u0003\u00bf\u0003\u00bf",
"\u0005\u00bf\u095d\n\u00bf\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003",
"\u00c0\u0003\u00c0\u0003\u00c0\u0007\u00c0\u0965\n\u00c0\f\u00c0\u000e",
"\u00c0\u0968\u000b\u00c0\u0003\u00c1\u0003\u00c1\u0003\u00c1\u0003\u00c1",
"\u0003\u00c1\u0003\u00c1\u0003\u00c1\u0003\u00c1\u0003\u00c1\u0003\u00c1",
"\u0003\u00c1\u0007\u00c1\u0975\n\u00c1\f\u00c1\u000e\u00c1\u0978\u000b",
"\u00c1\u0003\u00c2\u0003\u00c2\u0003\u00c2\u0003\u00c2\u0003\u00c3\u0003",
"\u00c3\u0003\u00c3\u0005\u00c3\u0981\n\u00c3\u0003\u00c3\u0003\u00c3",
"\u0003\u00c3\u0007\u00c3\u0986\n\u00c3\f\u00c3\u000e\u00c3\u0989\u000b",
"\u00c3\u0003\u00c4\u0003\u00c4\u0003\u00c4\u0003\u00c4\u0003\u00c4\u0005",
"\u00c4\u0990\n\u00c4\u0003\u00c5\u0003\u00c5\u0003\u00c6\u0003\u00c6",
"\u0003\u00c6\u0003\u00c6\u0003\u00c6\u0003\u00c6\u0003\u00c6\u0005\u00c6",
"\u099b\n\u00c6\u0003\u00c7\u0003\u00c7\u0003\u00c7\u0003\u00c7\u0003",
"\u00c7\u0007\u00c7\u09a2\n\u00c7\f\u00c7\u000e\u00c7\u09a5\u000b\u00c7",
"\u0003\u00c8\u0003\u00c8\u0003\u00c8\u0003\u00c8\u0003\u00c8\u0005\u00c8",
"\u09ac\n\u00c8\u0003\u00c9\u0003\u00c9\u0003\u00ca\u0003\u00ca\u0003",
"\u00ca\u0003\u00cb\u0003\u00cb\u0003\u00cb\u0005\u00cb\u09b6\n\u00cb",
"\u0003\u00cc\u0003\u00cc\u0003\u00cc\u0005\u00cc\u09bb\n\u00cc\u0003",
"\u00cc\u0003\u00cc\u0003\u00cd\u0003\u00cd\u0003\u00cd\u0003\u00cd\u0003",
"\u00cd\u0003\u00cd\u0007\u00cd\u09c5\n\u00cd\f\u00cd\u000e\u00cd\u09c8",
"\u000b\u00cd\u0003\u00ce\u0003\u00ce\u0003\u00ce\u0003\u00ce\u0003\u00cf",
"\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00d0\u0003\u00d0\u0003\u00d0",
"\u0003\u00d0\u0003\u00d0\u0003\u00d0\u0007\u00d0\u09d8\n\u00d0\f\u00d0",
"\u000e\u00d0\u09db\u000b\u00d0\u0003\u00d1\u0003\u00d1\u0003\u00d1\u0003",
"\u00d1\u0003\u00d1\u0007\u00d1\u09e2\n\u00d1\f\u00d1\u000e\u00d1\u09e5",
"\u000b\u00d1\u0003\u00d2\u0003\u00d2\u0003\u00d2\u0003\u00d2\u0003\u00d2",
"\u0005\u00d2\u09ec\n\u00d2\u0003\u00d3\u0003\u00d3\u0003\u00d4\u0003",
"\u00d4\u0003\u00d4\u0003\u00d4\u0003\u00d4\u0003\u00d4\u0003\u00d4\u0005",
"\u00d4\u09f7\n\u00d4\u0003\u00d5\u0003\u00d5\u0003\u00d5\u0003\u00d5",
"\u0003\u00d5\u0007\u00d5\u09fe\n\u00d5\f\u00d5\u000e\u00d5\u0a01\u000b",
"\u00d5\u0003\u00d6\u0003\u00d6\u0003\u00d6\u0003\u00d6\u0003\u00d6\u0005",
"\u00d6\u0a08\n\u00d6\u0003\u00d7\u0003\u00d7\u0003\u00d8\u0003\u00d8",
"\u0003\u00d8\u0003\u00d9\u0003\u00d9\u0003\u00d9\u0005\u00d9\u0a12\n",
"\u00d9\u0003\u00da\u0003\u00da\u0003\u00da\u0005\u00da\u0a17\n\u00da",
"\u0003\u00da\u0003\u00da\u0003\u00db\u0003\u00db\u0003\u00db\u0003\u00db",
"\u0003\u00db\u0003\u00db\u0007\u00db\u0a21\n\u00db\f\u00db\u000e\u00db",
"\u0a24\u000b\u00db\u0003\u00dc\u0003\u00dc\u0003\u00dc\u0003\u00dc\u0003",
"\u00dd\u0003\u00dd\u0003\u00dd\u0003\u00dd\u0003\u00de\u0003\u00de\u0003",
"\u00de\u0005\u00de\u0a31\n\u00de\u0003\u00de\u0003\u00de\u0003\u00de",
"\u0007\u00de\u0a36\n\u00de\f\u00de\u000e\u00de\u0a39\u000b\u00de\u0003",
"\u00df\u0003\u00df\u0003\u00df\u0003\u00df\u0003\u00df\u0005\u00df\u0a40",
"\n\u00df\u0003\u00e0\u0003\u00e0\u0003\u00e1\u0003\u00e1\u0005\u00e1",
"\u0a46\n\u00e1\u0003\u00e2\u0003\u00e2\u0003\u00e2\u0005\u00e2\u0a4b",
"\n\u00e2\u0003\u00e2\u0003\u00e2\u0005\u00e2\u0a4f\n\u00e2\u0003\u00e3",
"\u0003\u00e3\u0005\u00e3\u0a53\n\u00e3\u0003\u00e3\u0003\u00e3\u0003",
"\u00e4\u0003\u00e4\u0003\u00e4\u0005\u00e4\u0a5a\n\u00e4\u0003\u00e5",
"\u0003\u00e5\u0003\u00e5\u0003\u00e5\u0003\u00e6\u0003\u00e6\u0003\u00e6",
"\u0003\u00e6\u0007\u00e6\u0a64\n\u00e6\f\u00e6\u000e\u00e6\u0a67\u000b",
"\u00e6\u0003\u00e6\u0003\u00e6\u0003\u00e6\u0003\u00e7\u0003\u00e7\u0003",
"\u00e7\u0003\u00e7\u0007\u00e7\u0a70\n\u00e7\f\u00e7\u000e\u00e7\u0a73",
"\u000b\u00e7\u0003\u00e7\u0003\u00e7\u0003\u00e8\u0003\u00e8\u0003\u00e8",
"\u0003\u00e8\u0003\u00e8\u0003\u00e9\u0003\u00e9\u0003\u00e9\u0007\u00e9",
"\u0a7f\n\u00e9\f\u00e9\u000e\u00e9\u0a82\u000b\u00e9\u0003\u00ea\u0003",
"\u00ea\u0007\u00ea\u0a86\n\u00ea\f\u00ea\u000e\u00ea\u0a89\u000b\u00ea",
"\u0003\u00eb\u0003\u00eb\u0003\u00eb\u0005\u00eb\u0a8e\n\u00eb\u0003",
"\u00eb\u0003\u00eb\u0003\u00ec\u0003\u00ec\u0003\u00ec\u0003\u00ec\u0003",
"\u00ec\u0005\u00ec\u0a97\n\u00ec\u0003\u00ed\u0006\u00ed\u0a9a\n\u00ed",
"\r\u00ed\u000e\u00ed\u0a9b\u0003\u00ee\u0003\u00ee\u0003\u00ee\u0003",
"\u00ee\u0005\u00ee\u0aa2\n\u00ee\u0003\u00ee\u0005\u00ee\u0aa5\n\u00ee",
"\u0003\u00ef\u0006\u00ef\u0aa8\n\u00ef\r\u00ef\u000e\u00ef\u0aa9\u0003",
"\u00f0\u0003\u00f0\u0006\u00f0\u0aae\n\u00f0\r\u00f0\u000e\u00f0\u0aaf",
"\u0003\u00f0\u0003\u00f0\u0003\u00f1\u0003\u00f1\u0003\u00f1\u0003\u00f1",
"\u0003\u00f1\u0003\u00f2\u0003\u00f2\u0003\u00f2\u0003\u00f2\u0005\u00f2",
"\u0abd\n\u00f2\u0003\u00f2\u0003\u00f2\u0006\u00f2\u0ac1\n\u00f2\r\u00f2",
"\u000e\u00f2\u0ac2\u0007\u00f2\u0ac5\n\u00f2\f\u00f2\u000e\u00f2\u0ac8",
"\u000b\u00f2\u0003\u00f3\u0003\u00f3\u0003\u00f3\u0003\u00f3\u0003\u00f3",
"\u0005\u00f3\u0acf\n\u00f3\u0003\u00f4\u0006\u00f4\u0ad2\n\u00f4\r\u00f4",
"\u000e\u00f4\u0ad3\u0003\u00f4\u0002\u0019&P\\^h\u0080\u00b4\u00e6\u0132",
"\u0158\u0164\u0172\u017e\u0180\u0184\u018c\u0198\u019e\u01a0\u01a8\u01b4",
"\u01ba\u01e2\u00f5\u0002\u0004\u0006\b\n\f\u000e\u0010\u0012\u0014\u0016",
"\u0018\u001a\u001c\u001e \"$&(*,.02468:<>@BDFHJLNPRTVXZ\\^`bdfhjlnp",
"rtvxz|~\u0080\u0082\u0084\u0086\u0088\u008a\u008c\u008e\u0090\u0092",
"\u0094\u0096\u0098\u009a\u009c\u009e\u00a0\u00a2\u00a4\u00a6\u00a8\u00aa",
"\u00ac\u00ae\u00b0\u00b2\u00b4\u00b6\u00b8\u00ba\u00bc\u00be\u00c0\u00c2",
"\u00c4\u00c6\u00c8\u00ca\u00cc\u00ce\u00d0\u00d2\u00d4\u00d6\u00d8\u00da",
"\u00dc\u00de\u00e0\u00e2\u00e4\u00e6\u00e8\u00ea\u00ec\u00ee\u00f0\u00f2",
"\u00f4\u00f6\u00f8\u00fa\u00fc\u00fe\u0100\u0102\u0104\u0106\u0108\u010a",
"\u010c\u010e\u0110\u0112\u0114\u0116\u0118\u011a\u011c\u011e\u0120\u0122",
"\u0124\u0126\u0128\u012a\u012c\u012e\u0130\u0132\u0134\u0136\u0138\u013a",
"\u013c\u013e\u0140\u0142\u0144\u0146\u0148\u014a\u014c\u014e\u0150\u0152",
"\u0154\u0156\u0158\u015a\u015c\u015e\u0160\u0162\u0164\u0166\u0168\u016a",
"\u016c\u016e\u0170\u0172\u0174\u0176\u0178\u017a\u017c\u017e\u0180\u0182",
"\u0184\u0186\u0188\u018a\u018c\u018e\u0190\u0192\u0194\u0196\u0198\u019a",
"\u019c\u019e\u01a0\u01a2\u01a4\u01a6\u01a8\u01aa\u01ac\u01ae\u01b0\u01b2",
"\u01b4\u01b6\u01b8\u01ba\u01bc\u01be\u01c0\u01c2\u01c4\u01c6\u01c8\u01ca",
"\u01cc\u01ce\u01d0\u01d2\u01d4\u01d6\u01d8\u01da\u01dc\u01de\u01e0\u01e2",
"\u01e4\u01e6\u0002\u0010\u0003\u0002\"#\u0004\u0002\u0003\u0003\u0007",
"\t\u0004\u0002\u0094\u0094\u00aa\u00aa\u0003\u0002\u00a8\u00aa\u0004",
"\u0002\u0090\u0090\u0099\u0099\u0004\u0002NN__\u0005\u0002\u000b\u0010",
"5\u0097\u0099\u00a3\u0004\u0002\'\'zz\r\u00025>DDGG}}\u0080\u0080\u008a",
"\u008a\u0090\u0090\u0097\u0097\u00a3\u00a3\u00a8\u00aa\u00ac\u00ac\f",
"\u00025>DDGG}}\u0080\u0080\u008a\u008a\u0097\u0097\u0099\u0099\u00a3",
"\u00a3\u00a8\u00aa\f\u00025>DDGG}}\u0080\u0080\u008a\u008a\u0090\u0090",
"\u0097\u0097\u00a3\u00a3\u00a8\u00ac\f\u00025>DDGG}}\u0080\u0080\u008a",
"\u008a\u0090\u0090\u0097\u0097\u00a3\u00a3\u00a8\u00aa\u0005\u0002\u001a",
"\u001b((**\u0005\u0002\t\t\u0011\u0012\u001a\u001b\u0002\u0b77\u0002",
"\u01e8\u0003\u0002\u0002\u0002\u0004\u01fd\u0003\u0002\u0002\u0002\u0006",
"\u0209\u0003\u0002\u0002\u0002\b\u020f\u0003\u0002\u0002\u0002\n\u0215",
"\u0003\u0002\u0002\u0002\f\u022b\u0003\u0002\u0002\u0002\u000e\u023b",
"\u0003\u0002\u0002\u0002\u0010\u024e\u0003\u0002\u0002\u0002\u0012\u026c",
"\u0003\u0002\u0002\u0002\u0014\u0289\u0003\u0002\u0002\u0002\u0016\u028b",
"\u0003\u0002\u0002\u0002\u0018\u029b\u0003\u0002\u0002\u0002\u001a\u02a5",
"\u0003\u0002\u0002\u0002\u001c\u02b2\u0003\u0002\u0002\u0002\u001e\u02bc",
"\u0003\u0002\u0002\u0002 \u02c9\u0003\u0002\u0002\u0002\"\u02e8\u0003",
"\u0002\u0002\u0002$\u0307\u0003\u0002\u0002\u0002&\u0310\u0003\u0002",
"\u0002\u0002(\u0326\u0003\u0002\u0002\u0002*\u0328\u0003\u0002\u0002",
"\u0002,\u0335\u0003\u0002\u0002\u0002.\u034a\u0003\u0002\u0002\u0002",
"0\u035f\u0003\u0002\u0002\u00022\u0374\u0003\u0002\u0002\u00024\u0376",
"\u0003\u0002\u0002\u00026\u037b\u0003\u0002\u0002\u00028\u0398\u0003",
"\u0002\u0002\u0002:\u039a\u0003\u0002\u0002\u0002<\u03a5\u0003\u0002",
"\u0002\u0002>\u03c0\u0003\u0002\u0002\u0002@\u03c2\u0003\u0002\u0002",
"\u0002B\u03cb\u0003\u0002\u0002\u0002D\u03d4\u0003\u0002\u0002\u0002",
"F\u03f4\u0003\u0002\u0002\u0002H\u03f6\u0003\u0002\u0002\u0002J\u0404",
"\u0003\u0002\u0002\u0002L\u040d\u0003\u0002\u0002\u0002N\u0414\u0003",
"\u0002\u0002\u0002P\u0428\u0003\u0002\u0002\u0002R\u0440\u0003\u0002",
"\u0002\u0002T\u0443\u0003\u0002\u0002\u0002V\u047a\u0003\u0002\u0002",
"\u0002X\u047c\u0003\u0002\u0002\u0002Z\u047e\u0003\u0002\u0002\u0002",
"\\\u04a3\u0003\u0002\u0002\u0002^\u0518\u0003\u0002\u0002\u0002`\u0522",
"\u0003\u0002\u0002\u0002b\u0526\u0003\u0002\u0002\u0002d\u052b\u0003",
"\u0002\u0002\u0002f\u0531\u0003\u0002\u0002\u0002h\u0533\u0003\u0002",
"\u0002\u0002j\u054a\u0003\u0002\u0002\u0002l\u054c\u0003\u0002\u0002",
"\u0002n\u0551\u0003\u0002\u0002\u0002p\u056a\u0003\u0002\u0002\u0002",
"r\u056c\u0003\u0002\u0002\u0002t\u0571\u0003\u0002\u0002\u0002v\u0575",
"\u0003\u0002\u0002\u0002x\u059f\u0003\u0002\u0002\u0002z\u05d5\u0003",
"\u0002\u0002\u0002|\u05d7\u0003\u0002\u0002\u0002~\u05f1\u0003\u0002",
"\u0002\u0002\u0080\u05f3\u0003\u0002\u0002\u0002\u0082\u0602\u0003\u0002",
"\u0002\u0002\u0084\u0606\u0003\u0002\u0002\u0002\u0086\u0612\u0003\u0002",
"\u0002\u0002\u0088\u0614\u0003\u0002\u0002\u0002\u008a\u061b\u0003\u0002",
"\u0002\u0002\u008c\u061f\u0003\u0002\u0002\u0002\u008e\u0626\u0003\u0002",
"\u0002\u0002\u0090\u062a\u0003\u0002\u0002\u0002\u0092\u0633\u0003\u0002",
"\u0002\u0002\u0094\u0638\u0003\u0002\u0002\u0002\u0096\u063b\u0003\u0002",
"\u0002\u0002\u0098\u0640\u0003\u0002\u0002\u0002\u009a\u064e\u0003\u0002",
"\u0002\u0002\u009c\u0661\u0003\u0002\u0002\u0002\u009e\u0668\u0003\u0002",
"\u0002\u0002\u00a0\u066a\u0003\u0002\u0002\u0002\u00a2\u066e\u0003\u0002",
"\u0002\u0002\u00a4\u0670\u0003\u0002\u0002\u0002\u00a6\u0679\u0003\u0002",
"\u0002\u0002\u00a8\u0682\u0003\u0002\u0002\u0002\u00aa\u0694\u0003\u0002",
"\u0002\u0002\u00ac\u0697\u0003\u0002\u0002\u0002\u00ae\u06a0\u0003\u0002",
"\u0002\u0002\u00b0\u06a8\u0003\u0002\u0002\u0002\u00b2\u06b0\u0003\u0002",
"\u0002\u0002\u00b4\u06c2\u0003\u0002\u0002\u0002\u00b6\u06d2\u0003\u0002",
"\u0002\u0002\u00b8\u06e4\u0003\u0002\u0002\u0002\u00ba\u06e6\u0003\u0002",
"\u0002\u0002\u00bc\u06e9\u0003\u0002\u0002\u0002\u00be\u06ed\u0003\u0002",
"\u0002\u0002\u00c0\u06f2\u0003\u0002\u0002\u0002\u00c2\u06f6\u0003\u0002",
"\u0002\u0002\u00c4\u06f8\u0003\u0002\u0002\u0002\u00c6\u0702\u0003\u0002",
"\u0002\u0002\u00c8\u0706\u0003\u0002\u0002\u0002\u00ca\u0708\u0003\u0002",
"\u0002\u0002\u00cc\u070c\u0003\u0002\u0002\u0002\u00ce\u0712\u0003\u0002",
"\u0002\u0002\u00d0\u0714\u0003\u0002\u0002\u0002\u00d2\u0716\u0003\u0002",
"\u0002\u0002\u00d4\u0718\u0003\u0002\u0002\u0002\u00d6\u071a\u0003\u0002",
"\u0002\u0002\u00d8\u071c\u0003\u0002\u0002\u0002\u00da\u071e\u0003\u0002",
"\u0002\u0002\u00dc\u072b\u0003\u0002\u0002\u0002\u00de\u072f\u0003\u0002",
"\u0002\u0002\u00e0\u0731\u0003\u0002\u0002\u0002\u00e2\u0736\u0003\u0002",
"\u0002\u0002\u00e4\u073b\u0003\u0002\u0002\u0002\u00e6\u073d\u0003\u0002",
"\u0002\u0002\u00e8\u074b\u0003\u0002\u0002\u0002\u00ea\u0759\u0003\u0002",
"\u0002\u0002\u00ec\u076b\u0003\u0002\u0002\u0002\u00ee\u0777\u0003\u0002",
"\u0002\u0002\u00f0\u0783\u0003\u0002\u0002\u0002\u00f2\u0785\u0003\u0002",
"\u0002\u0002\u00f4\u0789\u0003\u0002\u0002\u0002\u00f6\u0794\u0003\u0002",
"\u0002\u0002\u00f8\u079f\u0003\u0002\u0002\u0002\u00fa\u07b1\u0003\u0002",
"\u0002\u0002\u00fc\u07b9\u0003\u0002\u0002\u0002\u00fe\u07c5\u0003\u0002",
"\u0002\u0002\u0100\u07c7\u0003\u0002\u0002\u0002\u0102\u07c9\u0003\u0002",
"\u0002\u0002\u0104\u07dc\u0003\u0002\u0002\u0002\u0106\u07de\u0003\u0002",
"\u0002\u0002\u0108\u07e5\u0003\u0002\u0002\u0002\u010a\u07ec\u0003\u0002",
"\u0002\u0002\u010c\u07f5\u0003\u0002\u0002\u0002\u010e\u07fe\u0003\u0002",
"\u0002\u0002\u0110\u0807\u0003\u0002\u0002\u0002\u0112\u081e\u0003\u0002",
"\u0002\u0002\u0114\u082f\u0003\u0002\u0002\u0002\u0116\u0831\u0003\u0002",
"\u0002\u0002\u0118\u0839\u0003\u0002\u0002\u0002\u011a\u083b\u0003\u0002",
"\u0002\u0002\u011c\u0841\u0003\u0002\u0002\u0002\u011e\u0849\u0003\u0002",
"\u0002\u0002\u0120\u084c\u0003\u0002\u0002\u0002\u0122\u0855\u0003\u0002",
"\u0002\u0002\u0124\u0861\u0003\u0002\u0002\u0002\u0126\u0867\u0003\u0002",
"\u0002\u0002\u0128\u0873\u0003\u0002\u0002\u0002\u012a\u087b\u0003\u0002",
"\u0002\u0002\u012c\u0881\u0003\u0002\u0002\u0002\u012e\u088c\u0003\u0002",
"\u0002\u0002\u0130\u088e\u0003\u0002\u0002\u0002\u0132\u0892\u0003\u0002",
"\u0002\u0002\u0134\u08a0\u0003\u0002\u0002\u0002\u0136\u08a2\u0003\u0002",
"\u0002\u0002\u0138\u08a7\u0003\u0002\u0002\u0002\u013a\u08ac\u0003\u0002",
"\u0002\u0002\u013c\u08b4\u0003\u0002\u0002\u0002\u013e\u08c5\u0003\u0002",
"\u0002\u0002\u0140\u08c7\u0003\u0002\u0002\u0002\u0142\u08c9\u0003\u0002",
"\u0002\u0002\u0144\u08cc\u0003\u0002\u0002\u0002\u0146\u08cf\u0003\u0002",
"\u0002\u0002\u0148\u08d2\u0003\u0002\u0002\u0002\u014a\u08d5\u0003\u0002",
"\u0002\u0002\u014c\u08d8\u0003\u0002\u0002\u0002\u014e\u08da\u0003\u0002",
"\u0002\u0002\u0150\u08dc\u0003\u0002\u0002\u0002\u0152\u08de\u0003\u0002",
"\u0002\u0002\u0154\u08e0\u0003\u0002\u0002\u0002\u0156\u08e9\u0003\u0002",
"\u0002\u0002\u0158\u08eb\u0003\u0002\u0002\u0002\u015a\u08fc\u0003\u0002",
"\u0002\u0002\u015c\u08fe\u0003\u0002\u0002\u0002\u015e\u0900\u0003\u0002",
"\u0002\u0002\u0160\u0908\u0003\u0002\u0002\u0002\u0162\u090a\u0003\u0002",
"\u0002\u0002\u0164\u0911\u0003\u0002\u0002\u0002\u0166\u091c\u0003\u0002",
"\u0002\u0002\u0168\u0920\u0003\u0002\u0002\u0002\u016a\u0924\u0003\u0002",
"\u0002\u0002\u016c\u092b\u0003\u0002\u0002\u0002\u016e\u092d\u0003\u0002",
"\u0002\u0002\u0170\u0932\u0003\u0002\u0002\u0002\u0172\u0934\u0003\u0002",
"\u0002\u0002\u0174\u0943\u0003\u0002\u0002\u0002\u0176\u0945\u0003\u0002",
"\u0002\u0002\u0178\u094d\u0003\u0002\u0002\u0002\u017a\u094f\u0003\u0002",
"\u0002\u0002\u017c\u095c\u0003\u0002\u0002\u0002\u017e\u095e\u0003\u0002",
"\u0002\u0002\u0180\u0969\u0003\u0002\u0002\u0002\u0182\u0979\u0003\u0002",
"\u0002\u0002\u0184\u0980\u0003\u0002\u0002\u0002\u0186\u098f\u0003\u0002",
"\u0002\u0002\u0188\u0991\u0003\u0002\u0002\u0002\u018a\u099a\u0003\u0002",
"\u0002\u0002\u018c\u099c\u0003\u0002\u0002\u0002\u018e\u09ab\u0003\u0002",
"\u0002\u0002\u0190\u09ad\u0003\u0002\u0002\u0002\u0192\u09af\u0003\u0002",
"\u0002\u0002\u0194\u09b5\u0003\u0002\u0002\u0002\u0196\u09b7\u0003\u0002",
"\u0002\u0002\u0198\u09be\u0003\u0002\u0002\u0002\u019a\u09c9\u0003\u0002",
"\u0002\u0002\u019c\u09cd\u0003\u0002\u0002\u0002\u019e\u09d1\u0003\u0002",
"\u0002\u0002\u01a0\u09dc\u0003\u0002\u0002\u0002\u01a2\u09eb\u0003\u0002",
"\u0002\u0002\u01a4\u09ed\u0003\u0002\u0002\u0002\u01a6\u09f6\u0003\u0002",
"\u0002\u0002\u01a8\u09f8\u0003\u0002\u0002\u0002\u01aa\u0a07\u0003\u0002",
"\u0002\u0002\u01ac\u0a09\u0003\u0002\u0002\u0002\u01ae\u0a0b\u0003\u0002",
"\u0002\u0002\u01b0\u0a11\u0003\u0002\u0002\u0002\u01b2\u0a13\u0003\u0002",
"\u0002\u0002\u01b4\u0a1a\u0003\u0002\u0002\u0002\u01b6\u0a25\u0003\u0002",
"\u0002\u0002\u01b8\u0a29\u0003\u0002\u0002\u0002\u01ba\u0a30\u0003\u0002",
"\u0002\u0002\u01bc\u0a3f\u0003\u0002\u0002\u0002\u01be\u0a41\u0003\u0002",
"\u0002\u0002\u01c0\u0a45\u0003\u0002\u0002\u0002\u01c2\u0a4e\u0003\u0002",
"\u0002\u0002\u01c4\u0a50\u0003\u0002\u0002\u0002\u01c6\u0a59\u0003\u0002",
"\u0002\u0002\u01c8\u0a5b\u0003\u0002\u0002\u0002\u01ca\u0a5f\u0003\u0002",
"\u0002\u0002\u01cc\u0a6b\u0003\u0002\u0002\u0002\u01ce\u0a76\u0003\u0002",
"\u0002\u0002\u01d0\u0a7b\u0003\u0002\u0002\u0002\u01d2\u0a83\u0003\u0002",
"\u0002\u0002\u01d4\u0a8a\u0003\u0002\u0002\u0002\u01d6\u0a96\u0003\u0002",
"\u0002\u0002\u01d8\u0a99\u0003\u0002\u0002\u0002\u01da\u0aa4\u0003\u0002",
"\u0002\u0002\u01dc\u0aa7\u0003\u0002\u0002\u0002\u01de\u0aab\u0003\u0002",
"\u0002\u0002\u01e0\u0ab3\u0003\u0002\u0002\u0002\u01e2\u0abc\u0003\u0002",
"\u0002\u0002\u01e4\u0ace\u0003\u0002\u0002\u0002\u01e6\u0ad1\u0003\u0002",
"\u0002\u0002\u01e8\u01e9\u0007]\u0002\u0002\u01e9\u01ea\u0005\u00d4",
"k\u0002\u01ea\u01eb\u0007M\u0002\u0002\u01eb\u01ee\u0007e\u0002\u0002",
"\u01ec\u01ef\u0007W\u0002\u0002\u01ed\u01ef\u0005\u00d4k\u0002\u01ee",
"\u01ec\u0003\u0002\u0002\u0002\u01ee\u01ed\u0003\u0002\u0002\u0002\u01ef",
"\u01f5\u0003\u0002\u0002\u0002\u01f0\u01f1\u0005(\u0015\u0002\u01f1",
"\u01f2\u0007\u0013\u0002\u0002\u01f2\u01f3\u0007K\u0002\u0002\u01f3",
"\u01f6\u0003\u0002\u0002\u0002\u01f4\u01f6\u0007\u009f\u0002\u0002\u01f5",
"\u01f0\u0003\u0002\u0002\u0002\u01f5\u01f4\u0003\u0002\u0002\u0002\u01f6",
"\u01f7\u0003\u0002\u0002\u0002\u01f7\u01f8\u0005\u014a\u00a6\u0002\u01f8",
"\u01f9\u0007\u0011\u0002\u0002\u01f9\u01fa\u0005\u0090I\u0002\u01fa",
"\u01fb\u0005\u00a6T\u0002\u01fb\u01fc\u0005\u0092J\u0002\u01fc\u0003",
"\u0003\u0002\u0002\u0002\u01fd\u01fe\u0007]\u0002\u0002\u01fe\u01ff",
"\u0005\u00d4k\u0002\u01ff\u0200\u0007M\u0002\u0002\u0200\u0201\u0007",
"e\u0002\u0002\u0201\u0202\u0005\u00b8]\u0002\u0202\u0203\u0007\u009f",
"\u0002\u0002\u0203\u0204\u0005\u014a\u00a6\u0002\u0204\u0205\u0007\u0011",
"\u0002\u0002\u0205\u0206\u0005\u0090I\u0002\u0206\u0207\u0005\u00a4",
"S\u0002\u0207\u0208\u0005\u0092J\u0002\u0208\u0005\u0003\u0002\u0002",
"\u0002\u0209\u020a\u0005\u00d6l\u0002\u020a\u020b\u0007\u009f\u0002",
"\u0002\u020b\u020c\u0005\\/\u0002\u020c\u020d\u0007M\u0002\u0002\u020d",
"\u020e\u0005\u0148\u00a5\u0002\u020e\u0007\u0003\u0002\u0002\u0002\u020f",
"\u0210\u0005\u00d6l\u0002\u0210\u0213\u0005\u0080A\u0002\u0211\u0212",
"\u0007K\u0002\u0002\u0212\u0214\u0005\u0082B\u0002\u0213\u0211\u0003",
"\u0002\u0002\u0002\u0213\u0214\u0003\u0002\u0002\u0002\u0214\t\u0003",
"\u0002\u0002\u0002\u0215\u0216\u0007]\u0002\u0002\u0216\u0217\u0005",
"\u00d2j\u0002\u0217\u0219\u0007M\u0002\u0002\u0218\u021a\u0007\u0094",
"\u0002\u0002\u0219\u0218\u0003\u0002\u0002\u0002\u0219\u021a\u0003\u0002",
"\u0002\u0002\u021a\u021b\u0003\u0002\u0002\u0002\u021b\u021c\u0005\u00b4",
"[\u0002\u021c\u021e\u0007P\u0002\u0002\u021d\u021f\u0005\u00aaV\u0002",
"\u021e\u021d\u0003\u0002\u0002\u0002\u021e\u021f\u0003\u0002\u0002\u0002",
"\u021f\u0229\u0003\u0002\u0002\u0002\u0220\u0226\u0007\u009f\u0002\u0002",
"\u0221\u0224\u0005\u00fa~\u0002\u0222\u0223\u0007K\u0002\u0002\u0223",
"\u0225\u0005\u00d0i\u0002\u0224\u0222\u0003\u0002\u0002\u0002\u0224",
"\u0225\u0003\u0002\u0002\u0002\u0225\u0227\u0003\u0002\u0002\u0002\u0226",
"\u0221\u0003\u0002\u0002\u0002\u0226\u0227\u0003\u0002\u0002\u0002\u0227",
"\u0228\u0003\u0002\u0002\u0002\u0228\u022a\u0007t\u0002\u0002\u0229",
"\u0220\u0003\u0002\u0002\u0002\u0229\u022a\u0003\u0002\u0002\u0002\u022a",
"\u000b\u0003\u0002\u0002\u0002\u022b\u022c\u0007]\u0002\u0002\u022c",
"\u022d\u0005\u00d4k\u0002\u022d\u0230\u0007M\u0002\u0002\u022e\u0231",
"\u0007\u009e\u0002\u0002\u022f\u0231\u0005\u00d4k\u0002\u0230\u022e",
"\u0003\u0002\u0002\u0002\u0230\u022f\u0003\u0002\u0002\u0002\u0231\u0239",
"\u0003\u0002\u0002\u0002\u0232\u0233\u0007\u009f\u0002\u0002\u0233\u0234",
"\u0007y\u0002\u0002\u0234\u0235\u0007\u0011\u0002\u0002\u0235\u0236",
"\u0005\u0090I\u0002\u0236\u0237\u0005\u00e8u\u0002\u0237\u0238\u0005",
"\u0092J\u0002\u0238\u023a\u0003\u0002\u0002\u0002\u0239\u0232\u0003",
"\u0002\u0002\u0002\u0239\u023a\u0003\u0002\u0002\u0002\u023a\r\u0003",
"\u0002\u0002\u0002\u023b\u023c\u0007]\u0002\u0002\u023c\u023d\u0005",
"\u00d4k\u0002\u023d\u023e\u0007M\u0002\u0002\u023e\u023f\u0007|\u0002",
"\u0002\u023f\u0240\u0007\u009e\u0002\u0002\u0240\u0241\u0007\u009f\u0002",
"\u0002\u0241\u0242\u0007R\u0002\u0002\u0242\u0243\u0007\u0011\u0002",
"\u0002\u0243\u0244\u0005\u0090I\u0002\u0244\u0245\u0005$\u0013\u0002",
"\u0245\u0246\u0005\u0092J\u0002\u0246\u0247\u0005\u008cG\u0002\u0247",
"\u0248\u0007K\u0002\u0002\u0248\u0249\u0007y\u0002\u0002\u0249\u024a",
"\u0007\u0011\u0002\u0002\u024a\u024b\u0005\u0090I\u0002\u024b\u024c",
"\u0005\u00ecw\u0002\u024c\u024d\u0005\u0092J\u0002\u024d\u000f\u0003",
"\u0002\u0002\u0002\u024e\u024f\u0007]\u0002\u0002\u024f\u0250\u0005",
"\u00d4k\u0002\u0250\u0252\u0007M\u0002\u0002\u0251\u0253\u0007\u0094",
"\u0002\u0002\u0252\u0251\u0003\u0002\u0002\u0002\u0252\u0253\u0003\u0002",
"\u0002\u0002\u0253\u0256\u0003\u0002\u0002\u0002\u0254\u0257\u0007W",
"\u0002\u0002\u0255\u0257\u0005\u0014\u000b\u0002\u0256\u0254\u0003\u0002",
"\u0002\u0002\u0256\u0255\u0003\u0002\u0002\u0002\u0257\u026a\u0003\u0002",
"\u0002\u0002\u0258\u0261\u0005(\u0015\u0002\u0259\u025a\u0007\u0013",
"\u0002\u0002\u025a\u025b\u0007K\u0002\u0002\u025b\u025c\u0007y\u0002",
"\u0002\u025c\u025d\u0007\u0011\u0002\u0002\u025d\u025e\u0005\u0090I",
"\u0002\u025e\u025f\u0005\u00e8u\u0002\u025f\u0260\u0005\u0092J\u0002",
"\u0260\u0262\u0003\u0002\u0002\u0002\u0261\u0259\u0003\u0002\u0002\u0002",
"\u0261\u0262\u0003\u0002\u0002\u0002\u0262\u026b\u0003\u0002\u0002\u0002",
"\u0263\u0264\u0007\u009f\u0002\u0002\u0264\u0265\u0007y\u0002\u0002",
"\u0265\u0266\u0007\u0011\u0002\u0002\u0266\u0267\u0005\u0090I\u0002",
"\u0267\u0268\u0005\u00e8u\u0002\u0268\u0269\u0005\u0092J\u0002\u0269",
"\u026b\u0003\u0002\u0002\u0002\u026a\u0258\u0003\u0002\u0002\u0002\u026a",
"\u0263\u0003\u0002\u0002\u0002\u026a\u026b\u0003\u0002\u0002\u0002\u026b",
"\u0011\u0003\u0002\u0002\u0002\u026c\u026d\u0007]\u0002\u0002\u026d",
"\u026e\u0005\u00d4k\u0002\u026e\u026f\u0007M\u0002\u0002\u026f\u0282",
"\u0007\u0092\u0002\u0002\u0270\u0279\u0005(\u0015\u0002\u0271\u0272",
"\u0007\u0013\u0002\u0002\u0272\u0273\u0007K\u0002\u0002\u0273\u0274",
"\u0007y\u0002\u0002\u0274\u0275\u0007\u0011\u0002\u0002\u0275\u0276",
"\u0005\u0090I\u0002\u0276\u0277\u0005\u00e8u\u0002\u0277\u0278\u0005",
"\u0092J\u0002\u0278\u027a\u0003\u0002\u0002\u0002\u0279\u0271\u0003",
"\u0002\u0002\u0002\u0279\u027a\u0003\u0002\u0002\u0002\u027a\u0283\u0003",
"\u0002\u0002\u0002\u027b\u027c\u0007\u009f\u0002\u0002\u027c\u027d\u0007",
"y\u0002\u0002\u027d\u027e\u0007\u0011\u0002\u0002\u027e\u027f\u0005",
"\u0090I\u0002\u027f\u0280\u0005\u00e8u\u0002\u0280\u0281\u0005\u0092",
"J\u0002\u0281\u0283\u0003\u0002\u0002\u0002\u0282\u0270\u0003\u0002",
"\u0002\u0002\u0282\u027b\u0003\u0002\u0002\u0002\u0282\u0283\u0003\u0002",
"\u0002\u0002\u0283\u0013\u0003\u0002\u0002\u0002\u0284\u028a\u0005\u00c4",
"c\u0002\u0285\u0286\u0005\u00c4c\u0002\u0286\u0287\u0007K\u0002\u0002",
"\u0287\u0288\u0005\u00d4k\u0002\u0288\u028a\u0003\u0002\u0002\u0002",
"\u0289\u0284\u0003\u0002\u0002\u0002\u0289\u0285\u0003\u0002\u0002\u0002",
"\u028a\u0015\u0003\u0002\u0002\u0002\u028b\u028c\u0007]\u0002\u0002",
"\u028c\u028d\u0005\u013e\u00a0\u0002\u028d\u028e\u0007M\u0002\u0002",
"\u028e\u028f\u0007\u0084\u0002\u0002\u028f\u0290\u0007\u008b\u0002\u0002",
"\u0290\u0293\u0005\u00dep\u0002\u0291\u0292\u0007\u008e\u0002\u0002",
"\u0292\u0294\u0005\u00b4[\u0002\u0293\u0291\u0003\u0002\u0002\u0002",
"\u0293\u0294\u0003\u0002\u0002\u0002\u0294\u0295\u0003\u0002\u0002\u0002",
"\u0295\u0296\u0007a\u0002\u0002\u0296\u0297\u0007\u0011\u0002\u0002",
"\u0297\u0298\u0005\u0090I\u0002\u0298\u0299\u0005\u010a\u0086\u0002",
"\u0299\u029a\u0005\u0092J\u0002\u029a\u0017\u0003\u0002\u0002\u0002",
"\u029b\u029c\u0007]\u0002\u0002\u029c\u029d\u0005\u00d0i\u0002\u029d",
"\u029e\u0007M\u0002\u0002\u029e\u029f\u0007\u0091\u0002\u0002\u029f",
"\u02a0\u0007a\u0002\u0002\u02a0\u02a1\u0007\u0011\u0002\u0002\u02a1",
"\u02a2\u0005\u0090I\u0002\u02a2\u02a3\u0005\u010a\u0086\u0002\u02a3",
"\u02a4\u0005\u0092J\u0002\u02a4\u0019\u0003\u0002\u0002\u0002\u02a5",
"\u02a6\u0007]\u0002\u0002\u02a6\u02a7\u0005\u00d0i\u0002\u02a7\u02a9",
"\u0007M\u0002\u0002\u02a8\u02aa\u0007|\u0002\u0002\u02a9\u02a8\u0003",
"\u0002\u0002\u0002\u02a9\u02aa\u0003\u0002\u0002\u0002\u02aa\u02ab\u0003",
"\u0002\u0002\u0002\u02ab\u02ac\u0007\u0091\u0002\u0002\u02ac\u02ad\u0007",
"a\u0002\u0002\u02ad\u02ae\u0007\u0011\u0002\u0002\u02ae\u02af\u0005",
"\u0090I\u0002\u02af\u02b0\u0005\u0102\u0082\u0002\u02b0\u02b1\u0005",
"\u0092J\u0002\u02b1\u001b\u0003\u0002\u0002\u0002\u02b2\u02b3\u0007",
"]\u0002\u0002\u02b3\u02b4\u0005\u00d0i\u0002\u02b4\u02b5\u0007M\u0002",
"\u0002\u02b5\u02b6\u0007p\u0002\u0002\u02b6\u02b7\u0007a\u0002\u0002",
"\u02b7\u02b8\u0007\u0011\u0002\u0002\u02b8\u02b9\u0005\u0090I\u0002",
"\u02b9\u02ba\u0005\u010a\u0086\u0002\u02ba\u02bb\u0005\u0092J\u0002",
"\u02bb\u001d\u0003\u0002\u0002\u0002\u02bc\u02bd\u0007]\u0002\u0002",
"\u02bd\u02be\u0005\u00d0i\u0002\u02be\u02c0\u0007M\u0002\u0002\u02bf",
"\u02c1\u0007|\u0002\u0002\u02c0\u02bf\u0003\u0002\u0002\u0002\u02c0",
"\u02c1\u0003\u0002\u0002\u0002\u02c1\u02c2\u0003\u0002\u0002\u0002\u02c2",
"\u02c3\u0007p\u0002\u0002\u02c3\u02c4\u0007a\u0002\u0002\u02c4\u02c5",
"\u0007\u0011\u0002\u0002\u02c5\u02c6\u0005\u0090I\u0002\u02c6\u02c7",
"\u0005\u0102\u0082\u0002\u02c7\u02c8\u0005\u0092J\u0002\u02c8\u001f",
"\u0003\u0002\u0002\u0002\u02c9\u02ca\u0007]\u0002\u0002\u02ca\u02cb",
"\u0005\u00d4k\u0002\u02cb\u02cd\u0007M\u0002\u0002\u02cc\u02ce\u0007",
"\u0094\u0002\u0002\u02cd\u02cc\u0003\u0002\u0002\u0002\u02cd\u02ce\u0003",
"\u0002\u0002\u0002\u02ce\u02cf\u0003\u0002\u0002\u0002\u02cf\u02d0\u0007",
"|\u0002\u0002\u02d0\u02d8\u0007W\u0002\u0002\u02d1\u02d2\u0005(\u0015",
"\u0002\u02d2\u02d3\u0007\u0013\u0002\u0002\u02d3\u02d4\u0007K\u0002",
"\u0002\u02d4\u02d5\u0007R\u0002\u0002\u02d5\u02d9\u0003\u0002\u0002",
"\u0002\u02d6\u02d7\u0007\u009f\u0002\u0002\u02d7\u02d9\u0007R\u0002",
"\u0002\u02d8\u02d1\u0003\u0002\u0002\u0002\u02d8\u02d6\u0003\u0002\u0002",
"\u0002\u02d9\u02da\u0003\u0002\u0002\u0002\u02da\u02db\u0007\u0011\u0002",
"\u0002\u02db\u02dc\u0005\u0090I\u0002\u02dc\u02dd\u0005$\u0013\u0002",
"\u02dd\u02e6\u0005\u0092J\u0002\u02de\u02df\u0005\u008cG\u0002\u02df",
"\u02e0\u0007K\u0002\u0002\u02e0\u02e1\u0007y\u0002\u0002\u02e1\u02e2",
"\u0007\u0011\u0002\u0002\u02e2\u02e3\u0005\u0090I\u0002\u02e3\u02e4",
"\u0005\u00ecw\u0002\u02e4\u02e5\u0005\u0092J\u0002\u02e5\u02e7\u0003",
"\u0002\u0002\u0002\u02e6\u02de\u0003\u0002\u0002\u0002\u02e6\u02e7\u0003",
"\u0002\u0002\u0002\u02e7!\u0003\u0002\u0002\u0002\u02e8\u02e9\u0007",
"]\u0002\u0002\u02e9\u02ea\u0005\u00d4k\u0002\u02ea\u02ec\u0007M\u0002",
"\u0002\u02eb\u02ed\u0007\u0094\u0002\u0002\u02ec\u02eb\u0003\u0002\u0002",
"\u0002\u02ec\u02ed\u0003\u0002\u0002\u0002\u02ed\u02ee\u0003\u0002\u0002",
"\u0002\u02ee\u02ef\u0007|\u0002\u0002\u02ef\u02f7\u0007\u008c\u0002",
"\u0002\u02f0\u02f1\u0005(\u0015\u0002\u02f1\u02f2\u0007\u0013\u0002",
"\u0002\u02f2\u02f3\u0007K\u0002\u0002\u02f3\u02f4\u0007R\u0002\u0002",
"\u02f4\u02f8\u0003\u0002\u0002\u0002\u02f5\u02f6\u0007\u009f\u0002\u0002",
"\u02f6\u02f8\u0007R\u0002\u0002\u02f7\u02f0\u0003\u0002\u0002\u0002",
"\u02f7\u02f5\u0003\u0002\u0002\u0002\u02f8\u02f9\u0003\u0002\u0002\u0002",
"\u02f9\u02fa\u0007\u0011\u0002\u0002\u02fa\u02fb\u0005\u0090I\u0002",
"\u02fb\u02fc\u0005$\u0013\u0002\u02fc\u0305\u0005\u0092J\u0002\u02fd",
"\u02fe\u0005\u008cG\u0002\u02fe\u02ff\u0007K\u0002\u0002\u02ff\u0300",
"\u0007y\u0002\u0002\u0300\u0301\u0007\u0011\u0002\u0002\u0301\u0302",
"\u0005\u0090I\u0002\u0302\u0303\u0005\u00ecw\u0002\u0303\u0304\u0005",
"\u0092J\u0002\u0304\u0306\u0003\u0002\u0002\u0002\u0305\u02fd\u0003",
"\u0002\u0002\u0002\u0305\u0306\u0003\u0002\u0002\u0002\u0306#\u0003",
"\u0002\u0002\u0002\u0307\u0308\u0007]\u0002\u0002\u0308\u0309\u0007",
"W\u0002\u0002\u0309\u030a\u0007R\u0002\u0002\u030a\u030b\u0007M\u0002",
"\u0002\u030b\u030c\u0007\u0011\u0002\u0002\u030c\u030d\u0005\u0090I",
"\u0002\u030d\u030e\u0005&\u0014\u0002\u030e\u030f\u0005\u0092J\u0002",
"\u030f%\u0003\u0002\u0002\u0002\u0310\u0311\b\u0014\u0001\u0002\u0311",
"\u0312\u0005\u00f0y\u0002\u0312\u0319\u0003\u0002\u0002\u0002\u0313",
"\u0314\f\u0003\u0002\u0002\u0314\u0315\u0005\u008cG\u0002\u0315\u0316",
"\u0005\u00f0y\u0002\u0316\u0318\u0003\u0002\u0002\u0002\u0317\u0313",
"\u0003\u0002\u0002\u0002\u0318\u031b\u0003\u0002\u0002\u0002\u0319\u0317",
"\u0003\u0002\u0002\u0002\u0319\u031a\u0003\u0002\u0002\u0002\u031a\'",
"\u0003\u0002\u0002\u0002\u031b\u0319\u0003\u0002\u0002\u0002\u031c\u031d",
"\u0007\u009f\u0002\u0002\u031d\u031e\u0007P\u0002\u0002\u031e\u0327",
"\u0005\u00d2j\u0002\u031f\u0320\u0007\u009f\u0002\u0002\u0320\u0321",
"\u0007Q\u0002\u0002\u0321\u0324\u0005\u00fc\u007f\u0002\u0322\u0323",
"\u0007K\u0002\u0002\u0323\u0325\u0005\u00d2j\u0002\u0324\u0322\u0003",
"\u0002\u0002\u0002\u0324\u0325\u0003\u0002\u0002\u0002\u0325\u0327\u0003",
"\u0002\u0002\u0002\u0326\u031c\u0003\u0002\u0002\u0002\u0326\u031f\u0003",
"\u0002\u0002\u0002\u0327)\u0003\u0002\u0002\u0002\u0328\u0329\u0007",
"]\u0002\u0002\u0329\u032a\u0005\u00c6d\u0002\u032a\u032b\u0007M\u0002",
"\u0002\u032b\u032c\u0007H\u0002\u0002\u032c\u032f\u0007x\u0002\u0002",
"\u032d\u032e\u0007\u008b\u0002\u0002\u032e\u0330\u00054\u001b\u0002",
"\u032f\u032d\u0003\u0002\u0002\u0002\u032f\u0330\u0003\u0002\u0002\u0002",
"\u0330\u0333\u0003\u0002\u0002\u0002\u0331\u0332\u0007\u008e\u0002\u0002",
"\u0332\u0334\u0005\u00b4[\u0002\u0333\u0331\u0003\u0002\u0002\u0002",
"\u0333\u0334\u0003\u0002\u0002\u0002\u0334+\u0003\u0002\u0002\u0002",
"\u0335\u0336\u0007]\u0002\u0002\u0336\u0337\u0005\u00c6d\u0002\u0337",
"\u0338\u0007M\u0002\u0002\u0338\u033b\u0007x\u0002\u0002\u0339\u033a",
"\u0007\u008b\u0002\u0002\u033a\u033c\u00054\u001b\u0002\u033b\u0339",
"\u0003\u0002\u0002\u0002\u033b\u033c\u0003\u0002\u0002\u0002\u033c\u033f",
"\u0003\u0002\u0002\u0002\u033d\u033e\u0007\u008e\u0002\u0002\u033e\u0340",
"\u0005\u00b4[\u0002\u033f\u033d\u0003\u0002\u0002\u0002\u033f\u0340",
"\u0003\u0002\u0002\u0002\u0340\u0341\u0003\u0002\u0002\u0002\u0341\u0342",
"\u0007a\u0002\u0002\u0342\u0343\u0007\u0011\u0002\u0002\u0343\u0346",
"\u0005\u0090I\u0002\u0344\u0347\u0005\u010a\u0086\u0002\u0345\u0347",
"\u0007\u0088\u0002\u0002\u0346\u0344\u0003\u0002\u0002\u0002\u0346\u0345",
"\u0003\u0002\u0002\u0002\u0347\u0348\u0003\u0002\u0002\u0002\u0348\u0349",
"\u0005\u0092J\u0002\u0349-\u0003\u0002\u0002\u0002\u034a\u034b\u0007",
"]\u0002\u0002\u034b\u034c\u0005\u00c6d\u0002\u034c\u034e\u0007M\u0002",
"\u0002\u034d\u034f\u0007|\u0002\u0002\u034e\u034d\u0003\u0002\u0002",
"\u0002\u034e\u034f\u0003\u0002\u0002\u0002\u034f\u0350\u0003\u0002\u0002",
"\u0002\u0350\u0353\u0007x\u0002\u0002\u0351\u0352\u0007\u008b\u0002",
"\u0002\u0352\u0354\u00054\u001b\u0002\u0353\u0351\u0003\u0002\u0002",
"\u0002\u0353\u0354\u0003\u0002\u0002\u0002\u0354\u0357\u0003\u0002\u0002",
"\u0002\u0355\u0356\u0007\u008e\u0002\u0002\u0356\u0358\u0005\u00e4s",
"\u0002\u0357\u0355\u0003\u0002\u0002\u0002\u0357\u0358\u0003\u0002\u0002",
"\u0002\u0358\u0359\u0003\u0002\u0002\u0002\u0359\u035a\u0007a\u0002",
"\u0002\u035a\u035b\u0007\u0011\u0002\u0002\u035b\u035c\u0005\u0090I",
"\u0002\u035c\u035d\u0005\u0102\u0082\u0002\u035d\u035e\u0005\u0092J",
"\u0002\u035e/\u0003\u0002\u0002\u0002\u035f\u0360\u0007]\u0002\u0002",
"\u0360\u0361\u0007\u00ae\u0002\u0002\u0361\u0362\u0007M\u0002\u0002",
"\u0362\u0363\u0007\u0097\u0002\u0002\u0363\u0364\u0007x\u0002\u0002",
"\u0364\u0365\u0007a\u0002\u0002\u0365\u0366\u0007\u0011\u0002\u0002",
"\u0366\u0367\u0005\u0090I\u0002\u0367\u0368\u0005\u010a\u0086\u0002",
"\u0368\u0369\u0005\u0092J\u0002\u0369\u036a\u0005\u008cG\u0002\u036a",
"\u036b\u0007K\u0002\u0002\u036b\u0372\u0007\u009d\u0002\u0002\u036c",
"\u036d\u0007\u0011\u0002\u0002\u036d\u036e\u0005\u0090I\u0002\u036e",
"\u036f\u0005\u010c\u0087\u0002\u036f\u0370\u0005\u0092J\u0002\u0370",
"\u0373\u0003\u0002\u0002\u0002\u0371\u0373\u0005\u00d6l\u0002\u0372",
"\u036c\u0003\u0002\u0002\u0002\u0372\u0371\u0003\u0002\u0002\u0002\u0373",
"1\u0003\u0002\u0002\u0002\u0374\u0375\u0005\\/\u0002\u03753\u0003\u0002",
"\u0002\u0002\u0376\u0379\u0005\u00dan\u0002\u0377\u0378\u0007K\u0002",
"\u0002\u0378\u037a\u0005\u00dco\u0002\u0379\u0377\u0003\u0002\u0002",
"\u0002\u0379\u037a\u0003\u0002\u0002\u0002\u037a5\u0003\u0002\u0002",
"\u0002\u037b\u037c\u0005\u00e4s\u0002\u037c\u037e\u0005\u00d0i\u0002",
"\u037d\u037f\u0005(\u0015\u0002\u037e\u037d\u0003\u0002\u0002\u0002",
"\u037e\u037f\u0003\u0002\u0002\u0002\u037f\u0382\u0003\u0002\u0002\u0002",
"\u0380\u0381\u0007.\u0002\u0002\u0381\u0383\u0005\u011c\u008f\u0002",
"\u0382\u0380\u0003\u0002\u0002\u0002\u0382\u0383\u0003\u0002\u0002\u0002",
"\u03837\u0003\u0002\u0002\u0002\u0384\u0399\u0005\u0084C\u0002\u0385",
"\u0399\u0005> \u0002\u0386\u0399\u0005\u0088E\u0002\u0387\u0399\u0005",
"<\u001f\u0002\u0388\u0399\u0005z>\u0002\u0389\u0399\u0005:\u001e\u0002",
"\u038a\u0399\u0005X-\u0002\u038b\u0399\u0005Z.\u0002\u038c\u0399\u0005",
"N(\u0002\u038d\u0399\u0005D#\u0002\u038e\u0399\u0005H%\u0002\u038f\u0399",
"\u0005L\'\u0002\u0390\u0399\u0005J&\u0002\u0391\u0399\u0005R*\u0002",
"\u0392\u0399\u0005T+\u0002\u0393\u0399\u0005r:\u0002\u0394\u0399\u0005",
"@!\u0002\u0395\u0399\u0005B\"\u0002\u0396\u0399\u0005,\u0017\u0002\u0397",
"\u0399\u0005\u0100\u0081\u0002\u0398\u0384\u0003\u0002\u0002\u0002\u0398",
"\u0385\u0003\u0002\u0002\u0002\u0398\u0386\u0003\u0002\u0002\u0002\u0398",
"\u0387\u0003\u0002\u0002\u0002\u0398\u0388\u0003\u0002\u0002\u0002\u0398",
"\u0389\u0003\u0002\u0002\u0002\u0398\u038a\u0003\u0002\u0002\u0002\u0398",
"\u038b\u0003\u0002\u0002\u0002\u0398\u038c\u0003\u0002\u0002\u0002\u0398",
"\u038d\u0003\u0002\u0002\u0002\u0398\u038e\u0003\u0002\u0002\u0002\u0398",
"\u038f\u0003\u0002\u0002\u0002\u0398\u0390\u0003\u0002\u0002\u0002\u0398",
"\u0391\u0003\u0002\u0002\u0002\u0398\u0392\u0003\u0002\u0002\u0002\u0398",
"\u0393\u0003\u0002\u0002\u0002\u0398\u0394\u0003\u0002\u0002\u0002\u0398",
"\u0395\u0003\u0002\u0002\u0002\u0398\u0396\u0003\u0002\u0002\u0002\u0398",
"\u0397\u0003\u0002\u0002\u0002\u03999\u0003\u0002\u0002\u0002\u039a",
"\u039b\u0007m\u0002\u0002\u039b;\u0003\u0002\u0002\u0002\u039c\u039d",
"\u0007^\u0002\u0002\u039d\u03a1\u0005\u00b0Y\u0002\u039e\u039f\u0007",
"K\u0002\u0002\u039f\u03a0\u0007\u0095\u0002\u0002\u03a0\u03a2\u0005",
"\u00b0Y\u0002\u03a1\u039e\u0003\u0002\u0002\u0002\u03a1\u03a2\u0003",
"\u0002\u0002\u0002\u03a2\u03a6\u0003\u0002\u0002\u0002\u03a3\u03a4\u0007",
"\u0095\u0002\u0002\u03a4\u03a6\u0005\u00b0Y\u0002\u03a5\u039c\u0003",
"\u0002\u0002\u0002\u03a5\u03a3\u0003\u0002\u0002\u0002\u03a6\u03ad\u0003",
"\u0002\u0002\u0002\u03a7\u03a8\u0007\u0098\u0002\u0002\u03a8\u03a9\u0007",
"\u0011\u0002\u0002\u03a9\u03aa\u0005\u0090I\u0002\u03aa\u03ab\u0005",
"\u010a\u0086\u0002\u03ab\u03ac\u0005\u0092J\u0002\u03ac\u03ae\u0003",
"\u0002\u0002\u0002\u03ad\u03a7\u0003\u0002\u0002\u0002\u03ad\u03ae\u0003",
"\u0002\u0002\u0002\u03ae=\u0003\u0002\u0002\u0002\u03af\u03b1\u0005",
"^0\u0002\u03b0\u03b2\u0005~@\u0002\u03b1\u03b0\u0003\u0002\u0002\u0002",
"\u03b1\u03b2\u0003\u0002\u0002\u0002\u03b2\u03bd\u0003\u0002\u0002\u0002",
"\u03b3\u03b6\u0007\u0098\u0002\u0002\u03b4\u03b5\u0007\u009f\u0002\u0002",
"\u03b5\u03b7\u0005\u00d0i\u0002\u03b6\u03b4\u0003\u0002\u0002\u0002",
"\u03b6\u03b7\u0003\u0002\u0002\u0002\u03b7\u03b8\u0003\u0002\u0002\u0002",
"\u03b8\u03b9\u0007\u0011\u0002\u0002\u03b9\u03ba\u0005\u0090I\u0002",
"\u03ba\u03bb\u0005\u010a\u0086\u0002\u03bb\u03bc\u0005\u0092J\u0002",
"\u03bc\u03be\u0003\u0002\u0002\u0002\u03bd\u03b3\u0003\u0002\u0002\u0002",
"\u03bd\u03be\u0003\u0002\u0002\u0002\u03be\u03c1\u0003\u0002\u0002\u0002",
"\u03bf\u03c1\u0005b2\u0002\u03c0\u03af\u0003\u0002\u0002\u0002\u03c0",
"\u03bf\u0003\u0002\u0002\u0002\u03c1?\u0003\u0002\u0002\u0002\u03c2",
"\u03c3\u0007\u009f\u0002\u0002\u03c3\u03c4\u0005\u0130\u0099\u0002\u03c4",
"\u03c5\u0007\u0013\u0002\u0002\u03c5\u03c6\u0007`\u0002\u0002\u03c6",
"\u03c7\u0007\u0011\u0002\u0002\u03c7\u03c8\u0005\u0090I\u0002\u03c8",
"\u03c9\u0005\u010a\u0086\u0002\u03c9\u03ca\u0005\u0092J\u0002\u03ca",
"A\u0003\u0002\u0002\u0002\u03cb\u03cc\u0007\u009f\u0002\u0002\u03cc",
"\u03cd\u0005\u00d4k\u0002\u03cd\u03ce\u0007\u0013\u0002\u0002\u03ce",
"\u03cf\u0007`\u0002\u0002\u03cf\u03d0\u0007\u0011\u0002\u0002\u03d0",
"\u03d1\u0005\u0090I\u0002\u03d1\u03d2\u0005\u010a\u0086\u0002\u03d2",
"\u03d3\u0005\u0092J\u0002\u03d3C\u0003\u0002\u0002\u0002\u03d4\u03d5",
"\u0007\u0096\u0002\u0002\u03d5\u03d6\u0007\u0081\u0002\u0002\u03d6\u03d7",
"\u0005\\/\u0002\u03d7\u03d8\u0007\u0011\u0002\u0002\u03d8\u03d9\u0005",
"\u0090I\u0002\u03d9\u03e1\u0005\u010e\u0088\u0002\u03da\u03db\u0005",
"\u008cG\u0002\u03db\u03dc\u0007\u0087\u0002\u0002\u03dc\u03dd\u0007",
"\u0011\u0002\u0002\u03dd\u03de\u0005\u0090I\u0002\u03de\u03df\u0005",
"\u010a\u0086\u0002\u03df\u03e0\u0005\u0092J\u0002\u03e0\u03e2\u0003",
"\u0002\u0002\u0002\u03e1\u03da\u0003\u0002\u0002\u0002\u03e1\u03e2\u0003",
"\u0002\u0002\u0002\u03e2\u03e3\u0003\u0002\u0002\u0002\u03e3\u03e4\u0005",
"\u0092J\u0002\u03e4E\u0003\u0002\u0002\u0002\u03e5\u03e6\u0007\u00a0",
"\u0002\u0002\u03e6\u03e7\u0005\u0114\u008b\u0002\u03e7\u03e8\u0007\u0011",
"\u0002\u0002\u03e8\u03e9\u0005\u0090I\u0002\u03e9\u03ea\u0005\u010a",
"\u0086\u0002\u03ea\u03eb\u0005\u0092J\u0002\u03eb\u03f5\u0003\u0002",
"\u0002\u0002\u03ec\u03ed\u0007\u00a0\u0002\u0002\u03ed\u03ee\u0007s",
"\u0002\u0002\u03ee\u03ef\u0005\u0112\u008a\u0002\u03ef\u03f0\u0007\u0011",
"\u0002\u0002\u03f0\u03f1\u0005\u0090I\u0002\u03f1\u03f2\u0005\u010a",
"\u0086\u0002\u03f2\u03f3\u0005\u0092J\u0002\u03f3\u03f5\u0003\u0002",
"\u0002\u0002\u03f4\u03e5\u0003\u0002\u0002\u0002\u03f4\u03ec\u0003\u0002",
"\u0002\u0002\u03f5G\u0003\u0002\u0002\u0002\u03f6\u03f7\u0007n\u0002",
"\u0002\u03f7\u03f8\u0007b\u0002\u0002\u03f8\u03fb\u0005\u00d0i\u0002",
"\u03f9\u03fa\u0007\u0013\u0002\u0002\u03fa\u03fc\u0005\u00d0i\u0002",
"\u03fb\u03f9\u0003\u0002\u0002\u0002\u03fb\u03fc\u0003\u0002\u0002\u0002",
"\u03fc\u03fd\u0003\u0002\u0002\u0002\u03fd\u03fe\u0007s\u0002\u0002",
"\u03fe\u03ff\u0005\\/\u0002\u03ff\u0400\u0007\u0011\u0002\u0002\u0400",
"\u0401\u0005\u0090I\u0002\u0401\u0402\u0005\u010a\u0086\u0002\u0402",
"\u0403\u0005\u0092J\u0002\u0403I\u0003\u0002\u0002\u0002\u0404\u0405",
"\u0007`\u0002\u0002\u0405\u0406\u0007\u0011\u0002\u0002\u0406\u0407",
"\u0005\u0090I\u0002\u0407\u0408\u0005\u010a\u0086\u0002\u0408\u0409",
"\u0005\u0092J\u0002\u0409\u040a\u0005\u008cG\u0002\u040a\u040b\u0007",
"\u00a2\u0002\u0002\u040b\u040c\u0005\\/\u0002\u040cK\u0003\u0002\u0002",
"\u0002\u040d\u040e\u0007\u00a2\u0002\u0002\u040e\u040f\u0005\\/\u0002",
"\u040f\u0410\u0007\u0011\u0002\u0002\u0410\u0411\u0005\u0090I\u0002",
"\u0411\u0412\u0005\u010a\u0086\u0002\u0412\u0413\u0005\u0092J\u0002",
"\u0413M\u0003\u0002\u0002\u0002\u0414\u0415\u0007r\u0002\u0002\u0415",
"\u0416\u0005\\/\u0002\u0416\u0417\u0007\u0011\u0002\u0002\u0417\u0418",
"\u0005\u0090I\u0002\u0418\u0419\u0005\u010a\u0086\u0002\u0419\u041d",
"\u0005\u0092J\u0002\u041a\u041b\u0005\u008cG\u0002\u041b\u041c\u0005",
"P)\u0002\u041c\u041e\u0003\u0002\u0002\u0002\u041d\u041a\u0003\u0002",
"\u0002\u0002\u041d\u041e\u0003\u0002\u0002\u0002\u041e\u0426\u0003\u0002",
"\u0002\u0002\u041f\u0420\u0005\u008cG\u0002\u0420\u0421\u0007c\u0002",
"\u0002\u0421\u0422\u0007\u0011\u0002\u0002\u0422\u0423\u0005\u0090I",
"\u0002\u0423\u0424\u0005\u010a\u0086\u0002\u0424\u0425\u0005\u0092J",
"\u0002\u0425\u0427\u0003\u0002\u0002\u0002\u0426\u041f\u0003\u0002\u0002",
"\u0002\u0426\u0427\u0003\u0002\u0002\u0002\u0427O\u0003\u0002\u0002",
"\u0002\u0428\u0429\b)\u0001\u0002\u0429\u042a\u0007c\u0002\u0002\u042a",
"\u042b\u0007r\u0002\u0002\u042b\u042c\u0005\\/\u0002\u042c\u042d\u0007",
"\u0011\u0002\u0002\u042d\u042e\u0005\u0090I\u0002\u042e\u042f\u0005",
"\u010a\u0086\u0002\u042f\u0430\u0005\u0092J\u0002\u0430\u043d\u0003",
"\u0002\u0002\u0002\u0431\u0432\f\u0003\u0002\u0002\u0432\u0433\u0005",
"\u008cG\u0002\u0433\u0434\u0007c\u0002\u0002\u0434\u0435\u0007r\u0002",
"\u0002\u0435\u0436\u0005\\/\u0002\u0436\u0437\u0007\u0011\u0002\u0002",
"\u0437\u0438\u0005\u0090I\u0002\u0438\u0439\u0005\u010a\u0086\u0002",
"\u0439\u043a\u0005\u0092J\u0002\u043a\u043c\u0003\u0002\u0002\u0002",
"\u043b\u0431\u0003\u0002\u0002\u0002\u043c\u043f\u0003\u0002\u0002\u0002",
"\u043d\u043b\u0003\u0002\u0002\u0002\u043d\u043e\u0003\u0002\u0002\u0002",
"\u043eQ\u0003\u0002\u0002\u0002\u043f\u043d\u0003\u0002\u0002\u0002",
"\u0440\u0441\u0007\u0089\u0002\u0002\u0441\u0442\u0005\\/\u0002\u0442",
"S\u0003\u0002\u0002\u0002\u0443\u0444\u0007\u0096\u0002\u0002\u0444",
"\u0445\u0007\u0081\u0002\u0002\u0445\u0446\u0005\u00d0i\u0002\u0446",
"\u0447\u0007a\u0002\u0002\u0447\u0448\u0007\u0011\u0002\u0002\u0448",
"\u0449\u0005\u0090I\u0002\u0449\u044a\u0005\u010a\u0086\u0002\u044a",
"\u044b\u0005\u0092J\u0002\u044b\u044d\u0005\u008aF\u0002\u044c\u044e",
"\u0005\u0110\u0089\u0002\u044d\u044c\u0003\u0002\u0002\u0002\u044d\u044e",
"\u0003\u0002\u0002\u0002\u044e\u045a\u0003\u0002\u0002\u0002\u044f\u0453",
"\u0007\u0087\u0002\u0002\u0450\u0451\u0007\u00a0\u0002\u0002\u0451\u0453",
"\u0007L\u0002\u0002\u0452\u044f\u0003\u0002\u0002\u0002\u0452\u0450",
"\u0003\u0002\u0002\u0002\u0453\u0454\u0003\u0002\u0002\u0002\u0454\u0455",
"\u0007\u0011\u0002\u0002\u0455\u0456\u0005\u0090I\u0002\u0456\u0457",
"\u0005\u010a\u0086\u0002\u0457\u0458\u0005\u0092J\u0002\u0458\u0459",
"\u0005\u008aF\u0002\u0459\u045b\u0003\u0002\u0002\u0002\u045a\u0452",
"\u0003\u0002\u0002\u0002\u045a\u045b\u0003\u0002\u0002\u0002\u045b\u0463",
"\u0003\u0002\u0002\u0002\u045c\u045d\u0007J\u0002\u0002\u045d\u045e",
"\u0007\u0011\u0002\u0002\u045e\u045f\u0005\u0090I\u0002\u045f\u0460",
"\u0005\u010a\u0086\u0002\u0460\u0461\u0005\u0092J\u0002\u0461\u0462",
"\u0005\u008aF\u0002\u0462\u0464\u0003\u0002\u0002\u0002\u0463\u045c",
"\u0003\u0002\u0002\u0002\u0463\u0464\u0003\u0002\u0002\u0002\u0464\u0465",
"\u0003\u0002\u0002\u0002\u0465\u0466\u0005\u008aF\u0002\u0466U\u0003",
"\u0002\u0002\u0002\u0467\u0468\u0007\u00a0\u0002\u0002\u0468\u0469\u0005",
"\u00d6l\u0002\u0469\u046a\u0007\u0011\u0002\u0002\u046a\u046b\u0005",
"\u0090I\u0002\u046b\u046c\u0005\u010a\u0086\u0002\u046c\u046d\u0005",
"\u0092J\u0002\u046d\u046e\u0005\u008aF\u0002\u046e\u047b\u0003\u0002",
"\u0002\u0002\u046f\u0470\u0007\u00a0\u0002\u0002\u0470\u0471\u0007s",
"\u0002\u0002\u0471\u0472\u0007\u0018\u0002\u0002\u0472\u0473\u0005\u00a8",
"U\u0002\u0473\u0474\u0007\u0019\u0002\u0002\u0474\u0475\u0007\u0011",
"\u0002\u0002\u0475\u0476\u0005\u0090I\u0002\u0476\u0477\u0005\u010a",
"\u0086\u0002\u0477\u0478\u0005\u0092J\u0002\u0478\u0479\u0005\u008a",
"F\u0002\u0479\u047b\u0003\u0002\u0002\u0002\u047a\u0467\u0003\u0002",
"\u0002\u0002\u047a\u046f\u0003\u0002\u0002\u0002\u047bW\u0003\u0002",
"\u0002\u0002\u047c\u047d\u0007S\u0002\u0002\u047dY\u0003\u0002\u0002",
"\u0002\u047e\u0480\u0007\u008d\u0002\u0002\u047f\u0481\u0005\\/\u0002",
"\u0480\u047f\u0003\u0002\u0002\u0002\u0480\u0481\u0003\u0002\u0002\u0002",
"\u0481[\u0003\u0002\u0002\u0002\u0482\u0483\b/\u0001\u0002\u0483\u04a4",
"\u0005\u01de\u00f0\u0002\u0484\u04a4\u0005\u01c0\u00e1\u0002\u0485\u04a4",
"\u0005h5\u0002\u0486\u04a4\u0005^0\u0002\u0487\u048a\u0005h5\u0002\u0488",
"\u048a\u0005^0\u0002\u0489\u0487\u0003\u0002\u0002\u0002\u0489\u0488",
"\u0003\u0002\u0002\u0002\u048a\u048b\u0003\u0002\u0002\u0002\u048b\u048c",
"\u0005~@\u0002\u048c\u04a4\u0003\u0002\u0002\u0002\u048d\u048e\u0007",
"#\u0002\u0002\u048e\u04a4\u0005\\/.\u048f\u0490\u0007~\u0002\u0002\u0490",
"\u04a4\u0005\\/-\u0491\u0492\u0007@\u0002\u0002\u0492\u0493\u0007\u0011",
"\u0002\u0002\u0493\u04a4\u0005\\/\u0010\u0494\u0495\u0007g\u0002\u0002",
"\u0495\u0496\u0007\u0011\u0002\u0002\u0496\u04a4\u0005\u00d0i\u0002",
"\u0497\u0498\u0007?\u0002\u0002\u0498\u0499\u0007\u0011\u0002\u0002",
"\u0499\u04a4\u0005\u00c6d\u0002\u049a\u04a4\u0005n8\u0002\u049b\u04a4",
"\u0005l7\u0002\u049c\u04a4\u0005p9\u0002\u049d\u04a4\u0005x=\u0002\u049e",
"\u04a4\u0005\u0136\u009c\u0002\u049f\u04a4\u0005\u0138\u009d\u0002\u04a0",
"\u04a4\u0005|?\u0002\u04a1\u04a4\u0005t;\u0002\u04a2\u04a4\u0005b2\u0002",
"\u04a3\u0482\u0003\u0002\u0002\u0002\u04a3\u0484\u0003\u0002\u0002\u0002",
"\u04a3\u0485\u0003\u0002\u0002\u0002\u04a3\u0486\u0003\u0002\u0002\u0002",
"\u04a3\u0489\u0003\u0002\u0002\u0002\u04a3\u048d\u0003\u0002\u0002\u0002",
"\u04a3\u048f\u0003\u0002\u0002\u0002\u04a3\u0491\u0003\u0002\u0002\u0002",
"\u04a3\u0494\u0003\u0002\u0002\u0002\u04a3\u0497\u0003\u0002\u0002\u0002",
"\u04a3\u049a\u0003\u0002\u0002\u0002\u04a3\u049b\u0003\u0002\u0002\u0002",
"\u04a3\u049c\u0003\u0002\u0002\u0002\u04a3\u049d\u0003\u0002\u0002\u0002",
"\u04a3\u049e\u0003\u0002\u0002\u0002\u04a3\u049f\u0003\u0002\u0002\u0002",
"\u04a3\u04a0\u0003\u0002\u0002\u0002\u04a3\u04a1\u0003\u0002\u0002\u0002",
"\u04a3\u04a2\u0003\u0002\u0002\u0002\u04a4\u0515\u0003\u0002\u0002\u0002",
"\u04a5\u04a6\f,\u0002\u0002\u04a6\u04a7\u0005\u014e\u00a8\u0002\u04a7",
"\u04a8\u0005\\/-\u04a8\u0514\u0003\u0002\u0002\u0002\u04a9\u04aa\f+",
"\u0002\u0002\u04aa\u04ab\u0005\u0150\u00a9\u0002\u04ab\u04ac\u0005\\",
"/,\u04ac\u0514\u0003\u0002\u0002\u0002\u04ad\u04ae\f*\u0002\u0002\u04ae",
"\u04af\u0005\u0154\u00ab\u0002\u04af\u04b0\u0005\\/+\u04b0\u0514\u0003",
"\u0002\u0002\u0002\u04b1\u04b2\f)\u0002\u0002\u04b2\u04b3\u0005\u0152",
"\u00aa\u0002\u04b3\u04b4\u0005\\/*\u04b4\u0514\u0003\u0002\u0002\u0002",
"\u04b5\u04b6\f(\u0002\u0002\u04b6\u04b7\t\u0002\u0002\u0002\u04b7\u0514",
"\u0005\\/)\u04b8\u04b9\f&\u0002\u0002\u04b9\u04ba\u0007*\u0002\u0002",
"\u04ba\u0514\u0005\\/\'\u04bb\u04bc\f%\u0002\u0002\u04bc\u04bd\u0007",
"+\u0002\u0002\u04bd\u0514\u0005\\/&\u04be\u04bf\f$\u0002\u0002\u04bf",
"\u04c0\u0007(\u0002\u0002\u04c0\u0514\u0005\\/%\u04c1\u04c2\f#\u0002",
"\u0002\u04c2\u04c3\u0007)\u0002\u0002\u04c3\u0514\u0005\\/$\u04c4\u04c5",
"\f \u0002\u0002\u04c5\u04c6\u0007.\u0002\u0002\u04c6\u0514\u0005\\/",
"!\u04c7\u04c8\f\u001f\u0002\u0002\u04c8\u04c9\u0007,\u0002\u0002\u04c9",
"\u0514\u0005\\/ \u04ca\u04cb\f\u001e\u0002\u0002\u04cb\u04cc\u00072",
"\u0002\u0002\u04cc\u0514\u0005\\/\u001f\u04cd\u04ce\f\u001d\u0002\u0002",
"\u04ce\u04cf\u0007Z\u0002\u0002\u04cf\u0514\u0005\\/\u001e\u04d0\u04d1",
"\f\u001c\u0002\u0002\u04d1\u04d2\u0007s\u0002\u0002\u04d2\u0514\u0005",
"\\/\u001d\u04d3\u04d4\f\u001b\u0002\u0002\u04d4\u04d5\u0007q\u0002\u0002",
"\u04d5\u0514\u0005\\/\u001c\u04d6\u04d7\f\u001a\u0002\u0002\u04d7\u04d8",
"\u0007q\u0002\u0002\u04d8\u04d9\u0007I\u0002\u0002\u04d9\u0514\u0005",
"\\/\u001b\u04da\u04db\f\u0019\u0002\u0002\u04db\u04dc\u0007q\u0002\u0002",
"\u04dc\u04dd\u0007L\u0002\u0002\u04dd\u0514\u0005\\/\u001a\u04de\u04df",
"\f\u0018\u0002\u0002\u04df\u04e0\u0007~\u0002\u0002\u04e0\u04e1\u0007",
"Z\u0002\u0002\u04e1\u0514\u0005\\/\u0019\u04e2\u04e3\f\u0017\u0002\u0002",
"\u04e3\u04e4\u0007~\u0002\u0002\u04e4\u04e5\u0007s\u0002\u0002\u04e5",
"\u0514\u0005\\/\u0018\u04e6\u04e7\f\u0016\u0002\u0002\u04e7\u04e8\u0007",
"~\u0002\u0002\u04e8\u04e9\u0007q\u0002\u0002\u04e9\u0514\u0005\\/\u0017",
"\u04ea\u04eb\f\u0015\u0002\u0002\u04eb\u04ec\u0007~\u0002\u0002\u04ec",
"\u04ed\u0007q\u0002\u0002\u04ed\u04ee\u0007I\u0002\u0002\u04ee\u0514",
"\u0005\\/\u0016\u04ef\u04f0\f\u0014\u0002\u0002\u04f0\u04f1\u0007~\u0002",
"\u0002\u04f1\u04f2\u0007q\u0002\u0002\u04f2\u04f3\u0007L\u0002\u0002",
"\u04f3\u0514\u0005\\/\u0015\u04f4\u04f5\f\u0013\u0002\u0002\u04f5\u04f6",
"\u0007\u0085\u0002\u0002\u04f6\u0514\u0005\\/\u0014\u04f7\u04f8\f\u0012",
"\u0002\u0002\u04f8\u04f9\u0007K\u0002\u0002\u04f9\u0514\u0005\\/\u0013",
"\u04fa\u04fb\f\u0011\u0002\u0002\u04fb\u04fc\u0007r\u0002\u0002\u04fc",
"\u04fd\u0005\\/\u0002\u04fd\u04fe\u0007c\u0002\u0002\u04fe\u04ff\u0005",
"\\/\u0012\u04ff\u0514\u0003\u0002\u0002\u0002\u0500\u0501\f\u0003\u0002",
"\u0002\u0501\u0502\u0007n\u0002\u0002\u0502\u0503\u0007b\u0002\u0002",
"\u0503\u0504\u0005\u00d0i\u0002\u0504\u0505\u0007s\u0002\u0002\u0505",
"\u0506\u0005\\/\u0004\u0506\u0514\u0003\u0002\u0002\u0002\u0507\u0508",
"\f\'\u0002\u0002\u0508\u0509\u0007M\u0002\u0002\u0509\u0514\u0005\u00e4",
"s\u0002\u050a\u050b\f\"\u0002\u0002\u050b\u050c\u0007v\u0002\u0002\u050c",
"\u050d\u0007~\u0002\u0002\u050d\u0514\u0005\u0134\u009b\u0002\u050e",
"\u050f\f!\u0002\u0002\u050f\u0510\u0007v\u0002\u0002\u0510\u0514\u0005",
"\u0134\u009b\u0002\u0511\u0512\f\n\u0002\u0002\u0512\u0514\u0005v<\u0002",
"\u0513\u04a5\u0003\u0002\u0002\u0002\u0513\u04a9\u0003\u0002\u0002\u0002",
"\u0513\u04ad\u0003\u0002\u0002\u0002\u0513\u04b1\u0003\u0002\u0002\u0002",
"\u0513\u04b5\u0003\u0002\u0002\u0002\u0513\u04b8\u0003\u0002\u0002\u0002",
"\u0513\u04bb\u0003\u0002\u0002\u0002\u0513\u04be\u0003\u0002\u0002\u0002",
"\u0513\u04c1\u0003\u0002\u0002\u0002\u0513\u04c4\u0003\u0002\u0002\u0002",
"\u0513\u04c7\u0003\u0002\u0002\u0002\u0513\u04ca\u0003\u0002\u0002\u0002",
"\u0513\u04cd\u0003\u0002\u0002\u0002\u0513\u04d0\u0003\u0002\u0002\u0002",
"\u0513\u04d3\u0003\u0002\u0002\u0002\u0513\u04d6\u0003\u0002\u0002\u0002",
"\u0513\u04da\u0003\u0002\u0002\u0002\u0513\u04de\u0003\u0002\u0002\u0002",
"\u0513\u04e2\u0003\u0002\u0002\u0002\u0513\u04e6\u0003\u0002\u0002\u0002",
"\u0513\u04ea\u0003\u0002\u0002\u0002\u0513\u04ef\u0003\u0002\u0002\u0002",
"\u0513\u04f4\u0003\u0002\u0002\u0002\u0513\u04f7\u0003\u0002\u0002\u0002",
"\u0513\u04fa\u0003\u0002\u0002\u0002\u0513\u0500\u0003\u0002\u0002\u0002",
"\u0513\u0507\u0003\u0002\u0002\u0002\u0513\u050a\u0003\u0002\u0002\u0002",
"\u0513\u050e\u0003\u0002\u0002\u0002\u0513\u0511\u0003\u0002\u0002\u0002",
"\u0514\u0517\u0003\u0002\u0002\u0002\u0515\u0513\u0003\u0002\u0002\u0002",
"\u0515\u0516\u0003\u0002\u0002\u0002\u0516]\u0003\u0002\u0002\u0002",
"\u0517\u0515\u0003\u0002\u0002\u0002\u0518\u0519\b0\u0001\u0002\u0519",
"\u051a\u0005\u00ceh\u0002\u051a\u051f\u0003\u0002\u0002\u0002\u051b",
"\u051c\f\u0003\u0002\u0002\u051c\u051e\u0005`1\u0002\u051d\u051b\u0003",
"\u0002\u0002\u0002\u051e\u0521\u0003\u0002\u0002\u0002\u051f\u051d\u0003",
"\u0002\u0002\u0002\u051f\u0520\u0003\u0002\u0002\u0002\u0520_\u0003",
"\u0002\u0002\u0002\u0521\u051f\u0003\u0002\u0002\u0002\u0522\u0523\u0006",
"1#\u0003\u0523\u0524\u0007\u0015\u0002\u0002\u0524\u0525\u0005\u00ce",
"h\u0002\u0525a\u0003\u0002\u0002\u0002\u0526\u0527\u0007u\u0002\u0002",
"\u0527\u0528\u0007\u0011\u0002\u0002\u0528\u0529\u0005\u00d0i\u0002",
"\u0529\u052a\u0005d3\u0002\u052ac\u0003\u0002\u0002\u0002\u052b\u052c",
"\u00063$\u0003\u052ce\u0003\u0002\u0002\u0002\u052d\u0532\u0005\u011a",
"\u008e\u0002\u052e\u0532\u0005\u011c\u008f\u0002\u052f\u0532\u0005\u00ce",
"h\u0002\u0530\u0532\u0005\u0118\u008d\u0002\u0531\u052d\u0003\u0002",
"\u0002\u0002\u0531\u052e\u0003\u0002\u0002\u0002\u0531\u052f\u0003\u0002",
"\u0002\u0002\u0531\u0530\u0003\u0002\u0002\u0002\u0532g\u0003\u0002",
"\u0002\u0002\u0533\u0534\b5\u0001\u0002\u0534\u0535\u0005f4\u0002\u0535",
"\u053a\u0003\u0002\u0002\u0002\u0536\u0537\f\u0003\u0002\u0002\u0537",
"\u0539\u0005j6\u0002\u0538\u0536\u0003\u0002\u0002\u0002\u0539\u053c",
"\u0003\u0002\u0002\u0002\u053a\u0538\u0003\u0002\u0002\u0002\u053a\u053b",
"\u0003\u0002\u0002\u0002\u053bi\u0003\u0002\u0002\u0002\u053c\u053a",
"\u0003\u0002\u0002\u0002\u053d\u053e\u00066&\u0003\u053e\u053f\u0007",
"\u0015\u0002\u0002\u053f\u054b\u0005\u00d0i\u0002\u0540\u0541\u0006",
"6\'\u0003\u0541\u0542\u0007\u0018\u0002\u0002\u0542\u0543\u0005\u012e",
"\u0098\u0002\u0543\u0544\u0007\u0019\u0002\u0002\u0544\u054b\u0003\u0002",
"\u0002\u0002\u0545\u0546\u00066(\u0003\u0546\u0547\u0007\u0018\u0002",
"\u0002\u0547\u0548\u0005\\/\u0002\u0548\u0549\u0007\u0019\u0002\u0002",
"\u0549\u054b\u0003\u0002\u0002\u0002\u054a\u053d\u0003\u0002\u0002\u0002",
"\u054a\u0540\u0003\u0002\u0002\u0002\u054a\u0545\u0003\u0002\u0002\u0002",
"\u054bk\u0003\u0002\u0002\u0002\u054c\u054f\u0007A\u0002\u0002\u054d",
"\u054e\u0007o\u0002\u0002\u054e\u0550\u0005\\/\u0002\u054f\u054d\u0003",
"\u0002\u0002\u0002\u054f\u0550\u0003\u0002\u0002\u0002\u0550m\u0003",
"\u0002\u0002\u0002\u0551\u0552\u0007B\u0002\u0002\u0552\u0553\u0007",
"o\u0002\u0002\u0553\u0554\u0005\\/\u0002\u0554o\u0003\u0002\u0002\u0002",
"\u0555\u0556\u0005\u00bc_\u0002\u0556\u0557\u0007o\u0002\u0002\u0557",
"\u0560\u0005\\/\u0002\u0558\u055a\u0007\u0013\u0002\u0002\u0559\u0558",
"\u0003\u0002\u0002\u0002\u0559\u055a\u0003\u0002\u0002\u0002\u055a\u055b",
"\u0003\u0002\u0002\u0002\u055b\u055e\u0005\u0080A\u0002\u055c\u055d",
"\u0007K\u0002\u0002\u055d\u055f\u0005\u0082B\u0002\u055e\u055c\u0003",
"\u0002\u0002\u0002\u055e\u055f\u0003\u0002\u0002\u0002\u055f\u0561\u0003",
"\u0002\u0002\u0002\u0560\u0559\u0003\u0002\u0002\u0002\u0560\u0561\u0003",
"\u0002\u0002\u0002\u0561\u056b\u0003\u0002\u0002\u0002\u0562\u0568\u0005",
"\u00bc_\u0002\u0563\u0566\u0005\u0080A\u0002\u0564\u0565\u0007K\u0002",
"\u0002\u0565\u0567\u0005\u0082B\u0002\u0566\u0564\u0003\u0002\u0002",
"\u0002\u0566\u0567\u0003\u0002\u0002\u0002\u0567\u0569\u0003\u0002\u0002",
"\u0002\u0568\u0563\u0003\u0002\u0002\u0002\u0568\u0569\u0003\u0002\u0002",
"\u0002\u0569\u056b\u0003\u0002\u0002\u0002\u056a\u0555\u0003\u0002\u0002",
"\u0002\u056a\u0562\u0003\u0002\u0002\u0002\u056bq\u0003\u0002\u0002",
"\u0002\u056c\u056d\u0007\u00a3\u0002\u0002\u056d\u056e\u0005\\/\u0002",
"\u056e\u056f\u0007\u009b\u0002\u0002\u056f\u0570\u0005\\/\u0002\u0570",
"s\u0003\u0002\u0002\u0002\u0571\u0572\u0005^0\u0002\u0572\u0573\u0007",
"#\u0002\u0002\u0573\u0574\u0005\\/\u0002\u0574u\u0003\u0002\u0002\u0002",
"\u0575\u0576\u0007k\u0002\u0002\u0576\u0577\u0007\u009f\u0002\u0002",
"\u0577\u0578\u0005\u00d0i\u0002\u0578\u0579\u0007\u00a1\u0002\u0002",
"\u0579\u057a\u0005\\/\u0002\u057aw\u0003\u0002\u0002\u0002\u057b\u057c",
"\u0007j\u0002\u0002\u057c\u057e\u0007\u0082\u0002\u0002\u057d\u057f",
"\u0005\u00bc_\u0002\u057e\u057d\u0003\u0002\u0002\u0002\u057e\u057f",
"\u0003\u0002\u0002\u0002\u057f\u0580\u0003\u0002\u0002\u0002\u0580\u0581",
"\u0007\u00a1\u0002\u0002\u0581\u05a0\u0005\\/\u0002\u0582\u0594\u0007",
"j\u0002\u0002\u0583\u0585\u0007I\u0002\u0002\u0584\u0586\u0005\u00bc",
"_\u0002\u0585\u0584\u0003\u0002\u0002\u0002\u0585\u0586\u0003\u0002",
"\u0002\u0002\u0586\u0595\u0003\u0002\u0002\u0002\u0587\u0589\u0005\u00bc",
"_\u0002\u0588\u058a\u0007\u008f\u0002\u0002\u0589\u0588\u0003\u0002",
"\u0002\u0002\u0589\u058a\u0003\u0002\u0002\u0002\u058a\u058b\u0003\u0002",
"\u0002\u0002\u058b\u058c\u0005\\/\u0002\u058c\u058d\u0007\u009b\u0002",
"\u0002\u058d\u058e\u0005\\/\u0002\u058e\u0595\u0003\u0002\u0002\u0002",
"\u058f\u0590\u0007\u008f\u0002\u0002\u0590\u0591\u0005\\/\u0002\u0591",
"\u0592\u0007\u009b\u0002\u0002\u0592\u0593\u0005\\/\u0002\u0593\u0595",
"\u0003\u0002\u0002\u0002\u0594\u0583\u0003\u0002\u0002\u0002\u0594\u0587",
"\u0003\u0002\u0002\u0002\u0594\u058f\u0003\u0002\u0002\u0002\u0595\u0598",
"\u0003\u0002\u0002\u0002\u0596\u0597\u0007\u00a1\u0002\u0002\u0597\u0599",
"\u0005\\/\u0002\u0598\u0596\u0003\u0002\u0002\u0002\u0598\u0599\u0003",
"\u0002\u0002\u0002\u0599\u059d\u0003\u0002\u0002\u0002\u059a\u059b\u0007",
"\u0086\u0002\u0002\u059b\u059c\u0007T\u0002\u0002\u059c\u059e\u0005",
"\u013a\u009e\u0002\u059d\u059a\u0003\u0002\u0002\u0002\u059d\u059e\u0003",
"\u0002\u0002\u0002\u059e\u05a0\u0003\u0002\u0002\u0002\u059f\u057b\u0003",
"\u0002\u0002\u0002\u059f\u0582\u0003\u0002\u0002\u0002\u05a0y\u0003",
"\u0002\u0002\u0002\u05a1\u05a2\u0007j\u0002\u0002\u05a2\u05a4\u0007",
"\u0082\u0002\u0002\u05a3\u05a5\u0005\u00bc_\u0002\u05a4\u05a3\u0003",
"\u0002\u0002\u0002\u05a4\u05a5\u0003\u0002\u0002\u0002\u05a5\u05a6\u0003",
"\u0002\u0002\u0002\u05a6\u05a7\u0007\u00a1\u0002\u0002\u05a7\u05a8\u0005",
"\\/\u0002\u05a8\u05a9\u0007\u0098\u0002\u0002\u05a9\u05aa\u0007\u009f",
"\u0002\u0002\u05aa\u05ab\u0005\u00d0i\u0002\u05ab\u05ac\u0007\u0011",
"\u0002\u0002\u05ac\u05ad\u0005\u0090I\u0002\u05ad\u05ae\u0005\u010a",
"\u0086\u0002\u05ae\u05af\u0005\u0092J\u0002\u05af\u05d6\u0003\u0002",
"\u0002\u0002\u05b0\u05c2\u0007j\u0002\u0002\u05b1\u05b3\u0007I\u0002",
"\u0002\u05b2\u05b4\u0005\u00bc_\u0002\u05b3\u05b2\u0003\u0002\u0002",
"\u0002\u05b3\u05b4\u0003\u0002\u0002\u0002\u05b4\u05c3\u0003\u0002\u0002",
"\u0002\u05b5\u05b7\u0005\u00bc_\u0002\u05b6\u05b8\u0007\u008f\u0002",
"\u0002\u05b7\u05b6\u0003\u0002\u0002\u0002\u05b7\u05b8\u0003\u0002\u0002",
"\u0002\u05b8\u05b9\u0003\u0002\u0002\u0002\u05b9\u05ba\u0005\\/\u0002",
"\u05ba\u05bb\u0007\u009b\u0002\u0002\u05bb\u05bc\u0005\\/\u0002\u05bc",
"\u05c3\u0003\u0002\u0002\u0002\u05bd\u05be\u0007\u008f\u0002\u0002\u05be",
"\u05bf\u0005\\/\u0002\u05bf\u05c0\u0007\u009b\u0002\u0002\u05c0\u05c1",
"\u0005\\/\u0002\u05c1\u05c3\u0003\u0002\u0002\u0002\u05c2\u05b1\u0003",
"\u0002\u0002\u0002\u05c2\u05b5\u0003\u0002\u0002\u0002\u05c2\u05bd\u0003",
"\u0002\u0002\u0002\u05c3\u05c6\u0003\u0002\u0002\u0002\u05c4\u05c5\u0007",
"\u00a1\u0002\u0002\u05c5\u05c7\u0005\\/\u0002\u05c6\u05c4\u0003\u0002",
"\u0002\u0002\u05c6\u05c7\u0003\u0002\u0002\u0002\u05c7\u05cb\u0003\u0002",
"\u0002\u0002\u05c8\u05c9\u0007\u0086\u0002\u0002\u05c9\u05ca\u0007T",
"\u0002\u0002\u05ca\u05cc\u0005\u013a\u009e\u0002\u05cb\u05c8\u0003\u0002",
"\u0002\u0002\u05cb\u05cc\u0003\u0002\u0002\u0002\u05cc\u05cd\u0003\u0002",
"\u0002\u0002\u05cd\u05ce\u0007\u0098\u0002\u0002\u05ce\u05cf\u0007\u009f",
"\u0002\u0002\u05cf\u05d0\u0005\u00d0i\u0002\u05d0\u05d1\u0007\u0011",
"\u0002\u0002\u05d1\u05d2\u0005\u0090I\u0002\u05d2\u05d3\u0005\u010a",
"\u0086\u0002\u05d3\u05d4\u0005\u0092J\u0002\u05d4\u05d6\u0003\u0002",
"\u0002\u0002\u05d5\u05a1\u0003\u0002\u0002\u0002\u05d5\u05b0\u0003\u0002",
"\u0002\u0002\u05d6{\u0003\u0002\u0002\u0002\u05d7\u05d9\u0007\u0093",
"\u0002\u0002\u05d8\u05da\u0007_\u0002\u0002\u05d9\u05d8\u0003\u0002",
"\u0002\u0002\u05d9\u05da\u0003\u0002\u0002\u0002\u05da\u05db\u0003\u0002",
"\u0002\u0002\u05db\u05e1\u0005h5\u0002\u05dc\u05dd\u0007\u009f\u0002",
"\u0002\u05dd\u05de\u0005h5\u0002\u05de\u05df\u0007M\u0002\u0002\u05df",
"\u05e0\u0005\u0144\u00a3\u0002\u05e0\u05e2\u0003\u0002\u0002\u0002\u05e1",
"\u05dc\u0003\u0002\u0002\u0002\u05e1\u05e2\u0003\u0002\u0002\u0002\u05e2",
"}\u0003\u0002\u0002\u0002\u05e3\u05e4\u0006@)\u0003\u05e4\u05ea\u0005",
"\\/\u0002\u05e5\u05e8\u0005\u0080A\u0002\u05e6\u05e7\u0007K\u0002\u0002",
"\u05e7\u05e9\u0005\u0082B\u0002\u05e8\u05e6\u0003\u0002\u0002\u0002",
"\u05e8\u05e9\u0003\u0002\u0002\u0002\u05e9\u05eb\u0003\u0002\u0002\u0002",
"\u05ea\u05e5\u0003\u0002\u0002\u0002\u05ea\u05eb\u0003\u0002\u0002\u0002",
"\u05eb\u05f2\u0003\u0002\u0002\u0002\u05ec\u05ef\u0005\u0080A\u0002",
"\u05ed\u05ee\u0007K\u0002\u0002\u05ee\u05f0\u0005\u0082B\u0002\u05ef",
"\u05ed\u0003\u0002\u0002\u0002\u05ef\u05f0\u0003\u0002\u0002\u0002\u05f0",
"\u05f2\u0003\u0002\u0002\u0002\u05f1\u05e3\u0003\u0002\u0002\u0002\u05f1",
"\u05ec\u0003\u0002\u0002\u0002\u05f2\u007f\u0003\u0002\u0002\u0002\u05f3",
"\u05f4\bA\u0001\u0002\u05f4\u05f5\u0007\u009f\u0002\u0002\u05f5\u05f6",
"\u0005\u0082B\u0002\u05f6\u05fc\u0003\u0002\u0002\u0002\u05f7\u05f8",
"\f\u0003\u0002\u0002\u05f8\u05f9\u0007\u0013\u0002\u0002\u05f9\u05fb",
"\u0005\u0082B\u0002\u05fa\u05f7\u0003\u0002\u0002\u0002\u05fb\u05fe",
"\u0003\u0002\u0002\u0002\u05fc\u05fa\u0003\u0002\u0002\u0002\u05fc\u05fd",
"\u0003\u0002\u0002\u0002\u05fd\u0081\u0003\u0002\u0002\u0002\u05fe\u05fc",
"\u0003\u0002\u0002\u0002\u05ff\u0600\u0005\\/\u0002\u0600\u0601\u0007",
"M\u0002\u0002\u0601\u0603\u0003\u0002\u0002\u0002\u0602\u05ff\u0003",
"\u0002\u0002\u0002\u0602\u0603\u0003\u0002\u0002\u0002\u0603\u0604\u0003",
"\u0002\u0002\u0002\u0604\u0605\u0005\u00d0i\u0002\u0605\u0083\u0003",
"\u0002\u0002\u0002\u0606\u0607\u0005\u0132\u009a\u0002\u0607\u0608\u0005",
"\u014c\u00a7\u0002\u0608\u0609\u0005\\/\u0002\u0609\u0085\u0003\u0002",
"\u0002\u0002\u060a\u060b\u0006D+\u0003\u060b\u060c\u0007\u0015\u0002",
"\u0002\u060c\u0613\u0005\u00d0i\u0002\u060d\u060e\u0006D,\u0003\u060e",
"\u060f\u0007\u0018\u0002\u0002\u060f\u0610\u0005\\/\u0002\u0610\u0611",
"\u0007\u0019\u0002\u0002\u0611\u0613\u0003\u0002\u0002\u0002\u0612\u060a",
"\u0003\u0002\u0002\u0002\u0612\u060d\u0003\u0002\u0002\u0002\u0613\u0087",
"\u0003\u0002\u0002\u0002\u0614\u0615\u0005\u00fa~\u0002\u0615\u0616",
"\u0005\u014c\u00a7\u0002\u0616\u0617\u0005\\/\u0002\u0617\u0089\u0003",
"\u0002\u0002\u0002\u0618\u061a\u0007\u0007\u0002\u0002\u0619\u0618\u0003",
"\u0002\u0002\u0002\u061a\u061d\u0003\u0002\u0002\u0002\u061b\u0619\u0003",
"\u0002\u0002\u0002\u061b\u061c\u0003\u0002\u0002\u0002\u061c\u008b\u0003",
"\u0002\u0002\u0002\u061d\u061b\u0003\u0002\u0002\u0002\u061e\u0620\u0007",
"\u0007\u0002\u0002\u061f\u061e\u0003\u0002\u0002\u0002\u0620\u0621\u0003",
"\u0002\u0002\u0002\u0621\u061f\u0003\u0002\u0002\u0002\u0621\u0622\u0003",
"\u0002\u0002\u0002\u0622\u008d\u0003\u0002\u0002\u0002\u0623\u0625\t",
"\u0003\u0002\u0002\u0624\u0623\u0003\u0002\u0002\u0002\u0625\u0628\u0003",
"\u0002\u0002\u0002\u0626\u0624\u0003\u0002\u0002\u0002\u0626\u0627\u0003",
"\u0002\u0002\u0002\u0627\u008f\u0003\u0002\u0002\u0002\u0628\u0626\u0003",
"\u0002\u0002\u0002\u0629\u062b\u0007\u0007\u0002\u0002\u062a\u0629\u0003",
"\u0002\u0002\u0002\u062b\u062c\u0003\u0002\u0002\u0002\u062c\u062a\u0003",
"\u0002\u0002\u0002\u062c\u062d\u0003\u0002\u0002\u0002\u062d\u062e\u0003",
"\u0002\u0002\u0002\u062e\u062f\u0007\u0003\u0002\u0002\u062f\u0091\u0003",
"\u0002\u0002\u0002\u0630\u0632\u0007\u0007\u0002\u0002\u0631\u0630\u0003",
"\u0002\u0002\u0002\u0632\u0635\u0003\u0002\u0002\u0002\u0633\u0631\u0003",
"\u0002\u0002\u0002\u0633\u0634\u0003\u0002\u0002\u0002\u0634\u0636\u0003",
"\u0002\u0002\u0002\u0635\u0633\u0003\u0002\u0002\u0002\u0636\u0637\u0007",
"\u0004\u0002\u0002\u0637\u0093\u0003\u0002\u0002\u0002\u0638\u0639\u0007",
"\u007f\u0002\u0002\u0639\u0095\u0003\u0002\u0002\u0002\u063a\u063c\u0005",
"\u0098M\u0002\u063b\u063a\u0003\u0002\u0002\u0002\u063b\u063c\u0003",
"\u0002\u0002\u0002\u063c\u063d\u0003\u0002\u0002\u0002\u063d\u063e\u0005",
"\u008aF\u0002\u063e\u063f\u0007\u0002\u0002\u0003\u063f\u0097\u0003",
"\u0002\u0002\u0002\u0640\u0646\u0005\u009aN\u0002\u0641\u0642\u0005",
"\u008cG\u0002\u0642\u0643\u0005\u009aN\u0002\u0643\u0645\u0003\u0002",
"\u0002\u0002\u0644\u0641\u0003\u0002\u0002\u0002\u0645\u0648\u0003\u0002",
"\u0002\u0002\u0646\u0644\u0003\u0002\u0002\u0002\u0646\u0647\u0003\u0002",
"\u0002\u0002\u0647\u0099\u0003\u0002\u0002\u0002\u0648\u0646\u0003\u0002",
"\u0002\u0002\u0649\u064a\u0005\u0100\u0081\u0002\u064a\u064b\u0005\u008c",
"G\u0002\u064b\u064d\u0003\u0002\u0002\u0002\u064c\u0649\u0003\u0002",
"\u0002\u0002\u064d\u0650\u0003\u0002\u0002\u0002\u064e\u064c\u0003\u0002",
"\u0002\u0002\u064e\u064f\u0003\u0002\u0002\u0002\u064f\u0656\u0003\u0002",
"\u0002\u0002\u0650\u064e\u0003\u0002\u0002\u0002\u0651\u0652\u0005\u009c",
"O\u0002\u0652\u0653\u0005\u008cG\u0002\u0653\u0655\u0003\u0002\u0002",
"\u0002\u0654\u0651\u0003\u0002\u0002\u0002\u0655\u0658\u0003\u0002\u0002",
"\u0002\u0656\u0654\u0003\u0002\u0002\u0002\u0656\u0657\u0003\u0002\u0002",
"\u0002\u0657\u065f\u0003\u0002\u0002\u0002\u0658\u0656\u0003\u0002\u0002",
"\u0002\u0659\u0660\u0005\n\u0006\u0002\u065a\u0660\u0005\u00c0a\u0002",
"\u065b\u0660\u0005\u00a0Q\u0002\u065c\u0660\u0005\u00a2R\u0002\u065d",
"\u0660\u0005\u00c2b\u0002\u065e\u0660\u0005\u00fe\u0080\u0002\u065f",
"\u0659\u0003\u0002\u0002\u0002\u065f\u065a\u0003\u0002\u0002\u0002\u065f",
"\u065b\u0003\u0002\u0002\u0002\u065f\u065c\u0003\u0002\u0002\u0002\u065f",
"\u065d\u0003\u0002\u0002\u0002\u065f\u065e\u0003\u0002\u0002\u0002\u0660",
"\u009b\u0003\u0002\u0002\u0002\u0661\u0666\u0005\u009eP\u0002\u0662",
"\u0663\u0007\u0016\u0002\u0002\u0663\u0664\u0005\u011c\u008f\u0002\u0664",
"\u0665\u0007\u0017\u0002\u0002\u0665\u0667\u0003\u0002\u0002\u0002\u0666",
"\u0662\u0003\u0002\u0002\u0002\u0666\u0667\u0003\u0002\u0002\u0002\u0667",
"\u009d\u0003\u0002\u0002\u0002\u0668\u0669\u0007\u00ad\u0002\u0002\u0669",
"\u009f\u0003\u0002\u0002\u0002\u066a\u066b\u0005\"\u0012\u0002\u066b",
"\u00a1\u0003\u0002\u0002\u0002\u066c\u066f\u0005\u0002\u0002\u0002\u066d",
"\u066f\u0005\u0004\u0003\u0002\u066e\u066c\u0003\u0002\u0002\u0002\u066e",
"\u066d\u0003\u0002\u0002\u0002\u066f\u00a3\u0003\u0002\u0002\u0002\u0670",
"\u0676\u0005\u0006\u0004\u0002\u0671\u0672\u0005\u008cG\u0002\u0672",
"\u0673\u0005\u0006\u0004\u0002\u0673\u0675\u0003\u0002\u0002\u0002\u0674",
"\u0671\u0003\u0002\u0002\u0002\u0675\u0678\u0003\u0002\u0002\u0002\u0676",
"\u0674\u0003\u0002\u0002\u0002\u0676\u0677\u0003\u0002\u0002\u0002\u0677",
"\u00a5\u0003\u0002\u0002\u0002\u0678\u0676\u0003\u0002\u0002\u0002\u0679",
"\u067f\u0005\b\u0005\u0002\u067a\u067b\u0005\u008cG\u0002\u067b\u067c",
"\u0005\b\u0005\u0002\u067c\u067e\u0003\u0002\u0002\u0002\u067d\u067a",
"\u0003\u0002\u0002\u0002\u067e\u0681\u0003\u0002\u0002\u0002\u067f\u067d",
"\u0003\u0002\u0002\u0002\u067f\u0680\u0003\u0002\u0002\u0002\u0680\u00a7",
"\u0003\u0002\u0002\u0002\u0681\u067f\u0003\u0002\u0002\u0002\u0682\u0687",
"\u0005\u00d6l\u0002\u0683\u0684\u0007\u0013\u0002\u0002\u0684\u0686",
"\u0005\u00d6l\u0002\u0685\u0683\u0003\u0002\u0002\u0002\u0686\u0689",
"\u0003\u0002\u0002\u0002\u0687\u0685\u0003\u0002\u0002\u0002\u0687\u0688",
"\u0003\u0002\u0002\u0002\u0688\u00a9\u0003\u0002\u0002\u0002\u0689\u0687",
"\u0003\u0002\u0002\u0002\u068a\u068b\u0007s\u0002\u0002\u068b\u0695",
"\u0005\u00acW\u0002\u068c\u068d\u0007s\u0002\u0002\u068d\u0695\u0005",
"\u00aeX\u0002\u068e\u068f\u0007s\u0002\u0002\u068f\u0695\u0005\u00b2",
"Z\u0002\u0690\u0691\u0007w\u0002\u0002\u0691\u0695\u0007\u00ae\u0002",
"\u0002\u0692\u0693\u0007w\u0002\u0002\u0693\u0695\u0005\\/\u0002\u0694",
"\u068a\u0003\u0002\u0002\u0002\u0694\u068c\u0003\u0002\u0002\u0002\u0694",
"\u068e\u0003\u0002\u0002\u0002\u0694\u0690\u0003\u0002\u0002\u0002\u0694",
"\u0692\u0003\u0002\u0002\u0002\u0695\u00ab\u0003\u0002\u0002\u0002\u0696",
"\u0698\u0007{\u0002\u0002\u0697\u0696\u0003\u0002\u0002\u0002\u0697",
"\u0698\u0003\u0002\u0002\u0002\u0698\u0699\u0003\u0002\u0002\u0002\u0699",
"\u069b\u0007\u0018\u0002\u0002\u069a\u069c\u0005\u00b0Y\u0002\u069b",
"\u069a\u0003\u0002\u0002\u0002\u069b\u069c\u0003\u0002\u0002\u0002\u069c",
"\u069d\u0003\u0002\u0002\u0002\u069d\u069e\u0007\u0019\u0002\u0002\u069e",
"\u00ad\u0003\u0002\u0002\u0002\u069f\u06a1\u0007{\u0002\u0002\u06a0",
"\u069f\u0003\u0002\u0002\u0002\u06a0\u06a1\u0003\u0002\u0002\u0002\u06a1",
"\u06a2\u0003\u0002\u0002\u0002\u06a2\u06a4\u0007*\u0002\u0002\u06a3",
"\u06a5\u0005\u00b0Y\u0002\u06a4\u06a3\u0003\u0002\u0002\u0002\u06a4",
"\u06a5\u0003\u0002\u0002\u0002\u06a5\u06a6\u0003\u0002\u0002\u0002\u06a6",
"\u06a7\u0007(\u0002\u0002\u06a7\u00af\u0003\u0002\u0002\u0002\u06a8",
"\u06ad\u0005\\/\u0002\u06a9\u06aa\u0007\u0013\u0002\u0002\u06aa\u06ac",
"\u0005\\/\u0002\u06ab\u06a9\u0003\u0002\u0002\u0002\u06ac\u06af\u0003",
"\u0002\u0002\u0002\u06ad\u06ab\u0003\u0002\u0002\u0002\u06ad\u06ae\u0003",
"\u0002\u0002\u0002\u06ae\u00b1\u0003\u0002\u0002\u0002\u06af\u06ad\u0003",
"\u0002\u0002\u0002\u06b0\u06b1\u0007\u0018\u0002\u0002\u06b1\u06b2\u0005",
"\\/\u0002\u06b2\u06b3\u0007\u0014\u0002\u0002\u06b3\u06b4\u0005\\/\u0002",
"\u06b4\u06b5\u0007\u0019\u0002\u0002\u06b5\u00b3\u0003\u0002\u0002\u0002",
"\u06b6\u06b7\b[\u0001\u0002\u06b7\u06c3\u0005\u00b6\\\u0002\u06b8\u06b9",
"\u0007F\u0002\u0002\u06b9\u06ba\u0007*\u0002\u0002\u06ba\u06bb\u0005",
"\u00b4[\u0002\u06bb\u06bc\u0007(\u0002\u0002\u06bc\u06c3\u0003\u0002",
"\u0002\u0002\u06bd\u06be\u0007E\u0002\u0002\u06be\u06bf\u0007*\u0002",
"\u0002\u06bf\u06c0\u0005\u00b4[\u0002\u06c0\u06c1\u0007(\u0002\u0002",
"\u06c1\u06c3\u0003\u0002\u0002\u0002\u06c2\u06b6\u0003\u0002\u0002\u0002",
"\u06c2\u06b8\u0003\u0002\u0002\u0002\u06c2\u06bd\u0003\u0002\u0002\u0002",
"\u06c3\u06cd\u0003\u0002\u0002\u0002\u06c4\u06c5\f\u0007\u0002\u0002",
"\u06c5\u06cc\u0007,\u0002\u0002\u06c6\u06c7\f\u0006\u0002\u0002\u06c7",
"\u06c8\u0007\u0018\u0002\u0002\u06c8\u06cc\u0007\u0019\u0002\u0002\u06c9",
"\u06ca\f\u0005\u0002\u0002\u06ca\u06cc\u0007-\u0002\u0002\u06cb\u06c4",
"\u0003\u0002\u0002\u0002\u06cb\u06c6\u0003\u0002\u0002\u0002\u06cb\u06c9",
"\u0003\u0002\u0002\u0002\u06cc\u06cf\u0003\u0002\u0002\u0002\u06cd\u06cb",
"\u0003\u0002\u0002\u0002\u06cd\u06ce\u0003\u0002\u0002\u0002\u06ce\u00b5",
"\u0003\u0002\u0002\u0002\u06cf\u06cd\u0003\u0002\u0002\u0002\u06d0\u06d3",
"\u0005\u00b8]\u0002\u06d1\u06d3\u0005\u00ba^\u0002\u06d2\u06d0\u0003",
"\u0002\u0002\u0002\u06d2\u06d1\u0003\u0002\u0002\u0002\u06d3\u00b7\u0003",
"\u0002\u0002\u0002\u06d4\u06e5\u00075\u0002\u0002\u06d5\u06e5\u0007",
"6\u0002\u0002\u06d6\u06e5\u00077\u0002\u0002\u06d7\u06e5\u0007C\u0002",
"\u0002\u06d8\u06e5\u00078\u0002\u0002\u06d9\u06e5\u00079\u0002\u0002",
"\u06da\u06e5\u0007A\u0002\u0002\u06db\u06e5\u0007:\u0002\u0002\u06dc",
"\u06e5\u0007<\u0002\u0002\u06dd\u06e5\u0007;\u0002\u0002\u06de\u06e5",
"\u0007=\u0002\u0002\u06df\u06e5\u0007>\u0002\u0002\u06e0\u06e5\u0007",
"@\u0002\u0002\u06e1\u06e5\u0007B\u0002\u0002\u06e2\u06e5\u0007D\u0002",
"\u0002\u06e3\u06e5\u0007G\u0002\u0002\u06e4\u06d4\u0003\u0002\u0002",
"\u0002\u06e4\u06d5\u0003\u0002\u0002\u0002\u06e4\u06d6\u0003\u0002\u0002",
"\u0002\u06e4\u06d7\u0003\u0002\u0002\u0002\u06e4\u06d8\u0003\u0002\u0002",
"\u0002\u06e4\u06d9\u0003\u0002\u0002\u0002\u06e4\u06da\u0003\u0002\u0002",
"\u0002\u06e4\u06db\u0003\u0002\u0002\u0002\u06e4\u06dc\u0003\u0002\u0002",
"\u0002\u06e4\u06dd\u0003\u0002\u0002\u0002\u06e4\u06de\u0003\u0002\u0002",
"\u0002\u06e4\u06df\u0003\u0002\u0002\u0002\u06e4\u06e0\u0003\u0002\u0002",
"\u0002\u06e4\u06e1\u0003\u0002\u0002\u0002\u06e4\u06e2\u0003\u0002\u0002",
"\u0002\u06e4\u06e3\u0003\u0002\u0002\u0002\u06e5\u00b9\u0003\u0002\u0002",
"\u0002\u06e6\u06e7\u0007\u00a9\u0002\u0002\u06e7\u00bb\u0003\u0002\u0002",
"\u0002\u06e8\u06ea\u0007{\u0002\u0002\u06e9\u06e8\u0003\u0002\u0002",
"\u0002\u06e9\u06ea\u0003\u0002\u0002\u0002\u06ea\u06eb\u0003\u0002\u0002",
"\u0002\u06eb\u06ec\u0005\u00ba^\u0002\u06ec\u00bd\u0003\u0002\u0002",
"\u0002\u06ed\u06ee\u0007@\u0002\u0002\u06ee\u00bf\u0003\u0002\u0002",
"\u0002\u06ef\u06f3\u0005\u0010\t\u0002\u06f0\u06f3\u0005 \u0011\u0002",
"\u06f1\u06f3\u0005\u0012\n\u0002\u06f2\u06ef\u0003\u0002\u0002\u0002",
"\u06f2\u06f0\u0003\u0002\u0002\u0002\u06f2\u06f1\u0003\u0002\u0002\u0002",
"\u06f3\u00c1\u0003\u0002\u0002\u0002\u06f4\u06f7\u0005\f\u0007\u0002",
"\u06f5\u06f7\u0005\u000e\b\u0002\u06f6\u06f4\u0003\u0002\u0002\u0002",
"\u06f6\u06f5\u0003\u0002\u0002\u0002\u06f7\u00c3\u0003\u0002\u0002\u0002",
"\u06f8\u06fd\u0005\u00d4k\u0002\u06f9\u06fa\u0007\u0013\u0002\u0002",
"\u06fa\u06fc\u0005\u00d4k\u0002\u06fb\u06f9\u0003\u0002\u0002\u0002",
"\u06fc\u06ff\u0003\u0002\u0002\u0002\u06fd\u06fb\u0003\u0002\u0002\u0002",
"\u06fd\u06fe\u0003\u0002\u0002\u0002\u06fe\u00c5\u0003\u0002\u0002\u0002",
"\u06ff\u06fd\u0003\u0002\u0002\u0002\u0700\u0703\u0005\u00d0i\u0002",
"\u0701\u0703\u0005\u00d4k\u0002\u0702\u0700\u0003\u0002\u0002\u0002",
"\u0702\u0701\u0003\u0002\u0002\u0002\u0703\u00c7\u0003\u0002\u0002\u0002",
"\u0704\u0707\u0005\u00ceh\u0002\u0705\u0707\u0005\u0140\u00a1\u0002",
"\u0706\u0704\u0003\u0002\u0002\u0002\u0706\u0705\u0003\u0002\u0002\u0002",
"\u0707\u00c9\u0003\u0002\u0002\u0002\u0708\u0709\u0006f0\u0003\u0709",
"\u070a\u0007#\u0002\u0002\u070a\u070b\u0005\u00ccg\u0002\u070b\u00cb",
"\u0003\u0002\u0002\u0002\u070c\u070d\u0006g1\u0003\u070d\u070e\u0005",
"\u00c8e\u0002\u070e\u00cd\u0003\u0002\u0002\u0002\u070f\u0713\u0005",
"\u00d0i\u0002\u0710\u0713\u0005\u00d4k\u0002\u0711\u0713\u0005\u00d6",
"l\u0002\u0712\u070f\u0003\u0002\u0002\u0002\u0712\u0710\u0003\u0002",
"\u0002\u0002\u0712\u0711\u0003\u0002\u0002\u0002\u0713\u00cf\u0003\u0002",
"\u0002\u0002\u0714\u0715\u0007\u00aa\u0002\u0002\u0715\u00d1\u0003\u0002",
"\u0002\u0002\u0716\u0717\t\u0004\u0002\u0002\u0717\u00d3\u0003\u0002",
"\u0002\u0002\u0718\u0719\u0007\u00a9\u0002\u0002\u0719\u00d5\u0003\u0002",
"\u0002\u0002\u071a\u071b\u0007\u00a8\u0002\u0002\u071b\u00d7\u0003\u0002",
"\u0002\u0002\u071c\u071d\t\u0005\u0002\u0002\u071d\u00d9\u0003\u0002",
"\u0002\u0002\u071e\u0723\u0005\u00dco\u0002\u071f\u0720\u0007\u0013",
"\u0002\u0002\u0720\u0722\u0005\u00dco\u0002\u0721\u071f\u0003\u0002",
"\u0002\u0002\u0722\u0725\u0003\u0002\u0002\u0002\u0723\u0721\u0003\u0002",
"\u0002\u0002\u0723\u0724\u0003\u0002\u0002\u0002\u0724\u00db\u0003\u0002",
"\u0002\u0002\u0725\u0723\u0003\u0002\u0002\u0002\u0726\u072c\u0005\u00e2",
"r\u0002\u0727\u0729\u0007{\u0002\u0002\u0728\u0727\u0003\u0002\u0002",
"\u0002\u0728\u0729\u0003\u0002\u0002\u0002\u0729\u072a\u0003\u0002\u0002",
"\u0002\u072a\u072c\u0005\u00dep\u0002\u072b\u0726\u0003\u0002\u0002",
"\u0002\u072b\u0728\u0003\u0002\u0002\u0002\u072c\u00dd\u0003\u0002\u0002",
"\u0002\u072d\u0730\u0005\u00e0q\u0002\u072e\u0730\u00056\u001c\u0002",
"\u072f\u072d\u0003\u0002\u0002\u0002\u072f\u072e\u0003\u0002\u0002\u0002",
"\u0730\u00df\u0003\u0002\u0002\u0002\u0731\u0734\u0005\u00d0i\u0002",
"\u0732\u0733\u0007.\u0002\u0002\u0733\u0735\u0005\u011c\u008f\u0002",
"\u0734\u0732\u0003\u0002\u0002\u0002\u0734\u0735\u0003\u0002\u0002\u0002",
"\u0735\u00e1\u0003\u0002\u0002\u0002\u0736\u0737\u0005\u00be`\u0002",
"\u0737\u0738\u0005\u00d0i\u0002\u0738\u00e3\u0003\u0002\u0002\u0002",
"\u0739\u073c\u0005\u00b4[\u0002\u073a\u073c\u0005\u00e6t\u0002\u073b",
"\u0739\u0003\u0002\u0002\u0002\u073b\u073a\u0003\u0002\u0002\u0002\u073c",
"\u00e5\u0003\u0002\u0002\u0002\u073d\u073e\bt\u0001\u0002\u073e\u073f",
"\u0007L\u0002\u0002\u073f\u0748\u0003\u0002\u0002\u0002\u0740\u0741",
"\f\u0004\u0002\u0002\u0741\u0742\u0007\u0018\u0002\u0002\u0742\u0747",
"\u0007\u0019\u0002\u0002\u0743\u0744\f\u0003\u0002\u0002\u0744\u0745",
"\u0007\u001a\u0002\u0002\u0745\u0747\u0007\u001b\u0002\u0002\u0746\u0740",
"\u0003\u0002\u0002\u0002\u0746\u0743\u0003\u0002\u0002\u0002\u0747\u074a",
"\u0003\u0002\u0002\u0002\u0748\u0746\u0003\u0002\u0002\u0002\u0748\u0749",
"\u0003\u0002\u0002\u0002\u0749\u00e7\u0003\u0002\u0002\u0002\u074a\u0748",
"\u0003\u0002\u0002\u0002\u074b\u0751\u0005\u00eav\u0002\u074c\u074d",
"\u0005\u008cG\u0002\u074d\u074e\u0005\u00eav\u0002\u074e\u0750\u0003",
"\u0002\u0002\u0002\u074f\u074c\u0003\u0002\u0002\u0002\u0750\u0753\u0003",
"\u0002\u0002\u0002\u0751\u074f\u0003\u0002\u0002\u0002\u0751\u0752\u0003",
"\u0002\u0002\u0002\u0752\u00e9\u0003\u0002\u0002\u0002\u0753\u0751\u0003",
"\u0002\u0002\u0002\u0754\u0755\u0005\u0100\u0081\u0002\u0755\u0756\u0005",
"\u008cG\u0002\u0756\u0758\u0003\u0002\u0002\u0002\u0757\u0754\u0003",
"\u0002\u0002\u0002\u0758\u075b\u0003\u0002\u0002\u0002\u0759\u0757\u0003",
"\u0002\u0002\u0002\u0759\u075a\u0003\u0002\u0002\u0002\u075a\u0761\u0003",
"\u0002\u0002\u0002\u075b\u0759\u0003\u0002\u0002\u0002\u075c\u075d\u0005",
"\u009cO\u0002\u075d\u075e\u0005\u008cG\u0002\u075e\u0760\u0003\u0002",
"\u0002\u0002\u075f\u075c\u0003\u0002\u0002\u0002\u0760\u0763\u0003\u0002",
"\u0002\u0002\u0761\u075f\u0003\u0002\u0002\u0002\u0761\u0762\u0003\u0002",
"\u0002\u0002\u0762\u0769\u0003\u0002\u0002\u0002\u0763\u0761\u0003\u0002",
"\u0002\u0002\u0764\u076a\u0005\u0018\r\u0002\u0765\u076a\u0005\u001c",
"\u000f\u0002\u0766\u076a\u0005,\u0017\u0002\u0767\u076a\u0005*\u0016",
"\u0002\u0768\u076a\u0005\u0016\f\u0002\u0769\u0764\u0003\u0002\u0002",
"\u0002\u0769\u0765\u0003\u0002\u0002\u0002\u0769\u0766\u0003\u0002\u0002",
"\u0002\u0769\u0767\u0003\u0002\u0002\u0002\u0769\u0768\u0003\u0002\u0002",
"\u0002\u076a\u00eb\u0003\u0002\u0002\u0002\u076b\u0771\u0005\u00eex",
"\u0002\u076c\u076d\u0005\u008cG\u0002\u076d\u076e\u0005\u00eex\u0002",
"\u076e\u0770\u0003\u0002\u0002\u0002\u076f\u076c\u0003\u0002\u0002\u0002",
"\u0770\u0773\u0003\u0002\u0002\u0002\u0771\u076f\u0003\u0002\u0002\u0002",
"\u0771\u0772\u0003\u0002\u0002\u0002\u0772\u00ed\u0003\u0002\u0002\u0002",
"\u0773\u0771\u0003\u0002\u0002\u0002\u0774\u0778\u0005\u001e\u0010\u0002",
"\u0775\u0778\u0005\u001a\u000e\u0002\u0776\u0778\u0005.\u0018\u0002",
"\u0777\u0774\u0003\u0002\u0002\u0002\u0777\u0775\u0003\u0002\u0002\u0002",
"\u0777\u0776\u0003\u0002\u0002\u0002\u0778\u00ef\u0003\u0002\u0002\u0002",
"\u0779\u077a\u0007\u000b\u0002\u0002\u077a\u0784\u0005\u01a0\u00d1\u0002",
"\u077b\u077c\u0007\f\u0002\u0002\u077c\u0784\u0005\u01ba\u00de\u0002",
"\u077d\u077e\u0007\r\u0002\u0002\u077e\u0784\u0005\u00f2z\u0002\u077f",
"\u0780\u0007\u000e\u0002\u0002\u0780\u0784\u0005\u00f2z\u0002\u0781",
"\u0782\u0007\u000f\u0002\u0002\u0782\u0784\u0005\u00f6|\u0002\u0783",
"\u0779\u0003\u0002\u0002\u0002\u0783\u077b\u0003\u0002\u0002\u0002\u0783",
"\u077d\u0003\u0002\u0002\u0002\u0783\u077f\u0003\u0002\u0002\u0002\u0783",
"\u0781\u0003\u0002\u0002\u0002\u0784\u00f1\u0003\u0002\u0002\u0002\u0785",
"\u0787\u0005\u00ceh\u0002\u0786\u0788\u0005\u00f4{\u0002\u0787\u0786",
"\u0003\u0002\u0002\u0002\u0787\u0788\u0003\u0002\u0002\u0002\u0788\u00f3",
"\u0003\u0002\u0002\u0002\u0789\u078a\u0007o\u0002\u0002\u078a\u078b",
"\u0005\u0146\u00a4\u0002\u078b\u078c\u0007\u0011\u0002\u0002\u078c\u0791",
"\u0005\u0188\u00c5\u0002\u078d\u078e\u0007\u0015\u0002\u0002\u078e\u0790",
"\u0005\u0188\u00c5\u0002\u078f\u078d\u0003\u0002\u0002\u0002\u0790\u0793",
"\u0003\u0002\u0002\u0002\u0791\u078f\u0003\u0002\u0002\u0002\u0791\u0792",
"\u0003\u0002\u0002\u0002\u0792\u00f5\u0003\u0002\u0002\u0002\u0793\u0791",
"\u0003\u0002\u0002\u0002\u0794\u0799\u0005\u016e\u00b8\u0002\u0795\u0796",
"\u0007\u0015\u0002\u0002\u0796\u0798\u0005\u016e\u00b8\u0002\u0797\u0795",
"\u0003\u0002\u0002\u0002\u0798\u079b\u0003\u0002\u0002\u0002\u0799\u0797",
"\u0003\u0002\u0002\u0002\u0799\u079a\u0003\u0002\u0002\u0002\u079a\u079d",
"\u0003\u0002\u0002\u0002\u079b\u0799\u0003\u0002\u0002\u0002\u079c\u079e",
"\u0005\u00f8}\u0002\u079d\u079c\u0003\u0002\u0002\u0002\u079d\u079e",
"\u0003\u0002\u0002\u0002\u079e\u00f7\u0003\u0002\u0002\u0002\u079f\u07a0",
"\u0007o\u0002\u0002\u07a0\u07a1\u0005\u0146\u00a4\u0002\u07a1\u07a3",
"\u0007\u0011\u0002\u0002\u07a2\u07a4\u0007%\u0002\u0002\u07a3\u07a2",
"\u0003\u0002\u0002\u0002\u07a3\u07a4\u0003\u0002\u0002\u0002\u07a4\u07a5",
"\u0003\u0002\u0002\u0002\u07a5\u07aa\u0005\u016e\u00b8\u0002\u07a6\u07a7",
"\u0007%\u0002\u0002\u07a7\u07a9\u0005\u016e\u00b8\u0002\u07a8\u07a6",
"\u0003\u0002\u0002\u0002\u07a9\u07ac\u0003\u0002\u0002\u0002\u07aa\u07a8",
"\u0003\u0002\u0002\u0002\u07aa\u07ab\u0003\u0002\u0002\u0002\u07ab\u07af",
"\u0003\u0002\u0002\u0002\u07ac\u07aa\u0003\u0002\u0002\u0002\u07ad\u07ae",
"\u0007\u0015\u0002\u0002\u07ae\u07b0\u0005\u016e\u00b8\u0002\u07af\u07ad",
"\u0003\u0002\u0002\u0002\u07af\u07b0\u0003\u0002\u0002\u0002\u07b0\u00f9",
"\u0003\u0002\u0002\u0002\u07b1\u07b6\u0005\u00d0i\u0002\u07b2\u07b3",
"\u0007\u0013\u0002\u0002\u07b3\u07b5\u0005\u00d0i\u0002\u07b4\u07b2",
"\u0003\u0002\u0002\u0002\u07b5\u07b8\u0003\u0002\u0002\u0002\u07b6\u07b4",
"\u0003\u0002\u0002\u0002\u07b6\u07b7\u0003\u0002\u0002\u0002\u07b7\u00fb",
"\u0003\u0002\u0002\u0002\u07b8\u07b6\u0003\u0002\u0002\u0002\u07b9\u07be",
"\u0005\u00d2j\u0002\u07ba\u07bb\u0007\u0013\u0002\u0002\u07bb\u07bd",
"\u0005\u00d2j\u0002\u07bc\u07ba\u0003\u0002\u0002\u0002\u07bd\u07c0",
"\u0003\u0002\u0002\u0002\u07be\u07bc\u0003\u0002\u0002\u0002\u07be\u07bf",
"\u0003\u0002\u0002\u0002\u07bf\u00fd\u0003\u0002\u0002\u0002\u07c0\u07be",
"\u0003\u0002\u0002\u0002\u07c1\u07c6\u0005*\u0016\u0002\u07c2\u07c6",
"\u0005,\u0017\u0002\u07c3\u07c6\u0005.\u0018\u0002\u07c4\u07c6\u0005",
"0\u0019\u0002\u07c5\u07c1\u0003\u0002\u0002\u0002\u07c5\u07c2\u0003",
"\u0002\u0002\u0002\u07c5\u07c3\u0003\u0002\u0002\u0002\u07c5\u07c4\u0003",
"\u0002\u0002\u0002\u07c6\u00ff\u0003\u0002\u0002\u0002\u07c7\u07c8\u0007",
"\n\u0002\u0002\u07c8\u0101\u0003\u0002\u0002\u0002\u07c9\u07cf\u0005",
"\u0104\u0083\u0002\u07ca\u07cb\u0005\u008cG\u0002\u07cb\u07cc\u0005",
"\u0104\u0083\u0002\u07cc\u07ce\u0003\u0002\u0002\u0002\u07cd\u07ca\u0003",
"\u0002\u0002\u0002\u07ce\u07d1\u0003\u0002\u0002\u0002\u07cf\u07cd\u0003",
"\u0002\u0002\u0002\u07cf\u07d0\u0003\u0002\u0002\u0002\u07d0\u0103\u0003",
"\u0002\u0002\u0002\u07d1\u07cf\u0003\u0002\u0002\u0002\u07d2\u07d3\u0007",
"\u000b\u0002\u0002\u07d3\u07dd\u0005\u018a\u00c6\u0002\u07d4\u07d5\u0007",
"\f\u0002\u0002\u07d5\u07dd\u0005\u01a6\u00d4\u0002\u07d6\u07d7\u0007",
"\r\u0002\u0002\u07d7\u07dd\u0005\u0106\u0084\u0002\u07d8\u07d9\u0007",
"\u000e\u0002\u0002\u07d9\u07dd\u0005\u0106\u0084\u0002\u07da\u07db\u0007",
"\u000f\u0002\u0002\u07db\u07dd\u0005\u0108\u0085\u0002\u07dc\u07d2\u0003",
"\u0002\u0002\u0002\u07dc\u07d4\u0003\u0002\u0002\u0002\u07dc\u07d6\u0003",
"\u0002\u0002\u0002\u07dc\u07d8\u0003\u0002\u0002\u0002\u07dc\u07da\u0003",
"\u0002\u0002\u0002\u07dd\u0105\u0003\u0002\u0002\u0002\u07de\u07e0\u0005",
"\u0170\u00b9\u0002\u07df\u07e1\u0007\u0012\u0002\u0002\u07e0\u07df\u0003",
"\u0002\u0002\u0002\u07e0\u07e1\u0003\u0002\u0002\u0002\u07e1\u07e3\u0003",
"\u0002\u0002\u0002\u07e2\u07e4\u0005\u00f4{\u0002\u07e3\u07e2\u0003",
"\u0002\u0002\u0002\u07e3\u07e4\u0003\u0002\u0002\u0002\u07e4\u0107\u0003",
"\u0002\u0002\u0002\u07e5\u07e7\u0005\u0156\u00ac\u0002\u07e6\u07e8\u0007",
"\u0012\u0002\u0002\u07e7\u07e6\u0003\u0002\u0002\u0002\u07e7\u07e8\u0003",
"\u0002\u0002\u0002\u07e8\u07ea\u0003\u0002\u0002\u0002\u07e9\u07eb\u0005",
"\u00f8}\u0002\u07ea\u07e9\u0003\u0002\u0002\u0002\u07ea\u07eb\u0003",
"\u0002\u0002\u0002\u07eb\u0109\u0003\u0002\u0002\u0002\u07ec\u07f2\u0005",
"8\u001d\u0002\u07ed\u07ee\u0005\u008cG\u0002\u07ee\u07ef\u00058\u001d",
"\u0002\u07ef\u07f1\u0003\u0002\u0002\u0002\u07f0\u07ed\u0003\u0002\u0002",
"\u0002\u07f1\u07f4\u0003\u0002\u0002\u0002\u07f2\u07f0\u0003\u0002\u0002",
"\u0002\u07f2\u07f3\u0003\u0002\u0002\u0002\u07f3\u010b\u0003\u0002\u0002",
"\u0002\u07f4\u07f2\u0003\u0002\u0002\u0002\u07f5\u07fb\u00052\u001a",
"\u0002\u07f6\u07f7\u0005\u008cG\u0002\u07f7\u07f8\u00052\u001a\u0002",
"\u07f8\u07fa\u0003\u0002\u0002\u0002\u07f9\u07f6\u0003\u0002\u0002\u0002",
"\u07fa\u07fd\u0003\u0002\u0002\u0002\u07fb\u07f9\u0003\u0002\u0002\u0002",
"\u07fb\u07fc\u0003\u0002\u0002\u0002\u07fc\u010d\u0003\u0002\u0002\u0002",
"\u07fd\u07fb\u0003\u0002\u0002\u0002\u07fe\u0804\u0005F$\u0002\u07ff",
"\u0800\u0005\u008cG\u0002\u0800\u0801\u0005F$\u0002\u0801\u0803\u0003",
"\u0002\u0002\u0002\u0802\u07ff\u0003\u0002\u0002\u0002\u0803\u0806\u0003",
"\u0002\u0002\u0002\u0804\u0802\u0003\u0002\u0002\u0002\u0804\u0805\u0003",
"\u0002\u0002\u0002\u0805\u010f\u0003\u0002\u0002\u0002\u0806\u0804\u0003",
"\u0002\u0002\u0002\u0807\u080d\u0005V,\u0002\u0808\u0809\u0005\u008c",
"G\u0002\u0809\u080a\u0005V,\u0002\u080a\u080c\u0003\u0002\u0002\u0002",
"\u080b\u0808\u0003\u0002\u0002\u0002\u080c\u080f\u0003\u0002\u0002\u0002",
"\u080d\u080b\u0003\u0002\u0002\u0002\u080d\u080e\u0003\u0002\u0002\u0002",
"\u080e\u0111\u0003\u0002\u0002\u0002\u080f\u080d\u0003\u0002\u0002\u0002",
"\u0810\u0811\u0007\u0018\u0002\u0002\u0811\u0812\u0005\u0114\u008b\u0002",
"\u0812\u0813\u0007\u0014\u0002\u0002\u0813\u0814\u0005\u0114\u008b\u0002",
"\u0814\u0815\u0007\u0019\u0002\u0002\u0815\u081f\u0003\u0002\u0002\u0002",
"\u0816\u0817\u0007\u0018\u0002\u0002\u0817\u0818\u0005\u0116\u008c\u0002",
"\u0818\u0819\u0007\u0019\u0002\u0002\u0819\u081f\u0003\u0002\u0002\u0002",
"\u081a\u081b\u0007*\u0002\u0002\u081b\u081c\u0005\u0116\u008c\u0002",
"\u081c\u081d\u0007(\u0002\u0002\u081d\u081f\u0003\u0002\u0002\u0002",
"\u081e\u0810\u0003\u0002\u0002\u0002\u081e\u0816\u0003\u0002\u0002\u0002",
"\u081e\u081a\u0003\u0002\u0002\u0002\u081f\u0113\u0003\u0002\u0002\u0002",
"\u0820\u0830\u0007\u00a6\u0002\u0002\u0821\u0830\u0007\u00a7\u0002\u0002",
"\u0822\u0830\u0007\u00b0\u0002\u0002\u0823\u0830\u0007\u00b1\u0002\u0002",
"\u0824\u0830\u0007\u00a5\u0002\u0002\u0825\u0830\u0007\u00b5\u0002\u0002",
"\u0826\u0830\u0007\u00b4\u0002\u0002\u0827\u0830\u0007\u00ae\u0002\u0002",
"\u0828\u0830\u0007\u00b2\u0002\u0002\u0829\u0830\u0007\u00b3\u0002\u0002",
"\u082a\u0830\u0007\u00a4\u0002\u0002\u082b\u0830\u0007\u00b6\u0002\u0002",
"\u082c\u0830\u0007\u00b7\u0002\u0002\u082d\u0830\u0007\u00af\u0002\u0002",
"\u082e\u0830\u0005\u0094K\u0002\u082f\u0820\u0003\u0002\u0002\u0002",
"\u082f\u0821\u0003\u0002\u0002\u0002\u082f\u0822\u0003\u0002\u0002\u0002",
"\u082f\u0823\u0003\u0002\u0002\u0002\u082f\u0824\u0003\u0002\u0002\u0002",
"\u082f\u0825\u0003\u0002\u0002\u0002\u082f\u0826\u0003\u0002\u0002\u0002",
"\u082f\u0827\u0003\u0002\u0002\u0002\u082f\u0828\u0003\u0002\u0002\u0002",
"\u082f\u0829\u0003\u0002\u0002\u0002\u082f\u082a\u0003\u0002\u0002\u0002",
"\u082f\u082b\u0003\u0002\u0002\u0002\u082f\u082c\u0003\u0002\u0002\u0002",
"\u082f\u082d\u0003\u0002\u0002\u0002\u082f\u082e\u0003\u0002\u0002\u0002",
"\u0830\u0115\u0003\u0002\u0002\u0002\u0831\u0836\u0005\u0114\u008b\u0002",
"\u0832\u0833\u0007\u0013\u0002\u0002\u0833\u0835\u0005\u0114\u008b\u0002",
"\u0834\u0832\u0003\u0002\u0002\u0002\u0835\u0838\u0003\u0002\u0002\u0002",
"\u0836\u0834\u0003\u0002\u0002\u0002\u0836\u0837\u0003\u0002\u0002\u0002",
"\u0837\u0117\u0003\u0002\u0002\u0002\u0838\u0836\u0003\u0002\u0002\u0002",
"\u0839\u083a\t\u0006\u0002\u0002\u083a\u0119\u0003\u0002\u0002\u0002",
"\u083b\u083c\u0007\u0016\u0002\u0002\u083c\u083d\u0005\\/\u0002\u083d",
"\u083e\u0007\u0017\u0002\u0002\u083e\u011b\u0003\u0002\u0002\u0002\u083f",
"\u0842\u0005\u0114\u008b\u0002\u0840\u0842\u0005\u011e\u0090\u0002\u0841",
"\u083f\u0003\u0002\u0002\u0002\u0841\u0840\u0003\u0002\u0002\u0002\u0842",
"\u011d\u0003\u0002\u0002\u0002\u0843\u084a\u0005\u00b2Z\u0002\u0844",
"\u084a\u0005\u00acW\u0002\u0845\u084a\u0005\u00aeX\u0002\u0846\u084a",
"\u0005\u0122\u0092\u0002\u0847\u084a\u0005\u0124\u0093\u0002\u0848\u084a",
"\u0005\u0120\u0091\u0002\u0849\u0843\u0003\u0002\u0002\u0002\u0849\u0844",
"\u0003\u0002\u0002\u0002\u0849\u0845\u0003\u0002\u0002\u0002\u0849\u0846",
"\u0003\u0002\u0002\u0002\u0849\u0847\u0003\u0002\u0002\u0002\u0849\u0848",
"\u0003\u0002\u0002\u0002\u084a\u011f\u0003\u0002\u0002\u0002\u084b\u084d",
"\u0007{\u0002\u0002\u084c\u084b\u0003\u0002\u0002\u0002\u084c\u084d",
"\u0003\u0002\u0002\u0002\u084d\u084e\u0003\u0002\u0002\u0002\u084e\u0850",
"\u0007\u0016\u0002\u0002\u084f\u0851\u0005\u0126\u0094\u0002\u0850\u084f",
"\u0003\u0002\u0002\u0002\u0850\u0851\u0003\u0002\u0002\u0002\u0851\u0852",
"\u0003\u0002\u0002\u0002\u0852\u0853\u0007\u0017\u0002\u0002\u0853\u0121",
"\u0003\u0002\u0002\u0002\u0854\u0856\u0007{\u0002\u0002\u0855\u0854",
"\u0003\u0002\u0002\u0002\u0855\u0856\u0003\u0002\u0002\u0002\u0856\u085f",
"\u0003\u0002\u0002\u0002\u0857\u0858\u0007*\u0002\u0002\u0858\u0859",
"\u0005\u0128\u0095\u0002\u0859\u085a\u0007(\u0002\u0002\u085a\u0860",
"\u0003\u0002\u0002\u0002\u085b\u0860\u0007-\u0002\u0002\u085c\u085d",
"\u0007*\u0002\u0002\u085d\u085e\u0007\u0011\u0002\u0002\u085e\u0860",
"\u0007(\u0002\u0002\u085f\u0857\u0003\u0002\u0002\u0002\u085f\u085b",
"\u0003\u0002\u0002\u0002\u085f\u085c\u0003\u0002\u0002\u0002\u0860\u0123",
"\u0003\u0002\u0002\u0002\u0861\u0863\u0007\u001a\u0002\u0002\u0862\u0864",
"\u0005\u0128\u0095\u0002\u0863\u0862\u0003\u0002\u0002\u0002\u0863\u0864",
"\u0003\u0002\u0002\u0002\u0864\u0865\u0003\u0002\u0002\u0002\u0865\u0866",
"\u0007\u001b\u0002\u0002\u0866\u0125\u0003\u0002\u0002\u0002\u0867\u0868",
"\u0005\\/\u0002\u0868\u0871\u0007\u0013\u0002\u0002\u0869\u086e\u0005",
"\\/\u0002\u086a\u086b\u0007\u0013\u0002\u0002\u086b\u086d\u0005\\/\u0002",
"\u086c\u086a\u0003\u0002\u0002\u0002\u086d\u0870\u0003\u0002\u0002\u0002",
"\u086e\u086c\u0003\u0002\u0002\u0002\u086e\u086f\u0003\u0002\u0002\u0002",
"\u086f\u0872\u0003\u0002\u0002\u0002\u0870\u086e\u0003\u0002\u0002\u0002",
"\u0871\u0869\u0003\u0002\u0002\u0002\u0871\u0872\u0003\u0002\u0002\u0002",
"\u0872\u0127\u0003\u0002\u0002\u0002\u0873\u0878\u0005\u012a\u0096\u0002",
"\u0874\u0875\u0007\u0013\u0002\u0002\u0875\u0877\u0005\u012a\u0096\u0002",
"\u0876\u0874\u0003\u0002\u0002\u0002\u0877\u087a\u0003\u0002\u0002\u0002",
"\u0878\u0876\u0003\u0002\u0002\u0002\u0878\u0879\u0003\u0002\u0002\u0002",
"\u0879\u0129\u0003\u0002\u0002\u0002\u087a\u0878\u0003\u0002\u0002\u0002",
"\u087b\u087c\u0005\u012c\u0097\u0002\u087c\u087d\u0007\u0011\u0002\u0002",
"\u087d\u087e\u0005\\/\u0002\u087e\u012b\u0003\u0002\u0002\u0002\u087f",
"\u0882\u0005\u00d8m\u0002\u0880\u0882\u0007\u00ae\u0002\u0002\u0881",
"\u087f\u0003\u0002\u0002\u0002\u0881\u0880\u0003\u0002\u0002\u0002\u0882",
"\u012d\u0003\u0002\u0002\u0002\u0883\u0884\u0005\\/\u0002\u0884\u0885",
"\u0007\u0011\u0002\u0002\u0885\u0886\u0005\\/\u0002\u0886\u088d\u0003",
"\u0002\u0002\u0002\u0887\u0888\u0005\\/\u0002\u0888\u0889\u0007\u0011",
"\u0002\u0002\u0889\u088d\u0003\u0002\u0002\u0002\u088a\u088b\u0007\u0011",
"\u0002\u0002\u088b\u088d\u0005\\/\u0002\u088c\u0883\u0003\u0002\u0002",
"\u0002\u088c\u0887\u0003\u0002\u0002\u0002\u088c\u088a\u0003\u0002\u0002",
"\u0002\u088d\u012f\u0003\u0002\u0002\u0002\u088e\u088f\u0005\u00d0i",
"\u0002\u088f\u0890\u0005\u014c\u00a7\u0002\u0890\u0891\u0005\\/\u0002",
"\u0891\u0131\u0003\u0002\u0002\u0002\u0892\u0893\b\u009a\u0001\u0002",
"\u0893\u0894\u0005\u00d0i\u0002\u0894\u0899\u0003\u0002\u0002\u0002",
"\u0895\u0896\f\u0003\u0002\u0002\u0896\u0898\u0005\u0086D\u0002\u0897",
"\u0895\u0003\u0002\u0002\u0002\u0898\u089b\u0003\u0002\u0002\u0002\u0899",
"\u0897\u0003\u0002\u0002\u0002\u0899\u089a\u0003\u0002\u0002\u0002\u089a",
"\u0133\u0003\u0002\u0002\u0002\u089b\u0899\u0003\u0002\u0002\u0002\u089c",
"\u089d\u0006\u009b5\u0003\u089d\u089e\u0007\u00aa\u0002\u0002\u089e",
"\u08a1\u0005\u00e4s\u0002\u089f\u08a1\u0005\\/\u0002\u08a0\u089c\u0003",
"\u0002\u0002\u0002\u08a0\u089f\u0003\u0002\u0002\u0002\u08a1\u0135\u0003",
"\u0002\u0002\u0002\u08a2\u08a3\u0007\u008a\u0002\u0002\u08a3\u08a4\u0007",
"I\u0002\u0002\u08a4\u08a5\u0007o\u0002\u0002\u08a5\u08a6\u0005\\/\u0002",
"\u08a6\u0137\u0003\u0002\u0002\u0002\u08a7\u08a8\u0007\u008a\u0002\u0002",
"\u08a8\u08a9\u0007\u0082\u0002\u0002\u08a9\u08aa\u0007o\u0002\u0002",
"\u08aa\u08ab\u0005\\/\u0002\u08ab\u0139\u0003\u0002\u0002\u0002\u08ac",
"\u08b1\u0005\u013c\u009f\u0002\u08ad\u08ae\u0007\u0013\u0002\u0002\u08ae",
"\u08b0\u0005\u013c\u009f\u0002\u08af\u08ad\u0003\u0002\u0002\u0002\u08b0",
"\u08b3\u0003\u0002\u0002\u0002\u08b1\u08af\u0003\u0002\u0002\u0002\u08b1",
"\u08b2\u0003\u0002\u0002\u0002\u08b2\u013b\u0003\u0002\u0002\u0002\u08b3",
"\u08b1\u0003\u0002\u0002\u0002\u08b4\u08b9\u0005\u00d0i\u0002\u08b5",
"\u08b6\u0007\u0015\u0002\u0002\u08b6\u08b8\u0005\u00d0i\u0002\u08b7",
"\u08b5\u0003\u0002\u0002\u0002\u08b8\u08bb\u0003\u0002\u0002\u0002\u08b9",
"\u08b7\u0003\u0002\u0002\u0002\u08b9\u08ba\u0003\u0002\u0002\u0002\u08ba",
"\u08bd\u0003\u0002\u0002\u0002\u08bb\u08b9\u0003\u0002\u0002\u0002\u08bc",
"\u08be\t\u0007\u0002\u0002\u08bd\u08bc\u0003\u0002\u0002\u0002\u08bd",
"\u08be\u0003\u0002\u0002\u0002\u08be\u013d\u0003\u0002\u0002\u0002\u08bf",
"\u08c6\u0007\"\u0002\u0002\u08c0\u08c6\u0007#\u0002\u0002\u08c1\u08c6",
"\u0005\u014e\u00a8\u0002\u08c2\u08c6\u0005\u0150\u00a9\u0002\u08c3\u08c6",
"\u0005\u0152\u00aa\u0002\u08c4\u08c6\u0005\u0154\u00ab\u0002\u08c5\u08bf",
"\u0003\u0002\u0002\u0002\u08c5\u08c0\u0003\u0002\u0002\u0002\u08c5\u08c1",
"\u0003\u0002\u0002\u0002\u08c5\u08c2\u0003\u0002\u0002\u0002\u08c5\u08c3",
"\u0003\u0002\u0002\u0002\u08c5\u08c4\u0003\u0002\u0002\u0002\u08c6\u013f",
"\u0003\u0002\u0002\u0002\u08c7\u08c8\t\b\u0002\u0002\u08c8\u0141\u0003",
"\u0002\u0002\u0002\u08c9\u08ca\u0007\u00aa\u0002\u0002\u08ca\u08cb\u0006",
"\u00a26\u0003\u08cb\u0143\u0003\u0002\u0002\u0002\u08cc\u08cd\u0007",
"\u00aa\u0002\u0002\u08cd\u08ce\u0006\u00a37\u0003\u08ce\u0145\u0003",
"\u0002\u0002\u0002\u08cf\u08d0\u0007\u00aa\u0002\u0002\u08d0\u08d1\u0006",
"\u00a48\u0003\u08d1\u0147\u0003\u0002\u0002\u0002\u08d2\u08d3\u0007",
"\u00aa\u0002\u0002\u08d3\u08d4\u0006\u00a59\u0003\u08d4\u0149\u0003",
"\u0002\u0002\u0002\u08d5\u08d6\u0007\u00aa\u0002\u0002\u08d6\u08d7\u0006",
"\u00a6:\u0003\u08d7\u014b\u0003\u0002\u0002\u0002\u08d8\u08d9\u0007",
".\u0002\u0002\u08d9\u014d\u0003\u0002\u0002\u0002\u08da\u08db\u0007",
"$\u0002\u0002\u08db\u014f\u0003\u0002\u0002\u0002\u08dc\u08dd\u0007",
"%\u0002\u0002\u08dd\u0151\u0003\u0002\u0002\u0002\u08de\u08df\u0007",
"&\u0002\u0002\u08df\u0153\u0003\u0002\u0002\u0002\u08e0\u08e1\t\t\u0002",
"\u0002\u08e1\u0155\u0003\u0002\u0002\u0002\u08e2\u08e3\u0007\u008d\u0002",
"\u0002\u08e3\u08e4\u0005\u0158\u00ad\u0002\u08e4\u08e5\u0007\u0012\u0002",
"\u0002\u08e5\u08ea\u0003\u0002\u0002\u0002\u08e6\u08e7\u0005\u0158\u00ad",
"\u0002\u08e7\u08e8\u0007\u0012\u0002\u0002\u08e8\u08ea\u0003\u0002\u0002",
"\u0002\u08e9\u08e2\u0003\u0002\u0002\u0002\u08e9\u08e6\u0003\u0002\u0002",
"\u0002\u08ea\u0157\u0003\u0002\u0002\u0002\u08eb\u08ec\b\u00ad\u0001",
"\u0002\u08ec\u08ed\u0005\u015a\u00ae\u0002\u08ed\u08f2\u0003\u0002\u0002",
"\u0002\u08ee\u08ef\f\u0003\u0002\u0002\u08ef\u08f1\u0005\u0160\u00b1",
"\u0002\u08f0\u08ee\u0003\u0002\u0002\u0002\u08f1\u08f4\u0003\u0002\u0002",
"\u0002\u08f2\u08f0\u0003\u0002\u0002\u0002\u08f2\u08f3\u0003\u0002\u0002",
"\u0002\u08f3\u0159\u0003\u0002\u0002\u0002\u08f4\u08f2\u0003\u0002\u0002",
"\u0002\u08f5\u08fd\u0005\u015c\u00af\u0002\u08f6\u08fd\u0005\u015e\u00b0",
"\u0002\u08f7\u08fd\u0005\u0168\u00b5\u0002\u08f8\u08fd\u0005\u016a\u00b6",
"\u0002\u08f9\u08fd\u0005\u016c\u00b7\u0002\u08fa\u08fd\u0005\u0162\u00b2",
"\u0002\u08fb\u08fd\u0005\u0166\u00b4\u0002\u08fc\u08f5\u0003\u0002\u0002",
"\u0002\u08fc\u08f6\u0003\u0002\u0002\u0002\u08fc\u08f7\u0003\u0002\u0002",
"\u0002\u08fc\u08f8\u0003\u0002\u0002\u0002\u08fc\u08f9\u0003\u0002\u0002",
"\u0002\u08fc\u08fa\u0003\u0002\u0002\u0002\u08fc\u08fb\u0003\u0002\u0002",
"\u0002\u08fd\u015b\u0003\u0002\u0002\u0002\u08fe\u08ff\u0005\u0118\u008d",
"\u0002\u08ff\u015d\u0003\u0002\u0002\u0002\u0900\u0901\u0005\u0142\u00a2",
"\u0002\u0901\u0902\u0005\u0162\u00b2\u0002\u0902\u015f\u0003\u0002\u0002",
"\u0002\u0903\u0904\u0007\u0015\u0002\u0002\u0904\u0909\u0005\u0162\u00b2",
"\u0002\u0905\u0906\u0007\u0015\u0002\u0002\u0906\u0909\u0005\u016e\u00b8",
"\u0002\u0907\u0909\u0005\u0166\u00b4\u0002\u0908\u0903\u0003\u0002\u0002",
"\u0002\u0908\u0905\u0003\u0002\u0002\u0002\u0908\u0907\u0003\u0002\u0002",
"\u0002\u0909\u0161\u0003\u0002\u0002\u0002\u090a\u090b\u0005\u016e\u00b8",
"\u0002\u090b\u090d\u0007\u0016\u0002\u0002\u090c\u090e\u0005\u0164\u00b3",
"\u0002\u090d\u090c\u0003\u0002\u0002\u0002\u090d\u090e\u0003\u0002\u0002",
"\u0002\u090e\u090f\u0003\u0002\u0002\u0002\u090f\u0910\u0007\u0017\u0002",
"\u0002\u0910\u0163\u0003\u0002\u0002\u0002\u0911\u0912\b\u00b3\u0001",
"\u0002\u0912\u0913\u0005\u0158\u00ad\u0002\u0913\u0919\u0003\u0002\u0002",
"\u0002\u0914\u0915\f\u0003\u0002\u0002\u0915\u0916\u0007\u0013\u0002",
"\u0002\u0916\u0918\u0005\u0158\u00ad\u0002\u0917\u0914\u0003\u0002\u0002",
"\u0002\u0918\u091b\u0003\u0002\u0002\u0002\u0919\u0917\u0003\u0002\u0002",
"\u0002\u0919\u091a\u0003\u0002\u0002\u0002\u091a\u0165\u0003\u0002\u0002",
"\u0002\u091b\u0919\u0003\u0002\u0002\u0002\u091c\u091d\u0007\u0018\u0002",
"\u0002\u091d\u091e\u0005\u0158\u00ad\u0002\u091e\u091f\u0007\u0019\u0002",
"\u0002\u091f\u0167\u0003\u0002\u0002\u0002\u0920\u0921\u0007\u0016\u0002",
"\u0002\u0921\u0922\u0005\u0158\u00ad\u0002\u0922\u0923\u0007\u0017\u0002",
"\u0002\u0923\u0169\u0003\u0002\u0002\u0002\u0924\u0925\u0005\u016e\u00b8",
"\u0002\u0925\u016b\u0003\u0002\u0002\u0002\u0926\u092c\u0007\u00b0\u0002",
"\u0002\u0927\u092c\u0007\u00b2\u0002\u0002\u0928\u092c\u0007\u00ae\u0002",
"\u0002\u0929\u092c\u0007\u00a4\u0002\u0002\u092a\u092c\u0007\u00a5\u0002",
"\u0002\u092b\u0926\u0003\u0002\u0002\u0002\u092b\u0927\u0003\u0002\u0002",
"\u0002\u092b\u0928\u0003\u0002\u0002\u0002\u092b\u0929\u0003\u0002\u0002",
"\u0002\u092b\u092a\u0003\u0002\u0002\u0002\u092c\u016d\u0003\u0002\u0002",
"\u0002\u092d\u092e\t\n\u0002\u0002\u092e\u016f\u0003\u0002\u0002\u0002",
"\u092f\u0930\u0007\u008d\u0002\u0002\u0930\u0933\u0005\u0172\u00ba\u0002",
"\u0931\u0933\u0005\u0172\u00ba\u0002\u0932\u092f\u0003\u0002\u0002\u0002",
"\u0932\u0931\u0003\u0002\u0002\u0002\u0933\u0171\u0003\u0002\u0002\u0002",
"\u0934\u0935\b\u00ba\u0001\u0002\u0935\u0936\u0005\u0174\u00bb\u0002",
"\u0936\u093b\u0003\u0002\u0002\u0002\u0937\u0938\f\u0003\u0002\u0002",
"\u0938\u093a\u0005\u0178\u00bd\u0002\u0939\u0937\u0003\u0002\u0002\u0002",
"\u093a\u093d\u0003\u0002\u0002\u0002\u093b\u0939\u0003\u0002\u0002\u0002",
"\u093b\u093c\u0003\u0002\u0002\u0002\u093c\u0173\u0003\u0002\u0002\u0002",
"\u093d\u093b\u0003\u0002\u0002\u0002\u093e\u0944\u0005\u0176\u00bc\u0002",
"\u093f\u0944\u0005\u0182\u00c2\u0002\u0940\u0944\u0005\u0184\u00c3\u0002",
"\u0941\u0944\u0005\u0186\u00c4\u0002\u0942\u0944\u0005\u017a\u00be\u0002",
"\u0943\u093e\u0003\u0002\u0002\u0002\u0943\u093f\u0003\u0002\u0002\u0002",
"\u0943\u0940\u0003\u0002\u0002\u0002\u0943\u0941\u0003\u0002\u0002\u0002",
"\u0943\u0942\u0003\u0002\u0002\u0002\u0944\u0175\u0003\u0002\u0002\u0002",
"\u0945\u0946\u0005\u0118\u008d\u0002\u0946\u0177\u0003\u0002\u0002\u0002",
"\u0947\u0948\u0007\u0015\u0002\u0002\u0948\u094e\u0005\u017a\u00be\u0002",
"\u0949\u094a\u0007\u0018\u0002\u0002\u094a\u094b\u0005\u0172\u00ba\u0002",
"\u094b\u094c\u0007\u0019\u0002\u0002\u094c\u094e\u0003\u0002\u0002\u0002",
"\u094d\u0947\u0003\u0002\u0002\u0002\u094d\u0949\u0003\u0002\u0002\u0002",
"\u094e\u0179\u0003\u0002\u0002\u0002\u094f\u0950\u0005\u0188\u00c5\u0002",
"\u0950\u0952\u0007\u0016\u0002\u0002\u0951\u0953\u0005\u017c\u00bf\u0002",
"\u0952\u0951\u0003\u0002\u0002\u0002\u0952\u0953\u0003\u0002\u0002\u0002",
"\u0953\u0954\u0003\u0002\u0002\u0002\u0954\u0955\u0007\u0017\u0002\u0002",
"\u0955\u017b\u0003\u0002\u0002\u0002\u0956\u095d\u0005\u017e\u00c0\u0002",
"\u0957\u095d\u0005\u0180\u00c1\u0002\u0958\u0959\u0005\u017e\u00c0\u0002",
"\u0959\u095a\u0007\u0013\u0002\u0002\u095a\u095b\u0005\u0180\u00c1\u0002",
"\u095b\u095d\u0003\u0002\u0002\u0002\u095c\u0956\u0003\u0002\u0002\u0002",
"\u095c\u0957\u0003\u0002\u0002\u0002\u095c\u0958\u0003\u0002\u0002\u0002",
"\u095d\u017d\u0003\u0002\u0002\u0002\u095e\u095f\b\u00c0\u0001\u0002",
"\u095f\u0960\u0005\u0172\u00ba\u0002\u0960\u0966\u0003\u0002\u0002\u0002",
"\u0961\u0962\f\u0003\u0002\u0002\u0962\u0963\u0007\u0013\u0002\u0002",
"\u0963\u0965\u0005\u0172\u00ba\u0002\u0964\u0961\u0003\u0002\u0002\u0002",
"\u0965\u0968\u0003\u0002\u0002\u0002\u0966\u0964\u0003\u0002\u0002\u0002",
"\u0966\u0967\u0003\u0002\u0002\u0002\u0967\u017f\u0003\u0002\u0002\u0002",
"\u0968\u0966\u0003\u0002\u0002\u0002\u0969\u096a\b\u00c1\u0001\u0002",
"\u096a\u096b\u0005\u0188\u00c5\u0002\u096b\u096c\u0007.\u0002\u0002",
"\u096c\u096d\u0005\u0172\u00ba\u0002\u096d\u0976\u0003\u0002\u0002\u0002",
"\u096e\u096f\f\u0003\u0002\u0002\u096f\u0970\u0007\u0013\u0002\u0002",
"\u0970\u0971\u0005\u0188\u00c5\u0002\u0971\u0972\u0007.\u0002\u0002",
"\u0972\u0973\u0005\u0172\u00ba\u0002\u0973\u0975\u0003\u0002\u0002\u0002",
"\u0974\u096e\u0003\u0002\u0002\u0002\u0975\u0978\u0003\u0002\u0002\u0002",
"\u0976\u0974\u0003\u0002\u0002\u0002\u0976\u0977\u0003\u0002\u0002\u0002",
"\u0977\u0181\u0003\u0002\u0002\u0002\u0978\u0976\u0003\u0002\u0002\u0002",
"\u0979\u097a\u0007\u0016\u0002\u0002\u097a\u097b\u0005\u0172\u00ba\u0002",
"\u097b\u097c\u0007\u0017\u0002\u0002\u097c\u0183\u0003\u0002\u0002\u0002",
"\u097d\u097e\b\u00c3\u0001\u0002\u097e\u0981\u0007\u00ac\u0002\u0002",
"\u097f\u0981\u0005\u0188\u00c5\u0002\u0980\u097d\u0003\u0002\u0002\u0002",
"\u0980\u097f\u0003\u0002\u0002\u0002\u0981\u0987\u0003\u0002\u0002\u0002",
"\u0982\u0983\f\u0003\u0002\u0002\u0983\u0984\u0007\u0015\u0002\u0002",
"\u0984\u0986\u0005\u0188\u00c5\u0002\u0985\u0982\u0003\u0002\u0002\u0002",
"\u0986\u0989\u0003\u0002\u0002\u0002\u0987\u0985\u0003\u0002\u0002\u0002",
"\u0987\u0988\u0003\u0002\u0002\u0002\u0988\u0185\u0003\u0002\u0002\u0002",
"\u0989\u0987\u0003\u0002\u0002\u0002\u098a\u0990\u0007\u00b0\u0002\u0002",
"\u098b\u0990\u0007\u00b2\u0002\u0002\u098c\u0990\u0007\u00ae\u0002\u0002",
"\u098d\u0990\u0007\u00a4\u0002\u0002\u098e\u0990\u0007\u00a5\u0002\u0002",
"\u098f\u098a\u0003\u0002\u0002\u0002\u098f\u098b\u0003\u0002\u0002\u0002",
"\u098f\u098c\u0003\u0002\u0002\u0002\u098f\u098d\u0003\u0002\u0002\u0002",
"\u098f\u098e\u0003\u0002\u0002\u0002\u0990\u0187\u0003\u0002\u0002\u0002",
"\u0991\u0992\t\u000b\u0002\u0002\u0992\u0189\u0003\u0002\u0002\u0002",
"\u0993\u0994\u0007\u008d\u0002\u0002\u0994\u0995\u0005\u018c\u00c7\u0002",
"\u0995\u0996\u0007\u0012\u0002\u0002\u0996\u099b\u0003\u0002\u0002\u0002",
"\u0997\u0998\u0005\u018c\u00c7\u0002\u0998\u0999\u0007\u0012\u0002\u0002",
"\u0999\u099b\u0003\u0002\u0002\u0002\u099a\u0993\u0003\u0002\u0002\u0002",
"\u099a\u0997\u0003\u0002\u0002\u0002\u099b\u018b\u0003\u0002\u0002\u0002",
"\u099c\u099d\b\u00c7\u0001\u0002\u099d\u099e\u0005\u018e\u00c8\u0002",
"\u099e\u09a3\u0003\u0002\u0002\u0002\u099f\u09a0\f\u0003\u0002\u0002",
"\u09a0\u09a2\u0005\u0194\u00cb\u0002\u09a1\u099f\u0003\u0002\u0002\u0002",
"\u09a2\u09a5\u0003\u0002\u0002\u0002\u09a3\u09a1\u0003\u0002\u0002\u0002",
"\u09a3\u09a4\u0003\u0002\u0002\u0002\u09a4\u018d\u0003\u0002\u0002\u0002",
"\u09a5\u09a3\u0003\u0002\u0002\u0002\u09a6\u09ac\u0005\u0190\u00c9\u0002",
"\u09a7\u09ac\u0005\u0192\u00ca\u0002\u09a8\u09ac\u0005\u019c\u00cf\u0002",
"\u09a9\u09ac\u0005\u019e\u00d0\u0002\u09aa\u09ac\u0005\u01a2\u00d2\u0002",
"\u09ab\u09a6\u0003\u0002\u0002\u0002\u09ab\u09a7\u0003\u0002\u0002\u0002",
"\u09ab\u09a8\u0003\u0002\u0002\u0002\u09ab\u09a9\u0003\u0002\u0002\u0002",
"\u09ab\u09aa\u0003\u0002\u0002\u0002\u09ac\u018f\u0003\u0002\u0002\u0002",
"\u09ad\u09ae\u0005\u0118\u008d\u0002\u09ae\u0191\u0003\u0002\u0002\u0002",
"\u09af\u09b0\u0005\u0142\u00a2\u0002\u09b0\u09b1\u0005\u0196\u00cc\u0002",
"\u09b1\u0193\u0003\u0002\u0002\u0002\u09b2\u09b3\u0007\u0015\u0002\u0002",
"\u09b3\u09b6\u0005\u0196\u00cc\u0002\u09b4\u09b6\u0005\u019a\u00ce\u0002",
"\u09b5\u09b2\u0003\u0002\u0002\u0002\u09b5\u09b4\u0003\u0002\u0002\u0002",
"\u09b6\u0195\u0003\u0002\u0002\u0002\u09b7\u09b8\u0005\u01a4\u00d3\u0002",
"\u09b8\u09ba\u0007\u0016\u0002\u0002\u09b9\u09bb\u0005\u0198\u00cd\u0002",
"\u09ba\u09b9\u0003\u0002\u0002\u0002\u09ba\u09bb\u0003\u0002\u0002\u0002",
"\u09bb\u09bc\u0003\u0002\u0002\u0002\u09bc\u09bd\u0007\u0017\u0002\u0002",
"\u09bd\u0197\u0003\u0002\u0002\u0002\u09be\u09bf\b\u00cd\u0001\u0002",
"\u09bf\u09c0\u0005\u018c\u00c7\u0002\u09c0\u09c6\u0003\u0002\u0002\u0002",
"\u09c1\u09c2\f\u0003\u0002\u0002\u09c2\u09c3\u0007\u0013\u0002\u0002",
"\u09c3\u09c5\u0005\u018c\u00c7\u0002\u09c4\u09c1\u0003\u0002\u0002\u0002",
"\u09c5\u09c8\u0003\u0002\u0002\u0002\u09c6\u09c4\u0003\u0002\u0002\u0002",
"\u09c6\u09c7\u0003\u0002\u0002\u0002\u09c7\u0199\u0003\u0002\u0002\u0002",
"\u09c8\u09c6\u0003\u0002\u0002\u0002\u09c9\u09ca\u0007\u0018\u0002\u0002",
"\u09ca\u09cb\u0005\u018c\u00c7\u0002\u09cb\u09cc\u0007\u0019\u0002\u0002",
"\u09cc\u019b\u0003\u0002\u0002\u0002\u09cd\u09ce\u0007\u0016\u0002\u0002",
"\u09ce\u09cf\u0005\u018c\u00c7\u0002\u09cf\u09d0\u0007\u0017\u0002\u0002",
"\u09d0\u019d\u0003\u0002\u0002\u0002\u09d1\u09d2\b\u00d0\u0001\u0002",
"\u09d2\u09d3\u0005\u01a4\u00d3\u0002\u09d3\u09d9\u0003\u0002\u0002\u0002",
"\u09d4\u09d5\f\u0003\u0002\u0002\u09d5\u09d6\u0007\u0015\u0002\u0002",
"\u09d6\u09d8\u0005\u01a4\u00d3\u0002\u09d7\u09d4\u0003\u0002\u0002\u0002",
"\u09d8\u09db\u0003\u0002\u0002\u0002\u09d9\u09d7\u0003\u0002\u0002\u0002",
"\u09d9\u09da\u0003\u0002\u0002\u0002\u09da\u019f\u0003\u0002\u0002\u0002",
"\u09db\u09d9\u0003\u0002\u0002\u0002\u09dc\u09dd\b\u00d1\u0001\u0002",
"\u09dd\u09de\u0005\u019e\u00d0\u0002\u09de\u09e3\u0003\u0002\u0002\u0002",
"\u09df\u09e0\f\u0003\u0002\u0002\u09e0\u09e2\u0007\u00ac\u0002\u0002",
"\u09e1\u09df\u0003\u0002\u0002\u0002\u09e2\u09e5\u0003\u0002\u0002\u0002",
"\u09e3\u09e1\u0003\u0002\u0002\u0002\u09e3\u09e4\u0003\u0002\u0002\u0002",
"\u09e4\u01a1\u0003\u0002\u0002\u0002\u09e5\u09e3\u0003\u0002\u0002\u0002",
"\u09e6\u09ec\u0007\u00b0\u0002\u0002\u09e7\u09ec\u0007\u00b2\u0002\u0002",
"\u09e8\u09ec\u0007\u00ae\u0002\u0002\u09e9\u09ec\u0007\u00a4\u0002\u0002",
"\u09ea\u09ec\u0007\u00a5\u0002\u0002\u09eb\u09e6\u0003\u0002\u0002\u0002",
"\u09eb\u09e7\u0003\u0002\u0002\u0002\u09eb\u09e8\u0003\u0002\u0002\u0002",
"\u09eb\u09e9\u0003\u0002\u0002\u0002\u09eb\u09ea\u0003\u0002\u0002\u0002",
"\u09ec\u01a3\u0003\u0002\u0002\u0002\u09ed\u09ee\t\f\u0002\u0002\u09ee",
"\u01a5\u0003\u0002\u0002\u0002\u09ef\u09f0\u0007\u008d\u0002\u0002\u09f0",
"\u09f1\u0005\u01a8\u00d5\u0002\u09f1\u09f2\u0007\u0012\u0002\u0002\u09f2",
"\u09f7\u0003\u0002\u0002\u0002\u09f3\u09f4\u0005\u01a8\u00d5\u0002\u09f4",
"\u09f5\u0007\u0012\u0002\u0002\u09f5\u09f7\u0003\u0002\u0002\u0002\u09f6",
"\u09ef\u0003\u0002\u0002\u0002\u09f6\u09f3\u0003\u0002\u0002\u0002\u09f7",
"\u01a7\u0003\u0002\u0002\u0002\u09f8\u09f9\b\u00d5\u0001\u0002\u09f9",
"\u09fa\u0005\u01aa\u00d6\u0002\u09fa\u09ff\u0003\u0002\u0002\u0002\u09fb",
"\u09fc\f\u0003\u0002\u0002\u09fc\u09fe\u0005\u01b0\u00d9\u0002\u09fd",
"\u09fb\u0003\u0002\u0002\u0002\u09fe\u0a01\u0003\u0002\u0002\u0002\u09ff",
"\u09fd\u0003\u0002\u0002\u0002\u09ff\u0a00\u0003\u0002\u0002\u0002\u0a00",
"\u01a9\u0003\u0002\u0002\u0002\u0a01\u09ff\u0003\u0002\u0002\u0002\u0a02",
"\u0a08\u0005\u01ac\u00d7\u0002\u0a03\u0a08\u0005\u01ae\u00d8\u0002\u0a04",
"\u0a08\u0005\u01b8\u00dd\u0002\u0a05\u0a08\u0005\u01ba\u00de\u0002\u0a06",
"\u0a08\u0005\u01bc\u00df\u0002\u0a07\u0a02\u0003\u0002\u0002\u0002\u0a07",
"\u0a03\u0003\u0002\u0002\u0002\u0a07\u0a04\u0003\u0002\u0002\u0002\u0a07",
"\u0a05\u0003\u0002\u0002\u0002\u0a07\u0a06\u0003\u0002\u0002\u0002\u0a08",
"\u01ab\u0003\u0002\u0002\u0002\u0a09\u0a0a\u0005\u0118\u008d\u0002\u0a0a",
"\u01ad\u0003\u0002\u0002\u0002\u0a0b\u0a0c\u0005\u0142\u00a2\u0002\u0a0c",
"\u0a0d\u0005\u01b2\u00da\u0002\u0a0d\u01af\u0003\u0002\u0002\u0002\u0a0e",
"\u0a0f\u0007\u0015\u0002\u0002\u0a0f\u0a12\u0005\u01b2\u00da\u0002\u0a10",
"\u0a12\u0005\u01b6\u00dc\u0002\u0a11\u0a0e\u0003\u0002\u0002\u0002\u0a11",
"\u0a10\u0003\u0002\u0002\u0002\u0a12\u01b1\u0003\u0002\u0002\u0002\u0a13",
"\u0a14\u0005\u01be\u00e0\u0002\u0a14\u0a16\u0007\u0016\u0002\u0002\u0a15",
"\u0a17\u0005\u01b4\u00db\u0002\u0a16\u0a15\u0003\u0002\u0002\u0002\u0a16",
"\u0a17\u0003\u0002\u0002\u0002\u0a17\u0a18\u0003\u0002\u0002\u0002\u0a18",
"\u0a19\u0007\u0017\u0002\u0002\u0a19\u01b3\u0003\u0002\u0002\u0002\u0a1a",
"\u0a1b\b\u00db\u0001\u0002\u0a1b\u0a1c\u0005\u01a8\u00d5\u0002\u0a1c",
"\u0a22\u0003\u0002\u0002\u0002\u0a1d\u0a1e\f\u0003\u0002\u0002\u0a1e",
"\u0a1f\u0007\u0013\u0002\u0002\u0a1f\u0a21\u0005\u01a8\u00d5\u0002\u0a20",
"\u0a1d\u0003\u0002\u0002\u0002\u0a21\u0a24\u0003\u0002\u0002\u0002\u0a22",
"\u0a20\u0003\u0002\u0002\u0002\u0a22\u0a23\u0003\u0002\u0002\u0002\u0a23",
"\u01b5\u0003\u0002\u0002\u0002\u0a24\u0a22\u0003\u0002\u0002\u0002\u0a25",
"\u0a26\u0007\u0018\u0002\u0002\u0a26\u0a27\u0005\u01a8\u00d5\u0002\u0a27",
"\u0a28\u0007\u0019\u0002\u0002\u0a28\u01b7\u0003\u0002\u0002\u0002\u0a29",
"\u0a2a\u0007\u0016\u0002\u0002\u0a2a\u0a2b\u0005\u01a8\u00d5\u0002\u0a2b",
"\u0a2c\u0007\u0017\u0002\u0002\u0a2c\u01b9\u0003\u0002\u0002\u0002\u0a2d",
"\u0a2e\b\u00de\u0001\u0002\u0a2e\u0a31\u0007\u00ac\u0002\u0002\u0a2f",
"\u0a31\u0005\u01be\u00e0\u0002\u0a30\u0a2d\u0003\u0002\u0002\u0002\u0a30",
"\u0a2f\u0003\u0002\u0002\u0002\u0a31\u0a37\u0003\u0002\u0002\u0002\u0a32",
"\u0a33\f\u0003\u0002\u0002\u0a33\u0a34\u0007\u0015\u0002\u0002\u0a34",
"\u0a36\u0005\u01be\u00e0\u0002\u0a35\u0a32\u0003\u0002\u0002\u0002\u0a36",
"\u0a39\u0003\u0002\u0002\u0002\u0a37\u0a35\u0003\u0002\u0002\u0002\u0a37",
"\u0a38\u0003\u0002\u0002\u0002\u0a38\u01bb\u0003\u0002\u0002\u0002\u0a39",
"\u0a37\u0003\u0002\u0002\u0002\u0a3a\u0a40\u0007\u00b0\u0002\u0002\u0a3b",
"\u0a40\u0007\u00b2\u0002\u0002\u0a3c\u0a40\u0007\u00ae\u0002\u0002\u0a3d",
"\u0a40\u0007\u00a4\u0002\u0002\u0a3e\u0a40\u0007\u00a5\u0002\u0002\u0a3f",
"\u0a3a\u0003\u0002\u0002\u0002\u0a3f\u0a3b\u0003\u0002\u0002\u0002\u0a3f",
"\u0a3c\u0003\u0002\u0002\u0002\u0a3f\u0a3d\u0003\u0002\u0002\u0002\u0a3f",
"\u0a3e\u0003\u0002\u0002\u0002\u0a40\u01bd\u0003\u0002\u0002\u0002\u0a41",
"\u0a42\t\r\u0002\u0002\u0a42\u01bf\u0003\u0002\u0002\u0002\u0a43\u0a46",
"\u0005\u01c2\u00e2\u0002\u0a44\u0a46\u0005\u01c4\u00e3\u0002\u0a45\u0a43",
"\u0003\u0002\u0002\u0002\u0a45\u0a44\u0003\u0002\u0002\u0002\u0a46\u01c1",
"\u0003\u0002\u0002\u0002\u0a47\u0a4f\u0005\u01ca\u00e6\u0002\u0a48\u0a4a",
"\u0005\u01cc\u00e7\u0002\u0a49\u0a4b\u0005\u01d8\u00ed\u0002\u0a4a\u0a49",
"\u0003\u0002\u0002\u0002\u0a4a\u0a4b\u0003\u0002\u0002\u0002\u0a4b\u0a4c",
"\u0003\u0002\u0002\u0002\u0a4c\u0a4d\u0005\u01ce\u00e8\u0002\u0a4d\u0a4f",
"\u0003\u0002\u0002\u0002\u0a4e\u0a47\u0003\u0002\u0002\u0002\u0a4e\u0a48",
"\u0003\u0002\u0002\u0002\u0a4f\u01c3\u0003\u0002\u0002\u0002\u0a50\u0a52",
"\u0005\u01c6\u00e4\u0002\u0a51\u0a53\u0005\u01d8\u00ed\u0002\u0a52\u0a51",
"\u0003\u0002\u0002\u0002\u0a52\u0a53\u0003\u0002\u0002\u0002\u0a53\u0a54",
"\u0003\u0002\u0002\u0002\u0a54\u0a55\u0005\u01c8\u00e5\u0002\u0a55\u01c5",
"\u0003\u0002\u0002\u0002\u0a56\u0a57\u0007*\u0002\u0002\u0a57\u0a5a",
"\u0007(\u0002\u0002\u0a58\u0a5a\u0007,\u0002\u0002\u0a59\u0a56\u0003",
"\u0002\u0002\u0002\u0a59\u0a58\u0003\u0002\u0002\u0002\u0a5a\u01c7\u0003",
"\u0002\u0002\u0002\u0a5b\u0a5c\u0007*\u0002\u0002\u0a5c\u0a5d\u0007",
"%\u0002\u0002\u0a5d\u0a5e\u0007(\u0002\u0002\u0a5e\u01c9\u0003\u0002",
"\u0002\u0002\u0a5f\u0a60\u0007*\u0002\u0002\u0a60\u0a61\u0005\u01d0",
"\u00e9\u0002\u0a61\u0a65\u0005\u008eH\u0002\u0a62\u0a64\u0005\u01d4",
"\u00eb\u0002\u0a63\u0a62\u0003\u0002\u0002\u0002\u0a64\u0a67\u0003\u0002",
"\u0002\u0002\u0a65\u0a63\u0003\u0002\u0002\u0002\u0a65\u0a66\u0003\u0002",
"\u0002\u0002\u0a66\u0a68\u0003\u0002\u0002\u0002\u0a67\u0a65\u0003\u0002",
"\u0002\u0002\u0a68\u0a69\u0007%\u0002\u0002\u0a69\u0a6a\u0007(\u0002",
"\u0002\u0a6a\u01cb\u0003\u0002\u0002\u0002\u0a6b\u0a6c\u0007*\u0002",
"\u0002\u0a6c\u0a6d\u0005\u01d0\u00e9\u0002\u0a6d\u0a71\u0005\u008eH",
"\u0002\u0a6e\u0a70\u0005\u01d4\u00eb\u0002\u0a6f\u0a6e\u0003\u0002\u0002",
"\u0002\u0a70\u0a73\u0003\u0002\u0002\u0002\u0a71\u0a6f\u0003\u0002\u0002",
"\u0002\u0a71\u0a72\u0003\u0002\u0002\u0002\u0a72\u0a74\u0003\u0002\u0002",
"\u0002\u0a73\u0a71\u0003\u0002\u0002\u0002\u0a74\u0a75\u0007(\u0002",
"\u0002\u0a75\u01cd\u0003\u0002\u0002\u0002\u0a76\u0a77\u0007*\u0002",
"\u0002\u0a77\u0a78\u0007%\u0002\u0002\u0a78\u0a79\u0005\u01d0\u00e9",
"\u0002\u0a79\u0a7a\u0007(\u0002\u0002\u0a7a\u01cf\u0003\u0002\u0002",
"\u0002\u0a7b\u0a80\u0005\u01d2\u00ea\u0002\u0a7c\u0a7d\u0007\u0015\u0002",
"\u0002\u0a7d\u0a7f\u0005\u01d2\u00ea\u0002\u0a7e\u0a7c\u0003\u0002\u0002",
"\u0002\u0a7f\u0a82\u0003\u0002\u0002\u0002\u0a80\u0a7e\u0003\u0002\u0002",
"\u0002\u0a80\u0a81\u0003\u0002\u0002\u0002\u0a81\u01d1\u0003\u0002\u0002",
"\u0002\u0a82\u0a80\u0003\u0002\u0002\u0002\u0a83\u0a87\u0005\u00c8e",
"\u0002\u0a84\u0a86\u0005\u00caf\u0002\u0a85\u0a84\u0003\u0002\u0002",
"\u0002\u0a86\u0a89\u0003\u0002\u0002\u0002\u0a87\u0a85\u0003\u0002\u0002",
"\u0002\u0a87\u0a88\u0003\u0002\u0002\u0002\u0a88\u01d3\u0003\u0002\u0002",
"\u0002\u0a89\u0a87\u0003\u0002\u0002\u0002\u0a8a\u0a8d\u0005\u01d2\u00ea",
"\u0002\u0a8b\u0a8c\u0007.\u0002\u0002\u0a8c\u0a8e\u0005\u01d6\u00ec",
"\u0002\u0a8d\u0a8b\u0003\u0002\u0002\u0002\u0a8d\u0a8e\u0003\u0002\u0002",
"\u0002\u0a8e\u0a8f\u0003\u0002\u0002\u0002\u0a8f\u0a90\u0005\u008eH",
"\u0002\u0a90\u01d5\u0003\u0002\u0002\u0002\u0a91\u0a97\u0007\u00ae\u0002",
"\u0002\u0a92\u0a93\u0007\u001a\u0002\u0002\u0a93\u0a94\u0005\\/\u0002",
"\u0a94\u0a95\u0007\u001b\u0002\u0002\u0a95\u0a97\u0003\u0002\u0002\u0002",
"\u0a96\u0a91\u0003\u0002\u0002\u0002\u0a96\u0a92\u0003\u0002\u0002\u0002",
"\u0a97\u01d7\u0003\u0002\u0002\u0002\u0a98\u0a9a\u0005\u01da\u00ee\u0002",
"\u0a99\u0a98\u0003\u0002\u0002\u0002\u0a9a\u0a9b\u0003\u0002\u0002\u0002",
"\u0a9b\u0a99\u0003\u0002\u0002\u0002\u0a9b\u0a9c\u0003\u0002\u0002\u0002",
"\u0a9c\u01d9\u0003\u0002\u0002\u0002\u0a9d\u0aa5\u0005\u01dc\u00ef\u0002",
"\u0a9e\u0aa5\u0005\u01c2\u00e2\u0002\u0a9f\u0aa1\u0007\u001a\u0002\u0002",
"\u0aa0\u0aa2\u0005\\/\u0002\u0aa1\u0aa0\u0003\u0002\u0002\u0002\u0aa1",
"\u0aa2\u0003\u0002\u0002\u0002\u0aa2\u0aa3\u0003\u0002\u0002\u0002\u0aa3",
"\u0aa5\u0007\u001b\u0002\u0002\u0aa4\u0a9d\u0003\u0002\u0002\u0002\u0aa4",
"\u0a9e\u0003\u0002\u0002\u0002\u0aa4\u0a9f\u0003\u0002\u0002\u0002\u0aa5",
"\u01db\u0003\u0002\u0002\u0002\u0aa6\u0aa8\n\u000e\u0002\u0002\u0aa7",
"\u0aa6\u0003\u0002\u0002\u0002\u0aa8\u0aa9\u0003\u0002\u0002\u0002\u0aa9",
"\u0aa7\u0003\u0002\u0002\u0002\u0aa9\u0aaa\u0003\u0002\u0002\u0002\u0aaa",
"\u01dd\u0003\u0002\u0002\u0002\u0aab\u0aad\u0007\u001a\u0002\u0002\u0aac",
"\u0aae\u0005\u01e0\u00f1\u0002\u0aad\u0aac\u0003\u0002\u0002\u0002\u0aae",
"\u0aaf\u0003\u0002\u0002\u0002\u0aaf\u0aad\u0003\u0002\u0002\u0002\u0aaf",
"\u0ab0\u0003\u0002\u0002\u0002\u0ab0\u0ab1\u0003\u0002\u0002\u0002\u0ab1",
"\u0ab2\u0007\u001b\u0002\u0002\u0ab2\u01df\u0003\u0002\u0002\u0002\u0ab3",
"\u0ab4\u0005\u01e2\u00f2\u0002\u0ab4\u0ab5\u0007\u0011\u0002\u0002\u0ab5",
"\u0ab6\u0005\u01e4\u00f3\u0002\u0ab6\u0ab7\u0007\u0012\u0002\u0002\u0ab7",
"\u01e1\u0003\u0002\u0002\u0002\u0ab8\u0ab9\b\u00f2\u0001\u0002\u0ab9",
"\u0abd\u0005\u00c8e\u0002\u0aba\u0abb\u0007#\u0002\u0002\u0abb\u0abd",
"\u0005\u00ccg\u0002\u0abc\u0ab8\u0003\u0002\u0002\u0002\u0abc\u0aba",
"\u0003\u0002\u0002\u0002\u0abd\u0ac6\u0003\u0002\u0002\u0002\u0abe\u0ac0",
"\f\u0003\u0002\u0002\u0abf\u0ac1\u0005\u00caf\u0002\u0ac0\u0abf\u0003",
"\u0002\u0002\u0002\u0ac1\u0ac2\u0003\u0002\u0002\u0002\u0ac2\u0ac0\u0003",
"\u0002\u0002\u0002\u0ac2\u0ac3\u0003\u0002\u0002\u0002\u0ac3\u0ac5\u0003",
"\u0002\u0002\u0002\u0ac4\u0abe\u0003\u0002\u0002\u0002\u0ac5\u0ac8\u0003",
"\u0002\u0002\u0002\u0ac6\u0ac4\u0003\u0002\u0002\u0002\u0ac6\u0ac7\u0003",
"\u0002\u0002\u0002\u0ac7\u01e3\u0003\u0002\u0002\u0002\u0ac8\u0ac6\u0003",
"\u0002\u0002\u0002\u0ac9\u0aca\u0007\u001a\u0002\u0002\u0aca\u0acb\u0005",
"\\/\u0002\u0acb\u0acc\u0007\u001b\u0002\u0002\u0acc\u0acf\u0003\u0002",
"\u0002\u0002\u0acd\u0acf\u0005\u01e6\u00f4\u0002\u0ace\u0ac9\u0003\u0002",
"\u0002\u0002\u0ace\u0acd\u0003\u0002\u0002\u0002\u0acf\u01e5\u0003\u0002",
"\u0002\u0002\u0ad0\u0ad2\n\u000f\u0002\u0002\u0ad1\u0ad0\u0003\u0002",
"\u0002\u0002\u0ad2\u0ad3\u0003\u0002\u0002\u0002\u0ad3\u0ad1\u0003\u0002",
"\u0002\u0002\u0ad3\u0ad4\u0003\u0002\u0002\u0002\u0ad4\u01e7\u0003\u0002",
"\u0002\u0002\u00f7\u01ee\u01f5\u0213\u0219\u021e\u0224\u0226\u0229\u0230",
"\u0239\u0252\u0256\u0261\u026a\u0279\u0282\u0289\u0293\u02a9\u02c0\u02cd",
"\u02d8\u02e6\u02ec\u02f7\u0305\u0319\u0324\u0326\u032f\u0333\u033b\u033f",
"\u0346\u034e\u0353\u0357\u0372\u0379\u037e\u0382\u0398\u03a1\u03a5\u03ad",
"\u03b1\u03b6\u03bd\u03c0\u03e1\u03f4\u03fb\u041d\u0426\u043d\u044d\u0452",
"\u045a\u0463\u047a\u0480\u0489\u04a3\u0513\u0515\u051f\u0531\u053a\u054a",
"\u054f\u0559\u055e\u0560\u0566\u0568\u056a\u057e\u0585\u0589\u0594\u0598",
"\u059d\u059f\u05a4\u05b3\u05b7\u05c2\u05c6\u05cb\u05d5\u05d9\u05e1\u05e8",
"\u05ea\u05ef\u05f1\u05fc\u0602\u0612\u061b\u0621\u0626\u062c\u0633\u063b",
"\u0646\u064e\u0656\u065f\u0666\u066e\u0676\u067f\u0687\u0694\u0697\u069b",
"\u06a0\u06a4\u06ad\u06c2\u06cb\u06cd\u06d2\u06e4\u06e9\u06f2\u06f6\u06fd",
"\u0702\u0706\u0712\u0723\u0728\u072b\u072f\u0734\u073b\u0746\u0748\u0751",
"\u0759\u0761\u0769\u0771\u0777\u0783\u0787\u0791\u0799\u079d\u07a3\u07aa",
"\u07af\u07b6\u07be\u07c5\u07cf\u07dc\u07e0\u07e3\u07e7\u07ea\u07f2\u07fb",
"\u0804\u080d\u081e\u082f\u0836\u0841\u0849\u084c\u0850\u0855\u085f\u0863",
"\u086e\u0871\u0878\u0881\u088c\u0899\u08a0\u08b1\u08b9\u08bd\u08c5\u08e9",
"\u08f2\u08fc\u0908\u090d\u0919\u092b\u0932\u093b\u0943\u094d\u0952\u095c",
"\u0966\u0976\u0980\u0987\u098f\u099a\u09a3\u09ab\u09b5\u09ba\u09c6\u09d9",
"\u09e3\u09eb\u09f6\u09ff\u0a07\u0a11\u0a16\u0a22\u0a30\u0a37\u0a3f\u0a45",
"\u0a4a\u0a4e\u0a52\u0a59\u0a65\u0a71\u0a80\u0a87\u0a8d\u0a96\u0a9b\u0aa1",
"\u0aa4\u0aa9\u0aaf\u0abc\u0ac2\u0ac6\u0ace\u0ad3"].join("");
var atn = new antlr4.atn.ATNDeserializer().deserialize(serializedATN);
var decisionsToDFA = atn.decisionToState.map( function(ds, index) { return new antlr4.dfa.DFA(ds, index); });
var sharedContextCache = new antlr4.PredictionContextCache();
var literalNames = [ null, null, null, null, null, null, "'\t'", "' '",
null, "'Java:'", "'C#:'", "'Python2:'", "'Python3:'",
"'JavaScript:'", "'Swift:'", "':'", "';'", null, "'..'",
null, null, null, null, null, null, null, null, "'!'",
"'&'", "'&&'", "'|'", "'||'", null, "'-'", "'*'", "'/'",
"'\\'", "'%'", "'>'", "'>='", "'<'", "'<='", "'<>'",
"'<:>'", "'='", "'!='", "'=='", "'~='", "'~'", "'<-'",
"'->'", "'Boolean'", "'Character'", "'Text'", "'Integer'",
"'Decimal'", "'Date'", "'Time'", "'DateTime'", "'Period'",
"'Version'", "'Method'", "'Code'", "'Document'", "'Blob'",
"'Image'", "'Uuid'", "'Iterator'", "'Cursor'", "'Html'",
"'abstract'", "'all'", "'always'", "'and'", "'any'",
"'as'", null, "'attr'", "'attribute'", "'attributes'",
"'bindings'", "'break'", "'by'", "'case'", "'catch'",
"'category'", "'class'", "'close'", "'contains'", "'def'",
"'default'", "'define'", "'delete'", null, "'do'",
"'doing'", "'each'", "'else'", "'enum'", "'enumerated'",
"'except'", "'execute'", "'expecting'", "'extends'",
"'fetch'", "'filtered'", "'finally'", "'flush'", "'for'",
"'from'", "'getter'", "'has'", "'if'", "'in'", "'index'",
"'invoke'", "'is'", "'matching'", "'method'", "'methods'",
"'modulo'", "'mutable'", "'native'", "'None'", "'not'",
null, "'null'", "'on'", "'one'", "'open'", "'operator'",
"'or'", "'order'", "'otherwise'", "'pass'", "'raise'",
"'read'", "'receiving'", "'resource'", "'return'",
"'returning'", "'rows'", "'self'", "'setter'", "'singleton'",
"'sorted'", "'storable'", "'store'", "'switch'", "'test'",
"'then'", "'this'", "'throw'", "'to'", "'try'", "'verifying'",
"'widget'", "'with'", "'when'", "'where'", "'while'",
"'write'", null, null, "'MIN_INTEGER'", "'MAX_INTEGER'" ];
var symbolicNames = [ null, "INDENT", "DEDENT", "LF_TAB", "LF_MORE", "LF",
"TAB", "WS", "COMMENT", "JAVA", "CSHARP", "PYTHON2",
"PYTHON3", "JAVASCRIPT", "SWIFT", "COLON", "SEMI",
"COMMA", "RANGE", "DOT", "LPAR", "RPAR", "LBRAK",
"RBRAK", "LCURL", "RCURL", "QMARK", "XMARK", "AMP",
"AMP2", "PIPE", "PIPE2", "PLUS", "MINUS", "STAR",
"SLASH", "BSLASH", "PERCENT", "GT", "GTE", "LT", "LTE",
"LTGT", "LTCOLONGT", "EQ", "XEQ", "EQ2", "TEQ", "TILDE",
"LARROW", "RARROW", "BOOLEAN", "CHARACTER", "TEXT",
"INTEGER", "DECIMAL", "DATE", "TIME", "DATETIME",
"PERIOD", "VERSION", "METHOD_T", "CODE", "DOCUMENT",
"BLOB", "IMAGE", "UUID", "ITERATOR", "CURSOR", "HTML",
"ABSTRACT", "ALL", "ALWAYS", "AND", "ANY", "AS", "ASC",
"ATTR", "ATTRIBUTE", "ATTRIBUTES", "BINDINGS", "BREAK",
"BY", "CASE", "CATCH", "CATEGORY", "CLASS", "CLOSE",
"CONTAINS", "DEF", "DEFAULT", "DEFINE", "DELETE",
"DESC", "DO", "DOING", "EACH", "ELSE", "ENUM", "ENUMERATED",
"EXCEPT", "EXECUTE", "EXPECTING", "EXTENDS", "FETCH",
"FILTERED", "FINALLY", "FLUSH", "FOR", "FROM", "GETTER",
"HAS", "IF", "IN", "INDEX", "INVOKE", "IS", "MATCHING",
"METHOD", "METHODS", "MODULO", "MUTABLE", "NATIVE",
"NONE", "NOT", "NOTHING", "NULL", "ON", "ONE", "OPEN",
"OPERATOR", "OR", "ORDER", "OTHERWISE", "PASS", "RAISE",
"READ", "RECEIVING", "RESOURCE", "RETURN", "RETURNING",
"ROWS", "SELF", "SETTER", "SINGLETON", "SORTED", "STORABLE",
"STORE", "SWITCH", "TEST", "THEN", "THIS", "THROW",
"TO", "TRY", "VERIFYING", "WIDGET", "WITH", "WHEN",
"WHERE", "WHILE", "WRITE", "BOOLEAN_LITERAL", "CHAR_LITERAL",
"MIN_INTEGER", "MAX_INTEGER", "SYMBOL_IDENTIFIER",
"TYPE_IDENTIFIER", "VARIABLE_IDENTIFIER", "NATIVE_IDENTIFIER",
"DOLLAR_IDENTIFIER", "ARONDBASE_IDENTIFIER", "TEXT_LITERAL",
"UUID_LITERAL", "INTEGER_LITERAL", "HEXA_LITERAL",
"DECIMAL_LITERAL", "DATETIME_LITERAL", "TIME_LITERAL",
"DATE_LITERAL", "PERIOD_LITERAL", "VERSION_LITERAL" ];
var ruleNames = [ "enum_category_declaration", "enum_native_declaration",
"native_symbol", "category_symbol", "attribute_declaration",
"concrete_widget_declaration", "native_widget_declaration",
"concrete_category_declaration", "singleton_category_declaration",
"derived_list", "operator_method_declaration", "setter_method_declaration",
"native_setter_declaration", "getter_method_declaration",
"native_getter_declaration", "native_category_declaration",
"native_resource_declaration", "native_category_bindings",
"native_category_binding_list", "attribute_list", "abstract_method_declaration",
"concrete_method_declaration", "native_method_declaration",
"test_method_declaration", "assertion", "full_argument_list",
"typed_argument", "statement", "flush_statement", "store_statement",
"method_call_statement", "with_resource_statement", "with_singleton_statement",
"switch_statement", "switch_case_statement", "for_each_statement",
"do_while_statement", "while_statement", "if_statement",
"else_if_statement_list", "raise_statement", "try_statement",
"catch_statement", "break_statement", "return_statement",
"expression", "unresolved_expression", "unresolved_selector",
"invocation_expression", "invocation_trailer", "selectable_expression",
"instance_expression", "instance_selector", "document_expression",
"blob_expression", "constructor_expression", "write_statement",
"ambiguous_expression", "filtered_list_suffix", "fetch_expression",
"fetch_statement", "sorted_expression", "argument_assignment_list",
"with_argument_assignment_list", "argument_assignment",
"assign_instance_statement", "child_instance", "assign_tuple_statement",
"lfs", "lfp", "jsx_ws", "indent", "dedent", "null_literal",
"declaration_list", "declarations", "declaration", "annotation_constructor",
"annotation_identifier", "resource_declaration", "enum_declaration",
"native_symbol_list", "category_symbol_list", "symbol_list",
"attribute_constraint", "list_literal", "set_literal",
"expression_list", "range_literal", "typedef", "primary_type",
"native_type", "category_type", "mutable_category_type",
"code_type", "category_declaration", "widget_declaration",
"type_identifier_list", "method_identifier", "identifier_or_keyword",
"nospace_hyphen_identifier_or_keyword", "nospace_identifier_or_keyword",
"identifier", "variable_identifier", "attribute_identifier",
"type_identifier", "symbol_identifier", "any_identifier",
"argument_list", "argument", "operator_argument", "named_argument",
"code_argument", "category_or_any_type", "any_type",
"member_method_declaration_list", "member_method_declaration",
"native_member_method_declaration_list", "native_member_method_declaration",
"native_category_binding", "python_category_binding",
"python_module", "javascript_category_binding", "javascript_module",
"variable_identifier_list", "attribute_identifier_list",
"method_declaration", "comment_statement", "native_statement_list",
"native_statement", "python_native_statement", "javascript_native_statement",
"statement_list", "assertion_list", "switch_case_statement_list",
"catch_statement_list", "literal_collection", "atomic_literal",
"literal_list_literal", "this_expression", "parenthesis_expression",
"literal_expression", "collection_literal", "tuple_literal",
"dict_literal", "document_literal", "expression_tuple",
"dict_entry_list", "dict_entry", "dict_key", "slice_arguments",
"assign_variable_statement", "assignable_instance", "is_expression",
"read_all_expression", "read_one_expression", "order_by_list",
"order_by", "operator", "keyword", "new_token", "key_token",
"module_token", "value_token", "symbols_token", "assign",
"multiply", "divide", "idivide", "modulo", "javascript_statement",
"javascript_expression", "javascript_primary_expression",
"javascript_this_expression", "javascript_new_expression",
"javascript_selector_expression", "javascript_method_expression",
"javascript_arguments", "javascript_item_expression",
"javascript_parenthesis_expression", "javascript_identifier_expression",
"javascript_literal_expression", "javascript_identifier",
"python_statement", "python_expression", "python_primary_expression",
"python_self_expression", "python_selector_expression",
"python_method_expression", "python_argument_list", "python_ordinal_argument_list",
"python_named_argument_list", "python_parenthesis_expression",
"python_identifier_expression", "python_literal_expression",
"python_identifier", "java_statement", "java_expression",
"java_primary_expression", "java_this_expression", "java_new_expression",
"java_selector_expression", "java_method_expression",
"java_arguments", "java_item_expression", "java_parenthesis_expression",
"java_identifier_expression", "java_class_identifier_expression",
"java_literal_expression", "java_identifier", "csharp_statement",
"csharp_expression", "csharp_primary_expression", "csharp_this_expression",
"csharp_new_expression", "csharp_selector_expression",
"csharp_method_expression", "csharp_arguments", "csharp_item_expression",
"csharp_parenthesis_expression", "csharp_identifier_expression",
"csharp_literal_expression", "csharp_identifier", "jsx_expression",
"jsx_element", "jsx_fragment", "jsx_fragment_start",
"jsx_fragment_end", "jsx_self_closing", "jsx_opening",
"jsx_closing", "jsx_element_name", "jsx_identifier",
"jsx_attribute", "jsx_attribute_value", "jsx_children",
"jsx_child", "jsx_text", "css_expression", "css_field",
"css_identifier", "css_value", "css_text" ];
function EParser (input) {
AbstractParser.call(this, input);
this._interp = new antlr4.atn.ParserATNSimulator(this, atn, decisionsToDFA, sharedContextCache);
this.ruleNames = ruleNames;
this.literalNames = literalNames;
this.symbolicNames = symbolicNames;
return this;
}
EParser.prototype = Object.create(AbstractParser.prototype);
EParser.prototype.constructor = EParser;
Object.defineProperty(EParser.prototype, "atn", {
get : function() {
return atn;
}
});
EParser.EOF = antlr4.Token.EOF;
EParser.INDENT = 1;
EParser.DEDENT = 2;
EParser.LF_TAB = 3;
EParser.LF_MORE = 4;
EParser.LF = 5;
EParser.TAB = 6;
EParser.WS = 7;
EParser.COMMENT = 8;
EParser.JAVA = 9;
EParser.CSHARP = 10;
EParser.PYTHON2 = 11;
EParser.PYTHON3 = 12;
EParser.JAVASCRIPT = 13;
EParser.SWIFT = 14;
EParser.COLON = 15;
EParser.SEMI = 16;
EParser.COMMA = 17;
EParser.RANGE = 18;
EParser.DOT = 19;
EParser.LPAR = 20;
EParser.RPAR = 21;
EParser.LBRAK = 22;
EParser.RBRAK = 23;
EParser.LCURL = 24;
EParser.RCURL = 25;
EParser.QMARK = 26;
EParser.XMARK = 27;
EParser.AMP = 28;
EParser.AMP2 = 29;
EParser.PIPE = 30;
EParser.PIPE2 = 31;
EParser.PLUS = 32;
EParser.MINUS = 33;
EParser.STAR = 34;
EParser.SLASH = 35;
EParser.BSLASH = 36;
EParser.PERCENT = 37;
EParser.GT = 38;
EParser.GTE = 39;
EParser.LT = 40;
EParser.LTE = 41;
EParser.LTGT = 42;
EParser.LTCOLONGT = 43;
EParser.EQ = 44;
EParser.XEQ = 45;
EParser.EQ2 = 46;
EParser.TEQ = 47;
EParser.TILDE = 48;
EParser.LARROW = 49;
EParser.RARROW = 50;
EParser.BOOLEAN = 51;
EParser.CHARACTER = 52;
EParser.TEXT = 53;
EParser.INTEGER = 54;
EParser.DECIMAL = 55;
EParser.DATE = 56;
EParser.TIME = 57;
EParser.DATETIME = 58;
EParser.PERIOD = 59;
EParser.VERSION = 60;
EParser.METHOD_T = 61;
EParser.CODE = 62;
EParser.DOCUMENT = 63;
EParser.BLOB = 64;
EParser.IMAGE = 65;
EParser.UUID = 66;
EParser.ITERATOR = 67;
EParser.CURSOR = 68;
EParser.HTML = 69;
EParser.ABSTRACT = 70;
EParser.ALL = 71;
EParser.ALWAYS = 72;
EParser.AND = 73;
EParser.ANY = 74;
EParser.AS = 75;
EParser.ASC = 76;
EParser.ATTR = 77;
EParser.ATTRIBUTE = 78;
EParser.ATTRIBUTES = 79;
EParser.BINDINGS = 80;
EParser.BREAK = 81;
EParser.BY = 82;
EParser.CASE = 83;
EParser.CATCH = 84;
EParser.CATEGORY = 85;
EParser.CLASS = 86;
EParser.CLOSE = 87;
EParser.CONTAINS = 88;
EParser.DEF = 89;
EParser.DEFAULT = 90;
EParser.DEFINE = 91;
EParser.DELETE = 92;
EParser.DESC = 93;
EParser.DO = 94;
EParser.DOING = 95;
EParser.EACH = 96;
EParser.ELSE = 97;
EParser.ENUM = 98;
EParser.ENUMERATED = 99;
EParser.EXCEPT = 100;
EParser.EXECUTE = 101;
EParser.EXPECTING = 102;
EParser.EXTENDS = 103;
EParser.FETCH = 104;
EParser.FILTERED = 105;
EParser.FINALLY = 106;
EParser.FLUSH = 107;
EParser.FOR = 108;
EParser.FROM = 109;
EParser.GETTER = 110;
EParser.HAS = 111;
EParser.IF = 112;
EParser.IN = 113;
EParser.INDEX = 114;
EParser.INVOKE = 115;
EParser.IS = 116;
EParser.MATCHING = 117;
EParser.METHOD = 118;
EParser.METHODS = 119;
EParser.MODULO = 120;
EParser.MUTABLE = 121;
EParser.NATIVE = 122;
EParser.NONE = 123;
EParser.NOT = 124;
EParser.NOTHING = 125;
EParser.NULL = 126;
EParser.ON = 127;
EParser.ONE = 128;
EParser.OPEN = 129;
EParser.OPERATOR = 130;
EParser.OR = 131;
EParser.ORDER = 132;
EParser.OTHERWISE = 133;
EParser.PASS = 134;
EParser.RAISE = 135;
EParser.READ = 136;
EParser.RECEIVING = 137;
EParser.RESOURCE = 138;
EParser.RETURN = 139;
EParser.RETURNING = 140;
EParser.ROWS = 141;
EParser.SELF = 142;
EParser.SETTER = 143;
EParser.SINGLETON = 144;
EParser.SORTED = 145;
EParser.STORABLE = 146;
EParser.STORE = 147;
EParser.SWITCH = 148;
EParser.TEST = 149;
EParser.THEN = 150;
EParser.THIS = 151;
EParser.THROW = 152;
EParser.TO = 153;
EParser.TRY = 154;
EParser.VERIFYING = 155;
EParser.WIDGET = 156;
EParser.WITH = 157;
EParser.WHEN = 158;
EParser.WHERE = 159;
EParser.WHILE = 160;
EParser.WRITE = 161;
EParser.BOOLEAN_LITERAL = 162;
EParser.CHAR_LITERAL = 163;
EParser.MIN_INTEGER = 164;
EParser.MAX_INTEGER = 165;
EParser.SYMBOL_IDENTIFIER = 166;
EParser.TYPE_IDENTIFIER = 167;
EParser.VARIABLE_IDENTIFIER = 168;
EParser.NATIVE_IDENTIFIER = 169;
EParser.DOLLAR_IDENTIFIER = 170;
EParser.ARONDBASE_IDENTIFIER = 171;
EParser.TEXT_LITERAL = 172;
EParser.UUID_LITERAL = 173;
EParser.INTEGER_LITERAL = 174;
EParser.HEXA_LITERAL = 175;
EParser.DECIMAL_LITERAL = 176;
EParser.DATETIME_LITERAL = 177;
EParser.TIME_LITERAL = 178;
EParser.DATE_LITERAL = 179;
EParser.PERIOD_LITERAL = 180;
EParser.VERSION_LITERAL = 181;
EParser.RULE_enum_category_declaration = 0;
EParser.RULE_enum_native_declaration = 1;
EParser.RULE_native_symbol = 2;
EParser.RULE_category_symbol = 3;
EParser.RULE_attribute_declaration = 4;
EParser.RULE_concrete_widget_declaration = 5;
EParser.RULE_native_widget_declaration = 6;
EParser.RULE_concrete_category_declaration = 7;
EParser.RULE_singleton_category_declaration = 8;
EParser.RULE_derived_list = 9;
EParser.RULE_operator_method_declaration = 10;
EParser.RULE_setter_method_declaration = 11;
EParser.RULE_native_setter_declaration = 12;
EParser.RULE_getter_method_declaration = 13;
EParser.RULE_native_getter_declaration = 14;
EParser.RULE_native_category_declaration = 15;
EParser.RULE_native_resource_declaration = 16;
EParser.RULE_native_category_bindings = 17;
EParser.RULE_native_category_binding_list = 18;
EParser.RULE_attribute_list = 19;
EParser.RULE_abstract_method_declaration = 20;
EParser.RULE_concrete_method_declaration = 21;
EParser.RULE_native_method_declaration = 22;
EParser.RULE_test_method_declaration = 23;
EParser.RULE_assertion = 24;
EParser.RULE_full_argument_list = 25;
EParser.RULE_typed_argument = 26;
EParser.RULE_statement = 27;
EParser.RULE_flush_statement = 28;
EParser.RULE_store_statement = 29;
EParser.RULE_method_call_statement = 30;
EParser.RULE_with_resource_statement = 31;
EParser.RULE_with_singleton_statement = 32;
EParser.RULE_switch_statement = 33;
EParser.RULE_switch_case_statement = 34;
EParser.RULE_for_each_statement = 35;
EParser.RULE_do_while_statement = 36;
EParser.RULE_while_statement = 37;
EParser.RULE_if_statement = 38;
EParser.RULE_else_if_statement_list = 39;
EParser.RULE_raise_statement = 40;
EParser.RULE_try_statement = 41;
EParser.RULE_catch_statement = 42;
EParser.RULE_break_statement = 43;
EParser.RULE_return_statement = 44;
EParser.RULE_expression = 45;
EParser.RULE_unresolved_expression = 46;
EParser.RULE_unresolved_selector = 47;
EParser.RULE_invocation_expression = 48;
EParser.RULE_invocation_trailer = 49;
EParser.RULE_selectable_expression = 50;
EParser.RULE_instance_expression = 51;
EParser.RULE_instance_selector = 52;
EParser.RULE_document_expression = 53;
EParser.RULE_blob_expression = 54;
EParser.RULE_constructor_expression = 55;
EParser.RULE_write_statement = 56;
EParser.RULE_ambiguous_expression = 57;
EParser.RULE_filtered_list_suffix = 58;
EParser.RULE_fetch_expression = 59;
EParser.RULE_fetch_statement = 60;
EParser.RULE_sorted_expression = 61;
EParser.RULE_argument_assignment_list = 62;
EParser.RULE_with_argument_assignment_list = 63;
EParser.RULE_argument_assignment = 64;
EParser.RULE_assign_instance_statement = 65;
EParser.RULE_child_instance = 66;
EParser.RULE_assign_tuple_statement = 67;
EParser.RULE_lfs = 68;
EParser.RULE_lfp = 69;
EParser.RULE_jsx_ws = 70;
EParser.RULE_indent = 71;
EParser.RULE_dedent = 72;
EParser.RULE_null_literal = 73;
EParser.RULE_declaration_list = 74;
EParser.RULE_declarations = 75;
EParser.RULE_declaration = 76;
EParser.RULE_annotation_constructor = 77;
EParser.RULE_annotation_identifier = 78;
EParser.RULE_resource_declaration = 79;
EParser.RULE_enum_declaration = 80;
EParser.RULE_native_symbol_list = 81;
EParser.RULE_category_symbol_list = 82;
EParser.RULE_symbol_list = 83;
EParser.RULE_attribute_constraint = 84;
EParser.RULE_list_literal = 85;
EParser.RULE_set_literal = 86;
EParser.RULE_expression_list = 87;
EParser.RULE_range_literal = 88;
EParser.RULE_typedef = 89;
EParser.RULE_primary_type = 90;
EParser.RULE_native_type = 91;
EParser.RULE_category_type = 92;
EParser.RULE_mutable_category_type = 93;
EParser.RULE_code_type = 94;
EParser.RULE_category_declaration = 95;
EParser.RULE_widget_declaration = 96;
EParser.RULE_type_identifier_list = 97;
EParser.RULE_method_identifier = 98;
EParser.RULE_identifier_or_keyword = 99;
EParser.RULE_nospace_hyphen_identifier_or_keyword = 100;
EParser.RULE_nospace_identifier_or_keyword = 101;
EParser.RULE_identifier = 102;
EParser.RULE_variable_identifier = 103;
EParser.RULE_attribute_identifier = 104;
EParser.RULE_type_identifier = 105;
EParser.RULE_symbol_identifier = 106;
EParser.RULE_any_identifier = 107;
EParser.RULE_argument_list = 108;
EParser.RULE_argument = 109;
EParser.RULE_operator_argument = 110;
EParser.RULE_named_argument = 111;
EParser.RULE_code_argument = 112;
EParser.RULE_category_or_any_type = 113;
EParser.RULE_any_type = 114;
EParser.RULE_member_method_declaration_list = 115;
EParser.RULE_member_method_declaration = 116;
EParser.RULE_native_member_method_declaration_list = 117;
EParser.RULE_native_member_method_declaration = 118;
EParser.RULE_native_category_binding = 119;
EParser.RULE_python_category_binding = 120;
EParser.RULE_python_module = 121;
EParser.RULE_javascript_category_binding = 122;
EParser.RULE_javascript_module = 123;
EParser.RULE_variable_identifier_list = 124;
EParser.RULE_attribute_identifier_list = 125;
EParser.RULE_method_declaration = 126;
EParser.RULE_comment_statement = 127;
EParser.RULE_native_statement_list = 128;
EParser.RULE_native_statement = 129;
EParser.RULE_python_native_statement = 130;
EParser.RULE_javascript_native_statement = 131;
EParser.RULE_statement_list = 132;
EParser.RULE_assertion_list = 133;
EParser.RULE_switch_case_statement_list = 134;
EParser.RULE_catch_statement_list = 135;
EParser.RULE_literal_collection = 136;
EParser.RULE_atomic_literal = 137;
EParser.RULE_literal_list_literal = 138;
EParser.RULE_this_expression = 139;
EParser.RULE_parenthesis_expression = 140;
EParser.RULE_literal_expression = 141;
EParser.RULE_collection_literal = 142;
EParser.RULE_tuple_literal = 143;
EParser.RULE_dict_literal = 144;
EParser.RULE_document_literal = 145;
EParser.RULE_expression_tuple = 146;
EParser.RULE_dict_entry_list = 147;
EParser.RULE_dict_entry = 148;
EParser.RULE_dict_key = 149;
EParser.RULE_slice_arguments = 150;
EParser.RULE_assign_variable_statement = 151;
EParser.RULE_assignable_instance = 152;
EParser.RULE_is_expression = 153;
EParser.RULE_read_all_expression = 154;
EParser.RULE_read_one_expression = 155;
EParser.RULE_order_by_list = 156;
EParser.RULE_order_by = 157;
EParser.RULE_operator = 158;
EParser.RULE_keyword = 159;
EParser.RULE_new_token = 160;
EParser.RULE_key_token = 161;
EParser.RULE_module_token = 162;
EParser.RULE_value_token = 163;
EParser.RULE_symbols_token = 164;
EParser.RULE_assign = 165;
EParser.RULE_multiply = 166;
EParser.RULE_divide = 167;
EParser.RULE_idivide = 168;
EParser.RULE_modulo = 169;
EParser.RULE_javascript_statement = 170;
EParser.RULE_javascript_expression = 171;
EParser.RULE_javascript_primary_expression = 172;
EParser.RULE_javascript_this_expression = 173;
EParser.RULE_javascript_new_expression = 174;
EParser.RULE_javascript_selector_expression = 175;
EParser.RULE_javascript_method_expression = 176;
EParser.RULE_javascript_arguments = 177;
EParser.RULE_javascript_item_expression = 178;
EParser.RULE_javascript_parenthesis_expression = 179;
EParser.RULE_javascript_identifier_expression = 180;
EParser.RULE_javascript_literal_expression = 181;
EParser.RULE_javascript_identifier = 182;
EParser.RULE_python_statement = 183;
EParser.RULE_python_expression = 184;
EParser.RULE_python_primary_expression = 185;
EParser.RULE_python_self_expression = 186;
EParser.RULE_python_selector_expression = 187;
EParser.RULE_python_method_expression = 188;
EParser.RULE_python_argument_list = 189;
EParser.RULE_python_ordinal_argument_list = 190;
EParser.RULE_python_named_argument_list = 191;
EParser.RULE_python_parenthesis_expression = 192;
EParser.RULE_python_identifier_expression = 193;
EParser.RULE_python_literal_expression = 194;
EParser.RULE_python_identifier = 195;
EParser.RULE_java_statement = 196;
EParser.RULE_java_expression = 197;
EParser.RULE_java_primary_expression = 198;
EParser.RULE_java_this_expression = 199;
EParser.RULE_java_new_expression = 200;
EParser.RULE_java_selector_expression = 201;
EParser.RULE_java_method_expression = 202;
EParser.RULE_java_arguments = 203;
EParser.RULE_java_item_expression = 204;
EParser.RULE_java_parenthesis_expression = 205;
EParser.RULE_java_identifier_expression = 206;
EParser.RULE_java_class_identifier_expression = 207;
EParser.RULE_java_literal_expression = 208;
EParser.RULE_java_identifier = 209;
EParser.RULE_csharp_statement = 210;
EParser.RULE_csharp_expression = 211;
EParser.RULE_csharp_primary_expression = 212;
EParser.RULE_csharp_this_expression = 213;
EParser.RULE_csharp_new_expression = 214;
EParser.RULE_csharp_selector_expression = 215;
EParser.RULE_csharp_method_expression = 216;
EParser.RULE_csharp_arguments = 217;
EParser.RULE_csharp_item_expression = 218;
EParser.RULE_csharp_parenthesis_expression = 219;
EParser.RULE_csharp_identifier_expression = 220;
EParser.RULE_csharp_literal_expression = 221;
EParser.RULE_csharp_identifier = 222;
EParser.RULE_jsx_expression = 223;
EParser.RULE_jsx_element = 224;
EParser.RULE_jsx_fragment = 225;
EParser.RULE_jsx_fragment_start = 226;
EParser.RULE_jsx_fragment_end = 227;
EParser.RULE_jsx_self_closing = 228;
EParser.RULE_jsx_opening = 229;
EParser.RULE_jsx_closing = 230;
EParser.RULE_jsx_element_name = 231;
EParser.RULE_jsx_identifier = 232;
EParser.RULE_jsx_attribute = 233;
EParser.RULE_jsx_attribute_value = 234;
EParser.RULE_jsx_children = 235;
EParser.RULE_jsx_child = 236;
EParser.RULE_jsx_text = 237;
EParser.RULE_css_expression = 238;
EParser.RULE_css_field = 239;
EParser.RULE_css_identifier = 240;
EParser.RULE_css_value = 241;
EParser.RULE_css_text = 242;
function Enum_category_declarationContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_enum_category_declaration;
this.name = null; // Type_identifierContext
this.derived = null; // Type_identifierContext
this.attrs = null; // Attribute_listContext
this.symbols = null; // Category_symbol_listContext
return this;
}
Enum_category_declarationContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Enum_category_declarationContext.prototype.constructor = Enum_category_declarationContext;
Enum_category_declarationContext.prototype.DEFINE = function() {
return this.getToken(EParser.DEFINE, 0);
};
Enum_category_declarationContext.prototype.AS = function() {
return this.getToken(EParser.AS, 0);
};
Enum_category_declarationContext.prototype.ENUMERATED = function() {
return this.getToken(EParser.ENUMERATED, 0);
};
Enum_category_declarationContext.prototype.symbols_token = function() {
return this.getTypedRuleContext(Symbols_tokenContext,0);
};
Enum_category_declarationContext.prototype.COLON = function() {
return this.getToken(EParser.COLON, 0);
};
Enum_category_declarationContext.prototype.indent = function() {
return this.getTypedRuleContext(IndentContext,0);
};
Enum_category_declarationContext.prototype.dedent = function() {
return this.getTypedRuleContext(DedentContext,0);
};
Enum_category_declarationContext.prototype.type_identifier = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(Type_identifierContext);
} else {
return this.getTypedRuleContext(Type_identifierContext,i);
}
};
Enum_category_declarationContext.prototype.category_symbol_list = function() {
return this.getTypedRuleContext(Category_symbol_listContext,0);
};
Enum_category_declarationContext.prototype.CATEGORY = function() {
return this.getToken(EParser.CATEGORY, 0);
};
Enum_category_declarationContext.prototype.WITH = function() {
return this.getToken(EParser.WITH, 0);
};
Enum_category_declarationContext.prototype.COMMA = function() {
return this.getToken(EParser.COMMA, 0);
};
Enum_category_declarationContext.prototype.AND = function() {
return this.getToken(EParser.AND, 0);
};
Enum_category_declarationContext.prototype.attribute_list = function() {
return this.getTypedRuleContext(Attribute_listContext,0);
};
Enum_category_declarationContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterEnum_category_declaration(this);
}
};
Enum_category_declarationContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitEnum_category_declaration(this);
}
};
EParser.Enum_category_declarationContext = Enum_category_declarationContext;
EParser.prototype.enum_category_declaration = function() {
var localctx = new Enum_category_declarationContext(this, this._ctx, this.state);
this.enterRule(localctx, 0, EParser.RULE_enum_category_declaration);
try {
this.enterOuterAlt(localctx, 1);
this.state = 486;
this.match(EParser.DEFINE);
this.state = 487;
localctx.name = this.type_identifier();
this.state = 488;
this.match(EParser.AS);
this.state = 489;
this.match(EParser.ENUMERATED);
this.state = 492;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case EParser.CATEGORY:
this.state = 490;
this.match(EParser.CATEGORY);
break;
case EParser.TYPE_IDENTIFIER:
this.state = 491;
localctx.derived = this.type_identifier();
break;
default:
throw new antlr4.error.NoViableAltException(this);
}
this.state = 499;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,1,this._ctx);
switch(la_) {
case 1:
this.state = 494;
localctx.attrs = this.attribute_list();
this.state = 495;
this.match(EParser.COMMA);
this.state = 496;
this.match(EParser.AND);
break;
case 2:
this.state = 498;
this.match(EParser.WITH);
break;
}
this.state = 501;
this.symbols_token();
this.state = 502;
this.match(EParser.COLON);
this.state = 503;
this.indent();
this.state = 504;
localctx.symbols = this.category_symbol_list();
this.state = 505;
this.dedent();
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Enum_native_declarationContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_enum_native_declaration;
this.name = null; // Type_identifierContext
this.typ = null; // Native_typeContext
this.symbols = null; // Native_symbol_listContext
return this;
}
Enum_native_declarationContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Enum_native_declarationContext.prototype.constructor = Enum_native_declarationContext;
Enum_native_declarationContext.prototype.DEFINE = function() {
return this.getToken(EParser.DEFINE, 0);
};
Enum_native_declarationContext.prototype.AS = function() {
return this.getToken(EParser.AS, 0);
};
Enum_native_declarationContext.prototype.ENUMERATED = function() {
return this.getToken(EParser.ENUMERATED, 0);
};
Enum_native_declarationContext.prototype.WITH = function() {
return this.getToken(EParser.WITH, 0);
};
Enum_native_declarationContext.prototype.symbols_token = function() {
return this.getTypedRuleContext(Symbols_tokenContext,0);
};
Enum_native_declarationContext.prototype.COLON = function() {
return this.getToken(EParser.COLON, 0);
};
Enum_native_declarationContext.prototype.indent = function() {
return this.getTypedRuleContext(IndentContext,0);
};
Enum_native_declarationContext.prototype.dedent = function() {
return this.getTypedRuleContext(DedentContext,0);
};
Enum_native_declarationContext.prototype.type_identifier = function() {
return this.getTypedRuleContext(Type_identifierContext,0);
};
Enum_native_declarationContext.prototype.native_type = function() {
return this.getTypedRuleContext(Native_typeContext,0);
};
Enum_native_declarationContext.prototype.native_symbol_list = function() {
return this.getTypedRuleContext(Native_symbol_listContext,0);
};
Enum_native_declarationContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterEnum_native_declaration(this);
}
};
Enum_native_declarationContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitEnum_native_declaration(this);
}
};
EParser.Enum_native_declarationContext = Enum_native_declarationContext;
EParser.prototype.enum_native_declaration = function() {
var localctx = new Enum_native_declarationContext(this, this._ctx, this.state);
this.enterRule(localctx, 2, EParser.RULE_enum_native_declaration);
try {
this.enterOuterAlt(localctx, 1);
this.state = 507;
this.match(EParser.DEFINE);
this.state = 508;
localctx.name = this.type_identifier();
this.state = 509;
this.match(EParser.AS);
this.state = 510;
this.match(EParser.ENUMERATED);
this.state = 511;
localctx.typ = this.native_type();
this.state = 512;
this.match(EParser.WITH);
this.state = 513;
this.symbols_token();
this.state = 514;
this.match(EParser.COLON);
this.state = 515;
this.indent();
this.state = 516;
localctx.symbols = this.native_symbol_list();
this.state = 517;
this.dedent();
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Native_symbolContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_native_symbol;
this.name = null; // Symbol_identifierContext
this.exp = null; // ExpressionContext
return this;
}
Native_symbolContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Native_symbolContext.prototype.constructor = Native_symbolContext;
Native_symbolContext.prototype.WITH = function() {
return this.getToken(EParser.WITH, 0);
};
Native_symbolContext.prototype.AS = function() {
return this.getToken(EParser.AS, 0);
};
Native_symbolContext.prototype.value_token = function() {
return this.getTypedRuleContext(Value_tokenContext,0);
};
Native_symbolContext.prototype.symbol_identifier = function() {
return this.getTypedRuleContext(Symbol_identifierContext,0);
};
Native_symbolContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
Native_symbolContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterNative_symbol(this);
}
};
Native_symbolContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitNative_symbol(this);
}
};
EParser.Native_symbolContext = Native_symbolContext;
EParser.prototype.native_symbol = function() {
var localctx = new Native_symbolContext(this, this._ctx, this.state);
this.enterRule(localctx, 4, EParser.RULE_native_symbol);
try {
this.enterOuterAlt(localctx, 1);
this.state = 519;
localctx.name = this.symbol_identifier();
this.state = 520;
this.match(EParser.WITH);
this.state = 521;
localctx.exp = this.expression(0);
this.state = 522;
this.match(EParser.AS);
this.state = 523;
this.value_token();
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Category_symbolContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_category_symbol;
this.name = null; // Symbol_identifierContext
this.args = null; // With_argument_assignment_listContext
this.arg = null; // Argument_assignmentContext
return this;
}
Category_symbolContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Category_symbolContext.prototype.constructor = Category_symbolContext;
Category_symbolContext.prototype.symbol_identifier = function() {
return this.getTypedRuleContext(Symbol_identifierContext,0);
};
Category_symbolContext.prototype.with_argument_assignment_list = function() {
return this.getTypedRuleContext(With_argument_assignment_listContext,0);
};
Category_symbolContext.prototype.AND = function() {
return this.getToken(EParser.AND, 0);
};
Category_symbolContext.prototype.argument_assignment = function() {
return this.getTypedRuleContext(Argument_assignmentContext,0);
};
Category_symbolContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterCategory_symbol(this);
}
};
Category_symbolContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitCategory_symbol(this);
}
};
EParser.Category_symbolContext = Category_symbolContext;
EParser.prototype.category_symbol = function() {
var localctx = new Category_symbolContext(this, this._ctx, this.state);
this.enterRule(localctx, 6, EParser.RULE_category_symbol);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 525;
localctx.name = this.symbol_identifier();
this.state = 526;
localctx.args = this.with_argument_assignment_list(0);
this.state = 529;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.AND) {
this.state = 527;
this.match(EParser.AND);
this.state = 528;
localctx.arg = this.argument_assignment();
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Attribute_declarationContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_attribute_declaration;
this.name = null; // Attribute_identifierContext
this.typ = null; // TypedefContext
this.match = null; // Attribute_constraintContext
this.indices = null; // Variable_identifier_listContext
this.index = null; // Variable_identifierContext
return this;
}
Attribute_declarationContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Attribute_declarationContext.prototype.constructor = Attribute_declarationContext;
Attribute_declarationContext.prototype.DEFINE = function() {
return this.getToken(EParser.DEFINE, 0);
};
Attribute_declarationContext.prototype.AS = function() {
return this.getToken(EParser.AS, 0);
};
Attribute_declarationContext.prototype.ATTRIBUTE = function() {
return this.getToken(EParser.ATTRIBUTE, 0);
};
Attribute_declarationContext.prototype.attribute_identifier = function() {
return this.getTypedRuleContext(Attribute_identifierContext,0);
};
Attribute_declarationContext.prototype.typedef = function() {
return this.getTypedRuleContext(TypedefContext,0);
};
Attribute_declarationContext.prototype.STORABLE = function() {
return this.getToken(EParser.STORABLE, 0);
};
Attribute_declarationContext.prototype.WITH = function() {
return this.getToken(EParser.WITH, 0);
};
Attribute_declarationContext.prototype.INDEX = function() {
return this.getToken(EParser.INDEX, 0);
};
Attribute_declarationContext.prototype.attribute_constraint = function() {
return this.getTypedRuleContext(Attribute_constraintContext,0);
};
Attribute_declarationContext.prototype.variable_identifier_list = function() {
return this.getTypedRuleContext(Variable_identifier_listContext,0);
};
Attribute_declarationContext.prototype.AND = function() {
return this.getToken(EParser.AND, 0);
};
Attribute_declarationContext.prototype.variable_identifier = function() {
return this.getTypedRuleContext(Variable_identifierContext,0);
};
Attribute_declarationContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterAttribute_declaration(this);
}
};
Attribute_declarationContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitAttribute_declaration(this);
}
};
EParser.Attribute_declarationContext = Attribute_declarationContext;
EParser.prototype.attribute_declaration = function() {
var localctx = new Attribute_declarationContext(this, this._ctx, this.state);
this.enterRule(localctx, 8, EParser.RULE_attribute_declaration);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 531;
this.match(EParser.DEFINE);
this.state = 532;
localctx.name = this.attribute_identifier();
this.state = 533;
this.match(EParser.AS);
this.state = 535;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.STORABLE) {
this.state = 534;
this.match(EParser.STORABLE);
}
this.state = 537;
localctx.typ = this.typedef(0);
this.state = 538;
this.match(EParser.ATTRIBUTE);
this.state = 540;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.IN || _la===EParser.MATCHING) {
this.state = 539;
localctx.match = this.attribute_constraint();
}
this.state = 551;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.WITH) {
this.state = 542;
this.match(EParser.WITH);
this.state = 548;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.VARIABLE_IDENTIFIER) {
this.state = 543;
localctx.indices = this.variable_identifier_list();
this.state = 546;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.AND) {
this.state = 544;
this.match(EParser.AND);
this.state = 545;
localctx.index = this.variable_identifier();
}
}
this.state = 550;
this.match(EParser.INDEX);
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Concrete_widget_declarationContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_concrete_widget_declaration;
this.name = null; // Type_identifierContext
this.derived = null; // Type_identifierContext
this.methods = null; // Member_method_declaration_listContext
return this;
}
Concrete_widget_declarationContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Concrete_widget_declarationContext.prototype.constructor = Concrete_widget_declarationContext;
Concrete_widget_declarationContext.prototype.DEFINE = function() {
return this.getToken(EParser.DEFINE, 0);
};
Concrete_widget_declarationContext.prototype.AS = function() {
return this.getToken(EParser.AS, 0);
};
Concrete_widget_declarationContext.prototype.type_identifier = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(Type_identifierContext);
} else {
return this.getTypedRuleContext(Type_identifierContext,i);
}
};
Concrete_widget_declarationContext.prototype.WIDGET = function() {
return this.getToken(EParser.WIDGET, 0);
};
Concrete_widget_declarationContext.prototype.WITH = function() {
return this.getToken(EParser.WITH, 0);
};
Concrete_widget_declarationContext.prototype.METHODS = function() {
return this.getToken(EParser.METHODS, 0);
};
Concrete_widget_declarationContext.prototype.COLON = function() {
return this.getToken(EParser.COLON, 0);
};
Concrete_widget_declarationContext.prototype.indent = function() {
return this.getTypedRuleContext(IndentContext,0);
};
Concrete_widget_declarationContext.prototype.dedent = function() {
return this.getTypedRuleContext(DedentContext,0);
};
Concrete_widget_declarationContext.prototype.member_method_declaration_list = function() {
return this.getTypedRuleContext(Member_method_declaration_listContext,0);
};
Concrete_widget_declarationContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterConcrete_widget_declaration(this);
}
};
Concrete_widget_declarationContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitConcrete_widget_declaration(this);
}
};
EParser.Concrete_widget_declarationContext = Concrete_widget_declarationContext;
EParser.prototype.concrete_widget_declaration = function() {
var localctx = new Concrete_widget_declarationContext(this, this._ctx, this.state);
this.enterRule(localctx, 10, EParser.RULE_concrete_widget_declaration);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 553;
this.match(EParser.DEFINE);
this.state = 554;
localctx.name = this.type_identifier();
this.state = 555;
this.match(EParser.AS);
this.state = 558;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case EParser.WIDGET:
this.state = 556;
this.match(EParser.WIDGET);
break;
case EParser.TYPE_IDENTIFIER:
this.state = 557;
localctx.derived = this.type_identifier();
break;
default:
throw new antlr4.error.NoViableAltException(this);
}
this.state = 567;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.WITH) {
this.state = 560;
this.match(EParser.WITH);
this.state = 561;
this.match(EParser.METHODS);
this.state = 562;
this.match(EParser.COLON);
this.state = 563;
this.indent();
this.state = 564;
localctx.methods = this.member_method_declaration_list();
this.state = 565;
this.dedent();
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Native_widget_declarationContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_native_widget_declaration;
this.name = null; // Type_identifierContext
this.bindings = null; // Native_category_bindingsContext
this.methods = null; // Native_member_method_declaration_listContext
return this;
}
Native_widget_declarationContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Native_widget_declarationContext.prototype.constructor = Native_widget_declarationContext;
Native_widget_declarationContext.prototype.DEFINE = function() {
return this.getToken(EParser.DEFINE, 0);
};
Native_widget_declarationContext.prototype.AS = function() {
return this.getToken(EParser.AS, 0);
};
Native_widget_declarationContext.prototype.NATIVE = function() {
return this.getToken(EParser.NATIVE, 0);
};
Native_widget_declarationContext.prototype.WIDGET = function() {
return this.getToken(EParser.WIDGET, 0);
};
Native_widget_declarationContext.prototype.WITH = function() {
return this.getToken(EParser.WITH, 0);
};
Native_widget_declarationContext.prototype.BINDINGS = function() {
return this.getToken(EParser.BINDINGS, 0);
};
Native_widget_declarationContext.prototype.COLON = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(EParser.COLON);
} else {
return this.getToken(EParser.COLON, i);
}
};
Native_widget_declarationContext.prototype.indent = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(IndentContext);
} else {
return this.getTypedRuleContext(IndentContext,i);
}
};
Native_widget_declarationContext.prototype.dedent = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(DedentContext);
} else {
return this.getTypedRuleContext(DedentContext,i);
}
};
Native_widget_declarationContext.prototype.lfp = function() {
return this.getTypedRuleContext(LfpContext,0);
};
Native_widget_declarationContext.prototype.AND = function() {
return this.getToken(EParser.AND, 0);
};
Native_widget_declarationContext.prototype.METHODS = function() {
return this.getToken(EParser.METHODS, 0);
};
Native_widget_declarationContext.prototype.type_identifier = function() {
return this.getTypedRuleContext(Type_identifierContext,0);
};
Native_widget_declarationContext.prototype.native_category_bindings = function() {
return this.getTypedRuleContext(Native_category_bindingsContext,0);
};
Native_widget_declarationContext.prototype.native_member_method_declaration_list = function() {
return this.getTypedRuleContext(Native_member_method_declaration_listContext,0);
};
Native_widget_declarationContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterNative_widget_declaration(this);
}
};
Native_widget_declarationContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitNative_widget_declaration(this);
}
};
EParser.Native_widget_declarationContext = Native_widget_declarationContext;
EParser.prototype.native_widget_declaration = function() {
var localctx = new Native_widget_declarationContext(this, this._ctx, this.state);
this.enterRule(localctx, 12, EParser.RULE_native_widget_declaration);
try {
this.enterOuterAlt(localctx, 1);
this.state = 569;
this.match(EParser.DEFINE);
this.state = 570;
localctx.name = this.type_identifier();
this.state = 571;
this.match(EParser.AS);
this.state = 572;
this.match(EParser.NATIVE);
this.state = 573;
this.match(EParser.WIDGET);
this.state = 574;
this.match(EParser.WITH);
this.state = 575;
this.match(EParser.BINDINGS);
this.state = 576;
this.match(EParser.COLON);
this.state = 577;
this.indent();
this.state = 578;
localctx.bindings = this.native_category_bindings();
this.state = 579;
this.dedent();
this.state = 580;
this.lfp();
this.state = 581;
this.match(EParser.AND);
this.state = 582;
this.match(EParser.METHODS);
this.state = 583;
this.match(EParser.COLON);
this.state = 584;
this.indent();
this.state = 585;
localctx.methods = this.native_member_method_declaration_list();
this.state = 586;
this.dedent();
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Concrete_category_declarationContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_concrete_category_declaration;
this.name = null; // Type_identifierContext
this.derived = null; // Derived_listContext
this.attrs = null; // Attribute_listContext
this.methods = null; // Member_method_declaration_listContext
return this;
}
Concrete_category_declarationContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Concrete_category_declarationContext.prototype.constructor = Concrete_category_declarationContext;
Concrete_category_declarationContext.prototype.DEFINE = function() {
return this.getToken(EParser.DEFINE, 0);
};
Concrete_category_declarationContext.prototype.AS = function() {
return this.getToken(EParser.AS, 0);
};
Concrete_category_declarationContext.prototype.type_identifier = function() {
return this.getTypedRuleContext(Type_identifierContext,0);
};
Concrete_category_declarationContext.prototype.CATEGORY = function() {
return this.getToken(EParser.CATEGORY, 0);
};
Concrete_category_declarationContext.prototype.STORABLE = function() {
return this.getToken(EParser.STORABLE, 0);
};
Concrete_category_declarationContext.prototype.derived_list = function() {
return this.getTypedRuleContext(Derived_listContext,0);
};
Concrete_category_declarationContext.prototype.WITH = function() {
return this.getToken(EParser.WITH, 0);
};
Concrete_category_declarationContext.prototype.METHODS = function() {
return this.getToken(EParser.METHODS, 0);
};
Concrete_category_declarationContext.prototype.COLON = function() {
return this.getToken(EParser.COLON, 0);
};
Concrete_category_declarationContext.prototype.indent = function() {
return this.getTypedRuleContext(IndentContext,0);
};
Concrete_category_declarationContext.prototype.dedent = function() {
return this.getTypedRuleContext(DedentContext,0);
};
Concrete_category_declarationContext.prototype.attribute_list = function() {
return this.getTypedRuleContext(Attribute_listContext,0);
};
Concrete_category_declarationContext.prototype.member_method_declaration_list = function() {
return this.getTypedRuleContext(Member_method_declaration_listContext,0);
};
Concrete_category_declarationContext.prototype.COMMA = function() {
return this.getToken(EParser.COMMA, 0);
};
Concrete_category_declarationContext.prototype.AND = function() {
return this.getToken(EParser.AND, 0);
};
Concrete_category_declarationContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterConcrete_category_declaration(this);
}
};
Concrete_category_declarationContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitConcrete_category_declaration(this);
}
};
EParser.Concrete_category_declarationContext = Concrete_category_declarationContext;
EParser.prototype.concrete_category_declaration = function() {
var localctx = new Concrete_category_declarationContext(this, this._ctx, this.state);
this.enterRule(localctx, 14, EParser.RULE_concrete_category_declaration);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 588;
this.match(EParser.DEFINE);
this.state = 589;
localctx.name = this.type_identifier();
this.state = 590;
this.match(EParser.AS);
this.state = 592;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.STORABLE) {
this.state = 591;
this.match(EParser.STORABLE);
}
this.state = 596;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case EParser.CATEGORY:
this.state = 594;
this.match(EParser.CATEGORY);
break;
case EParser.TYPE_IDENTIFIER:
this.state = 595;
localctx.derived = this.derived_list();
break;
default:
throw new antlr4.error.NoViableAltException(this);
}
this.state = 616;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,13,this._ctx);
if(la_===1) {
this.state = 598;
localctx.attrs = this.attribute_list();
this.state = 607;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.COMMA) {
this.state = 599;
this.match(EParser.COMMA);
this.state = 600;
this.match(EParser.AND);
this.state = 601;
this.match(EParser.METHODS);
this.state = 602;
this.match(EParser.COLON);
this.state = 603;
this.indent();
this.state = 604;
localctx.methods = this.member_method_declaration_list();
this.state = 605;
this.dedent();
}
} else if(la_===2) {
this.state = 609;
this.match(EParser.WITH);
this.state = 610;
this.match(EParser.METHODS);
this.state = 611;
this.match(EParser.COLON);
this.state = 612;
this.indent();
this.state = 613;
localctx.methods = this.member_method_declaration_list();
this.state = 614;
this.dedent();
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Singleton_category_declarationContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_singleton_category_declaration;
this.name = null; // Type_identifierContext
this.attrs = null; // Attribute_listContext
this.methods = null; // Member_method_declaration_listContext
return this;
}
Singleton_category_declarationContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Singleton_category_declarationContext.prototype.constructor = Singleton_category_declarationContext;
Singleton_category_declarationContext.prototype.DEFINE = function() {
return this.getToken(EParser.DEFINE, 0);
};
Singleton_category_declarationContext.prototype.AS = function() {
return this.getToken(EParser.AS, 0);
};
Singleton_category_declarationContext.prototype.SINGLETON = function() {
return this.getToken(EParser.SINGLETON, 0);
};
Singleton_category_declarationContext.prototype.type_identifier = function() {
return this.getTypedRuleContext(Type_identifierContext,0);
};
Singleton_category_declarationContext.prototype.WITH = function() {
return this.getToken(EParser.WITH, 0);
};
Singleton_category_declarationContext.prototype.METHODS = function() {
return this.getToken(EParser.METHODS, 0);
};
Singleton_category_declarationContext.prototype.COLON = function() {
return this.getToken(EParser.COLON, 0);
};
Singleton_category_declarationContext.prototype.indent = function() {
return this.getTypedRuleContext(IndentContext,0);
};
Singleton_category_declarationContext.prototype.dedent = function() {
return this.getTypedRuleContext(DedentContext,0);
};
Singleton_category_declarationContext.prototype.attribute_list = function() {
return this.getTypedRuleContext(Attribute_listContext,0);
};
Singleton_category_declarationContext.prototype.member_method_declaration_list = function() {
return this.getTypedRuleContext(Member_method_declaration_listContext,0);
};
Singleton_category_declarationContext.prototype.COMMA = function() {
return this.getToken(EParser.COMMA, 0);
};
Singleton_category_declarationContext.prototype.AND = function() {
return this.getToken(EParser.AND, 0);
};
Singleton_category_declarationContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterSingleton_category_declaration(this);
}
};
Singleton_category_declarationContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitSingleton_category_declaration(this);
}
};
EParser.Singleton_category_declarationContext = Singleton_category_declarationContext;
EParser.prototype.singleton_category_declaration = function() {
var localctx = new Singleton_category_declarationContext(this, this._ctx, this.state);
this.enterRule(localctx, 16, EParser.RULE_singleton_category_declaration);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 618;
this.match(EParser.DEFINE);
this.state = 619;
localctx.name = this.type_identifier();
this.state = 620;
this.match(EParser.AS);
this.state = 621;
this.match(EParser.SINGLETON);
this.state = 640;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,15,this._ctx);
if(la_===1) {
this.state = 622;
localctx.attrs = this.attribute_list();
this.state = 631;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.COMMA) {
this.state = 623;
this.match(EParser.COMMA);
this.state = 624;
this.match(EParser.AND);
this.state = 625;
this.match(EParser.METHODS);
this.state = 626;
this.match(EParser.COLON);
this.state = 627;
this.indent();
this.state = 628;
localctx.methods = this.member_method_declaration_list();
this.state = 629;
this.dedent();
}
} else if(la_===2) {
this.state = 633;
this.match(EParser.WITH);
this.state = 634;
this.match(EParser.METHODS);
this.state = 635;
this.match(EParser.COLON);
this.state = 636;
this.indent();
this.state = 637;
localctx.methods = this.member_method_declaration_list();
this.state = 638;
this.dedent();
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Derived_listContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_derived_list;
return this;
}
Derived_listContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Derived_listContext.prototype.constructor = Derived_listContext;
Derived_listContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function DerivedListItemContext(parser, ctx) {
Derived_listContext.call(this, parser);
this.items = null; // Type_identifier_listContext;
this.item = null; // Type_identifierContext;
Derived_listContext.prototype.copyFrom.call(this, ctx);
return this;
}
DerivedListItemContext.prototype = Object.create(Derived_listContext.prototype);
DerivedListItemContext.prototype.constructor = DerivedListItemContext;
EParser.DerivedListItemContext = DerivedListItemContext;
DerivedListItemContext.prototype.AND = function() {
return this.getToken(EParser.AND, 0);
};
DerivedListItemContext.prototype.type_identifier_list = function() {
return this.getTypedRuleContext(Type_identifier_listContext,0);
};
DerivedListItemContext.prototype.type_identifier = function() {
return this.getTypedRuleContext(Type_identifierContext,0);
};
DerivedListItemContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterDerivedListItem(this);
}
};
DerivedListItemContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitDerivedListItem(this);
}
};
function DerivedListContext(parser, ctx) {
Derived_listContext.call(this, parser);
this.items = null; // Type_identifier_listContext;
Derived_listContext.prototype.copyFrom.call(this, ctx);
return this;
}
DerivedListContext.prototype = Object.create(Derived_listContext.prototype);
DerivedListContext.prototype.constructor = DerivedListContext;
EParser.DerivedListContext = DerivedListContext;
DerivedListContext.prototype.type_identifier_list = function() {
return this.getTypedRuleContext(Type_identifier_listContext,0);
};
DerivedListContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterDerivedList(this);
}
};
DerivedListContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitDerivedList(this);
}
};
EParser.Derived_listContext = Derived_listContext;
EParser.prototype.derived_list = function() {
var localctx = new Derived_listContext(this, this._ctx, this.state);
this.enterRule(localctx, 18, EParser.RULE_derived_list);
try {
this.state = 647;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,16,this._ctx);
switch(la_) {
case 1:
localctx = new DerivedListContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 642;
localctx.items = this.type_identifier_list();
break;
case 2:
localctx = new DerivedListItemContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 643;
localctx.items = this.type_identifier_list();
this.state = 644;
this.match(EParser.AND);
this.state = 645;
localctx.item = this.type_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 Operator_method_declarationContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_operator_method_declaration;
this.op = null; // OperatorContext
this.arg = null; // Operator_argumentContext
this.typ = null; // TypedefContext
this.stmts = null; // Statement_listContext
return this;
}
Operator_method_declarationContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Operator_method_declarationContext.prototype.constructor = Operator_method_declarationContext;
Operator_method_declarationContext.prototype.DEFINE = function() {
return this.getToken(EParser.DEFINE, 0);
};
Operator_method_declarationContext.prototype.AS = function() {
return this.getToken(EParser.AS, 0);
};
Operator_method_declarationContext.prototype.OPERATOR = function() {
return this.getToken(EParser.OPERATOR, 0);
};
Operator_method_declarationContext.prototype.RECEIVING = function() {
return this.getToken(EParser.RECEIVING, 0);
};
Operator_method_declarationContext.prototype.DOING = function() {
return this.getToken(EParser.DOING, 0);
};
Operator_method_declarationContext.prototype.COLON = function() {
return this.getToken(EParser.COLON, 0);
};
Operator_method_declarationContext.prototype.indent = function() {
return this.getTypedRuleContext(IndentContext,0);
};
Operator_method_declarationContext.prototype.dedent = function() {
return this.getTypedRuleContext(DedentContext,0);
};
Operator_method_declarationContext.prototype.operator = function() {
return this.getTypedRuleContext(OperatorContext,0);
};
Operator_method_declarationContext.prototype.operator_argument = function() {
return this.getTypedRuleContext(Operator_argumentContext,0);
};
Operator_method_declarationContext.prototype.statement_list = function() {
return this.getTypedRuleContext(Statement_listContext,0);
};
Operator_method_declarationContext.prototype.RETURNING = function() {
return this.getToken(EParser.RETURNING, 0);
};
Operator_method_declarationContext.prototype.typedef = function() {
return this.getTypedRuleContext(TypedefContext,0);
};
Operator_method_declarationContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterOperator_method_declaration(this);
}
};
Operator_method_declarationContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitOperator_method_declaration(this);
}
};
EParser.Operator_method_declarationContext = Operator_method_declarationContext;
EParser.prototype.operator_method_declaration = function() {
var localctx = new Operator_method_declarationContext(this, this._ctx, this.state);
this.enterRule(localctx, 20, EParser.RULE_operator_method_declaration);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 649;
this.match(EParser.DEFINE);
this.state = 650;
localctx.op = this.operator();
this.state = 651;
this.match(EParser.AS);
this.state = 652;
this.match(EParser.OPERATOR);
this.state = 653;
this.match(EParser.RECEIVING);
this.state = 654;
localctx.arg = this.operator_argument();
this.state = 657;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.RETURNING) {
this.state = 655;
this.match(EParser.RETURNING);
this.state = 656;
localctx.typ = this.typedef(0);
}
this.state = 659;
this.match(EParser.DOING);
this.state = 660;
this.match(EParser.COLON);
this.state = 661;
this.indent();
this.state = 662;
localctx.stmts = this.statement_list();
this.state = 663;
this.dedent();
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Setter_method_declarationContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_setter_method_declaration;
this.name = null; // Variable_identifierContext
this.stmts = null; // Statement_listContext
return this;
}
Setter_method_declarationContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Setter_method_declarationContext.prototype.constructor = Setter_method_declarationContext;
Setter_method_declarationContext.prototype.DEFINE = function() {
return this.getToken(EParser.DEFINE, 0);
};
Setter_method_declarationContext.prototype.AS = function() {
return this.getToken(EParser.AS, 0);
};
Setter_method_declarationContext.prototype.SETTER = function() {
return this.getToken(EParser.SETTER, 0);
};
Setter_method_declarationContext.prototype.DOING = function() {
return this.getToken(EParser.DOING, 0);
};
Setter_method_declarationContext.prototype.COLON = function() {
return this.getToken(EParser.COLON, 0);
};
Setter_method_declarationContext.prototype.indent = function() {
return this.getTypedRuleContext(IndentContext,0);
};
Setter_method_declarationContext.prototype.dedent = function() {
return this.getTypedRuleContext(DedentContext,0);
};
Setter_method_declarationContext.prototype.variable_identifier = function() {
return this.getTypedRuleContext(Variable_identifierContext,0);
};
Setter_method_declarationContext.prototype.statement_list = function() {
return this.getTypedRuleContext(Statement_listContext,0);
};
Setter_method_declarationContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterSetter_method_declaration(this);
}
};
Setter_method_declarationContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitSetter_method_declaration(this);
}
};
EParser.Setter_method_declarationContext = Setter_method_declarationContext;
EParser.prototype.setter_method_declaration = function() {
var localctx = new Setter_method_declarationContext(this, this._ctx, this.state);
this.enterRule(localctx, 22, EParser.RULE_setter_method_declaration);
try {
this.enterOuterAlt(localctx, 1);
this.state = 665;
this.match(EParser.DEFINE);
this.state = 666;
localctx.name = this.variable_identifier();
this.state = 667;
this.match(EParser.AS);
this.state = 668;
this.match(EParser.SETTER);
this.state = 669;
this.match(EParser.DOING);
this.state = 670;
this.match(EParser.COLON);
this.state = 671;
this.indent();
this.state = 672;
localctx.stmts = this.statement_list();
this.state = 673;
this.dedent();
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Native_setter_declarationContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_native_setter_declaration;
this.name = null; // Variable_identifierContext
this.stmts = null; // Native_statement_listContext
return this;
}
Native_setter_declarationContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Native_setter_declarationContext.prototype.constructor = Native_setter_declarationContext;
Native_setter_declarationContext.prototype.DEFINE = function() {
return this.getToken(EParser.DEFINE, 0);
};
Native_setter_declarationContext.prototype.AS = function() {
return this.getToken(EParser.AS, 0);
};
Native_setter_declarationContext.prototype.SETTER = function() {
return this.getToken(EParser.SETTER, 0);
};
Native_setter_declarationContext.prototype.DOING = function() {
return this.getToken(EParser.DOING, 0);
};
Native_setter_declarationContext.prototype.COLON = function() {
return this.getToken(EParser.COLON, 0);
};
Native_setter_declarationContext.prototype.indent = function() {
return this.getTypedRuleContext(IndentContext,0);
};
Native_setter_declarationContext.prototype.dedent = function() {
return this.getTypedRuleContext(DedentContext,0);
};
Native_setter_declarationContext.prototype.variable_identifier = function() {
return this.getTypedRuleContext(Variable_identifierContext,0);
};
Native_setter_declarationContext.prototype.native_statement_list = function() {
return this.getTypedRuleContext(Native_statement_listContext,0);
};
Native_setter_declarationContext.prototype.NATIVE = function() {
return this.getToken(EParser.NATIVE, 0);
};
Native_setter_declarationContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterNative_setter_declaration(this);
}
};
Native_setter_declarationContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitNative_setter_declaration(this);
}
};
EParser.Native_setter_declarationContext = Native_setter_declarationContext;
EParser.prototype.native_setter_declaration = function() {
var localctx = new Native_setter_declarationContext(this, this._ctx, this.state);
this.enterRule(localctx, 24, EParser.RULE_native_setter_declaration);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 675;
this.match(EParser.DEFINE);
this.state = 676;
localctx.name = this.variable_identifier();
this.state = 677;
this.match(EParser.AS);
this.state = 679;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.NATIVE) {
this.state = 678;
this.match(EParser.NATIVE);
}
this.state = 681;
this.match(EParser.SETTER);
this.state = 682;
this.match(EParser.DOING);
this.state = 683;
this.match(EParser.COLON);
this.state = 684;
this.indent();
this.state = 685;
localctx.stmts = this.native_statement_list();
this.state = 686;
this.dedent();
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Getter_method_declarationContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_getter_method_declaration;
this.name = null; // Variable_identifierContext
this.stmts = null; // Statement_listContext
return this;
}
Getter_method_declarationContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Getter_method_declarationContext.prototype.constructor = Getter_method_declarationContext;
Getter_method_declarationContext.prototype.DEFINE = function() {
return this.getToken(EParser.DEFINE, 0);
};
Getter_method_declarationContext.prototype.AS = function() {
return this.getToken(EParser.AS, 0);
};
Getter_method_declarationContext.prototype.GETTER = function() {
return this.getToken(EParser.GETTER, 0);
};
Getter_method_declarationContext.prototype.DOING = function() {
return this.getToken(EParser.DOING, 0);
};
Getter_method_declarationContext.prototype.COLON = function() {
return this.getToken(EParser.COLON, 0);
};
Getter_method_declarationContext.prototype.indent = function() {
return this.getTypedRuleContext(IndentContext,0);
};
Getter_method_declarationContext.prototype.dedent = function() {
return this.getTypedRuleContext(DedentContext,0);
};
Getter_method_declarationContext.prototype.variable_identifier = function() {
return this.getTypedRuleContext(Variable_identifierContext,0);
};
Getter_method_declarationContext.prototype.statement_list = function() {
return this.getTypedRuleContext(Statement_listContext,0);
};
Getter_method_declarationContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterGetter_method_declaration(this);
}
};
Getter_method_declarationContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitGetter_method_declaration(this);
}
};
EParser.Getter_method_declarationContext = Getter_method_declarationContext;
EParser.prototype.getter_method_declaration = function() {
var localctx = new Getter_method_declarationContext(this, this._ctx, this.state);
this.enterRule(localctx, 26, EParser.RULE_getter_method_declaration);
try {
this.enterOuterAlt(localctx, 1);
this.state = 688;
this.match(EParser.DEFINE);
this.state = 689;
localctx.name = this.variable_identifier();
this.state = 690;
this.match(EParser.AS);
this.state = 691;
this.match(EParser.GETTER);
this.state = 692;
this.match(EParser.DOING);
this.state = 693;
this.match(EParser.COLON);
this.state = 694;
this.indent();
this.state = 695;
localctx.stmts = this.statement_list();
this.state = 696;
this.dedent();
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Native_getter_declarationContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_native_getter_declaration;
this.name = null; // Variable_identifierContext
this.stmts = null; // Native_statement_listContext
return this;
}
Native_getter_declarationContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Native_getter_declarationContext.prototype.constructor = Native_getter_declarationContext;
Native_getter_declarationContext.prototype.DEFINE = function() {
return this.getToken(EParser.DEFINE, 0);
};
Native_getter_declarationContext.prototype.AS = function() {
return this.getToken(EParser.AS, 0);
};
Native_getter_declarationContext.prototype.GETTER = function() {
return this.getToken(EParser.GETTER, 0);
};
Native_getter_declarationContext.prototype.DOING = function() {
return this.getToken(EParser.DOING, 0);
};
Native_getter_declarationContext.prototype.COLON = function() {
return this.getToken(EParser.COLON, 0);
};
Native_getter_declarationContext.prototype.indent = function() {
return this.getTypedRuleContext(IndentContext,0);
};
Native_getter_declarationContext.prototype.dedent = function() {
return this.getTypedRuleContext(DedentContext,0);
};
Native_getter_declarationContext.prototype.variable_identifier = function() {
return this.getTypedRuleContext(Variable_identifierContext,0);
};
Native_getter_declarationContext.prototype.native_statement_list = function() {
return this.getTypedRuleContext(Native_statement_listContext,0);
};
Native_getter_declarationContext.prototype.NATIVE = function() {
return this.getToken(EParser.NATIVE, 0);
};
Native_getter_declarationContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterNative_getter_declaration(this);
}
};
Native_getter_declarationContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitNative_getter_declaration(this);
}
};
EParser.Native_getter_declarationContext = Native_getter_declarationContext;
EParser.prototype.native_getter_declaration = function() {
var localctx = new Native_getter_declarationContext(this, this._ctx, this.state);
this.enterRule(localctx, 28, EParser.RULE_native_getter_declaration);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 698;
this.match(EParser.DEFINE);
this.state = 699;
localctx.name = this.variable_identifier();
this.state = 700;
this.match(EParser.AS);
this.state = 702;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.NATIVE) {
this.state = 701;
this.match(EParser.NATIVE);
}
this.state = 704;
this.match(EParser.GETTER);
this.state = 705;
this.match(EParser.DOING);
this.state = 706;
this.match(EParser.COLON);
this.state = 707;
this.indent();
this.state = 708;
localctx.stmts = this.native_statement_list();
this.state = 709;
this.dedent();
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Native_category_declarationContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_native_category_declaration;
this.name = null; // Type_identifierContext
this.attrs = null; // Attribute_listContext
this.bindings = null; // Native_category_bindingsContext
this.methods = null; // Native_member_method_declaration_listContext
return this;
}
Native_category_declarationContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Native_category_declarationContext.prototype.constructor = Native_category_declarationContext;
Native_category_declarationContext.prototype.DEFINE = function() {
return this.getToken(EParser.DEFINE, 0);
};
Native_category_declarationContext.prototype.AS = function() {
return this.getToken(EParser.AS, 0);
};
Native_category_declarationContext.prototype.NATIVE = function() {
return this.getToken(EParser.NATIVE, 0);
};
Native_category_declarationContext.prototype.CATEGORY = function() {
return this.getToken(EParser.CATEGORY, 0);
};
Native_category_declarationContext.prototype.COLON = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(EParser.COLON);
} else {
return this.getToken(EParser.COLON, i);
}
};
Native_category_declarationContext.prototype.indent = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(IndentContext);
} else {
return this.getTypedRuleContext(IndentContext,i);
}
};
Native_category_declarationContext.prototype.dedent = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(DedentContext);
} else {
return this.getTypedRuleContext(DedentContext,i);
}
};
Native_category_declarationContext.prototype.type_identifier = function() {
return this.getTypedRuleContext(Type_identifierContext,0);
};
Native_category_declarationContext.prototype.native_category_bindings = function() {
return this.getTypedRuleContext(Native_category_bindingsContext,0);
};
Native_category_declarationContext.prototype.WITH = function() {
return this.getToken(EParser.WITH, 0);
};
Native_category_declarationContext.prototype.BINDINGS = function() {
return this.getToken(EParser.BINDINGS, 0);
};
Native_category_declarationContext.prototype.STORABLE = function() {
return this.getToken(EParser.STORABLE, 0);
};
Native_category_declarationContext.prototype.lfp = function() {
return this.getTypedRuleContext(LfpContext,0);
};
Native_category_declarationContext.prototype.AND = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(EParser.AND);
} else {
return this.getToken(EParser.AND, i);
}
};
Native_category_declarationContext.prototype.METHODS = function() {
return this.getToken(EParser.METHODS, 0);
};
Native_category_declarationContext.prototype.COMMA = function() {
return this.getToken(EParser.COMMA, 0);
};
Native_category_declarationContext.prototype.native_member_method_declaration_list = function() {
return this.getTypedRuleContext(Native_member_method_declaration_listContext,0);
};
Native_category_declarationContext.prototype.attribute_list = function() {
return this.getTypedRuleContext(Attribute_listContext,0);
};
Native_category_declarationContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterNative_category_declaration(this);
}
};
Native_category_declarationContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitNative_category_declaration(this);
}
};
EParser.Native_category_declarationContext = Native_category_declarationContext;
EParser.prototype.native_category_declaration = function() {
var localctx = new Native_category_declarationContext(this, this._ctx, this.state);
this.enterRule(localctx, 30, EParser.RULE_native_category_declaration);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 711;
this.match(EParser.DEFINE);
this.state = 712;
localctx.name = this.type_identifier();
this.state = 713;
this.match(EParser.AS);
this.state = 715;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.STORABLE) {
this.state = 714;
this.match(EParser.STORABLE);
}
this.state = 717;
this.match(EParser.NATIVE);
this.state = 718;
this.match(EParser.CATEGORY);
this.state = 726;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,21,this._ctx);
switch(la_) {
case 1:
this.state = 719;
localctx.attrs = this.attribute_list();
this.state = 720;
this.match(EParser.COMMA);
this.state = 721;
this.match(EParser.AND);
this.state = 722;
this.match(EParser.BINDINGS);
break;
case 2:
this.state = 724;
this.match(EParser.WITH);
this.state = 725;
this.match(EParser.BINDINGS);
break;
}
this.state = 728;
this.match(EParser.COLON);
this.state = 729;
this.indent();
this.state = 730;
localctx.bindings = this.native_category_bindings();
this.state = 731;
this.dedent();
this.state = 740;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,22,this._ctx);
if(la_===1) {
this.state = 732;
this.lfp();
this.state = 733;
this.match(EParser.AND);
this.state = 734;
this.match(EParser.METHODS);
this.state = 735;
this.match(EParser.COLON);
this.state = 736;
this.indent();
this.state = 737;
localctx.methods = this.native_member_method_declaration_list();
this.state = 738;
this.dedent();
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Native_resource_declarationContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_native_resource_declaration;
this.name = null; // Type_identifierContext
this.attrs = null; // Attribute_listContext
this.bindings = null; // Native_category_bindingsContext
this.methods = null; // Native_member_method_declaration_listContext
return this;
}
Native_resource_declarationContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Native_resource_declarationContext.prototype.constructor = Native_resource_declarationContext;
Native_resource_declarationContext.prototype.DEFINE = function() {
return this.getToken(EParser.DEFINE, 0);
};
Native_resource_declarationContext.prototype.AS = function() {
return this.getToken(EParser.AS, 0);
};
Native_resource_declarationContext.prototype.NATIVE = function() {
return this.getToken(EParser.NATIVE, 0);
};
Native_resource_declarationContext.prototype.RESOURCE = function() {
return this.getToken(EParser.RESOURCE, 0);
};
Native_resource_declarationContext.prototype.COLON = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(EParser.COLON);
} else {
return this.getToken(EParser.COLON, i);
}
};
Native_resource_declarationContext.prototype.indent = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(IndentContext);
} else {
return this.getTypedRuleContext(IndentContext,i);
}
};
Native_resource_declarationContext.prototype.dedent = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(DedentContext);
} else {
return this.getTypedRuleContext(DedentContext,i);
}
};
Native_resource_declarationContext.prototype.type_identifier = function() {
return this.getTypedRuleContext(Type_identifierContext,0);
};
Native_resource_declarationContext.prototype.native_category_bindings = function() {
return this.getTypedRuleContext(Native_category_bindingsContext,0);
};
Native_resource_declarationContext.prototype.WITH = function() {
return this.getToken(EParser.WITH, 0);
};
Native_resource_declarationContext.prototype.BINDINGS = function() {
return this.getToken(EParser.BINDINGS, 0);
};
Native_resource_declarationContext.prototype.STORABLE = function() {
return this.getToken(EParser.STORABLE, 0);
};
Native_resource_declarationContext.prototype.lfp = function() {
return this.getTypedRuleContext(LfpContext,0);
};
Native_resource_declarationContext.prototype.AND = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(EParser.AND);
} else {
return this.getToken(EParser.AND, i);
}
};
Native_resource_declarationContext.prototype.METHODS = function() {
return this.getToken(EParser.METHODS, 0);
};
Native_resource_declarationContext.prototype.COMMA = function() {
return this.getToken(EParser.COMMA, 0);
};
Native_resource_declarationContext.prototype.native_member_method_declaration_list = function() {
return this.getTypedRuleContext(Native_member_method_declaration_listContext,0);
};
Native_resource_declarationContext.prototype.attribute_list = function() {
return this.getTypedRuleContext(Attribute_listContext,0);
};
Native_resource_declarationContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterNative_resource_declaration(this);
}
};
Native_resource_declarationContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitNative_resource_declaration(this);
}
};
EParser.Native_resource_declarationContext = Native_resource_declarationContext;
EParser.prototype.native_resource_declaration = function() {
var localctx = new Native_resource_declarationContext(this, this._ctx, this.state);
this.enterRule(localctx, 32, EParser.RULE_native_resource_declaration);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 742;
this.match(EParser.DEFINE);
this.state = 743;
localctx.name = this.type_identifier();
this.state = 744;
this.match(EParser.AS);
this.state = 746;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.STORABLE) {
this.state = 745;
this.match(EParser.STORABLE);
}
this.state = 748;
this.match(EParser.NATIVE);
this.state = 749;
this.match(EParser.RESOURCE);
this.state = 757;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,24,this._ctx);
switch(la_) {
case 1:
this.state = 750;
localctx.attrs = this.attribute_list();
this.state = 751;
this.match(EParser.COMMA);
this.state = 752;
this.match(EParser.AND);
this.state = 753;
this.match(EParser.BINDINGS);
break;
case 2:
this.state = 755;
this.match(EParser.WITH);
this.state = 756;
this.match(EParser.BINDINGS);
break;
}
this.state = 759;
this.match(EParser.COLON);
this.state = 760;
this.indent();
this.state = 761;
localctx.bindings = this.native_category_bindings();
this.state = 762;
this.dedent();
this.state = 771;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,25,this._ctx);
if(la_===1) {
this.state = 763;
this.lfp();
this.state = 764;
this.match(EParser.AND);
this.state = 765;
this.match(EParser.METHODS);
this.state = 766;
this.match(EParser.COLON);
this.state = 767;
this.indent();
this.state = 768;
localctx.methods = this.native_member_method_declaration_list();
this.state = 769;
this.dedent();
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Native_category_bindingsContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_native_category_bindings;
this.items = null; // Native_category_binding_listContext
return this;
}
Native_category_bindingsContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Native_category_bindingsContext.prototype.constructor = Native_category_bindingsContext;
Native_category_bindingsContext.prototype.DEFINE = function() {
return this.getToken(EParser.DEFINE, 0);
};
Native_category_bindingsContext.prototype.CATEGORY = function() {
return this.getToken(EParser.CATEGORY, 0);
};
Native_category_bindingsContext.prototype.BINDINGS = function() {
return this.getToken(EParser.BINDINGS, 0);
};
Native_category_bindingsContext.prototype.AS = function() {
return this.getToken(EParser.AS, 0);
};
Native_category_bindingsContext.prototype.COLON = function() {
return this.getToken(EParser.COLON, 0);
};
Native_category_bindingsContext.prototype.indent = function() {
return this.getTypedRuleContext(IndentContext,0);
};
Native_category_bindingsContext.prototype.dedent = function() {
return this.getTypedRuleContext(DedentContext,0);
};
Native_category_bindingsContext.prototype.native_category_binding_list = function() {
return this.getTypedRuleContext(Native_category_binding_listContext,0);
};
Native_category_bindingsContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterNative_category_bindings(this);
}
};
Native_category_bindingsContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitNative_category_bindings(this);
}
};
EParser.Native_category_bindingsContext = Native_category_bindingsContext;
EParser.prototype.native_category_bindings = function() {
var localctx = new Native_category_bindingsContext(this, this._ctx, this.state);
this.enterRule(localctx, 34, EParser.RULE_native_category_bindings);
try {
this.enterOuterAlt(localctx, 1);
this.state = 773;
this.match(EParser.DEFINE);
this.state = 774;
this.match(EParser.CATEGORY);
this.state = 775;
this.match(EParser.BINDINGS);
this.state = 776;
this.match(EParser.AS);
this.state = 777;
this.match(EParser.COLON);
this.state = 778;
this.indent();
this.state = 779;
localctx.items = this.native_category_binding_list(0);
this.state = 780;
this.dedent();
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Native_category_binding_listContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_native_category_binding_list;
return this;
}
Native_category_binding_listContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Native_category_binding_listContext.prototype.constructor = Native_category_binding_listContext;
Native_category_binding_listContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function NativeCategoryBindingListItemContext(parser, ctx) {
Native_category_binding_listContext.call(this, parser);
this.items = null; // Native_category_binding_listContext;
this.item = null; // Native_category_bindingContext;
Native_category_binding_listContext.prototype.copyFrom.call(this, ctx);
return this;
}
NativeCategoryBindingListItemContext.prototype = Object.create(Native_category_binding_listContext.prototype);
NativeCategoryBindingListItemContext.prototype.constructor = NativeCategoryBindingListItemContext;
EParser.NativeCategoryBindingListItemContext = NativeCategoryBindingListItemContext;
NativeCategoryBindingListItemContext.prototype.lfp = function() {
return this.getTypedRuleContext(LfpContext,0);
};
NativeCategoryBindingListItemContext.prototype.native_category_binding_list = function() {
return this.getTypedRuleContext(Native_category_binding_listContext,0);
};
NativeCategoryBindingListItemContext.prototype.native_category_binding = function() {
return this.getTypedRuleContext(Native_category_bindingContext,0);
};
NativeCategoryBindingListItemContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterNativeCategoryBindingListItem(this);
}
};
NativeCategoryBindingListItemContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitNativeCategoryBindingListItem(this);
}
};
function NativeCategoryBindingListContext(parser, ctx) {
Native_category_binding_listContext.call(this, parser);
this.item = null; // Native_category_bindingContext;
Native_category_binding_listContext.prototype.copyFrom.call(this, ctx);
return this;
}
NativeCategoryBindingListContext.prototype = Object.create(Native_category_binding_listContext.prototype);
NativeCategoryBindingListContext.prototype.constructor = NativeCategoryBindingListContext;
EParser.NativeCategoryBindingListContext = NativeCategoryBindingListContext;
NativeCategoryBindingListContext.prototype.native_category_binding = function() {
return this.getTypedRuleContext(Native_category_bindingContext,0);
};
NativeCategoryBindingListContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterNativeCategoryBindingList(this);
}
};
NativeCategoryBindingListContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitNativeCategoryBindingList(this);
}
};
EParser.prototype.native_category_binding_list = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new Native_category_binding_listContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 36;
this.enterRecursionRule(localctx, 36, EParser.RULE_native_category_binding_list, _p);
try {
this.enterOuterAlt(localctx, 1);
localctx = new NativeCategoryBindingListContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 783;
localctx.item = this.native_category_binding();
this._ctx.stop = this._input.LT(-1);
this.state = 791;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,26,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
if(this._parseListeners!==null) {
this.triggerExitRuleEvent();
}
_prevctx = localctx;
localctx = new NativeCategoryBindingListItemContext(this, new Native_category_binding_listContext(this, _parentctx, _parentState));
localctx.items = _prevctx;
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_native_category_binding_list);
this.state = 785;
if (!( this.precpred(this._ctx, 1))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
}
this.state = 786;
this.lfp();
this.state = 787;
localctx.item = this.native_category_binding();
}
this.state = 793;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,26,this._ctx);
}
} catch( error) {
if(error instanceof antlr4.error.RecognitionException) {
localctx.exception = error;
this._errHandler.reportError(this, error);
this._errHandler.recover(this, error);
} else {
throw error;
}
} finally {
this.unrollRecursionContexts(_parentctx)
}
return localctx;
};
function Attribute_listContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_attribute_list;
return this;
}
Attribute_listContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Attribute_listContext.prototype.constructor = Attribute_listContext;
Attribute_listContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function AttributeListContext(parser, ctx) {
Attribute_listContext.call(this, parser);
this.item = null; // Attribute_identifierContext;
Attribute_listContext.prototype.copyFrom.call(this, ctx);
return this;
}
AttributeListContext.prototype = Object.create(Attribute_listContext.prototype);
AttributeListContext.prototype.constructor = AttributeListContext;
EParser.AttributeListContext = AttributeListContext;
AttributeListContext.prototype.WITH = function() {
return this.getToken(EParser.WITH, 0);
};
AttributeListContext.prototype.ATTRIBUTE = function() {
return this.getToken(EParser.ATTRIBUTE, 0);
};
AttributeListContext.prototype.attribute_identifier = function() {
return this.getTypedRuleContext(Attribute_identifierContext,0);
};
AttributeListContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterAttributeList(this);
}
};
AttributeListContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitAttributeList(this);
}
};
function AttributeListItemContext(parser, ctx) {
Attribute_listContext.call(this, parser);
this.items = null; // Attribute_identifier_listContext;
this.item = null; // Attribute_identifierContext;
Attribute_listContext.prototype.copyFrom.call(this, ctx);
return this;
}
AttributeListItemContext.prototype = Object.create(Attribute_listContext.prototype);
AttributeListItemContext.prototype.constructor = AttributeListItemContext;
EParser.AttributeListItemContext = AttributeListItemContext;
AttributeListItemContext.prototype.WITH = function() {
return this.getToken(EParser.WITH, 0);
};
AttributeListItemContext.prototype.ATTRIBUTES = function() {
return this.getToken(EParser.ATTRIBUTES, 0);
};
AttributeListItemContext.prototype.attribute_identifier_list = function() {
return this.getTypedRuleContext(Attribute_identifier_listContext,0);
};
AttributeListItemContext.prototype.AND = function() {
return this.getToken(EParser.AND, 0);
};
AttributeListItemContext.prototype.attribute_identifier = function() {
return this.getTypedRuleContext(Attribute_identifierContext,0);
};
AttributeListItemContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterAttributeListItem(this);
}
};
AttributeListItemContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitAttributeListItem(this);
}
};
EParser.Attribute_listContext = Attribute_listContext;
EParser.prototype.attribute_list = function() {
var localctx = new Attribute_listContext(this, this._ctx, this.state);
this.enterRule(localctx, 38, EParser.RULE_attribute_list);
try {
this.state = 804;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,28,this._ctx);
switch(la_) {
case 1:
localctx = new AttributeListContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 794;
this.match(EParser.WITH);
this.state = 795;
this.match(EParser.ATTRIBUTE);
this.state = 796;
localctx.item = this.attribute_identifier();
break;
case 2:
localctx = new AttributeListItemContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 797;
this.match(EParser.WITH);
this.state = 798;
this.match(EParser.ATTRIBUTES);
this.state = 799;
localctx.items = this.attribute_identifier_list();
this.state = 802;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,27,this._ctx);
if(la_===1) {
this.state = 800;
this.match(EParser.AND);
this.state = 801;
localctx.item = this.attribute_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 Abstract_method_declarationContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_abstract_method_declaration;
this.name = null; // Method_identifierContext
this.args = null; // Full_argument_listContext
this.typ = null; // TypedefContext
return this;
}
Abstract_method_declarationContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Abstract_method_declarationContext.prototype.constructor = Abstract_method_declarationContext;
Abstract_method_declarationContext.prototype.DEFINE = function() {
return this.getToken(EParser.DEFINE, 0);
};
Abstract_method_declarationContext.prototype.AS = function() {
return this.getToken(EParser.AS, 0);
};
Abstract_method_declarationContext.prototype.ABSTRACT = function() {
return this.getToken(EParser.ABSTRACT, 0);
};
Abstract_method_declarationContext.prototype.METHOD = function() {
return this.getToken(EParser.METHOD, 0);
};
Abstract_method_declarationContext.prototype.method_identifier = function() {
return this.getTypedRuleContext(Method_identifierContext,0);
};
Abstract_method_declarationContext.prototype.RECEIVING = function() {
return this.getToken(EParser.RECEIVING, 0);
};
Abstract_method_declarationContext.prototype.RETURNING = function() {
return this.getToken(EParser.RETURNING, 0);
};
Abstract_method_declarationContext.prototype.full_argument_list = function() {
return this.getTypedRuleContext(Full_argument_listContext,0);
};
Abstract_method_declarationContext.prototype.typedef = function() {
return this.getTypedRuleContext(TypedefContext,0);
};
Abstract_method_declarationContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterAbstract_method_declaration(this);
}
};
Abstract_method_declarationContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitAbstract_method_declaration(this);
}
};
EParser.Abstract_method_declarationContext = Abstract_method_declarationContext;
EParser.prototype.abstract_method_declaration = function() {
var localctx = new Abstract_method_declarationContext(this, this._ctx, this.state);
this.enterRule(localctx, 40, EParser.RULE_abstract_method_declaration);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 806;
this.match(EParser.DEFINE);
this.state = 807;
localctx.name = this.method_identifier();
this.state = 808;
this.match(EParser.AS);
this.state = 809;
this.match(EParser.ABSTRACT);
this.state = 810;
this.match(EParser.METHOD);
this.state = 813;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.RECEIVING) {
this.state = 811;
this.match(EParser.RECEIVING);
this.state = 812;
localctx.args = this.full_argument_list();
}
this.state = 817;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.RETURNING) {
this.state = 815;
this.match(EParser.RETURNING);
this.state = 816;
localctx.typ = this.typedef(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 Concrete_method_declarationContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_concrete_method_declaration;
this.name = null; // Method_identifierContext
this.args = null; // Full_argument_listContext
this.typ = null; // TypedefContext
this.stmts = null; // Statement_listContext
return this;
}
Concrete_method_declarationContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Concrete_method_declarationContext.prototype.constructor = Concrete_method_declarationContext;
Concrete_method_declarationContext.prototype.DEFINE = function() {
return this.getToken(EParser.DEFINE, 0);
};
Concrete_method_declarationContext.prototype.AS = function() {
return this.getToken(EParser.AS, 0);
};
Concrete_method_declarationContext.prototype.METHOD = function() {
return this.getToken(EParser.METHOD, 0);
};
Concrete_method_declarationContext.prototype.DOING = function() {
return this.getToken(EParser.DOING, 0);
};
Concrete_method_declarationContext.prototype.COLON = function() {
return this.getToken(EParser.COLON, 0);
};
Concrete_method_declarationContext.prototype.indent = function() {
return this.getTypedRuleContext(IndentContext,0);
};
Concrete_method_declarationContext.prototype.dedent = function() {
return this.getTypedRuleContext(DedentContext,0);
};
Concrete_method_declarationContext.prototype.method_identifier = function() {
return this.getTypedRuleContext(Method_identifierContext,0);
};
Concrete_method_declarationContext.prototype.PASS = function() {
return this.getToken(EParser.PASS, 0);
};
Concrete_method_declarationContext.prototype.RECEIVING = function() {
return this.getToken(EParser.RECEIVING, 0);
};
Concrete_method_declarationContext.prototype.RETURNING = function() {
return this.getToken(EParser.RETURNING, 0);
};
Concrete_method_declarationContext.prototype.statement_list = function() {
return this.getTypedRuleContext(Statement_listContext,0);
};
Concrete_method_declarationContext.prototype.full_argument_list = function() {
return this.getTypedRuleContext(Full_argument_listContext,0);
};
Concrete_method_declarationContext.prototype.typedef = function() {
return this.getTypedRuleContext(TypedefContext,0);
};
Concrete_method_declarationContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterConcrete_method_declaration(this);
}
};
Concrete_method_declarationContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitConcrete_method_declaration(this);
}
};
EParser.Concrete_method_declarationContext = Concrete_method_declarationContext;
EParser.prototype.concrete_method_declaration = function() {
var localctx = new Concrete_method_declarationContext(this, this._ctx, this.state);
this.enterRule(localctx, 42, EParser.RULE_concrete_method_declaration);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 819;
this.match(EParser.DEFINE);
this.state = 820;
localctx.name = this.method_identifier();
this.state = 821;
this.match(EParser.AS);
this.state = 822;
this.match(EParser.METHOD);
this.state = 825;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.RECEIVING) {
this.state = 823;
this.match(EParser.RECEIVING);
this.state = 824;
localctx.args = this.full_argument_list();
}
this.state = 829;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.RETURNING) {
this.state = 827;
this.match(EParser.RETURNING);
this.state = 828;
localctx.typ = this.typedef(0);
}
this.state = 831;
this.match(EParser.DOING);
this.state = 832;
this.match(EParser.COLON);
this.state = 833;
this.indent();
this.state = 836;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case EParser.COMMENT:
case EParser.BREAK:
case EParser.DEFINE:
case EParser.DELETE:
case EParser.DO:
case EParser.FETCH:
case EParser.FLUSH:
case EParser.FOR:
case EParser.IF:
case EParser.INVOKE:
case EParser.RAISE:
case EParser.RETURN:
case EParser.STORE:
case EParser.SWITCH:
case EParser.WITH:
case EParser.WHILE:
case EParser.WRITE:
case EParser.SYMBOL_IDENTIFIER:
case EParser.TYPE_IDENTIFIER:
case EParser.VARIABLE_IDENTIFIER:
this.state = 834;
localctx.stmts = this.statement_list();
break;
case EParser.PASS:
this.state = 835;
this.match(EParser.PASS);
break;
default:
throw new antlr4.error.NoViableAltException(this);
}
this.state = 838;
this.dedent();
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Native_method_declarationContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_native_method_declaration;
this.name = null; // Method_identifierContext
this.args = null; // Full_argument_listContext
this.typ = null; // Category_or_any_typeContext
this.stmts = null; // Native_statement_listContext
return this;
}
Native_method_declarationContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Native_method_declarationContext.prototype.constructor = Native_method_declarationContext;
Native_method_declarationContext.prototype.DEFINE = function() {
return this.getToken(EParser.DEFINE, 0);
};
Native_method_declarationContext.prototype.AS = function() {
return this.getToken(EParser.AS, 0);
};
Native_method_declarationContext.prototype.METHOD = function() {
return this.getToken(EParser.METHOD, 0);
};
Native_method_declarationContext.prototype.DOING = function() {
return this.getToken(EParser.DOING, 0);
};
Native_method_declarationContext.prototype.COLON = function() {
return this.getToken(EParser.COLON, 0);
};
Native_method_declarationContext.prototype.indent = function() {
return this.getTypedRuleContext(IndentContext,0);
};
Native_method_declarationContext.prototype.dedent = function() {
return this.getTypedRuleContext(DedentContext,0);
};
Native_method_declarationContext.prototype.method_identifier = function() {
return this.getTypedRuleContext(Method_identifierContext,0);
};
Native_method_declarationContext.prototype.native_statement_list = function() {
return this.getTypedRuleContext(Native_statement_listContext,0);
};
Native_method_declarationContext.prototype.NATIVE = function() {
return this.getToken(EParser.NATIVE, 0);
};
Native_method_declarationContext.prototype.RECEIVING = function() {
return this.getToken(EParser.RECEIVING, 0);
};
Native_method_declarationContext.prototype.RETURNING = function() {
return this.getToken(EParser.RETURNING, 0);
};
Native_method_declarationContext.prototype.full_argument_list = function() {
return this.getTypedRuleContext(Full_argument_listContext,0);
};
Native_method_declarationContext.prototype.category_or_any_type = function() {
return this.getTypedRuleContext(Category_or_any_typeContext,0);
};
Native_method_declarationContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterNative_method_declaration(this);
}
};
Native_method_declarationContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitNative_method_declaration(this);
}
};
EParser.Native_method_declarationContext = Native_method_declarationContext;
EParser.prototype.native_method_declaration = function() {
var localctx = new Native_method_declarationContext(this, this._ctx, this.state);
this.enterRule(localctx, 44, EParser.RULE_native_method_declaration);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 840;
this.match(EParser.DEFINE);
this.state = 841;
localctx.name = this.method_identifier();
this.state = 842;
this.match(EParser.AS);
this.state = 844;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.NATIVE) {
this.state = 843;
this.match(EParser.NATIVE);
}
this.state = 846;
this.match(EParser.METHOD);
this.state = 849;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.RECEIVING) {
this.state = 847;
this.match(EParser.RECEIVING);
this.state = 848;
localctx.args = this.full_argument_list();
}
this.state = 853;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.RETURNING) {
this.state = 851;
this.match(EParser.RETURNING);
this.state = 852;
localctx.typ = this.category_or_any_type();
}
this.state = 855;
this.match(EParser.DOING);
this.state = 856;
this.match(EParser.COLON);
this.state = 857;
this.indent();
this.state = 858;
localctx.stmts = this.native_statement_list();
this.state = 859;
this.dedent();
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Test_method_declarationContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_test_method_declaration;
this.name = null; // Token
this.stmts = null; // Statement_listContext
this.exps = null; // Assertion_listContext
this.error = null; // Symbol_identifierContext
return this;
}
Test_method_declarationContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Test_method_declarationContext.prototype.constructor = Test_method_declarationContext;
Test_method_declarationContext.prototype.DEFINE = function() {
return this.getToken(EParser.DEFINE, 0);
};
Test_method_declarationContext.prototype.AS = function() {
return this.getToken(EParser.AS, 0);
};
Test_method_declarationContext.prototype.TEST = function() {
return this.getToken(EParser.TEST, 0);
};
Test_method_declarationContext.prototype.METHOD = function() {
return this.getToken(EParser.METHOD, 0);
};
Test_method_declarationContext.prototype.DOING = function() {
return this.getToken(EParser.DOING, 0);
};
Test_method_declarationContext.prototype.COLON = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(EParser.COLON);
} else {
return this.getToken(EParser.COLON, i);
}
};
Test_method_declarationContext.prototype.indent = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(IndentContext);
} else {
return this.getTypedRuleContext(IndentContext,i);
}
};
Test_method_declarationContext.prototype.dedent = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(DedentContext);
} else {
return this.getTypedRuleContext(DedentContext,i);
}
};
Test_method_declarationContext.prototype.lfp = function() {
return this.getTypedRuleContext(LfpContext,0);
};
Test_method_declarationContext.prototype.AND = function() {
return this.getToken(EParser.AND, 0);
};
Test_method_declarationContext.prototype.VERIFYING = function() {
return this.getToken(EParser.VERIFYING, 0);
};
Test_method_declarationContext.prototype.TEXT_LITERAL = function() {
return this.getToken(EParser.TEXT_LITERAL, 0);
};
Test_method_declarationContext.prototype.statement_list = function() {
return this.getTypedRuleContext(Statement_listContext,0);
};
Test_method_declarationContext.prototype.symbol_identifier = function() {
return this.getTypedRuleContext(Symbol_identifierContext,0);
};
Test_method_declarationContext.prototype.assertion_list = function() {
return this.getTypedRuleContext(Assertion_listContext,0);
};
Test_method_declarationContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterTest_method_declaration(this);
}
};
Test_method_declarationContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitTest_method_declaration(this);
}
};
EParser.Test_method_declarationContext = Test_method_declarationContext;
EParser.prototype.test_method_declaration = function() {
var localctx = new Test_method_declarationContext(this, this._ctx, this.state);
this.enterRule(localctx, 46, EParser.RULE_test_method_declaration);
try {
this.enterOuterAlt(localctx, 1);
this.state = 861;
this.match(EParser.DEFINE);
this.state = 862;
localctx.name = this.match(EParser.TEXT_LITERAL);
this.state = 863;
this.match(EParser.AS);
this.state = 864;
this.match(EParser.TEST);
this.state = 865;
this.match(EParser.METHOD);
this.state = 866;
this.match(EParser.DOING);
this.state = 867;
this.match(EParser.COLON);
this.state = 868;
this.indent();
this.state = 869;
localctx.stmts = this.statement_list();
this.state = 870;
this.dedent();
this.state = 871;
this.lfp();
this.state = 872;
this.match(EParser.AND);
this.state = 873;
this.match(EParser.VERIFYING);
this.state = 880;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case EParser.COLON:
this.state = 874;
this.match(EParser.COLON);
this.state = 875;
this.indent();
this.state = 876;
localctx.exps = this.assertion_list();
this.state = 877;
this.dedent();
break;
case EParser.SYMBOL_IDENTIFIER:
this.state = 879;
localctx.error = this.symbol_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 AssertionContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_assertion;
this.exp = null; // ExpressionContext
return this;
}
AssertionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
AssertionContext.prototype.constructor = AssertionContext;
AssertionContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
AssertionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterAssertion(this);
}
};
AssertionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitAssertion(this);
}
};
EParser.AssertionContext = AssertionContext;
EParser.prototype.assertion = function() {
var localctx = new AssertionContext(this, this._ctx, this.state);
this.enterRule(localctx, 48, EParser.RULE_assertion);
try {
this.enterOuterAlt(localctx, 1);
this.state = 882;
localctx.exp = this.expression(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 Full_argument_listContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_full_argument_list;
this.items = null; // Argument_listContext
this.item = null; // ArgumentContext
return this;
}
Full_argument_listContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Full_argument_listContext.prototype.constructor = Full_argument_listContext;
Full_argument_listContext.prototype.argument_list = function() {
return this.getTypedRuleContext(Argument_listContext,0);
};
Full_argument_listContext.prototype.AND = function() {
return this.getToken(EParser.AND, 0);
};
Full_argument_listContext.prototype.argument = function() {
return this.getTypedRuleContext(ArgumentContext,0);
};
Full_argument_listContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterFull_argument_list(this);
}
};
Full_argument_listContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitFull_argument_list(this);
}
};
EParser.Full_argument_listContext = Full_argument_listContext;
EParser.prototype.full_argument_list = function() {
var localctx = new Full_argument_listContext(this, this._ctx, this.state);
this.enterRule(localctx, 50, EParser.RULE_full_argument_list);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 884;
localctx.items = this.argument_list();
this.state = 887;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.AND) {
this.state = 885;
this.match(EParser.AND);
this.state = 886;
localctx.item = this.argument();
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Typed_argumentContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_typed_argument;
this.typ = null; // Category_or_any_typeContext
this.name = null; // Variable_identifierContext
this.attrs = null; // Attribute_listContext
this.value = null; // Literal_expressionContext
return this;
}
Typed_argumentContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Typed_argumentContext.prototype.constructor = Typed_argumentContext;
Typed_argumentContext.prototype.category_or_any_type = function() {
return this.getTypedRuleContext(Category_or_any_typeContext,0);
};
Typed_argumentContext.prototype.variable_identifier = function() {
return this.getTypedRuleContext(Variable_identifierContext,0);
};
Typed_argumentContext.prototype.EQ = function() {
return this.getToken(EParser.EQ, 0);
};
Typed_argumentContext.prototype.attribute_list = function() {
return this.getTypedRuleContext(Attribute_listContext,0);
};
Typed_argumentContext.prototype.literal_expression = function() {
return this.getTypedRuleContext(Literal_expressionContext,0);
};
Typed_argumentContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterTyped_argument(this);
}
};
Typed_argumentContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitTyped_argument(this);
}
};
EParser.Typed_argumentContext = Typed_argumentContext;
EParser.prototype.typed_argument = function() {
var localctx = new Typed_argumentContext(this, this._ctx, this.state);
this.enterRule(localctx, 52, EParser.RULE_typed_argument);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 889;
localctx.typ = this.category_or_any_type();
this.state = 890;
localctx.name = this.variable_identifier();
this.state = 892;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.WITH) {
this.state = 891;
localctx.attrs = this.attribute_list();
}
this.state = 896;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.EQ) {
this.state = 894;
this.match(EParser.EQ);
this.state = 895;
localctx.value = this.literal_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 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 = EParser.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 CommentStatementContext(parser, ctx) {
StatementContext.call(this, parser);
this.decl = null; // Comment_statementContext;
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
CommentStatementContext.prototype = Object.create(StatementContext.prototype);
CommentStatementContext.prototype.constructor = CommentStatementContext;
EParser.CommentStatementContext = CommentStatementContext;
CommentStatementContext.prototype.comment_statement = function() {
return this.getTypedRuleContext(Comment_statementContext,0);
};
CommentStatementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterCommentStatement(this);
}
};
CommentStatementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitCommentStatement(this);
}
};
function StoreStatementContext(parser, ctx) {
StatementContext.call(this, parser);
this.stmt = null; // Store_statementContext;
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
StoreStatementContext.prototype = Object.create(StatementContext.prototype);
StoreStatementContext.prototype.constructor = StoreStatementContext;
EParser.StoreStatementContext = StoreStatementContext;
StoreStatementContext.prototype.store_statement = function() {
return this.getTypedRuleContext(Store_statementContext,0);
};
StoreStatementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterStoreStatement(this);
}
};
StoreStatementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitStoreStatement(this);
}
};
function WithSingletonStatementContext(parser, ctx) {
StatementContext.call(this, parser);
this.stmt = null; // With_singleton_statementContext;
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
WithSingletonStatementContext.prototype = Object.create(StatementContext.prototype);
WithSingletonStatementContext.prototype.constructor = WithSingletonStatementContext;
EParser.WithSingletonStatementContext = WithSingletonStatementContext;
WithSingletonStatementContext.prototype.with_singleton_statement = function() {
return this.getTypedRuleContext(With_singleton_statementContext,0);
};
WithSingletonStatementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterWithSingletonStatement(this);
}
};
WithSingletonStatementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitWithSingletonStatement(this);
}
};
function WriteStatementContext(parser, ctx) {
StatementContext.call(this, parser);
this.stmt = null; // Write_statementContext;
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
WriteStatementContext.prototype = Object.create(StatementContext.prototype);
WriteStatementContext.prototype.constructor = WriteStatementContext;
EParser.WriteStatementContext = WriteStatementContext;
WriteStatementContext.prototype.write_statement = function() {
return this.getTypedRuleContext(Write_statementContext,0);
};
WriteStatementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterWriteStatement(this);
}
};
WriteStatementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitWriteStatement(this);
}
};
function WhileStatementContext(parser, ctx) {
StatementContext.call(this, parser);
this.stmt = null; // While_statementContext;
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
WhileStatementContext.prototype = Object.create(StatementContext.prototype);
WhileStatementContext.prototype.constructor = WhileStatementContext;
EParser.WhileStatementContext = WhileStatementContext;
WhileStatementContext.prototype.while_statement = function() {
return this.getTypedRuleContext(While_statementContext,0);
};
WhileStatementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterWhileStatement(this);
}
};
WhileStatementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitWhileStatement(this);
}
};
function WithResourceStatementContext(parser, ctx) {
StatementContext.call(this, parser);
this.stmt = null; // With_resource_statementContext;
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
WithResourceStatementContext.prototype = Object.create(StatementContext.prototype);
WithResourceStatementContext.prototype.constructor = WithResourceStatementContext;
EParser.WithResourceStatementContext = WithResourceStatementContext;
WithResourceStatementContext.prototype.with_resource_statement = function() {
return this.getTypedRuleContext(With_resource_statementContext,0);
};
WithResourceStatementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterWithResourceStatement(this);
}
};
WithResourceStatementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitWithResourceStatement(this);
}
};
function RaiseStatementContext(parser, ctx) {
StatementContext.call(this, parser);
this.stmt = null; // Raise_statementContext;
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
RaiseStatementContext.prototype = Object.create(StatementContext.prototype);
RaiseStatementContext.prototype.constructor = RaiseStatementContext;
EParser.RaiseStatementContext = RaiseStatementContext;
RaiseStatementContext.prototype.raise_statement = function() {
return this.getTypedRuleContext(Raise_statementContext,0);
};
RaiseStatementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterRaiseStatement(this);
}
};
RaiseStatementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitRaiseStatement(this);
}
};
function FetchStatementContext(parser, ctx) {
StatementContext.call(this, parser);
this.stmt = null; // Fetch_statementContext;
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
FetchStatementContext.prototype = Object.create(StatementContext.prototype);
FetchStatementContext.prototype.constructor = FetchStatementContext;
EParser.FetchStatementContext = FetchStatementContext;
FetchStatementContext.prototype.fetch_statement = function() {
return this.getTypedRuleContext(Fetch_statementContext,0);
};
FetchStatementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterFetchStatement(this);
}
};
FetchStatementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitFetchStatement(this);
}
};
function BreakStatementContext(parser, ctx) {
StatementContext.call(this, parser);
this.stmt = null; // Break_statementContext;
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
BreakStatementContext.prototype = Object.create(StatementContext.prototype);
BreakStatementContext.prototype.constructor = BreakStatementContext;
EParser.BreakStatementContext = BreakStatementContext;
BreakStatementContext.prototype.break_statement = function() {
return this.getTypedRuleContext(Break_statementContext,0);
};
BreakStatementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterBreakStatement(this);
}
};
BreakStatementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitBreakStatement(this);
}
};
function AssignInstanceStatementContext(parser, ctx) {
StatementContext.call(this, parser);
this.stmt = null; // Assign_instance_statementContext;
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
AssignInstanceStatementContext.prototype = Object.create(StatementContext.prototype);
AssignInstanceStatementContext.prototype.constructor = AssignInstanceStatementContext;
EParser.AssignInstanceStatementContext = AssignInstanceStatementContext;
AssignInstanceStatementContext.prototype.assign_instance_statement = function() {
return this.getTypedRuleContext(Assign_instance_statementContext,0);
};
AssignInstanceStatementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterAssignInstanceStatement(this);
}
};
AssignInstanceStatementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitAssignInstanceStatement(this);
}
};
function IfStatementContext(parser, ctx) {
StatementContext.call(this, parser);
this.stmt = null; // If_statementContext;
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
IfStatementContext.prototype = Object.create(StatementContext.prototype);
IfStatementContext.prototype.constructor = IfStatementContext;
EParser.IfStatementContext = IfStatementContext;
IfStatementContext.prototype.if_statement = function() {
return this.getTypedRuleContext(If_statementContext,0);
};
IfStatementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterIfStatement(this);
}
};
IfStatementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitIfStatement(this);
}
};
function SwitchStatementContext(parser, ctx) {
StatementContext.call(this, parser);
this.stmt = null; // Switch_statementContext;
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
SwitchStatementContext.prototype = Object.create(StatementContext.prototype);
SwitchStatementContext.prototype.constructor = SwitchStatementContext;
EParser.SwitchStatementContext = SwitchStatementContext;
SwitchStatementContext.prototype.switch_statement = function() {
return this.getTypedRuleContext(Switch_statementContext,0);
};
SwitchStatementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterSwitchStatement(this);
}
};
SwitchStatementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitSwitchStatement(this);
}
};
function TryStatementContext(parser, ctx) {
StatementContext.call(this, parser);
this.stmt = null; // Try_statementContext;
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
TryStatementContext.prototype = Object.create(StatementContext.prototype);
TryStatementContext.prototype.constructor = TryStatementContext;
EParser.TryStatementContext = TryStatementContext;
TryStatementContext.prototype.try_statement = function() {
return this.getTypedRuleContext(Try_statementContext,0);
};
TryStatementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterTryStatement(this);
}
};
TryStatementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitTryStatement(this);
}
};
function MethodCallStatementContext(parser, ctx) {
StatementContext.call(this, parser);
this.stmt = null; // Method_call_statementContext;
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
MethodCallStatementContext.prototype = Object.create(StatementContext.prototype);
MethodCallStatementContext.prototype.constructor = MethodCallStatementContext;
EParser.MethodCallStatementContext = MethodCallStatementContext;
MethodCallStatementContext.prototype.method_call_statement = function() {
return this.getTypedRuleContext(Method_call_statementContext,0);
};
MethodCallStatementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterMethodCallStatement(this);
}
};
MethodCallStatementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitMethodCallStatement(this);
}
};
function ReturnStatementContext(parser, ctx) {
StatementContext.call(this, parser);
this.stmt = null; // Return_statementContext;
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
ReturnStatementContext.prototype = Object.create(StatementContext.prototype);
ReturnStatementContext.prototype.constructor = ReturnStatementContext;
EParser.ReturnStatementContext = ReturnStatementContext;
ReturnStatementContext.prototype.return_statement = function() {
return this.getTypedRuleContext(Return_statementContext,0);
};
ReturnStatementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterReturnStatement(this);
}
};
ReturnStatementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitReturnStatement(this);
}
};
function AssignTupleStatementContext(parser, ctx) {
StatementContext.call(this, parser);
this.stmt = null; // Assign_tuple_statementContext;
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
AssignTupleStatementContext.prototype = Object.create(StatementContext.prototype);
AssignTupleStatementContext.prototype.constructor = AssignTupleStatementContext;
EParser.AssignTupleStatementContext = AssignTupleStatementContext;
AssignTupleStatementContext.prototype.assign_tuple_statement = function() {
return this.getTypedRuleContext(Assign_tuple_statementContext,0);
};
AssignTupleStatementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterAssignTupleStatement(this);
}
};
AssignTupleStatementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitAssignTupleStatement(this);
}
};
function ClosureStatementContext(parser, ctx) {
StatementContext.call(this, parser);
this.decl = null; // Concrete_method_declarationContext;
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
ClosureStatementContext.prototype = Object.create(StatementContext.prototype);
ClosureStatementContext.prototype.constructor = ClosureStatementContext;
EParser.ClosureStatementContext = ClosureStatementContext;
ClosureStatementContext.prototype.concrete_method_declaration = function() {
return this.getTypedRuleContext(Concrete_method_declarationContext,0);
};
ClosureStatementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterClosureStatement(this);
}
};
ClosureStatementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitClosureStatement(this);
}
};
function FlushStatementContext(parser, ctx) {
StatementContext.call(this, parser);
this.stmt = null; // Flush_statementContext;
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
FlushStatementContext.prototype = Object.create(StatementContext.prototype);
FlushStatementContext.prototype.constructor = FlushStatementContext;
EParser.FlushStatementContext = FlushStatementContext;
FlushStatementContext.prototype.flush_statement = function() {
return this.getTypedRuleContext(Flush_statementContext,0);
};
FlushStatementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterFlushStatement(this);
}
};
FlushStatementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitFlushStatement(this);
}
};
function DoWhileStatementContext(parser, ctx) {
StatementContext.call(this, parser);
this.stmt = null; // Do_while_statementContext;
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
DoWhileStatementContext.prototype = Object.create(StatementContext.prototype);
DoWhileStatementContext.prototype.constructor = DoWhileStatementContext;
EParser.DoWhileStatementContext = DoWhileStatementContext;
DoWhileStatementContext.prototype.do_while_statement = function() {
return this.getTypedRuleContext(Do_while_statementContext,0);
};
DoWhileStatementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterDoWhileStatement(this);
}
};
DoWhileStatementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitDoWhileStatement(this);
}
};
function ForEachStatementContext(parser, ctx) {
StatementContext.call(this, parser);
this.stmt = null; // For_each_statementContext;
StatementContext.prototype.copyFrom.call(this, ctx);
return this;
}
ForEachStatementContext.prototype = Object.create(StatementContext.prototype);
ForEachStatementContext.prototype.constructor = ForEachStatementContext;
EParser.ForEachStatementContext = ForEachStatementContext;
ForEachStatementContext.prototype.for_each_statement = function() {
return this.getTypedRuleContext(For_each_statementContext,0);
};
ForEachStatementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterForEachStatement(this);
}
};
ForEachStatementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitForEachStatement(this);
}
};
EParser.StatementContext = StatementContext;
EParser.prototype.statement = function() {
var localctx = new StatementContext(this, this._ctx, this.state);
this.enterRule(localctx, 54, EParser.RULE_statement);
try {
this.state = 918;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,41,this._ctx);
switch(la_) {
case 1:
localctx = new AssignInstanceStatementContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 898;
localctx.stmt = this.assign_instance_statement();
break;
case 2:
localctx = new MethodCallStatementContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 899;
localctx.stmt = this.method_call_statement();
break;
case 3:
localctx = new AssignTupleStatementContext(this, localctx);
this.enterOuterAlt(localctx, 3);
this.state = 900;
localctx.stmt = this.assign_tuple_statement();
break;
case 4:
localctx = new StoreStatementContext(this, localctx);
this.enterOuterAlt(localctx, 4);
this.state = 901;
localctx.stmt = this.store_statement();
break;
case 5:
localctx = new FetchStatementContext(this, localctx);
this.enterOuterAlt(localctx, 5);
this.state = 902;
localctx.stmt = this.fetch_statement();
break;
case 6:
localctx = new FlushStatementContext(this, localctx);
this.enterOuterAlt(localctx, 6);
this.state = 903;
localctx.stmt = this.flush_statement();
break;
case 7:
localctx = new BreakStatementContext(this, localctx);
this.enterOuterAlt(localctx, 7);
this.state = 904;
localctx.stmt = this.break_statement();
break;
case 8:
localctx = new ReturnStatementContext(this, localctx);
this.enterOuterAlt(localctx, 8);
this.state = 905;
localctx.stmt = this.return_statement();
break;
case 9:
localctx = new IfStatementContext(this, localctx);
this.enterOuterAlt(localctx, 9);
this.state = 906;
localctx.stmt = this.if_statement();
break;
case 10:
localctx = new SwitchStatementContext(this, localctx);
this.enterOuterAlt(localctx, 10);
this.state = 907;
localctx.stmt = this.switch_statement();
break;
case 11:
localctx = new ForEachStatementContext(this, localctx);
this.enterOuterAlt(localctx, 11);
this.state = 908;
localctx.stmt = this.for_each_statement();
break;
case 12:
localctx = new WhileStatementContext(this, localctx);
this.enterOuterAlt(localctx, 12);
this.state = 909;
localctx.stmt = this.while_statement();
break;
case 13:
localctx = new DoWhileStatementContext(this, localctx);
this.enterOuterAlt(localctx, 13);
this.state = 910;
localctx.stmt = this.do_while_statement();
break;
case 14:
localctx = new RaiseStatementContext(this, localctx);
this.enterOuterAlt(localctx, 14);
this.state = 911;
localctx.stmt = this.raise_statement();
break;
case 15:
localctx = new TryStatementContext(this, localctx);
this.enterOuterAlt(localctx, 15);
this.state = 912;
localctx.stmt = this.try_statement();
break;
case 16:
localctx = new WriteStatementContext(this, localctx);
this.enterOuterAlt(localctx, 16);
this.state = 913;
localctx.stmt = this.write_statement();
break;
case 17:
localctx = new WithResourceStatementContext(this, localctx);
this.enterOuterAlt(localctx, 17);
this.state = 914;
localctx.stmt = this.with_resource_statement();
break;
case 18:
localctx = new WithSingletonStatementContext(this, localctx);
this.enterOuterAlt(localctx, 18);
this.state = 915;
localctx.stmt = this.with_singleton_statement();
break;
case 19:
localctx = new ClosureStatementContext(this, localctx);
this.enterOuterAlt(localctx, 19);
this.state = 916;
localctx.decl = this.concrete_method_declaration();
break;
case 20:
localctx = new CommentStatementContext(this, localctx);
this.enterOuterAlt(localctx, 20);
this.state = 917;
localctx.decl = this.comment_statement();
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 Flush_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 = EParser.RULE_flush_statement;
return this;
}
Flush_statementContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Flush_statementContext.prototype.constructor = Flush_statementContext;
Flush_statementContext.prototype.FLUSH = function() {
return this.getToken(EParser.FLUSH, 0);
};
Flush_statementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterFlush_statement(this);
}
};
Flush_statementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitFlush_statement(this);
}
};
EParser.Flush_statementContext = Flush_statementContext;
EParser.prototype.flush_statement = function() {
var localctx = new Flush_statementContext(this, this._ctx, this.state);
this.enterRule(localctx, 56, EParser.RULE_flush_statement);
try {
this.enterOuterAlt(localctx, 1);
this.state = 920;
this.match(EParser.FLUSH);
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Store_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 = EParser.RULE_store_statement;
this.to_del = null; // Expression_listContext
this.to_add = null; // Expression_listContext
this.stmts = null; // Statement_listContext
return this;
}
Store_statementContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Store_statementContext.prototype.constructor = Store_statementContext;
Store_statementContext.prototype.DELETE = function() {
return this.getToken(EParser.DELETE, 0);
};
Store_statementContext.prototype.STORE = function() {
return this.getToken(EParser.STORE, 0);
};
Store_statementContext.prototype.expression_list = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(Expression_listContext);
} else {
return this.getTypedRuleContext(Expression_listContext,i);
}
};
Store_statementContext.prototype.THEN = function() {
return this.getToken(EParser.THEN, 0);
};
Store_statementContext.prototype.COLON = function() {
return this.getToken(EParser.COLON, 0);
};
Store_statementContext.prototype.indent = function() {
return this.getTypedRuleContext(IndentContext,0);
};
Store_statementContext.prototype.dedent = function() {
return this.getTypedRuleContext(DedentContext,0);
};
Store_statementContext.prototype.statement_list = function() {
return this.getTypedRuleContext(Statement_listContext,0);
};
Store_statementContext.prototype.AND = function() {
return this.getToken(EParser.AND, 0);
};
Store_statementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterStore_statement(this);
}
};
Store_statementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitStore_statement(this);
}
};
EParser.Store_statementContext = Store_statementContext;
EParser.prototype.store_statement = function() {
var localctx = new Store_statementContext(this, this._ctx, this.state);
this.enterRule(localctx, 58, EParser.RULE_store_statement);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 931;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case EParser.DELETE:
this.state = 922;
this.match(EParser.DELETE);
this.state = 923;
localctx.to_del = this.expression_list();
this.state = 927;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.AND) {
this.state = 924;
this.match(EParser.AND);
this.state = 925;
this.match(EParser.STORE);
this.state = 926;
localctx.to_add = this.expression_list();
}
break;
case EParser.STORE:
this.state = 929;
this.match(EParser.STORE);
this.state = 930;
localctx.to_add = this.expression_list();
break;
default:
throw new antlr4.error.NoViableAltException(this);
}
this.state = 939;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.THEN) {
this.state = 933;
this.match(EParser.THEN);
this.state = 934;
this.match(EParser.COLON);
this.state = 935;
this.indent();
this.state = 936;
localctx.stmts = this.statement_list();
this.state = 937;
this.dedent();
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Method_call_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 = EParser.RULE_method_call_statement;
return this;
}
Method_call_statementContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Method_call_statementContext.prototype.constructor = Method_call_statementContext;
Method_call_statementContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function InvokeStatementContext(parser, ctx) {
Method_call_statementContext.call(this, parser);
this.exp = null; // Invocation_expressionContext;
Method_call_statementContext.prototype.copyFrom.call(this, ctx);
return this;
}
InvokeStatementContext.prototype = Object.create(Method_call_statementContext.prototype);
InvokeStatementContext.prototype.constructor = InvokeStatementContext;
EParser.InvokeStatementContext = InvokeStatementContext;
InvokeStatementContext.prototype.invocation_expression = function() {
return this.getTypedRuleContext(Invocation_expressionContext,0);
};
InvokeStatementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterInvokeStatement(this);
}
};
InvokeStatementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitInvokeStatement(this);
}
};
function UnresolvedWithArgsStatementContext(parser, ctx) {
Method_call_statementContext.call(this, parser);
this.exp = null; // Unresolved_expressionContext;
this.args = null; // Argument_assignment_listContext;
this.name = null; // Variable_identifierContext;
this.stmts = null; // Statement_listContext;
Method_call_statementContext.prototype.copyFrom.call(this, ctx);
return this;
}
UnresolvedWithArgsStatementContext.prototype = Object.create(Method_call_statementContext.prototype);
UnresolvedWithArgsStatementContext.prototype.constructor = UnresolvedWithArgsStatementContext;
EParser.UnresolvedWithArgsStatementContext = UnresolvedWithArgsStatementContext;
UnresolvedWithArgsStatementContext.prototype.unresolved_expression = function() {
return this.getTypedRuleContext(Unresolved_expressionContext,0);
};
UnresolvedWithArgsStatementContext.prototype.THEN = function() {
return this.getToken(EParser.THEN, 0);
};
UnresolvedWithArgsStatementContext.prototype.COLON = function() {
return this.getToken(EParser.COLON, 0);
};
UnresolvedWithArgsStatementContext.prototype.indent = function() {
return this.getTypedRuleContext(IndentContext,0);
};
UnresolvedWithArgsStatementContext.prototype.dedent = function() {
return this.getTypedRuleContext(DedentContext,0);
};
UnresolvedWithArgsStatementContext.prototype.argument_assignment_list = function() {
return this.getTypedRuleContext(Argument_assignment_listContext,0);
};
UnresolvedWithArgsStatementContext.prototype.statement_list = function() {
return this.getTypedRuleContext(Statement_listContext,0);
};
UnresolvedWithArgsStatementContext.prototype.WITH = function() {
return this.getToken(EParser.WITH, 0);
};
UnresolvedWithArgsStatementContext.prototype.variable_identifier = function() {
return this.getTypedRuleContext(Variable_identifierContext,0);
};
UnresolvedWithArgsStatementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterUnresolvedWithArgsStatement(this);
}
};
UnresolvedWithArgsStatementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitUnresolvedWithArgsStatement(this);
}
};
EParser.Method_call_statementContext = Method_call_statementContext;
EParser.prototype.method_call_statement = function() {
var localctx = new Method_call_statementContext(this, this._ctx, this.state);
this.enterRule(localctx, 60, EParser.RULE_method_call_statement);
var _la = 0; // Token type
try {
this.state = 958;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case EParser.SYMBOL_IDENTIFIER:
case EParser.TYPE_IDENTIFIER:
case EParser.VARIABLE_IDENTIFIER:
localctx = new UnresolvedWithArgsStatementContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 941;
localctx.exp = this.unresolved_expression(0);
this.state = 943;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,45,this._ctx);
if(la_===1) {
this.state = 942;
localctx.args = this.argument_assignment_list();
}
this.state = 955;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.THEN) {
this.state = 945;
this.match(EParser.THEN);
this.state = 948;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.WITH) {
this.state = 946;
this.match(EParser.WITH);
this.state = 947;
localctx.name = this.variable_identifier();
}
this.state = 950;
this.match(EParser.COLON);
this.state = 951;
this.indent();
this.state = 952;
localctx.stmts = this.statement_list();
this.state = 953;
this.dedent();
}
break;
case EParser.INVOKE:
localctx = new InvokeStatementContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 957;
localctx.exp = this.invocation_expression();
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 With_resource_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 = EParser.RULE_with_resource_statement;
this.stmt = null; // Assign_variable_statementContext
this.stmts = null; // Statement_listContext
return this;
}
With_resource_statementContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
With_resource_statementContext.prototype.constructor = With_resource_statementContext;
With_resource_statementContext.prototype.WITH = function() {
return this.getToken(EParser.WITH, 0);
};
With_resource_statementContext.prototype.COMMA = function() {
return this.getToken(EParser.COMMA, 0);
};
With_resource_statementContext.prototype.DO = function() {
return this.getToken(EParser.DO, 0);
};
With_resource_statementContext.prototype.COLON = function() {
return this.getToken(EParser.COLON, 0);
};
With_resource_statementContext.prototype.indent = function() {
return this.getTypedRuleContext(IndentContext,0);
};
With_resource_statementContext.prototype.dedent = function() {
return this.getTypedRuleContext(DedentContext,0);
};
With_resource_statementContext.prototype.assign_variable_statement = function() {
return this.getTypedRuleContext(Assign_variable_statementContext,0);
};
With_resource_statementContext.prototype.statement_list = function() {
return this.getTypedRuleContext(Statement_listContext,0);
};
With_resource_statementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterWith_resource_statement(this);
}
};
With_resource_statementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitWith_resource_statement(this);
}
};
EParser.With_resource_statementContext = With_resource_statementContext;
EParser.prototype.with_resource_statement = function() {
var localctx = new With_resource_statementContext(this, this._ctx, this.state);
this.enterRule(localctx, 62, EParser.RULE_with_resource_statement);
try {
this.enterOuterAlt(localctx, 1);
this.state = 960;
this.match(EParser.WITH);
this.state = 961;
localctx.stmt = this.assign_variable_statement();
this.state = 962;
this.match(EParser.COMMA);
this.state = 963;
this.match(EParser.DO);
this.state = 964;
this.match(EParser.COLON);
this.state = 965;
this.indent();
this.state = 966;
localctx.stmts = this.statement_list();
this.state = 967;
this.dedent();
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function With_singleton_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 = EParser.RULE_with_singleton_statement;
this.typ = null; // Type_identifierContext
this.stmts = null; // Statement_listContext
return this;
}
With_singleton_statementContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
With_singleton_statementContext.prototype.constructor = With_singleton_statementContext;
With_singleton_statementContext.prototype.WITH = function() {
return this.getToken(EParser.WITH, 0);
};
With_singleton_statementContext.prototype.COMMA = function() {
return this.getToken(EParser.COMMA, 0);
};
With_singleton_statementContext.prototype.DO = function() {
return this.getToken(EParser.DO, 0);
};
With_singleton_statementContext.prototype.COLON = function() {
return this.getToken(EParser.COLON, 0);
};
With_singleton_statementContext.prototype.indent = function() {
return this.getTypedRuleContext(IndentContext,0);
};
With_singleton_statementContext.prototype.dedent = function() {
return this.getTypedRuleContext(DedentContext,0);
};
With_singleton_statementContext.prototype.type_identifier = function() {
return this.getTypedRuleContext(Type_identifierContext,0);
};
With_singleton_statementContext.prototype.statement_list = function() {
return this.getTypedRuleContext(Statement_listContext,0);
};
With_singleton_statementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterWith_singleton_statement(this);
}
};
With_singleton_statementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitWith_singleton_statement(this);
}
};
EParser.With_singleton_statementContext = With_singleton_statementContext;
EParser.prototype.with_singleton_statement = function() {
var localctx = new With_singleton_statementContext(this, this._ctx, this.state);
this.enterRule(localctx, 64, EParser.RULE_with_singleton_statement);
try {
this.enterOuterAlt(localctx, 1);
this.state = 969;
this.match(EParser.WITH);
this.state = 970;
localctx.typ = this.type_identifier();
this.state = 971;
this.match(EParser.COMMA);
this.state = 972;
this.match(EParser.DO);
this.state = 973;
this.match(EParser.COLON);
this.state = 974;
this.indent();
this.state = 975;
localctx.stmts = this.statement_list();
this.state = 976;
this.dedent();
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Switch_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 = EParser.RULE_switch_statement;
this.exp = null; // ExpressionContext
this.cases = null; // Switch_case_statement_listContext
this.stmts = null; // Statement_listContext
return this;
}
Switch_statementContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Switch_statementContext.prototype.constructor = Switch_statementContext;
Switch_statementContext.prototype.SWITCH = function() {
return this.getToken(EParser.SWITCH, 0);
};
Switch_statementContext.prototype.ON = function() {
return this.getToken(EParser.ON, 0);
};
Switch_statementContext.prototype.COLON = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(EParser.COLON);
} else {
return this.getToken(EParser.COLON, i);
}
};
Switch_statementContext.prototype.indent = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(IndentContext);
} else {
return this.getTypedRuleContext(IndentContext,i);
}
};
Switch_statementContext.prototype.dedent = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(DedentContext);
} else {
return this.getTypedRuleContext(DedentContext,i);
}
};
Switch_statementContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
Switch_statementContext.prototype.switch_case_statement_list = function() {
return this.getTypedRuleContext(Switch_case_statement_listContext,0);
};
Switch_statementContext.prototype.lfp = function() {
return this.getTypedRuleContext(LfpContext,0);
};
Switch_statementContext.prototype.OTHERWISE = function() {
return this.getToken(EParser.OTHERWISE, 0);
};
Switch_statementContext.prototype.statement_list = function() {
return this.getTypedRuleContext(Statement_listContext,0);
};
Switch_statementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterSwitch_statement(this);
}
};
Switch_statementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitSwitch_statement(this);
}
};
EParser.Switch_statementContext = Switch_statementContext;
EParser.prototype.switch_statement = function() {
var localctx = new Switch_statementContext(this, this._ctx, this.state);
this.enterRule(localctx, 66, EParser.RULE_switch_statement);
try {
this.enterOuterAlt(localctx, 1);
this.state = 978;
this.match(EParser.SWITCH);
this.state = 979;
this.match(EParser.ON);
this.state = 980;
localctx.exp = this.expression(0);
this.state = 981;
this.match(EParser.COLON);
this.state = 982;
this.indent();
this.state = 983;
localctx.cases = this.switch_case_statement_list();
this.state = 991;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,49,this._ctx);
if(la_===1) {
this.state = 984;
this.lfp();
this.state = 985;
this.match(EParser.OTHERWISE);
this.state = 986;
this.match(EParser.COLON);
this.state = 987;
this.indent();
this.state = 988;
localctx.stmts = this.statement_list();
this.state = 989;
this.dedent();
}
this.state = 993;
this.dedent();
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Switch_case_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 = EParser.RULE_switch_case_statement;
return this;
}
Switch_case_statementContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Switch_case_statementContext.prototype.constructor = Switch_case_statementContext;
Switch_case_statementContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function AtomicSwitchCaseContext(parser, ctx) {
Switch_case_statementContext.call(this, parser);
this.exp = null; // Atomic_literalContext;
this.stmts = null; // Statement_listContext;
Switch_case_statementContext.prototype.copyFrom.call(this, ctx);
return this;
}
AtomicSwitchCaseContext.prototype = Object.create(Switch_case_statementContext.prototype);
AtomicSwitchCaseContext.prototype.constructor = AtomicSwitchCaseContext;
EParser.AtomicSwitchCaseContext = AtomicSwitchCaseContext;
AtomicSwitchCaseContext.prototype.WHEN = function() {
return this.getToken(EParser.WHEN, 0);
};
AtomicSwitchCaseContext.prototype.COLON = function() {
return this.getToken(EParser.COLON, 0);
};
AtomicSwitchCaseContext.prototype.indent = function() {
return this.getTypedRuleContext(IndentContext,0);
};
AtomicSwitchCaseContext.prototype.dedent = function() {
return this.getTypedRuleContext(DedentContext,0);
};
AtomicSwitchCaseContext.prototype.atomic_literal = function() {
return this.getTypedRuleContext(Atomic_literalContext,0);
};
AtomicSwitchCaseContext.prototype.statement_list = function() {
return this.getTypedRuleContext(Statement_listContext,0);
};
AtomicSwitchCaseContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterAtomicSwitchCase(this);
}
};
AtomicSwitchCaseContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitAtomicSwitchCase(this);
}
};
function CollectionSwitchCaseContext(parser, ctx) {
Switch_case_statementContext.call(this, parser);
this.exp = null; // Literal_collectionContext;
this.stmts = null; // Statement_listContext;
Switch_case_statementContext.prototype.copyFrom.call(this, ctx);
return this;
}
CollectionSwitchCaseContext.prototype = Object.create(Switch_case_statementContext.prototype);
CollectionSwitchCaseContext.prototype.constructor = CollectionSwitchCaseContext;
EParser.CollectionSwitchCaseContext = CollectionSwitchCaseContext;
CollectionSwitchCaseContext.prototype.WHEN = function() {
return this.getToken(EParser.WHEN, 0);
};
CollectionSwitchCaseContext.prototype.IN = function() {
return this.getToken(EParser.IN, 0);
};
CollectionSwitchCaseContext.prototype.COLON = function() {
return this.getToken(EParser.COLON, 0);
};
CollectionSwitchCaseContext.prototype.indent = function() {
return this.getTypedRuleContext(IndentContext,0);
};
CollectionSwitchCaseContext.prototype.dedent = function() {
return this.getTypedRuleContext(DedentContext,0);
};
CollectionSwitchCaseContext.prototype.literal_collection = function() {
return this.getTypedRuleContext(Literal_collectionContext,0);
};
CollectionSwitchCaseContext.prototype.statement_list = function() {
return this.getTypedRuleContext(Statement_listContext,0);
};
CollectionSwitchCaseContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterCollectionSwitchCase(this);
}
};
CollectionSwitchCaseContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitCollectionSwitchCase(this);
}
};
EParser.Switch_case_statementContext = Switch_case_statementContext;
EParser.prototype.switch_case_statement = function() {
var localctx = new Switch_case_statementContext(this, this._ctx, this.state);
this.enterRule(localctx, 68, EParser.RULE_switch_case_statement);
try {
this.state = 1010;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,50,this._ctx);
switch(la_) {
case 1:
localctx = new AtomicSwitchCaseContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 995;
this.match(EParser.WHEN);
this.state = 996;
localctx.exp = this.atomic_literal();
this.state = 997;
this.match(EParser.COLON);
this.state = 998;
this.indent();
this.state = 999;
localctx.stmts = this.statement_list();
this.state = 1000;
this.dedent();
break;
case 2:
localctx = new CollectionSwitchCaseContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 1002;
this.match(EParser.WHEN);
this.state = 1003;
this.match(EParser.IN);
this.state = 1004;
localctx.exp = this.literal_collection();
this.state = 1005;
this.match(EParser.COLON);
this.state = 1006;
this.indent();
this.state = 1007;
localctx.stmts = this.statement_list();
this.state = 1008;
this.dedent();
break;
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function For_each_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 = EParser.RULE_for_each_statement;
this.name1 = null; // Variable_identifierContext
this.name2 = null; // Variable_identifierContext
this.source = null; // ExpressionContext
this.stmts = null; // Statement_listContext
return this;
}
For_each_statementContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
For_each_statementContext.prototype.constructor = For_each_statementContext;
For_each_statementContext.prototype.FOR = function() {
return this.getToken(EParser.FOR, 0);
};
For_each_statementContext.prototype.EACH = function() {
return this.getToken(EParser.EACH, 0);
};
For_each_statementContext.prototype.IN = function() {
return this.getToken(EParser.IN, 0);
};
For_each_statementContext.prototype.COLON = function() {
return this.getToken(EParser.COLON, 0);
};
For_each_statementContext.prototype.indent = function() {
return this.getTypedRuleContext(IndentContext,0);
};
For_each_statementContext.prototype.dedent = function() {
return this.getTypedRuleContext(DedentContext,0);
};
For_each_statementContext.prototype.variable_identifier = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(Variable_identifierContext);
} else {
return this.getTypedRuleContext(Variable_identifierContext,i);
}
};
For_each_statementContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
For_each_statementContext.prototype.statement_list = function() {
return this.getTypedRuleContext(Statement_listContext,0);
};
For_each_statementContext.prototype.COMMA = function() {
return this.getToken(EParser.COMMA, 0);
};
For_each_statementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterFor_each_statement(this);
}
};
For_each_statementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitFor_each_statement(this);
}
};
EParser.For_each_statementContext = For_each_statementContext;
EParser.prototype.for_each_statement = function() {
var localctx = new For_each_statementContext(this, this._ctx, this.state);
this.enterRule(localctx, 70, EParser.RULE_for_each_statement);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 1012;
this.match(EParser.FOR);
this.state = 1013;
this.match(EParser.EACH);
this.state = 1014;
localctx.name1 = this.variable_identifier();
this.state = 1017;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.COMMA) {
this.state = 1015;
this.match(EParser.COMMA);
this.state = 1016;
localctx.name2 = this.variable_identifier();
}
this.state = 1019;
this.match(EParser.IN);
this.state = 1020;
localctx.source = this.expression(0);
this.state = 1021;
this.match(EParser.COLON);
this.state = 1022;
this.indent();
this.state = 1023;
localctx.stmts = this.statement_list();
this.state = 1024;
this.dedent();
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Do_while_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 = EParser.RULE_do_while_statement;
this.stmts = null; // Statement_listContext
this.exp = null; // ExpressionContext
return this;
}
Do_while_statementContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Do_while_statementContext.prototype.constructor = Do_while_statementContext;
Do_while_statementContext.prototype.DO = function() {
return this.getToken(EParser.DO, 0);
};
Do_while_statementContext.prototype.COLON = function() {
return this.getToken(EParser.COLON, 0);
};
Do_while_statementContext.prototype.indent = function() {
return this.getTypedRuleContext(IndentContext,0);
};
Do_while_statementContext.prototype.dedent = function() {
return this.getTypedRuleContext(DedentContext,0);
};
Do_while_statementContext.prototype.lfp = function() {
return this.getTypedRuleContext(LfpContext,0);
};
Do_while_statementContext.prototype.WHILE = function() {
return this.getToken(EParser.WHILE, 0);
};
Do_while_statementContext.prototype.statement_list = function() {
return this.getTypedRuleContext(Statement_listContext,0);
};
Do_while_statementContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
Do_while_statementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterDo_while_statement(this);
}
};
Do_while_statementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitDo_while_statement(this);
}
};
EParser.Do_while_statementContext = Do_while_statementContext;
EParser.prototype.do_while_statement = function() {
var localctx = new Do_while_statementContext(this, this._ctx, this.state);
this.enterRule(localctx, 72, EParser.RULE_do_while_statement);
try {
this.enterOuterAlt(localctx, 1);
this.state = 1026;
this.match(EParser.DO);
this.state = 1027;
this.match(EParser.COLON);
this.state = 1028;
this.indent();
this.state = 1029;
localctx.stmts = this.statement_list();
this.state = 1030;
this.dedent();
this.state = 1031;
this.lfp();
this.state = 1032;
this.match(EParser.WHILE);
this.state = 1033;
localctx.exp = this.expression(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 While_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 = EParser.RULE_while_statement;
this.exp = null; // ExpressionContext
this.stmts = null; // Statement_listContext
return this;
}
While_statementContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
While_statementContext.prototype.constructor = While_statementContext;
While_statementContext.prototype.WHILE = function() {
return this.getToken(EParser.WHILE, 0);
};
While_statementContext.prototype.COLON = function() {
return this.getToken(EParser.COLON, 0);
};
While_statementContext.prototype.indent = function() {
return this.getTypedRuleContext(IndentContext,0);
};
While_statementContext.prototype.dedent = function() {
return this.getTypedRuleContext(DedentContext,0);
};
While_statementContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
While_statementContext.prototype.statement_list = function() {
return this.getTypedRuleContext(Statement_listContext,0);
};
While_statementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterWhile_statement(this);
}
};
While_statementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitWhile_statement(this);
}
};
EParser.While_statementContext = While_statementContext;
EParser.prototype.while_statement = function() {
var localctx = new While_statementContext(this, this._ctx, this.state);
this.enterRule(localctx, 74, EParser.RULE_while_statement);
try {
this.enterOuterAlt(localctx, 1);
this.state = 1035;
this.match(EParser.WHILE);
this.state = 1036;
localctx.exp = this.expression(0);
this.state = 1037;
this.match(EParser.COLON);
this.state = 1038;
this.indent();
this.state = 1039;
localctx.stmts = this.statement_list();
this.state = 1040;
this.dedent();
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function If_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 = EParser.RULE_if_statement;
this.exp = null; // ExpressionContext
this.stmts = null; // Statement_listContext
this.elseIfs = null; // Else_if_statement_listContext
this.elseStmts = null; // Statement_listContext
return this;
}
If_statementContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
If_statementContext.prototype.constructor = If_statementContext;
If_statementContext.prototype.IF = function() {
return this.getToken(EParser.IF, 0);
};
If_statementContext.prototype.COLON = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(EParser.COLON);
} else {
return this.getToken(EParser.COLON, i);
}
};
If_statementContext.prototype.indent = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(IndentContext);
} else {
return this.getTypedRuleContext(IndentContext,i);
}
};
If_statementContext.prototype.dedent = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(DedentContext);
} else {
return this.getTypedRuleContext(DedentContext,i);
}
};
If_statementContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
If_statementContext.prototype.statement_list = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(Statement_listContext);
} else {
return this.getTypedRuleContext(Statement_listContext,i);
}
};
If_statementContext.prototype.lfp = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(LfpContext);
} else {
return this.getTypedRuleContext(LfpContext,i);
}
};
If_statementContext.prototype.ELSE = function() {
return this.getToken(EParser.ELSE, 0);
};
If_statementContext.prototype.else_if_statement_list = function() {
return this.getTypedRuleContext(Else_if_statement_listContext,0);
};
If_statementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterIf_statement(this);
}
};
If_statementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitIf_statement(this);
}
};
EParser.If_statementContext = If_statementContext;
EParser.prototype.if_statement = function() {
var localctx = new If_statementContext(this, this._ctx, this.state);
this.enterRule(localctx, 76, EParser.RULE_if_statement);
try {
this.enterOuterAlt(localctx, 1);
this.state = 1042;
this.match(EParser.IF);
this.state = 1043;
localctx.exp = this.expression(0);
this.state = 1044;
this.match(EParser.COLON);
this.state = 1045;
this.indent();
this.state = 1046;
localctx.stmts = this.statement_list();
this.state = 1047;
this.dedent();
this.state = 1051;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,52,this._ctx);
if(la_===1) {
this.state = 1048;
this.lfp();
this.state = 1049;
localctx.elseIfs = this.else_if_statement_list(0);
}
this.state = 1060;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,53,this._ctx);
if(la_===1) {
this.state = 1053;
this.lfp();
this.state = 1054;
this.match(EParser.ELSE);
this.state = 1055;
this.match(EParser.COLON);
this.state = 1056;
this.indent();
this.state = 1057;
localctx.elseStmts = this.statement_list();
this.state = 1058;
this.dedent();
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Else_if_statement_listContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_else_if_statement_list;
return this;
}
Else_if_statement_listContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Else_if_statement_listContext.prototype.constructor = Else_if_statement_listContext;
Else_if_statement_listContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function ElseIfStatementListContext(parser, ctx) {
Else_if_statement_listContext.call(this, parser);
this.exp = null; // ExpressionContext;
this.stmts = null; // Statement_listContext;
Else_if_statement_listContext.prototype.copyFrom.call(this, ctx);
return this;
}
ElseIfStatementListContext.prototype = Object.create(Else_if_statement_listContext.prototype);
ElseIfStatementListContext.prototype.constructor = ElseIfStatementListContext;
EParser.ElseIfStatementListContext = ElseIfStatementListContext;
ElseIfStatementListContext.prototype.ELSE = function() {
return this.getToken(EParser.ELSE, 0);
};
ElseIfStatementListContext.prototype.IF = function() {
return this.getToken(EParser.IF, 0);
};
ElseIfStatementListContext.prototype.COLON = function() {
return this.getToken(EParser.COLON, 0);
};
ElseIfStatementListContext.prototype.indent = function() {
return this.getTypedRuleContext(IndentContext,0);
};
ElseIfStatementListContext.prototype.dedent = function() {
return this.getTypedRuleContext(DedentContext,0);
};
ElseIfStatementListContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
ElseIfStatementListContext.prototype.statement_list = function() {
return this.getTypedRuleContext(Statement_listContext,0);
};
ElseIfStatementListContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterElseIfStatementList(this);
}
};
ElseIfStatementListContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitElseIfStatementList(this);
}
};
function ElseIfStatementListItemContext(parser, ctx) {
Else_if_statement_listContext.call(this, parser);
this.items = null; // Else_if_statement_listContext;
this.exp = null; // ExpressionContext;
this.stmts = null; // Statement_listContext;
Else_if_statement_listContext.prototype.copyFrom.call(this, ctx);
return this;
}
ElseIfStatementListItemContext.prototype = Object.create(Else_if_statement_listContext.prototype);
ElseIfStatementListItemContext.prototype.constructor = ElseIfStatementListItemContext;
EParser.ElseIfStatementListItemContext = ElseIfStatementListItemContext;
ElseIfStatementListItemContext.prototype.lfp = function() {
return this.getTypedRuleContext(LfpContext,0);
};
ElseIfStatementListItemContext.prototype.ELSE = function() {
return this.getToken(EParser.ELSE, 0);
};
ElseIfStatementListItemContext.prototype.IF = function() {
return this.getToken(EParser.IF, 0);
};
ElseIfStatementListItemContext.prototype.COLON = function() {
return this.getToken(EParser.COLON, 0);
};
ElseIfStatementListItemContext.prototype.indent = function() {
return this.getTypedRuleContext(IndentContext,0);
};
ElseIfStatementListItemContext.prototype.dedent = function() {
return this.getTypedRuleContext(DedentContext,0);
};
ElseIfStatementListItemContext.prototype.else_if_statement_list = function() {
return this.getTypedRuleContext(Else_if_statement_listContext,0);
};
ElseIfStatementListItemContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
ElseIfStatementListItemContext.prototype.statement_list = function() {
return this.getTypedRuleContext(Statement_listContext,0);
};
ElseIfStatementListItemContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterElseIfStatementListItem(this);
}
};
ElseIfStatementListItemContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitElseIfStatementListItem(this);
}
};
EParser.prototype.else_if_statement_list = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new Else_if_statement_listContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 78;
this.enterRecursionRule(localctx, 78, EParser.RULE_else_if_statement_list, _p);
try {
this.enterOuterAlt(localctx, 1);
localctx = new ElseIfStatementListContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1063;
this.match(EParser.ELSE);
this.state = 1064;
this.match(EParser.IF);
this.state = 1065;
localctx.exp = this.expression(0);
this.state = 1066;
this.match(EParser.COLON);
this.state = 1067;
this.indent();
this.state = 1068;
localctx.stmts = this.statement_list();
this.state = 1069;
this.dedent();
this._ctx.stop = this._input.LT(-1);
this.state = 1083;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,54,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 ElseIfStatementListItemContext(this, new Else_if_statement_listContext(this, _parentctx, _parentState));
localctx.items = _prevctx;
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_else_if_statement_list);
this.state = 1071;
if (!( this.precpred(this._ctx, 1))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
}
this.state = 1072;
this.lfp();
this.state = 1073;
this.match(EParser.ELSE);
this.state = 1074;
this.match(EParser.IF);
this.state = 1075;
localctx.exp = this.expression(0);
this.state = 1076;
this.match(EParser.COLON);
this.state = 1077;
this.indent();
this.state = 1078;
localctx.stmts = this.statement_list();
this.state = 1079;
this.dedent();
}
this.state = 1085;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,54,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 Raise_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 = EParser.RULE_raise_statement;
this.exp = null; // ExpressionContext
return this;
}
Raise_statementContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Raise_statementContext.prototype.constructor = Raise_statementContext;
Raise_statementContext.prototype.RAISE = function() {
return this.getToken(EParser.RAISE, 0);
};
Raise_statementContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
Raise_statementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterRaise_statement(this);
}
};
Raise_statementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitRaise_statement(this);
}
};
EParser.Raise_statementContext = Raise_statementContext;
EParser.prototype.raise_statement = function() {
var localctx = new Raise_statementContext(this, this._ctx, this.state);
this.enterRule(localctx, 80, EParser.RULE_raise_statement);
try {
this.enterOuterAlt(localctx, 1);
this.state = 1086;
this.match(EParser.RAISE);
this.state = 1087;
localctx.exp = this.expression(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 Try_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 = EParser.RULE_try_statement;
this.name = null; // Variable_identifierContext
this.stmts = null; // Statement_listContext
this.handlers = null; // Catch_statement_listContext
this.anyStmts = null; // Statement_listContext
this.finalStmts = null; // Statement_listContext
return this;
}
Try_statementContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Try_statementContext.prototype.constructor = Try_statementContext;
Try_statementContext.prototype.SWITCH = function() {
return this.getToken(EParser.SWITCH, 0);
};
Try_statementContext.prototype.ON = function() {
return this.getToken(EParser.ON, 0);
};
Try_statementContext.prototype.DOING = function() {
return this.getToken(EParser.DOING, 0);
};
Try_statementContext.prototype.COLON = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(EParser.COLON);
} else {
return this.getToken(EParser.COLON, i);
}
};
Try_statementContext.prototype.indent = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(IndentContext);
} else {
return this.getTypedRuleContext(IndentContext,i);
}
};
Try_statementContext.prototype.dedent = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(DedentContext);
} else {
return this.getTypedRuleContext(DedentContext,i);
}
};
Try_statementContext.prototype.lfs = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(LfsContext);
} else {
return this.getTypedRuleContext(LfsContext,i);
}
};
Try_statementContext.prototype.variable_identifier = function() {
return this.getTypedRuleContext(Variable_identifierContext,0);
};
Try_statementContext.prototype.statement_list = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(Statement_listContext);
} else {
return this.getTypedRuleContext(Statement_listContext,i);
}
};
Try_statementContext.prototype.ALWAYS = function() {
return this.getToken(EParser.ALWAYS, 0);
};
Try_statementContext.prototype.catch_statement_list = function() {
return this.getTypedRuleContext(Catch_statement_listContext,0);
};
Try_statementContext.prototype.OTHERWISE = function() {
return this.getToken(EParser.OTHERWISE, 0);
};
Try_statementContext.prototype.WHEN = function() {
return this.getToken(EParser.WHEN, 0);
};
Try_statementContext.prototype.ANY = function() {
return this.getToken(EParser.ANY, 0);
};
Try_statementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterTry_statement(this);
}
};
Try_statementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitTry_statement(this);
}
};
EParser.Try_statementContext = Try_statementContext;
EParser.prototype.try_statement = function() {
var localctx = new Try_statementContext(this, this._ctx, this.state);
this.enterRule(localctx, 82, EParser.RULE_try_statement);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 1089;
this.match(EParser.SWITCH);
this.state = 1090;
this.match(EParser.ON);
this.state = 1091;
localctx.name = this.variable_identifier();
this.state = 1092;
this.match(EParser.DOING);
this.state = 1093;
this.match(EParser.COLON);
this.state = 1094;
this.indent();
this.state = 1095;
localctx.stmts = this.statement_list();
this.state = 1096;
this.dedent();
this.state = 1097;
this.lfs();
this.state = 1099;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,55,this._ctx);
if(la_===1) {
this.state = 1098;
localctx.handlers = this.catch_statement_list();
}
this.state = 1112;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.OTHERWISE || _la===EParser.WHEN) {
this.state = 1104;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case EParser.OTHERWISE:
this.state = 1101;
this.match(EParser.OTHERWISE);
break;
case EParser.WHEN:
this.state = 1102;
this.match(EParser.WHEN);
this.state = 1103;
this.match(EParser.ANY);
break;
default:
throw new antlr4.error.NoViableAltException(this);
}
this.state = 1106;
this.match(EParser.COLON);
this.state = 1107;
this.indent();
this.state = 1108;
localctx.anyStmts = this.statement_list();
this.state = 1109;
this.dedent();
this.state = 1110;
this.lfs();
}
this.state = 1121;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.ALWAYS) {
this.state = 1114;
this.match(EParser.ALWAYS);
this.state = 1115;
this.match(EParser.COLON);
this.state = 1116;
this.indent();
this.state = 1117;
localctx.finalStmts = this.statement_list();
this.state = 1118;
this.dedent();
this.state = 1119;
this.lfs();
}
this.state = 1123;
this.lfs();
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Catch_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 = EParser.RULE_catch_statement;
return this;
}
Catch_statementContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Catch_statementContext.prototype.constructor = Catch_statementContext;
Catch_statementContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function CatchAtomicStatementContext(parser, ctx) {
Catch_statementContext.call(this, parser);
this.name = null; // Symbol_identifierContext;
this.stmts = null; // Statement_listContext;
Catch_statementContext.prototype.copyFrom.call(this, ctx);
return this;
}
CatchAtomicStatementContext.prototype = Object.create(Catch_statementContext.prototype);
CatchAtomicStatementContext.prototype.constructor = CatchAtomicStatementContext;
EParser.CatchAtomicStatementContext = CatchAtomicStatementContext;
CatchAtomicStatementContext.prototype.WHEN = function() {
return this.getToken(EParser.WHEN, 0);
};
CatchAtomicStatementContext.prototype.COLON = function() {
return this.getToken(EParser.COLON, 0);
};
CatchAtomicStatementContext.prototype.indent = function() {
return this.getTypedRuleContext(IndentContext,0);
};
CatchAtomicStatementContext.prototype.dedent = function() {
return this.getTypedRuleContext(DedentContext,0);
};
CatchAtomicStatementContext.prototype.lfs = function() {
return this.getTypedRuleContext(LfsContext,0);
};
CatchAtomicStatementContext.prototype.symbol_identifier = function() {
return this.getTypedRuleContext(Symbol_identifierContext,0);
};
CatchAtomicStatementContext.prototype.statement_list = function() {
return this.getTypedRuleContext(Statement_listContext,0);
};
CatchAtomicStatementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterCatchAtomicStatement(this);
}
};
CatchAtomicStatementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitCatchAtomicStatement(this);
}
};
function CatchCollectionStatementContext(parser, ctx) {
Catch_statementContext.call(this, parser);
this.exp = null; // Symbol_listContext;
this.stmts = null; // Statement_listContext;
Catch_statementContext.prototype.copyFrom.call(this, ctx);
return this;
}
CatchCollectionStatementContext.prototype = Object.create(Catch_statementContext.prototype);
CatchCollectionStatementContext.prototype.constructor = CatchCollectionStatementContext;
EParser.CatchCollectionStatementContext = CatchCollectionStatementContext;
CatchCollectionStatementContext.prototype.WHEN = function() {
return this.getToken(EParser.WHEN, 0);
};
CatchCollectionStatementContext.prototype.IN = function() {
return this.getToken(EParser.IN, 0);
};
CatchCollectionStatementContext.prototype.LBRAK = function() {
return this.getToken(EParser.LBRAK, 0);
};
CatchCollectionStatementContext.prototype.RBRAK = function() {
return this.getToken(EParser.RBRAK, 0);
};
CatchCollectionStatementContext.prototype.COLON = function() {
return this.getToken(EParser.COLON, 0);
};
CatchCollectionStatementContext.prototype.indent = function() {
return this.getTypedRuleContext(IndentContext,0);
};
CatchCollectionStatementContext.prototype.dedent = function() {
return this.getTypedRuleContext(DedentContext,0);
};
CatchCollectionStatementContext.prototype.lfs = function() {
return this.getTypedRuleContext(LfsContext,0);
};
CatchCollectionStatementContext.prototype.symbol_list = function() {
return this.getTypedRuleContext(Symbol_listContext,0);
};
CatchCollectionStatementContext.prototype.statement_list = function() {
return this.getTypedRuleContext(Statement_listContext,0);
};
CatchCollectionStatementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterCatchCollectionStatement(this);
}
};
CatchCollectionStatementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitCatchCollectionStatement(this);
}
};
EParser.Catch_statementContext = Catch_statementContext;
EParser.prototype.catch_statement = function() {
var localctx = new Catch_statementContext(this, this._ctx, this.state);
this.enterRule(localctx, 84, EParser.RULE_catch_statement);
try {
this.state = 1144;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,59,this._ctx);
switch(la_) {
case 1:
localctx = new CatchAtomicStatementContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 1125;
this.match(EParser.WHEN);
this.state = 1126;
localctx.name = this.symbol_identifier();
this.state = 1127;
this.match(EParser.COLON);
this.state = 1128;
this.indent();
this.state = 1129;
localctx.stmts = this.statement_list();
this.state = 1130;
this.dedent();
this.state = 1131;
this.lfs();
break;
case 2:
localctx = new CatchCollectionStatementContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 1133;
this.match(EParser.WHEN);
this.state = 1134;
this.match(EParser.IN);
this.state = 1135;
this.match(EParser.LBRAK);
this.state = 1136;
localctx.exp = this.symbol_list();
this.state = 1137;
this.match(EParser.RBRAK);
this.state = 1138;
this.match(EParser.COLON);
this.state = 1139;
this.indent();
this.state = 1140;
localctx.stmts = this.statement_list();
this.state = 1141;
this.dedent();
this.state = 1142;
this.lfs();
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 Break_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 = EParser.RULE_break_statement;
return this;
}
Break_statementContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Break_statementContext.prototype.constructor = Break_statementContext;
Break_statementContext.prototype.BREAK = function() {
return this.getToken(EParser.BREAK, 0);
};
Break_statementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterBreak_statement(this);
}
};
Break_statementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitBreak_statement(this);
}
};
EParser.Break_statementContext = Break_statementContext;
EParser.prototype.break_statement = function() {
var localctx = new Break_statementContext(this, this._ctx, this.state);
this.enterRule(localctx, 86, EParser.RULE_break_statement);
try {
this.enterOuterAlt(localctx, 1);
this.state = 1146;
this.match(EParser.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 Return_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 = EParser.RULE_return_statement;
this.exp = null; // ExpressionContext
return this;
}
Return_statementContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Return_statementContext.prototype.constructor = Return_statementContext;
Return_statementContext.prototype.RETURN = function() {
return this.getToken(EParser.RETURN, 0);
};
Return_statementContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
Return_statementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterReturn_statement(this);
}
};
Return_statementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitReturn_statement(this);
}
};
EParser.Return_statementContext = Return_statementContext;
EParser.prototype.return_statement = function() {
var localctx = new Return_statementContext(this, this._ctx, this.state);
this.enterRule(localctx, 88, EParser.RULE_return_statement);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 1148;
this.match(EParser.RETURN);
this.state = 1150;
this._errHandler.sync(this);
_la = this._input.LA(1);
if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << EParser.LPAR) | (1 << EParser.LBRAK) | (1 << EParser.LCURL))) !== 0) || ((((_la - 33)) & ~0x1f) == 0 && ((1 << (_la - 33)) & ((1 << (EParser.MINUS - 33)) | (1 << (EParser.LT - 33)) | (1 << (EParser.LTGT - 33)) | (1 << (EParser.LTCOLONGT - 33)) | (1 << (EParser.METHOD_T - 33)) | (1 << (EParser.CODE - 33)) | (1 << (EParser.DOCUMENT - 33)) | (1 << (EParser.BLOB - 33)))) !== 0) || ((((_la - 101)) & ~0x1f) == 0 && ((1 << (_la - 101)) & ((1 << (EParser.EXECUTE - 101)) | (1 << (EParser.FETCH - 101)) | (1 << (EParser.INVOKE - 101)) | (1 << (EParser.MUTABLE - 101)) | (1 << (EParser.NOT - 101)) | (1 << (EParser.NOTHING - 101)))) !== 0) || ((((_la - 136)) & ~0x1f) == 0 && ((1 << (_la - 136)) & ((1 << (EParser.READ - 136)) | (1 << (EParser.SELF - 136)) | (1 << (EParser.SORTED - 136)) | (1 << (EParser.THIS - 136)) | (1 << (EParser.BOOLEAN_LITERAL - 136)) | (1 << (EParser.CHAR_LITERAL - 136)) | (1 << (EParser.MIN_INTEGER - 136)) | (1 << (EParser.MAX_INTEGER - 136)) | (1 << (EParser.SYMBOL_IDENTIFIER - 136)) | (1 << (EParser.TYPE_IDENTIFIER - 136)))) !== 0) || ((((_la - 168)) & ~0x1f) == 0 && ((1 << (_la - 168)) & ((1 << (EParser.VARIABLE_IDENTIFIER - 168)) | (1 << (EParser.TEXT_LITERAL - 168)) | (1 << (EParser.UUID_LITERAL - 168)) | (1 << (EParser.INTEGER_LITERAL - 168)) | (1 << (EParser.HEXA_LITERAL - 168)) | (1 << (EParser.DECIMAL_LITERAL - 168)) | (1 << (EParser.DATETIME_LITERAL - 168)) | (1 << (EParser.TIME_LITERAL - 168)) | (1 << (EParser.DATE_LITERAL - 168)) | (1 << (EParser.PERIOD_LITERAL - 168)) | (1 << (EParser.VERSION_LITERAL - 168)))) !== 0)) {
this.state = 1149;
localctx.exp = this.expression(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 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 = EParser.RULE_expression;
return this;
}
ExpressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
ExpressionContext.prototype.constructor = ExpressionContext;
ExpressionContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function IntDivideExpressionContext(parser, ctx) {
ExpressionContext.call(this, parser);
this.left = null; // ExpressionContext;
this.right = null; // ExpressionContext;
ExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
IntDivideExpressionContext.prototype = Object.create(ExpressionContext.prototype);
IntDivideExpressionContext.prototype.constructor = IntDivideExpressionContext;
EParser.IntDivideExpressionContext = IntDivideExpressionContext;
IntDivideExpressionContext.prototype.idivide = function() {
return this.getTypedRuleContext(IdivideContext,0);
};
IntDivideExpressionContext.prototype.expression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ExpressionContext);
} else {
return this.getTypedRuleContext(ExpressionContext,i);
}
};
IntDivideExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterIntDivideExpression(this);
}
};
IntDivideExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitIntDivideExpression(this);
}
};
function HasAnyExpressionContext(parser, ctx) {
ExpressionContext.call(this, parser);
this.left = null; // ExpressionContext;
this.right = null; // ExpressionContext;
ExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
HasAnyExpressionContext.prototype = Object.create(ExpressionContext.prototype);
HasAnyExpressionContext.prototype.constructor = HasAnyExpressionContext;
EParser.HasAnyExpressionContext = HasAnyExpressionContext;
HasAnyExpressionContext.prototype.HAS = function() {
return this.getToken(EParser.HAS, 0);
};
HasAnyExpressionContext.prototype.ANY = function() {
return this.getToken(EParser.ANY, 0);
};
HasAnyExpressionContext.prototype.expression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ExpressionContext);
} else {
return this.getTypedRuleContext(ExpressionContext,i);
}
};
HasAnyExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterHasAnyExpression(this);
}
};
HasAnyExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitHasAnyExpression(this);
}
};
function HasExpressionContext(parser, ctx) {
ExpressionContext.call(this, parser);
this.left = null; // ExpressionContext;
this.right = null; // ExpressionContext;
ExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
HasExpressionContext.prototype = Object.create(ExpressionContext.prototype);
HasExpressionContext.prototype.constructor = HasExpressionContext;
EParser.HasExpressionContext = HasExpressionContext;
HasExpressionContext.prototype.HAS = function() {
return this.getToken(EParser.HAS, 0);
};
HasExpressionContext.prototype.expression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ExpressionContext);
} else {
return this.getTypedRuleContext(ExpressionContext,i);
}
};
HasExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterHasExpression(this);
}
};
HasExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitHasExpression(this);
}
};
function InExpressionContext(parser, ctx) {
ExpressionContext.call(this, parser);
this.left = null; // ExpressionContext;
this.right = null; // ExpressionContext;
ExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
InExpressionContext.prototype = Object.create(ExpressionContext.prototype);
InExpressionContext.prototype.constructor = InExpressionContext;
EParser.InExpressionContext = InExpressionContext;
InExpressionContext.prototype.IN = function() {
return this.getToken(EParser.IN, 0);
};
InExpressionContext.prototype.expression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ExpressionContext);
} else {
return this.getTypedRuleContext(ExpressionContext,i);
}
};
InExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterInExpression(this);
}
};
InExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitInExpression(this);
}
};
function JsxExpressionContext(parser, ctx) {
ExpressionContext.call(this, parser);
this.exp = null; // Jsx_expressionContext;
ExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
JsxExpressionContext.prototype = Object.create(ExpressionContext.prototype);
JsxExpressionContext.prototype.constructor = JsxExpressionContext;
EParser.JsxExpressionContext = JsxExpressionContext;
JsxExpressionContext.prototype.jsx_expression = function() {
return this.getTypedRuleContext(Jsx_expressionContext,0);
};
JsxExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJsxExpression(this);
}
};
JsxExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJsxExpression(this);
}
};
function GreaterThanExpressionContext(parser, ctx) {
ExpressionContext.call(this, parser);
this.left = null; // ExpressionContext;
this.right = null; // ExpressionContext;
ExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
GreaterThanExpressionContext.prototype = Object.create(ExpressionContext.prototype);
GreaterThanExpressionContext.prototype.constructor = GreaterThanExpressionContext;
EParser.GreaterThanExpressionContext = GreaterThanExpressionContext;
GreaterThanExpressionContext.prototype.GT = function() {
return this.getToken(EParser.GT, 0);
};
GreaterThanExpressionContext.prototype.expression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ExpressionContext);
} else {
return this.getTypedRuleContext(ExpressionContext,i);
}
};
GreaterThanExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterGreaterThanExpression(this);
}
};
GreaterThanExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitGreaterThanExpression(this);
}
};
function OrExpressionContext(parser, ctx) {
ExpressionContext.call(this, parser);
this.left = null; // ExpressionContext;
this.right = null; // ExpressionContext;
ExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
OrExpressionContext.prototype = Object.create(ExpressionContext.prototype);
OrExpressionContext.prototype.constructor = OrExpressionContext;
EParser.OrExpressionContext = OrExpressionContext;
OrExpressionContext.prototype.OR = function() {
return this.getToken(EParser.OR, 0);
};
OrExpressionContext.prototype.expression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ExpressionContext);
} else {
return this.getTypedRuleContext(ExpressionContext,i);
}
};
OrExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterOrExpression(this);
}
};
OrExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitOrExpression(this);
}
};
function ReadOneExpressionContext(parser, ctx) {
ExpressionContext.call(this, parser);
this.exp = null; // Read_one_expressionContext;
ExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
ReadOneExpressionContext.prototype = Object.create(ExpressionContext.prototype);
ReadOneExpressionContext.prototype.constructor = ReadOneExpressionContext;
EParser.ReadOneExpressionContext = ReadOneExpressionContext;
ReadOneExpressionContext.prototype.read_one_expression = function() {
return this.getTypedRuleContext(Read_one_expressionContext,0);
};
ReadOneExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterReadOneExpression(this);
}
};
ReadOneExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitReadOneExpression(this);
}
};
function NotHasAnyExpressionContext(parser, ctx) {
ExpressionContext.call(this, parser);
this.left = null; // ExpressionContext;
this.right = null; // ExpressionContext;
ExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
NotHasAnyExpressionContext.prototype = Object.create(ExpressionContext.prototype);
NotHasAnyExpressionContext.prototype.constructor = NotHasAnyExpressionContext;
EParser.NotHasAnyExpressionContext = NotHasAnyExpressionContext;
NotHasAnyExpressionContext.prototype.NOT = function() {
return this.getToken(EParser.NOT, 0);
};
NotHasAnyExpressionContext.prototype.HAS = function() {
return this.getToken(EParser.HAS, 0);
};
NotHasAnyExpressionContext.prototype.ANY = function() {
return this.getToken(EParser.ANY, 0);
};
NotHasAnyExpressionContext.prototype.expression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ExpressionContext);
} else {
return this.getTypedRuleContext(ExpressionContext,i);
}
};
NotHasAnyExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterNotHasAnyExpression(this);
}
};
NotHasAnyExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitNotHasAnyExpression(this);
}
};
function AndExpressionContext(parser, ctx) {
ExpressionContext.call(this, parser);
this.left = null; // ExpressionContext;
this.right = null; // ExpressionContext;
ExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
AndExpressionContext.prototype = Object.create(ExpressionContext.prototype);
AndExpressionContext.prototype.constructor = AndExpressionContext;
EParser.AndExpressionContext = AndExpressionContext;
AndExpressionContext.prototype.AND = function() {
return this.getToken(EParser.AND, 0);
};
AndExpressionContext.prototype.expression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ExpressionContext);
} else {
return this.getTypedRuleContext(ExpressionContext,i);
}
};
AndExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterAndExpression(this);
}
};
AndExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitAndExpression(this);
}
};
function MethodCallExpressionContext(parser, ctx) {
ExpressionContext.call(this, parser);
this.exp1 = null; // Instance_expressionContext;
this.exp2 = null; // Unresolved_expressionContext;
this.args = null; // Argument_assignment_listContext;
ExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
MethodCallExpressionContext.prototype = Object.create(ExpressionContext.prototype);
MethodCallExpressionContext.prototype.constructor = MethodCallExpressionContext;
EParser.MethodCallExpressionContext = MethodCallExpressionContext;
MethodCallExpressionContext.prototype.argument_assignment_list = function() {
return this.getTypedRuleContext(Argument_assignment_listContext,0);
};
MethodCallExpressionContext.prototype.instance_expression = function() {
return this.getTypedRuleContext(Instance_expressionContext,0);
};
MethodCallExpressionContext.prototype.unresolved_expression = function() {
return this.getTypedRuleContext(Unresolved_expressionContext,0);
};
MethodCallExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterMethodCallExpression(this);
}
};
MethodCallExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitMethodCallExpression(this);
}
};
function FetchExpressionContext(parser, ctx) {
ExpressionContext.call(this, parser);
this.exp = null; // Fetch_expressionContext;
ExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
FetchExpressionContext.prototype = Object.create(ExpressionContext.prototype);
FetchExpressionContext.prototype.constructor = FetchExpressionContext;
EParser.FetchExpressionContext = FetchExpressionContext;
FetchExpressionContext.prototype.fetch_expression = function() {
return this.getTypedRuleContext(Fetch_expressionContext,0);
};
FetchExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterFetchExpression(this);
}
};
FetchExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitFetchExpression(this);
}
};
function NotHasExpressionContext(parser, ctx) {
ExpressionContext.call(this, parser);
this.left = null; // ExpressionContext;
this.right = null; // ExpressionContext;
ExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
NotHasExpressionContext.prototype = Object.create(ExpressionContext.prototype);
NotHasExpressionContext.prototype.constructor = NotHasExpressionContext;
EParser.NotHasExpressionContext = NotHasExpressionContext;
NotHasExpressionContext.prototype.NOT = function() {
return this.getToken(EParser.NOT, 0);
};
NotHasExpressionContext.prototype.HAS = function() {
return this.getToken(EParser.HAS, 0);
};
NotHasExpressionContext.prototype.expression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ExpressionContext);
} else {
return this.getTypedRuleContext(ExpressionContext,i);
}
};
NotHasExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterNotHasExpression(this);
}
};
NotHasExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitNotHasExpression(this);
}
};
function SortedExpressionContext(parser, ctx) {
ExpressionContext.call(this, parser);
this.exp = null; // Sorted_expressionContext;
ExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
SortedExpressionContext.prototype = Object.create(ExpressionContext.prototype);
SortedExpressionContext.prototype.constructor = SortedExpressionContext;
EParser.SortedExpressionContext = SortedExpressionContext;
SortedExpressionContext.prototype.sorted_expression = function() {
return this.getTypedRuleContext(Sorted_expressionContext,0);
};
SortedExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterSortedExpression(this);
}
};
SortedExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitSortedExpression(this);
}
};
function NotHasAllExpressionContext(parser, ctx) {
ExpressionContext.call(this, parser);
this.left = null; // ExpressionContext;
this.right = null; // ExpressionContext;
ExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
NotHasAllExpressionContext.prototype = Object.create(ExpressionContext.prototype);
NotHasAllExpressionContext.prototype.constructor = NotHasAllExpressionContext;
EParser.NotHasAllExpressionContext = NotHasAllExpressionContext;
NotHasAllExpressionContext.prototype.NOT = function() {
return this.getToken(EParser.NOT, 0);
};
NotHasAllExpressionContext.prototype.HAS = function() {
return this.getToken(EParser.HAS, 0);
};
NotHasAllExpressionContext.prototype.ALL = function() {
return this.getToken(EParser.ALL, 0);
};
NotHasAllExpressionContext.prototype.expression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ExpressionContext);
} else {
return this.getTypedRuleContext(ExpressionContext,i);
}
};
NotHasAllExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterNotHasAllExpression(this);
}
};
NotHasAllExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitNotHasAllExpression(this);
}
};
function ContainsExpressionContext(parser, ctx) {
ExpressionContext.call(this, parser);
this.left = null; // ExpressionContext;
this.right = null; // ExpressionContext;
ExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
ContainsExpressionContext.prototype = Object.create(ExpressionContext.prototype);
ContainsExpressionContext.prototype.constructor = ContainsExpressionContext;
EParser.ContainsExpressionContext = ContainsExpressionContext;
ContainsExpressionContext.prototype.CONTAINS = function() {
return this.getToken(EParser.CONTAINS, 0);
};
ContainsExpressionContext.prototype.expression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ExpressionContext);
} else {
return this.getTypedRuleContext(ExpressionContext,i);
}
};
ContainsExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterContainsExpression(this);
}
};
ContainsExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitContainsExpression(this);
}
};
function NotContainsExpressionContext(parser, ctx) {
ExpressionContext.call(this, parser);
this.left = null; // ExpressionContext;
this.right = null; // ExpressionContext;
ExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
NotContainsExpressionContext.prototype = Object.create(ExpressionContext.prototype);
NotContainsExpressionContext.prototype.constructor = NotContainsExpressionContext;
EParser.NotContainsExpressionContext = NotContainsExpressionContext;
NotContainsExpressionContext.prototype.NOT = function() {
return this.getToken(EParser.NOT, 0);
};
NotContainsExpressionContext.prototype.CONTAINS = function() {
return this.getToken(EParser.CONTAINS, 0);
};
NotContainsExpressionContext.prototype.expression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ExpressionContext);
} else {
return this.getTypedRuleContext(ExpressionContext,i);
}
};
NotContainsExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterNotContainsExpression(this);
}
};
NotContainsExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitNotContainsExpression(this);
}
};
function RoughlyEqualsExpressionContext(parser, ctx) {
ExpressionContext.call(this, parser);
this.left = null; // ExpressionContext;
this.right = null; // ExpressionContext;
ExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
RoughlyEqualsExpressionContext.prototype = Object.create(ExpressionContext.prototype);
RoughlyEqualsExpressionContext.prototype.constructor = RoughlyEqualsExpressionContext;
EParser.RoughlyEqualsExpressionContext = RoughlyEqualsExpressionContext;
RoughlyEqualsExpressionContext.prototype.TILDE = function() {
return this.getToken(EParser.TILDE, 0);
};
RoughlyEqualsExpressionContext.prototype.expression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ExpressionContext);
} else {
return this.getTypedRuleContext(ExpressionContext,i);
}
};
RoughlyEqualsExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterRoughlyEqualsExpression(this);
}
};
RoughlyEqualsExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitRoughlyEqualsExpression(this);
}
};
function ExecuteExpressionContext(parser, ctx) {
ExpressionContext.call(this, parser);
this.name = null; // Variable_identifierContext;
ExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
ExecuteExpressionContext.prototype = Object.create(ExpressionContext.prototype);
ExecuteExpressionContext.prototype.constructor = ExecuteExpressionContext;
EParser.ExecuteExpressionContext = ExecuteExpressionContext;
ExecuteExpressionContext.prototype.EXECUTE = function() {
return this.getToken(EParser.EXECUTE, 0);
};
ExecuteExpressionContext.prototype.COLON = function() {
return this.getToken(EParser.COLON, 0);
};
ExecuteExpressionContext.prototype.variable_identifier = function() {
return this.getTypedRuleContext(Variable_identifierContext,0);
};
ExecuteExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterExecuteExpression(this);
}
};
ExecuteExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitExecuteExpression(this);
}
};
function GreaterThanOrEqualExpressionContext(parser, ctx) {
ExpressionContext.call(this, parser);
this.left = null; // ExpressionContext;
this.right = null; // ExpressionContext;
ExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
GreaterThanOrEqualExpressionContext.prototype = Object.create(ExpressionContext.prototype);
GreaterThanOrEqualExpressionContext.prototype.constructor = GreaterThanOrEqualExpressionContext;
EParser.GreaterThanOrEqualExpressionContext = GreaterThanOrEqualExpressionContext;
GreaterThanOrEqualExpressionContext.prototype.GTE = function() {
return this.getToken(EParser.GTE, 0);
};
GreaterThanOrEqualExpressionContext.prototype.expression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ExpressionContext);
} else {
return this.getTypedRuleContext(ExpressionContext,i);
}
};
GreaterThanOrEqualExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterGreaterThanOrEqualExpression(this);
}
};
GreaterThanOrEqualExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitGreaterThanOrEqualExpression(this);
}
};
function IteratorExpressionContext(parser, ctx) {
ExpressionContext.call(this, parser);
this.exp = null; // ExpressionContext;
this.name = null; // Variable_identifierContext;
this.source = null; // ExpressionContext;
ExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
IteratorExpressionContext.prototype = Object.create(ExpressionContext.prototype);
IteratorExpressionContext.prototype.constructor = IteratorExpressionContext;
EParser.IteratorExpressionContext = IteratorExpressionContext;
IteratorExpressionContext.prototype.FOR = function() {
return this.getToken(EParser.FOR, 0);
};
IteratorExpressionContext.prototype.EACH = function() {
return this.getToken(EParser.EACH, 0);
};
IteratorExpressionContext.prototype.IN = function() {
return this.getToken(EParser.IN, 0);
};
IteratorExpressionContext.prototype.expression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ExpressionContext);
} else {
return this.getTypedRuleContext(ExpressionContext,i);
}
};
IteratorExpressionContext.prototype.variable_identifier = function() {
return this.getTypedRuleContext(Variable_identifierContext,0);
};
IteratorExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterIteratorExpression(this);
}
};
IteratorExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitIteratorExpression(this);
}
};
function IsNotExpressionContext(parser, ctx) {
ExpressionContext.call(this, parser);
this.left = null; // ExpressionContext;
this.right = null; // Is_expressionContext;
ExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
IsNotExpressionContext.prototype = Object.create(ExpressionContext.prototype);
IsNotExpressionContext.prototype.constructor = IsNotExpressionContext;
EParser.IsNotExpressionContext = IsNotExpressionContext;
IsNotExpressionContext.prototype.IS = function() {
return this.getToken(EParser.IS, 0);
};
IsNotExpressionContext.prototype.NOT = function() {
return this.getToken(EParser.NOT, 0);
};
IsNotExpressionContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
IsNotExpressionContext.prototype.is_expression = function() {
return this.getTypedRuleContext(Is_expressionContext,0);
};
IsNotExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterIsNotExpression(this);
}
};
IsNotExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitIsNotExpression(this);
}
};
function DivideExpressionContext(parser, ctx) {
ExpressionContext.call(this, parser);
this.left = null; // ExpressionContext;
this.right = null; // ExpressionContext;
ExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
DivideExpressionContext.prototype = Object.create(ExpressionContext.prototype);
DivideExpressionContext.prototype.constructor = DivideExpressionContext;
EParser.DivideExpressionContext = DivideExpressionContext;
DivideExpressionContext.prototype.divide = function() {
return this.getTypedRuleContext(DivideContext,0);
};
DivideExpressionContext.prototype.expression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ExpressionContext);
} else {
return this.getTypedRuleContext(ExpressionContext,i);
}
};
DivideExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterDivideExpression(this);
}
};
DivideExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitDivideExpression(this);
}
};
function IsExpressionContext(parser, ctx) {
ExpressionContext.call(this, parser);
this.left = null; // ExpressionContext;
this.right = null; // Is_expressionContext;
ExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
IsExpressionContext.prototype = Object.create(ExpressionContext.prototype);
IsExpressionContext.prototype.constructor = IsExpressionContext;
EParser.IsExpressionContext = IsExpressionContext;
IsExpressionContext.prototype.IS = function() {
return this.getToken(EParser.IS, 0);
};
IsExpressionContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
IsExpressionContext.prototype.is_expression = function() {
return this.getTypedRuleContext(Is_expressionContext,0);
};
IsExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterIsExpression(this);
}
};
IsExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitIsExpression(this);
}
};
function AddExpressionContext(parser, ctx) {
ExpressionContext.call(this, parser);
this.left = null; // ExpressionContext;
this.op = null; // Token;
this.right = null; // ExpressionContext;
ExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
AddExpressionContext.prototype = Object.create(ExpressionContext.prototype);
AddExpressionContext.prototype.constructor = AddExpressionContext;
EParser.AddExpressionContext = AddExpressionContext;
AddExpressionContext.prototype.expression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ExpressionContext);
} else {
return this.getTypedRuleContext(ExpressionContext,i);
}
};
AddExpressionContext.prototype.PLUS = function() {
return this.getToken(EParser.PLUS, 0);
};
AddExpressionContext.prototype.MINUS = function() {
return this.getToken(EParser.MINUS, 0);
};
AddExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterAddExpression(this);
}
};
AddExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitAddExpression(this);
}
};
function InstanceExpressionContext(parser, ctx) {
ExpressionContext.call(this, parser);
this.exp = null; // Instance_expressionContext;
ExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
InstanceExpressionContext.prototype = Object.create(ExpressionContext.prototype);
InstanceExpressionContext.prototype.constructor = InstanceExpressionContext;
EParser.InstanceExpressionContext = InstanceExpressionContext;
InstanceExpressionContext.prototype.instance_expression = function() {
return this.getTypedRuleContext(Instance_expressionContext,0);
};
InstanceExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterInstanceExpression(this);
}
};
InstanceExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitInstanceExpression(this);
}
};
function ReadAllExpressionContext(parser, ctx) {
ExpressionContext.call(this, parser);
this.exp = null; // Read_all_expressionContext;
ExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
ReadAllExpressionContext.prototype = Object.create(ExpressionContext.prototype);
ReadAllExpressionContext.prototype.constructor = ReadAllExpressionContext;
EParser.ReadAllExpressionContext = ReadAllExpressionContext;
ReadAllExpressionContext.prototype.read_all_expression = function() {
return this.getTypedRuleContext(Read_all_expressionContext,0);
};
ReadAllExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterReadAllExpression(this);
}
};
ReadAllExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitReadAllExpression(this);
}
};
function CastExpressionContext(parser, ctx) {
ExpressionContext.call(this, parser);
this.left = null; // ExpressionContext;
this.right = null; // Category_or_any_typeContext;
ExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
CastExpressionContext.prototype = Object.create(ExpressionContext.prototype);
CastExpressionContext.prototype.constructor = CastExpressionContext;
EParser.CastExpressionContext = CastExpressionContext;
CastExpressionContext.prototype.AS = function() {
return this.getToken(EParser.AS, 0);
};
CastExpressionContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
CastExpressionContext.prototype.category_or_any_type = function() {
return this.getTypedRuleContext(Category_or_any_typeContext,0);
};
CastExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterCastExpression(this);
}
};
CastExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitCastExpression(this);
}
};
function ModuloExpressionContext(parser, ctx) {
ExpressionContext.call(this, parser);
this.left = null; // ExpressionContext;
this.right = null; // ExpressionContext;
ExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
ModuloExpressionContext.prototype = Object.create(ExpressionContext.prototype);
ModuloExpressionContext.prototype.constructor = ModuloExpressionContext;
EParser.ModuloExpressionContext = ModuloExpressionContext;
ModuloExpressionContext.prototype.modulo = function() {
return this.getTypedRuleContext(ModuloContext,0);
};
ModuloExpressionContext.prototype.expression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ExpressionContext);
} else {
return this.getTypedRuleContext(ExpressionContext,i);
}
};
ModuloExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterModuloExpression(this);
}
};
ModuloExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitModuloExpression(this);
}
};
function TernaryExpressionContext(parser, ctx) {
ExpressionContext.call(this, parser);
this.ifTrue = null; // ExpressionContext;
this.test = null; // ExpressionContext;
this.ifFalse = null; // ExpressionContext;
ExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
TernaryExpressionContext.prototype = Object.create(ExpressionContext.prototype);
TernaryExpressionContext.prototype.constructor = TernaryExpressionContext;
EParser.TernaryExpressionContext = TernaryExpressionContext;
TernaryExpressionContext.prototype.IF = function() {
return this.getToken(EParser.IF, 0);
};
TernaryExpressionContext.prototype.ELSE = function() {
return this.getToken(EParser.ELSE, 0);
};
TernaryExpressionContext.prototype.expression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ExpressionContext);
} else {
return this.getTypedRuleContext(ExpressionContext,i);
}
};
TernaryExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterTernaryExpression(this);
}
};
TernaryExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitTernaryExpression(this);
}
};
function NotEqualsExpressionContext(parser, ctx) {
ExpressionContext.call(this, parser);
this.left = null; // ExpressionContext;
this.right = null; // ExpressionContext;
ExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
NotEqualsExpressionContext.prototype = Object.create(ExpressionContext.prototype);
NotEqualsExpressionContext.prototype.constructor = NotEqualsExpressionContext;
EParser.NotEqualsExpressionContext = NotEqualsExpressionContext;
NotEqualsExpressionContext.prototype.LTGT = function() {
return this.getToken(EParser.LTGT, 0);
};
NotEqualsExpressionContext.prototype.expression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ExpressionContext);
} else {
return this.getTypedRuleContext(ExpressionContext,i);
}
};
NotEqualsExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterNotEqualsExpression(this);
}
};
NotEqualsExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitNotEqualsExpression(this);
}
};
function DocumentExpressionContext(parser, ctx) {
ExpressionContext.call(this, parser);
this.exp = null; // Document_expressionContext;
ExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
DocumentExpressionContext.prototype = Object.create(ExpressionContext.prototype);
DocumentExpressionContext.prototype.constructor = DocumentExpressionContext;
EParser.DocumentExpressionContext = DocumentExpressionContext;
DocumentExpressionContext.prototype.document_expression = function() {
return this.getTypedRuleContext(Document_expressionContext,0);
};
DocumentExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterDocumentExpression(this);
}
};
DocumentExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitDocumentExpression(this);
}
};
function NotExpressionContext(parser, ctx) {
ExpressionContext.call(this, parser);
this.exp = null; // ExpressionContext;
ExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
NotExpressionContext.prototype = Object.create(ExpressionContext.prototype);
NotExpressionContext.prototype.constructor = NotExpressionContext;
EParser.NotExpressionContext = NotExpressionContext;
NotExpressionContext.prototype.NOT = function() {
return this.getToken(EParser.NOT, 0);
};
NotExpressionContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
NotExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterNotExpression(this);
}
};
NotExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitNotExpression(this);
}
};
function InvocationExpressionContext(parser, ctx) {
ExpressionContext.call(this, parser);
this.exp = null; // Invocation_expressionContext;
ExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
InvocationExpressionContext.prototype = Object.create(ExpressionContext.prototype);
InvocationExpressionContext.prototype.constructor = InvocationExpressionContext;
EParser.InvocationExpressionContext = InvocationExpressionContext;
InvocationExpressionContext.prototype.invocation_expression = function() {
return this.getTypedRuleContext(Invocation_expressionContext,0);
};
InvocationExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterInvocationExpression(this);
}
};
InvocationExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitInvocationExpression(this);
}
};
function CodeExpressionContext(parser, ctx) {
ExpressionContext.call(this, parser);
this.exp = null; // ExpressionContext;
ExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
CodeExpressionContext.prototype = Object.create(ExpressionContext.prototype);
CodeExpressionContext.prototype.constructor = CodeExpressionContext;
EParser.CodeExpressionContext = CodeExpressionContext;
CodeExpressionContext.prototype.CODE = function() {
return this.getToken(EParser.CODE, 0);
};
CodeExpressionContext.prototype.COLON = function() {
return this.getToken(EParser.COLON, 0);
};
CodeExpressionContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
CodeExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterCodeExpression(this);
}
};
CodeExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitCodeExpression(this);
}
};
function AmbiguousExpressionContext(parser, ctx) {
ExpressionContext.call(this, parser);
this.exp = null; // Ambiguous_expressionContext;
ExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
AmbiguousExpressionContext.prototype = Object.create(ExpressionContext.prototype);
AmbiguousExpressionContext.prototype.constructor = AmbiguousExpressionContext;
EParser.AmbiguousExpressionContext = AmbiguousExpressionContext;
AmbiguousExpressionContext.prototype.ambiguous_expression = function() {
return this.getTypedRuleContext(Ambiguous_expressionContext,0);
};
AmbiguousExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterAmbiguousExpression(this);
}
};
AmbiguousExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitAmbiguousExpression(this);
}
};
function LessThanOrEqualExpressionContext(parser, ctx) {
ExpressionContext.call(this, parser);
this.left = null; // ExpressionContext;
this.right = null; // ExpressionContext;
ExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
LessThanOrEqualExpressionContext.prototype = Object.create(ExpressionContext.prototype);
LessThanOrEqualExpressionContext.prototype.constructor = LessThanOrEqualExpressionContext;
EParser.LessThanOrEqualExpressionContext = LessThanOrEqualExpressionContext;
LessThanOrEqualExpressionContext.prototype.LTE = function() {
return this.getToken(EParser.LTE, 0);
};
LessThanOrEqualExpressionContext.prototype.expression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ExpressionContext);
} else {
return this.getTypedRuleContext(ExpressionContext,i);
}
};
LessThanOrEqualExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterLessThanOrEqualExpression(this);
}
};
LessThanOrEqualExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitLessThanOrEqualExpression(this);
}
};
function ClosureExpressionContext(parser, ctx) {
ExpressionContext.call(this, parser);
this.name = null; // Method_identifierContext;
ExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
ClosureExpressionContext.prototype = Object.create(ExpressionContext.prototype);
ClosureExpressionContext.prototype.constructor = ClosureExpressionContext;
EParser.ClosureExpressionContext = ClosureExpressionContext;
ClosureExpressionContext.prototype.METHOD_T = function() {
return this.getToken(EParser.METHOD_T, 0);
};
ClosureExpressionContext.prototype.COLON = function() {
return this.getToken(EParser.COLON, 0);
};
ClosureExpressionContext.prototype.method_identifier = function() {
return this.getTypedRuleContext(Method_identifierContext,0);
};
ClosureExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterClosureExpression(this);
}
};
ClosureExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitClosureExpression(this);
}
};
function BlobExpressionContext(parser, ctx) {
ExpressionContext.call(this, parser);
this.exp = null; // Blob_expressionContext;
ExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
BlobExpressionContext.prototype = Object.create(ExpressionContext.prototype);
BlobExpressionContext.prototype.constructor = BlobExpressionContext;
EParser.BlobExpressionContext = BlobExpressionContext;
BlobExpressionContext.prototype.blob_expression = function() {
return this.getTypedRuleContext(Blob_expressionContext,0);
};
BlobExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterBlobExpression(this);
}
};
BlobExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitBlobExpression(this);
}
};
function FilteredListExpressionContext(parser, ctx) {
ExpressionContext.call(this, parser);
this.src = null; // ExpressionContext;
ExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
FilteredListExpressionContext.prototype = Object.create(ExpressionContext.prototype);
FilteredListExpressionContext.prototype.constructor = FilteredListExpressionContext;
EParser.FilteredListExpressionContext = FilteredListExpressionContext;
FilteredListExpressionContext.prototype.filtered_list_suffix = function() {
return this.getTypedRuleContext(Filtered_list_suffixContext,0);
};
FilteredListExpressionContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
FilteredListExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterFilteredListExpression(this);
}
};
FilteredListExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitFilteredListExpression(this);
}
};
function ConstructorExpressionContext(parser, ctx) {
ExpressionContext.call(this, parser);
this.exp = null; // Constructor_expressionContext;
ExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
ConstructorExpressionContext.prototype = Object.create(ExpressionContext.prototype);
ConstructorExpressionContext.prototype.constructor = ConstructorExpressionContext;
EParser.ConstructorExpressionContext = ConstructorExpressionContext;
ConstructorExpressionContext.prototype.constructor_expression = function() {
return this.getTypedRuleContext(Constructor_expressionContext,0);
};
ConstructorExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterConstructorExpression(this);
}
};
ConstructorExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitConstructorExpression(this);
}
};
function MultiplyExpressionContext(parser, ctx) {
ExpressionContext.call(this, parser);
this.left = null; // ExpressionContext;
this.right = null; // ExpressionContext;
ExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
MultiplyExpressionContext.prototype = Object.create(ExpressionContext.prototype);
MultiplyExpressionContext.prototype.constructor = MultiplyExpressionContext;
EParser.MultiplyExpressionContext = MultiplyExpressionContext;
MultiplyExpressionContext.prototype.multiply = function() {
return this.getTypedRuleContext(MultiplyContext,0);
};
MultiplyExpressionContext.prototype.expression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ExpressionContext);
} else {
return this.getTypedRuleContext(ExpressionContext,i);
}
};
MultiplyExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterMultiplyExpression(this);
}
};
MultiplyExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitMultiplyExpression(this);
}
};
function NotInExpressionContext(parser, ctx) {
ExpressionContext.call(this, parser);
this.left = null; // ExpressionContext;
this.right = null; // ExpressionContext;
ExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
NotInExpressionContext.prototype = Object.create(ExpressionContext.prototype);
NotInExpressionContext.prototype.constructor = NotInExpressionContext;
EParser.NotInExpressionContext = NotInExpressionContext;
NotInExpressionContext.prototype.NOT = function() {
return this.getToken(EParser.NOT, 0);
};
NotInExpressionContext.prototype.IN = function() {
return this.getToken(EParser.IN, 0);
};
NotInExpressionContext.prototype.expression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ExpressionContext);
} else {
return this.getTypedRuleContext(ExpressionContext,i);
}
};
NotInExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterNotInExpression(this);
}
};
NotInExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitNotInExpression(this);
}
};
function UnresolvedExpressionContext(parser, ctx) {
ExpressionContext.call(this, parser);
this.exp = null; // Unresolved_expressionContext;
ExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
UnresolvedExpressionContext.prototype = Object.create(ExpressionContext.prototype);
UnresolvedExpressionContext.prototype.constructor = UnresolvedExpressionContext;
EParser.UnresolvedExpressionContext = UnresolvedExpressionContext;
UnresolvedExpressionContext.prototype.unresolved_expression = function() {
return this.getTypedRuleContext(Unresolved_expressionContext,0);
};
UnresolvedExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterUnresolvedExpression(this);
}
};
UnresolvedExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitUnresolvedExpression(this);
}
};
function MinusExpressionContext(parser, ctx) {
ExpressionContext.call(this, parser);
this.exp = null; // ExpressionContext;
ExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
MinusExpressionContext.prototype = Object.create(ExpressionContext.prototype);
MinusExpressionContext.prototype.constructor = MinusExpressionContext;
EParser.MinusExpressionContext = MinusExpressionContext;
MinusExpressionContext.prototype.MINUS = function() {
return this.getToken(EParser.MINUS, 0);
};
MinusExpressionContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
MinusExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterMinusExpression(this);
}
};
MinusExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitMinusExpression(this);
}
};
function HasAllExpressionContext(parser, ctx) {
ExpressionContext.call(this, parser);
this.left = null; // ExpressionContext;
this.right = null; // ExpressionContext;
ExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
HasAllExpressionContext.prototype = Object.create(ExpressionContext.prototype);
HasAllExpressionContext.prototype.constructor = HasAllExpressionContext;
EParser.HasAllExpressionContext = HasAllExpressionContext;
HasAllExpressionContext.prototype.HAS = function() {
return this.getToken(EParser.HAS, 0);
};
HasAllExpressionContext.prototype.ALL = function() {
return this.getToken(EParser.ALL, 0);
};
HasAllExpressionContext.prototype.expression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ExpressionContext);
} else {
return this.getTypedRuleContext(ExpressionContext,i);
}
};
HasAllExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterHasAllExpression(this);
}
};
HasAllExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitHasAllExpression(this);
}
};
function CssExpressionContext(parser, ctx) {
ExpressionContext.call(this, parser);
this.exp = null; // Css_expressionContext;
ExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
CssExpressionContext.prototype = Object.create(ExpressionContext.prototype);
CssExpressionContext.prototype.constructor = CssExpressionContext;
EParser.CssExpressionContext = CssExpressionContext;
CssExpressionContext.prototype.css_expression = function() {
return this.getTypedRuleContext(Css_expressionContext,0);
};
CssExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterCssExpression(this);
}
};
CssExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitCssExpression(this);
}
};
function LessThanExpressionContext(parser, ctx) {
ExpressionContext.call(this, parser);
this.left = null; // ExpressionContext;
this.right = null; // ExpressionContext;
ExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
LessThanExpressionContext.prototype = Object.create(ExpressionContext.prototype);
LessThanExpressionContext.prototype.constructor = LessThanExpressionContext;
EParser.LessThanExpressionContext = LessThanExpressionContext;
LessThanExpressionContext.prototype.LT = function() {
return this.getToken(EParser.LT, 0);
};
LessThanExpressionContext.prototype.expression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ExpressionContext);
} else {
return this.getTypedRuleContext(ExpressionContext,i);
}
};
LessThanExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterLessThanExpression(this);
}
};
LessThanExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitLessThanExpression(this);
}
};
function EqualsExpressionContext(parser, ctx) {
ExpressionContext.call(this, parser);
this.left = null; // ExpressionContext;
this.right = null; // ExpressionContext;
ExpressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
EqualsExpressionContext.prototype = Object.create(ExpressionContext.prototype);
EqualsExpressionContext.prototype.constructor = EqualsExpressionContext;
EParser.EqualsExpressionContext = EqualsExpressionContext;
EqualsExpressionContext.prototype.EQ = function() {
return this.getToken(EParser.EQ, 0);
};
EqualsExpressionContext.prototype.expression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ExpressionContext);
} else {
return this.getTypedRuleContext(ExpressionContext,i);
}
};
EqualsExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterEqualsExpression(this);
}
};
EqualsExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitEqualsExpression(this);
}
};
EParser.prototype.expression = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new ExpressionContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 90;
this.enterRecursionRule(localctx, 90, EParser.RULE_expression, _p);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 1185;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,62,this._ctx);
switch(la_) {
case 1:
localctx = new CssExpressionContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1153;
localctx.exp = this.css_expression();
break;
case 2:
localctx = new JsxExpressionContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1154;
localctx.exp = this.jsx_expression();
break;
case 3:
localctx = new InstanceExpressionContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1155;
localctx.exp = this.instance_expression(0);
break;
case 4:
localctx = new UnresolvedExpressionContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1156;
localctx.exp = this.unresolved_expression(0);
break;
case 5:
localctx = new MethodCallExpressionContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1159;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,61,this._ctx);
switch(la_) {
case 1:
this.state = 1157;
localctx.exp1 = this.instance_expression(0);
break;
case 2:
this.state = 1158;
localctx.exp2 = this.unresolved_expression(0);
break;
}
this.state = 1161;
localctx.args = this.argument_assignment_list();
break;
case 6:
localctx = new MinusExpressionContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1163;
this.match(EParser.MINUS);
this.state = 1164;
localctx.exp = this.expression(44);
break;
case 7:
localctx = new NotExpressionContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1165;
this.match(EParser.NOT);
this.state = 1166;
localctx.exp = this.expression(43);
break;
case 8:
localctx = new CodeExpressionContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1167;
this.match(EParser.CODE);
this.state = 1168;
this.match(EParser.COLON);
this.state = 1169;
localctx.exp = this.expression(14);
break;
case 9:
localctx = new ExecuteExpressionContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1170;
this.match(EParser.EXECUTE);
this.state = 1171;
this.match(EParser.COLON);
this.state = 1172;
localctx.name = this.variable_identifier();
break;
case 10:
localctx = new ClosureExpressionContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1173;
this.match(EParser.METHOD_T);
this.state = 1174;
this.match(EParser.COLON);
this.state = 1175;
localctx.name = this.method_identifier();
break;
case 11:
localctx = new BlobExpressionContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1176;
localctx.exp = this.blob_expression();
break;
case 12:
localctx = new DocumentExpressionContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1177;
localctx.exp = this.document_expression();
break;
case 13:
localctx = new ConstructorExpressionContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1178;
localctx.exp = this.constructor_expression();
break;
case 14:
localctx = new FetchExpressionContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1179;
localctx.exp = this.fetch_expression();
break;
case 15:
localctx = new ReadAllExpressionContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1180;
localctx.exp = this.read_all_expression();
break;
case 16:
localctx = new ReadOneExpressionContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1181;
localctx.exp = this.read_one_expression();
break;
case 17:
localctx = new SortedExpressionContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1182;
localctx.exp = this.sorted_expression();
break;
case 18:
localctx = new AmbiguousExpressionContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1183;
localctx.exp = this.ambiguous_expression();
break;
case 19:
localctx = new InvocationExpressionContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1184;
localctx.exp = this.invocation_expression();
break;
}
this._ctx.stop = this._input.LT(-1);
this.state = 1299;
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 = 1297;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,63,this._ctx);
switch(la_) {
case 1:
localctx = new MultiplyExpressionContext(this, new ExpressionContext(this, _parentctx, _parentState));
localctx.left = _prevctx;
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_expression);
this.state = 1187;
if (!( this.precpred(this._ctx, 42))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 42)");
}
this.state = 1188;
this.multiply();
this.state = 1189;
localctx.right = this.expression(43);
break;
case 2:
localctx = new DivideExpressionContext(this, new ExpressionContext(this, _parentctx, _parentState));
localctx.left = _prevctx;
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_expression);
this.state = 1191;
if (!( this.precpred(this._ctx, 41))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 41)");
}
this.state = 1192;
this.divide();
this.state = 1193;
localctx.right = this.expression(42);
break;
case 3:
localctx = new ModuloExpressionContext(this, new ExpressionContext(this, _parentctx, _parentState));
localctx.left = _prevctx;
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_expression);
this.state = 1195;
if (!( this.precpred(this._ctx, 40))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 40)");
}
this.state = 1196;
this.modulo();
this.state = 1197;
localctx.right = this.expression(41);
break;
case 4:
localctx = new IntDivideExpressionContext(this, new ExpressionContext(this, _parentctx, _parentState));
localctx.left = _prevctx;
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_expression);
this.state = 1199;
if (!( this.precpred(this._ctx, 39))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 39)");
}
this.state = 1200;
this.idivide();
this.state = 1201;
localctx.right = this.expression(40);
break;
case 5:
localctx = new AddExpressionContext(this, new ExpressionContext(this, _parentctx, _parentState));
localctx.left = _prevctx;
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_expression);
this.state = 1203;
if (!( this.precpred(this._ctx, 38))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 38)");
}
this.state = 1204;
localctx.op = this._input.LT(1);
_la = this._input.LA(1);
if(!(_la===EParser.PLUS || _la===EParser.MINUS)) {
localctx.op = this._errHandler.recoverInline(this);
}
else {
this._errHandler.reportMatch(this);
this.consume();
}
this.state = 1205;
localctx.right = this.expression(39);
break;
case 6:
localctx = new LessThanExpressionContext(this, new ExpressionContext(this, _parentctx, _parentState));
localctx.left = _prevctx;
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_expression);
this.state = 1206;
if (!( this.precpred(this._ctx, 36))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 36)");
}
this.state = 1207;
this.match(EParser.LT);
this.state = 1208;
localctx.right = this.expression(37);
break;
case 7:
localctx = new LessThanOrEqualExpressionContext(this, new ExpressionContext(this, _parentctx, _parentState));
localctx.left = _prevctx;
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_expression);
this.state = 1209;
if (!( this.precpred(this._ctx, 35))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 35)");
}
this.state = 1210;
this.match(EParser.LTE);
this.state = 1211;
localctx.right = this.expression(36);
break;
case 8:
localctx = new GreaterThanExpressionContext(this, new ExpressionContext(this, _parentctx, _parentState));
localctx.left = _prevctx;
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_expression);
this.state = 1212;
if (!( this.precpred(this._ctx, 34))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 34)");
}
this.state = 1213;
this.match(EParser.GT);
this.state = 1214;
localctx.right = this.expression(35);
break;
case 9:
localctx = new GreaterThanOrEqualExpressionContext(this, new ExpressionContext(this, _parentctx, _parentState));
localctx.left = _prevctx;
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_expression);
this.state = 1215;
if (!( this.precpred(this._ctx, 33))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 33)");
}
this.state = 1216;
this.match(EParser.GTE);
this.state = 1217;
localctx.right = this.expression(34);
break;
case 10:
localctx = new EqualsExpressionContext(this, new ExpressionContext(this, _parentctx, _parentState));
localctx.left = _prevctx;
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_expression);
this.state = 1218;
if (!( this.precpred(this._ctx, 30))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 30)");
}
this.state = 1219;
this.match(EParser.EQ);
this.state = 1220;
localctx.right = this.expression(31);
break;
case 11:
localctx = new NotEqualsExpressionContext(this, new ExpressionContext(this, _parentctx, _parentState));
localctx.left = _prevctx;
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_expression);
this.state = 1221;
if (!( this.precpred(this._ctx, 29))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 29)");
}
this.state = 1222;
this.match(EParser.LTGT);
this.state = 1223;
localctx.right = this.expression(30);
break;
case 12:
localctx = new RoughlyEqualsExpressionContext(this, new ExpressionContext(this, _parentctx, _parentState));
localctx.left = _prevctx;
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_expression);
this.state = 1224;
if (!( this.precpred(this._ctx, 28))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 28)");
}
this.state = 1225;
this.match(EParser.TILDE);
this.state = 1226;
localctx.right = this.expression(29);
break;
case 13:
localctx = new ContainsExpressionContext(this, new ExpressionContext(this, _parentctx, _parentState));
localctx.left = _prevctx;
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_expression);
this.state = 1227;
if (!( this.precpred(this._ctx, 27))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 27)");
}
this.state = 1228;
this.match(EParser.CONTAINS);
this.state = 1229;
localctx.right = this.expression(28);
break;
case 14:
localctx = new InExpressionContext(this, new ExpressionContext(this, _parentctx, _parentState));
localctx.left = _prevctx;
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_expression);
this.state = 1230;
if (!( this.precpred(this._ctx, 26))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 26)");
}
this.state = 1231;
this.match(EParser.IN);
this.state = 1232;
localctx.right = this.expression(27);
break;
case 15:
localctx = new HasExpressionContext(this, new ExpressionContext(this, _parentctx, _parentState));
localctx.left = _prevctx;
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_expression);
this.state = 1233;
if (!( this.precpred(this._ctx, 25))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 25)");
}
this.state = 1234;
this.match(EParser.HAS);
this.state = 1235;
localctx.right = this.expression(26);
break;
case 16:
localctx = new HasAllExpressionContext(this, new ExpressionContext(this, _parentctx, _parentState));
localctx.left = _prevctx;
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_expression);
this.state = 1236;
if (!( this.precpred(this._ctx, 24))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 24)");
}
this.state = 1237;
this.match(EParser.HAS);
this.state = 1238;
this.match(EParser.ALL);
this.state = 1239;
localctx.right = this.expression(25);
break;
case 17:
localctx = new HasAnyExpressionContext(this, new ExpressionContext(this, _parentctx, _parentState));
localctx.left = _prevctx;
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_expression);
this.state = 1240;
if (!( this.precpred(this._ctx, 23))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 23)");
}
this.state = 1241;
this.match(EParser.HAS);
this.state = 1242;
this.match(EParser.ANY);
this.state = 1243;
localctx.right = this.expression(24);
break;
case 18:
localctx = new NotContainsExpressionContext(this, new ExpressionContext(this, _parentctx, _parentState));
localctx.left = _prevctx;
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_expression);
this.state = 1244;
if (!( this.precpred(this._ctx, 22))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 22)");
}
this.state = 1245;
this.match(EParser.NOT);
this.state = 1246;
this.match(EParser.CONTAINS);
this.state = 1247;
localctx.right = this.expression(23);
break;
case 19:
localctx = new NotInExpressionContext(this, new ExpressionContext(this, _parentctx, _parentState));
localctx.left = _prevctx;
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_expression);
this.state = 1248;
if (!( this.precpred(this._ctx, 21))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 21)");
}
this.state = 1249;
this.match(EParser.NOT);
this.state = 1250;
this.match(EParser.IN);
this.state = 1251;
localctx.right = this.expression(22);
break;
case 20:
localctx = new NotHasExpressionContext(this, new ExpressionContext(this, _parentctx, _parentState));
localctx.left = _prevctx;
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_expression);
this.state = 1252;
if (!( this.precpred(this._ctx, 20))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 20)");
}
this.state = 1253;
this.match(EParser.NOT);
this.state = 1254;
this.match(EParser.HAS);
this.state = 1255;
localctx.right = this.expression(21);
break;
case 21:
localctx = new NotHasAllExpressionContext(this, new ExpressionContext(this, _parentctx, _parentState));
localctx.left = _prevctx;
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_expression);
this.state = 1256;
if (!( this.precpred(this._ctx, 19))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 19)");
}
this.state = 1257;
this.match(EParser.NOT);
this.state = 1258;
this.match(EParser.HAS);
this.state = 1259;
this.match(EParser.ALL);
this.state = 1260;
localctx.right = this.expression(20);
break;
case 22:
localctx = new NotHasAnyExpressionContext(this, new ExpressionContext(this, _parentctx, _parentState));
localctx.left = _prevctx;
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_expression);
this.state = 1261;
if (!( this.precpred(this._ctx, 18))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 18)");
}
this.state = 1262;
this.match(EParser.NOT);
this.state = 1263;
this.match(EParser.HAS);
this.state = 1264;
this.match(EParser.ANY);
this.state = 1265;
localctx.right = this.expression(19);
break;
case 23:
localctx = new OrExpressionContext(this, new ExpressionContext(this, _parentctx, _parentState));
localctx.left = _prevctx;
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_expression);
this.state = 1266;
if (!( this.precpred(this._ctx, 17))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 17)");
}
this.state = 1267;
this.match(EParser.OR);
this.state = 1268;
localctx.right = this.expression(18);
break;
case 24:
localctx = new AndExpressionContext(this, new ExpressionContext(this, _parentctx, _parentState));
localctx.left = _prevctx;
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_expression);
this.state = 1269;
if (!( this.precpred(this._ctx, 16))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 16)");
}
this.state = 1270;
this.match(EParser.AND);
this.state = 1271;
localctx.right = this.expression(17);
break;
case 25:
localctx = new TernaryExpressionContext(this, new ExpressionContext(this, _parentctx, _parentState));
localctx.ifTrue = _prevctx;
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_expression);
this.state = 1272;
if (!( this.precpred(this._ctx, 15))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 15)");
}
this.state = 1273;
this.match(EParser.IF);
this.state = 1274;
localctx.test = this.expression(0);
this.state = 1275;
this.match(EParser.ELSE);
this.state = 1276;
localctx.ifFalse = this.expression(16);
break;
case 26:
localctx = new IteratorExpressionContext(this, new ExpressionContext(this, _parentctx, _parentState));
localctx.exp = _prevctx;
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_expression);
this.state = 1278;
if (!( this.precpred(this._ctx, 1))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
}
this.state = 1279;
this.match(EParser.FOR);
this.state = 1280;
this.match(EParser.EACH);
this.state = 1281;
localctx.name = this.variable_identifier();
this.state = 1282;
this.match(EParser.IN);
this.state = 1283;
localctx.source = this.expression(2);
break;
case 27:
localctx = new CastExpressionContext(this, new ExpressionContext(this, _parentctx, _parentState));
localctx.left = _prevctx;
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_expression);
this.state = 1285;
if (!( this.precpred(this._ctx, 37))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 37)");
}
this.state = 1286;
this.match(EParser.AS);
this.state = 1287;
localctx.right = this.category_or_any_type();
break;
case 28:
localctx = new IsNotExpressionContext(this, new ExpressionContext(this, _parentctx, _parentState));
localctx.left = _prevctx;
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_expression);
this.state = 1288;
if (!( this.precpred(this._ctx, 32))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 32)");
}
this.state = 1289;
this.match(EParser.IS);
this.state = 1290;
this.match(EParser.NOT);
this.state = 1291;
localctx.right = this.is_expression();
break;
case 29:
localctx = new IsExpressionContext(this, new ExpressionContext(this, _parentctx, _parentState));
localctx.left = _prevctx;
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_expression);
this.state = 1292;
if (!( this.precpred(this._ctx, 31))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 31)");
}
this.state = 1293;
this.match(EParser.IS);
this.state = 1294;
localctx.right = this.is_expression();
break;
case 30:
localctx = new FilteredListExpressionContext(this, new ExpressionContext(this, _parentctx, _parentState));
localctx.src = _prevctx;
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_expression);
this.state = 1295;
if (!( this.precpred(this._ctx, 8))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 8)");
}
this.state = 1296;
this.filtered_list_suffix();
break;
}
}
this.state = 1301;
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 Unresolved_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 = EParser.RULE_unresolved_expression;
return this;
}
Unresolved_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Unresolved_expressionContext.prototype.constructor = Unresolved_expressionContext;
Unresolved_expressionContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function UnresolvedSelectorContext(parser, ctx) {
Unresolved_expressionContext.call(this, parser);
this.parent = null; // Unresolved_expressionContext;
this.selector = null; // Unresolved_selectorContext;
Unresolved_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
UnresolvedSelectorContext.prototype = Object.create(Unresolved_expressionContext.prototype);
UnresolvedSelectorContext.prototype.constructor = UnresolvedSelectorContext;
EParser.UnresolvedSelectorContext = UnresolvedSelectorContext;
UnresolvedSelectorContext.prototype.unresolved_expression = function() {
return this.getTypedRuleContext(Unresolved_expressionContext,0);
};
UnresolvedSelectorContext.prototype.unresolved_selector = function() {
return this.getTypedRuleContext(Unresolved_selectorContext,0);
};
UnresolvedSelectorContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterUnresolvedSelector(this);
}
};
UnresolvedSelectorContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitUnresolvedSelector(this);
}
};
function UnresolvedIdentifierContext(parser, ctx) {
Unresolved_expressionContext.call(this, parser);
this.name = null; // IdentifierContext;
Unresolved_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
UnresolvedIdentifierContext.prototype = Object.create(Unresolved_expressionContext.prototype);
UnresolvedIdentifierContext.prototype.constructor = UnresolvedIdentifierContext;
EParser.UnresolvedIdentifierContext = UnresolvedIdentifierContext;
UnresolvedIdentifierContext.prototype.identifier = function() {
return this.getTypedRuleContext(IdentifierContext,0);
};
UnresolvedIdentifierContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterUnresolvedIdentifier(this);
}
};
UnresolvedIdentifierContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitUnresolvedIdentifier(this);
}
};
EParser.prototype.unresolved_expression = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new Unresolved_expressionContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 92;
this.enterRecursionRule(localctx, 92, EParser.RULE_unresolved_expression, _p);
try {
this.enterOuterAlt(localctx, 1);
localctx = new UnresolvedIdentifierContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1303;
localctx.name = this.identifier();
this._ctx.stop = this._input.LT(-1);
this.state = 1309;
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) {
if(this._parseListeners!==null) {
this.triggerExitRuleEvent();
}
_prevctx = localctx;
localctx = new UnresolvedSelectorContext(this, new Unresolved_expressionContext(this, _parentctx, _parentState));
localctx.parent = _prevctx;
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_unresolved_expression);
this.state = 1305;
if (!( this.precpred(this._ctx, 1))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
}
this.state = 1306;
localctx.selector = this.unresolved_selector();
}
this.state = 1311;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,65,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 Unresolved_selectorContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_unresolved_selector;
this.name = null; // IdentifierContext
return this;
}
Unresolved_selectorContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Unresolved_selectorContext.prototype.constructor = Unresolved_selectorContext;
Unresolved_selectorContext.prototype.DOT = function() {
return this.getToken(EParser.DOT, 0);
};
Unresolved_selectorContext.prototype.identifier = function() {
return this.getTypedRuleContext(IdentifierContext,0);
};
Unresolved_selectorContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterUnresolved_selector(this);
}
};
Unresolved_selectorContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitUnresolved_selector(this);
}
};
EParser.Unresolved_selectorContext = Unresolved_selectorContext;
EParser.prototype.unresolved_selector = function() {
var localctx = new Unresolved_selectorContext(this, this._ctx, this.state);
this.enterRule(localctx, 94, EParser.RULE_unresolved_selector);
try {
this.enterOuterAlt(localctx, 1);
this.state = 1312;
if (!( this.wasNot(EParser.WS))) {
throw new antlr4.error.FailedPredicateException(this, "$parser.wasNot(EParser.WS)");
}
this.state = 1313;
this.match(EParser.DOT);
this.state = 1314;
localctx.name = this.identifier();
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Invocation_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 = EParser.RULE_invocation_expression;
this.name = null; // Variable_identifierContext
return this;
}
Invocation_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Invocation_expressionContext.prototype.constructor = Invocation_expressionContext;
Invocation_expressionContext.prototype.INVOKE = function() {
return this.getToken(EParser.INVOKE, 0);
};
Invocation_expressionContext.prototype.COLON = function() {
return this.getToken(EParser.COLON, 0);
};
Invocation_expressionContext.prototype.invocation_trailer = function() {
return this.getTypedRuleContext(Invocation_trailerContext,0);
};
Invocation_expressionContext.prototype.variable_identifier = function() {
return this.getTypedRuleContext(Variable_identifierContext,0);
};
Invocation_expressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterInvocation_expression(this);
}
};
Invocation_expressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitInvocation_expression(this);
}
};
EParser.Invocation_expressionContext = Invocation_expressionContext;
EParser.prototype.invocation_expression = function() {
var localctx = new Invocation_expressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 96, EParser.RULE_invocation_expression);
try {
this.enterOuterAlt(localctx, 1);
this.state = 1316;
this.match(EParser.INVOKE);
this.state = 1317;
this.match(EParser.COLON);
this.state = 1318;
localctx.name = this.variable_identifier();
this.state = 1319;
this.invocation_trailer();
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Invocation_trailerContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_invocation_trailer;
return this;
}
Invocation_trailerContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Invocation_trailerContext.prototype.constructor = Invocation_trailerContext;
Invocation_trailerContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterInvocation_trailer(this);
}
};
Invocation_trailerContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitInvocation_trailer(this);
}
};
EParser.Invocation_trailerContext = Invocation_trailerContext;
EParser.prototype.invocation_trailer = function() {
var localctx = new Invocation_trailerContext(this, this._ctx, this.state);
this.enterRule(localctx, 98, EParser.RULE_invocation_trailer);
try {
this.enterOuterAlt(localctx, 1);
this.state = 1321;
if (!( this.willBe(EParser.LF))) {
throw new antlr4.error.FailedPredicateException(this, "$parser.willBe(EParser.LF)");
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Selectable_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 = EParser.RULE_selectable_expression;
return this;
}
Selectable_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Selectable_expressionContext.prototype.constructor = Selectable_expressionContext;
Selectable_expressionContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function ThisExpressionContext(parser, ctx) {
Selectable_expressionContext.call(this, parser);
this.exp = null; // This_expressionContext;
Selectable_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
ThisExpressionContext.prototype = Object.create(Selectable_expressionContext.prototype);
ThisExpressionContext.prototype.constructor = ThisExpressionContext;
EParser.ThisExpressionContext = ThisExpressionContext;
ThisExpressionContext.prototype.this_expression = function() {
return this.getTypedRuleContext(This_expressionContext,0);
};
ThisExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterThisExpression(this);
}
};
ThisExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitThisExpression(this);
}
};
function ParenthesisExpressionContext(parser, ctx) {
Selectable_expressionContext.call(this, parser);
this.exp = null; // Parenthesis_expressionContext;
Selectable_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
ParenthesisExpressionContext.prototype = Object.create(Selectable_expressionContext.prototype);
ParenthesisExpressionContext.prototype.constructor = ParenthesisExpressionContext;
EParser.ParenthesisExpressionContext = ParenthesisExpressionContext;
ParenthesisExpressionContext.prototype.parenthesis_expression = function() {
return this.getTypedRuleContext(Parenthesis_expressionContext,0);
};
ParenthesisExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterParenthesisExpression(this);
}
};
ParenthesisExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitParenthesisExpression(this);
}
};
function LiteralExpressionContext(parser, ctx) {
Selectable_expressionContext.call(this, parser);
this.exp = null; // Literal_expressionContext;
Selectable_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
LiteralExpressionContext.prototype = Object.create(Selectable_expressionContext.prototype);
LiteralExpressionContext.prototype.constructor = LiteralExpressionContext;
EParser.LiteralExpressionContext = LiteralExpressionContext;
LiteralExpressionContext.prototype.literal_expression = function() {
return this.getTypedRuleContext(Literal_expressionContext,0);
};
LiteralExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterLiteralExpression(this);
}
};
LiteralExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitLiteralExpression(this);
}
};
function IdentifierExpressionContext(parser, ctx) {
Selectable_expressionContext.call(this, parser);
this.exp = null; // IdentifierContext;
Selectable_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
IdentifierExpressionContext.prototype = Object.create(Selectable_expressionContext.prototype);
IdentifierExpressionContext.prototype.constructor = IdentifierExpressionContext;
EParser.IdentifierExpressionContext = IdentifierExpressionContext;
IdentifierExpressionContext.prototype.identifier = function() {
return this.getTypedRuleContext(IdentifierContext,0);
};
IdentifierExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterIdentifierExpression(this);
}
};
IdentifierExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitIdentifierExpression(this);
}
};
EParser.Selectable_expressionContext = Selectable_expressionContext;
EParser.prototype.selectable_expression = function() {
var localctx = new Selectable_expressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 100, EParser.RULE_selectable_expression);
try {
this.state = 1327;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,66,this._ctx);
switch(la_) {
case 1:
localctx = new ParenthesisExpressionContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 1323;
localctx.exp = this.parenthesis_expression();
break;
case 2:
localctx = new LiteralExpressionContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 1324;
localctx.exp = this.literal_expression();
break;
case 3:
localctx = new IdentifierExpressionContext(this, localctx);
this.enterOuterAlt(localctx, 3);
this.state = 1325;
localctx.exp = this.identifier();
break;
case 4:
localctx = new ThisExpressionContext(this, localctx);
this.enterOuterAlt(localctx, 4);
this.state = 1326;
localctx.exp = this.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 Instance_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 = EParser.RULE_instance_expression;
return this;
}
Instance_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Instance_expressionContext.prototype.constructor = Instance_expressionContext;
Instance_expressionContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function SelectorExpressionContext(parser, ctx) {
Instance_expressionContext.call(this, parser);
this.parent = null; // Instance_expressionContext;
this.selector = null; // Instance_selectorContext;
Instance_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
SelectorExpressionContext.prototype = Object.create(Instance_expressionContext.prototype);
SelectorExpressionContext.prototype.constructor = SelectorExpressionContext;
EParser.SelectorExpressionContext = SelectorExpressionContext;
SelectorExpressionContext.prototype.instance_expression = function() {
return this.getTypedRuleContext(Instance_expressionContext,0);
};
SelectorExpressionContext.prototype.instance_selector = function() {
return this.getTypedRuleContext(Instance_selectorContext,0);
};
SelectorExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterSelectorExpression(this);
}
};
SelectorExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitSelectorExpression(this);
}
};
function SelectableExpressionContext(parser, ctx) {
Instance_expressionContext.call(this, parser);
this.parent = null; // Selectable_expressionContext;
Instance_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
SelectableExpressionContext.prototype = Object.create(Instance_expressionContext.prototype);
SelectableExpressionContext.prototype.constructor = SelectableExpressionContext;
EParser.SelectableExpressionContext = SelectableExpressionContext;
SelectableExpressionContext.prototype.selectable_expression = function() {
return this.getTypedRuleContext(Selectable_expressionContext,0);
};
SelectableExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterSelectableExpression(this);
}
};
SelectableExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitSelectableExpression(this);
}
};
EParser.prototype.instance_expression = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new Instance_expressionContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 102;
this.enterRecursionRule(localctx, 102, EParser.RULE_instance_expression, _p);
try {
this.enterOuterAlt(localctx, 1);
localctx = new SelectableExpressionContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1330;
localctx.parent = this.selectable_expression();
this._ctx.stop = this._input.LT(-1);
this.state = 1336;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,67,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 SelectorExpressionContext(this, new Instance_expressionContext(this, _parentctx, _parentState));
localctx.parent = _prevctx;
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_instance_expression);
this.state = 1332;
if (!( this.precpred(this._ctx, 1))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
}
this.state = 1333;
localctx.selector = this.instance_selector();
}
this.state = 1338;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,67,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 Instance_selectorContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_instance_selector;
return this;
}
Instance_selectorContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Instance_selectorContext.prototype.constructor = Instance_selectorContext;
Instance_selectorContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function SliceSelectorContext(parser, ctx) {
Instance_selectorContext.call(this, parser);
this.xslice = null; // Slice_argumentsContext;
Instance_selectorContext.prototype.copyFrom.call(this, ctx);
return this;
}
SliceSelectorContext.prototype = Object.create(Instance_selectorContext.prototype);
SliceSelectorContext.prototype.constructor = SliceSelectorContext;
EParser.SliceSelectorContext = SliceSelectorContext;
SliceSelectorContext.prototype.LBRAK = function() {
return this.getToken(EParser.LBRAK, 0);
};
SliceSelectorContext.prototype.RBRAK = function() {
return this.getToken(EParser.RBRAK, 0);
};
SliceSelectorContext.prototype.slice_arguments = function() {
return this.getTypedRuleContext(Slice_argumentsContext,0);
};
SliceSelectorContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterSliceSelector(this);
}
};
SliceSelectorContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitSliceSelector(this);
}
};
function MemberSelectorContext(parser, ctx) {
Instance_selectorContext.call(this, parser);
this.name = null; // Variable_identifierContext;
Instance_selectorContext.prototype.copyFrom.call(this, ctx);
return this;
}
MemberSelectorContext.prototype = Object.create(Instance_selectorContext.prototype);
MemberSelectorContext.prototype.constructor = MemberSelectorContext;
EParser.MemberSelectorContext = MemberSelectorContext;
MemberSelectorContext.prototype.DOT = function() {
return this.getToken(EParser.DOT, 0);
};
MemberSelectorContext.prototype.variable_identifier = function() {
return this.getTypedRuleContext(Variable_identifierContext,0);
};
MemberSelectorContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterMemberSelector(this);
}
};
MemberSelectorContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitMemberSelector(this);
}
};
function ItemSelectorContext(parser, ctx) {
Instance_selectorContext.call(this, parser);
this.exp = null; // ExpressionContext;
Instance_selectorContext.prototype.copyFrom.call(this, ctx);
return this;
}
ItemSelectorContext.prototype = Object.create(Instance_selectorContext.prototype);
ItemSelectorContext.prototype.constructor = ItemSelectorContext;
EParser.ItemSelectorContext = ItemSelectorContext;
ItemSelectorContext.prototype.LBRAK = function() {
return this.getToken(EParser.LBRAK, 0);
};
ItemSelectorContext.prototype.RBRAK = function() {
return this.getToken(EParser.RBRAK, 0);
};
ItemSelectorContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
ItemSelectorContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterItemSelector(this);
}
};
ItemSelectorContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitItemSelector(this);
}
};
EParser.Instance_selectorContext = Instance_selectorContext;
EParser.prototype.instance_selector = function() {
var localctx = new Instance_selectorContext(this, this._ctx, this.state);
this.enterRule(localctx, 104, EParser.RULE_instance_selector);
try {
this.state = 1352;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,68,this._ctx);
switch(la_) {
case 1:
localctx = new MemberSelectorContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 1339;
if (!( this.wasNot(EParser.WS))) {
throw new antlr4.error.FailedPredicateException(this, "$parser.wasNot(EParser.WS)");
}
this.state = 1340;
this.match(EParser.DOT);
this.state = 1341;
localctx.name = this.variable_identifier();
break;
case 2:
localctx = new SliceSelectorContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 1342;
if (!( this.wasNot(EParser.WS))) {
throw new antlr4.error.FailedPredicateException(this, "$parser.wasNot(EParser.WS)");
}
this.state = 1343;
this.match(EParser.LBRAK);
this.state = 1344;
localctx.xslice = this.slice_arguments();
this.state = 1345;
this.match(EParser.RBRAK);
break;
case 3:
localctx = new ItemSelectorContext(this, localctx);
this.enterOuterAlt(localctx, 3);
this.state = 1347;
if (!( this.wasNot(EParser.WS))) {
throw new antlr4.error.FailedPredicateException(this, "$parser.wasNot(EParser.WS)");
}
this.state = 1348;
this.match(EParser.LBRAK);
this.state = 1349;
localctx.exp = this.expression(0);
this.state = 1350;
this.match(EParser.RBRAK);
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 Document_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 = EParser.RULE_document_expression;
return this;
}
Document_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Document_expressionContext.prototype.constructor = Document_expressionContext;
Document_expressionContext.prototype.DOCUMENT = function() {
return this.getToken(EParser.DOCUMENT, 0);
};
Document_expressionContext.prototype.FROM = function() {
return this.getToken(EParser.FROM, 0);
};
Document_expressionContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
Document_expressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterDocument_expression(this);
}
};
Document_expressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitDocument_expression(this);
}
};
EParser.Document_expressionContext = Document_expressionContext;
EParser.prototype.document_expression = function() {
var localctx = new Document_expressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 106, EParser.RULE_document_expression);
try {
this.enterOuterAlt(localctx, 1);
this.state = 1354;
this.match(EParser.DOCUMENT);
this.state = 1357;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,69,this._ctx);
if(la_===1) {
this.state = 1355;
this.match(EParser.FROM);
this.state = 1356;
this.expression(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 Blob_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 = EParser.RULE_blob_expression;
return this;
}
Blob_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Blob_expressionContext.prototype.constructor = Blob_expressionContext;
Blob_expressionContext.prototype.BLOB = function() {
return this.getToken(EParser.BLOB, 0);
};
Blob_expressionContext.prototype.FROM = function() {
return this.getToken(EParser.FROM, 0);
};
Blob_expressionContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
Blob_expressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterBlob_expression(this);
}
};
Blob_expressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitBlob_expression(this);
}
};
EParser.Blob_expressionContext = Blob_expressionContext;
EParser.prototype.blob_expression = function() {
var localctx = new Blob_expressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 108, EParser.RULE_blob_expression);
try {
this.enterOuterAlt(localctx, 1);
this.state = 1359;
this.match(EParser.BLOB);
this.state = 1360;
this.match(EParser.FROM);
this.state = 1361;
this.expression(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 Constructor_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 = EParser.RULE_constructor_expression;
return this;
}
Constructor_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Constructor_expressionContext.prototype.constructor = Constructor_expressionContext;
Constructor_expressionContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function ConstructorFromContext(parser, ctx) {
Constructor_expressionContext.call(this, parser);
this.typ = null; // Mutable_category_typeContext;
this.copyExp = null; // ExpressionContext;
this.args = null; // With_argument_assignment_listContext;
this.arg = null; // Argument_assignmentContext;
Constructor_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
ConstructorFromContext.prototype = Object.create(Constructor_expressionContext.prototype);
ConstructorFromContext.prototype.constructor = ConstructorFromContext;
EParser.ConstructorFromContext = ConstructorFromContext;
ConstructorFromContext.prototype.FROM = function() {
return this.getToken(EParser.FROM, 0);
};
ConstructorFromContext.prototype.mutable_category_type = function() {
return this.getTypedRuleContext(Mutable_category_typeContext,0);
};
ConstructorFromContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
ConstructorFromContext.prototype.with_argument_assignment_list = function() {
return this.getTypedRuleContext(With_argument_assignment_listContext,0);
};
ConstructorFromContext.prototype.COMMA = function() {
return this.getToken(EParser.COMMA, 0);
};
ConstructorFromContext.prototype.AND = function() {
return this.getToken(EParser.AND, 0);
};
ConstructorFromContext.prototype.argument_assignment = function() {
return this.getTypedRuleContext(Argument_assignmentContext,0);
};
ConstructorFromContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterConstructorFrom(this);
}
};
ConstructorFromContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitConstructorFrom(this);
}
};
function ConstructorNoFromContext(parser, ctx) {
Constructor_expressionContext.call(this, parser);
this.typ = null; // Mutable_category_typeContext;
this.args = null; // With_argument_assignment_listContext;
this.arg = null; // Argument_assignmentContext;
Constructor_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
ConstructorNoFromContext.prototype = Object.create(Constructor_expressionContext.prototype);
ConstructorNoFromContext.prototype.constructor = ConstructorNoFromContext;
EParser.ConstructorNoFromContext = ConstructorNoFromContext;
ConstructorNoFromContext.prototype.mutable_category_type = function() {
return this.getTypedRuleContext(Mutable_category_typeContext,0);
};
ConstructorNoFromContext.prototype.with_argument_assignment_list = function() {
return this.getTypedRuleContext(With_argument_assignment_listContext,0);
};
ConstructorNoFromContext.prototype.AND = function() {
return this.getToken(EParser.AND, 0);
};
ConstructorNoFromContext.prototype.argument_assignment = function() {
return this.getTypedRuleContext(Argument_assignmentContext,0);
};
ConstructorNoFromContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterConstructorNoFrom(this);
}
};
ConstructorNoFromContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitConstructorNoFrom(this);
}
};
EParser.Constructor_expressionContext = Constructor_expressionContext;
EParser.prototype.constructor_expression = function() {
var localctx = new Constructor_expressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 110, EParser.RULE_constructor_expression);
var _la = 0; // Token type
try {
this.state = 1384;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,75,this._ctx);
switch(la_) {
case 1:
localctx = new ConstructorFromContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 1363;
localctx.typ = this.mutable_category_type();
this.state = 1364;
this.match(EParser.FROM);
this.state = 1365;
localctx.copyExp = this.expression(0);
this.state = 1374;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,72,this._ctx);
if(la_===1) {
this.state = 1367;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.COMMA) {
this.state = 1366;
this.match(EParser.COMMA);
}
this.state = 1369;
localctx.args = this.with_argument_assignment_list(0);
this.state = 1372;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,71,this._ctx);
if(la_===1) {
this.state = 1370;
this.match(EParser.AND);
this.state = 1371;
localctx.arg = this.argument_assignment();
}
}
break;
case 2:
localctx = new ConstructorNoFromContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 1376;
localctx.typ = this.mutable_category_type();
this.state = 1382;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,74,this._ctx);
if(la_===1) {
this.state = 1377;
localctx.args = this.with_argument_assignment_list(0);
this.state = 1380;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,73,this._ctx);
if(la_===1) {
this.state = 1378;
this.match(EParser.AND);
this.state = 1379;
localctx.arg = this.argument_assignment();
}
}
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 Write_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 = EParser.RULE_write_statement;
this.what = null; // ExpressionContext
this.target = null; // ExpressionContext
return this;
}
Write_statementContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Write_statementContext.prototype.constructor = Write_statementContext;
Write_statementContext.prototype.WRITE = function() {
return this.getToken(EParser.WRITE, 0);
};
Write_statementContext.prototype.TO = function() {
return this.getToken(EParser.TO, 0);
};
Write_statementContext.prototype.expression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ExpressionContext);
} else {
return this.getTypedRuleContext(ExpressionContext,i);
}
};
Write_statementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterWrite_statement(this);
}
};
Write_statementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitWrite_statement(this);
}
};
EParser.Write_statementContext = Write_statementContext;
EParser.prototype.write_statement = function() {
var localctx = new Write_statementContext(this, this._ctx, this.state);
this.enterRule(localctx, 112, EParser.RULE_write_statement);
try {
this.enterOuterAlt(localctx, 1);
this.state = 1386;
this.match(EParser.WRITE);
this.state = 1387;
localctx.what = this.expression(0);
this.state = 1388;
this.match(EParser.TO);
this.state = 1389;
localctx.target = this.expression(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 Ambiguous_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 = EParser.RULE_ambiguous_expression;
this.method = null; // Unresolved_expressionContext
this.exp = null; // ExpressionContext
return this;
}
Ambiguous_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Ambiguous_expressionContext.prototype.constructor = Ambiguous_expressionContext;
Ambiguous_expressionContext.prototype.MINUS = function() {
return this.getToken(EParser.MINUS, 0);
};
Ambiguous_expressionContext.prototype.unresolved_expression = function() {
return this.getTypedRuleContext(Unresolved_expressionContext,0);
};
Ambiguous_expressionContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
Ambiguous_expressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterAmbiguous_expression(this);
}
};
Ambiguous_expressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitAmbiguous_expression(this);
}
};
EParser.Ambiguous_expressionContext = Ambiguous_expressionContext;
EParser.prototype.ambiguous_expression = function() {
var localctx = new Ambiguous_expressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 114, EParser.RULE_ambiguous_expression);
try {
this.enterOuterAlt(localctx, 1);
this.state = 1391;
localctx.method = this.unresolved_expression(0);
this.state = 1392;
this.match(EParser.MINUS);
this.state = 1393;
localctx.exp = this.expression(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 Filtered_list_suffixContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_filtered_list_suffix;
this.name = null; // Variable_identifierContext
this.predicate = null; // ExpressionContext
return this;
}
Filtered_list_suffixContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Filtered_list_suffixContext.prototype.constructor = Filtered_list_suffixContext;
Filtered_list_suffixContext.prototype.FILTERED = function() {
return this.getToken(EParser.FILTERED, 0);
};
Filtered_list_suffixContext.prototype.WITH = function() {
return this.getToken(EParser.WITH, 0);
};
Filtered_list_suffixContext.prototype.WHERE = function() {
return this.getToken(EParser.WHERE, 0);
};
Filtered_list_suffixContext.prototype.variable_identifier = function() {
return this.getTypedRuleContext(Variable_identifierContext,0);
};
Filtered_list_suffixContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
Filtered_list_suffixContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterFiltered_list_suffix(this);
}
};
Filtered_list_suffixContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitFiltered_list_suffix(this);
}
};
EParser.Filtered_list_suffixContext = Filtered_list_suffixContext;
EParser.prototype.filtered_list_suffix = function() {
var localctx = new Filtered_list_suffixContext(this, this._ctx, this.state);
this.enterRule(localctx, 116, EParser.RULE_filtered_list_suffix);
try {
this.enterOuterAlt(localctx, 1);
this.state = 1395;
this.match(EParser.FILTERED);
this.state = 1396;
this.match(EParser.WITH);
this.state = 1397;
localctx.name = this.variable_identifier();
this.state = 1398;
this.match(EParser.WHERE);
this.state = 1399;
localctx.predicate = this.expression(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 Fetch_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 = EParser.RULE_fetch_expression;
return this;
}
Fetch_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Fetch_expressionContext.prototype.constructor = Fetch_expressionContext;
Fetch_expressionContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function FetchOneContext(parser, ctx) {
Fetch_expressionContext.call(this, parser);
this.typ = null; // Mutable_category_typeContext;
this.predicate = null; // ExpressionContext;
Fetch_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
FetchOneContext.prototype = Object.create(Fetch_expressionContext.prototype);
FetchOneContext.prototype.constructor = FetchOneContext;
EParser.FetchOneContext = FetchOneContext;
FetchOneContext.prototype.FETCH = function() {
return this.getToken(EParser.FETCH, 0);
};
FetchOneContext.prototype.ONE = function() {
return this.getToken(EParser.ONE, 0);
};
FetchOneContext.prototype.WHERE = function() {
return this.getToken(EParser.WHERE, 0);
};
FetchOneContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
FetchOneContext.prototype.mutable_category_type = function() {
return this.getTypedRuleContext(Mutable_category_typeContext,0);
};
FetchOneContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterFetchOne(this);
}
};
FetchOneContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitFetchOne(this);
}
};
function FetchManyContext(parser, ctx) {
Fetch_expressionContext.call(this, parser);
this.typ = null; // Mutable_category_typeContext;
this.xstart = null; // ExpressionContext;
this.xstop = null; // ExpressionContext;
this.predicate = null; // ExpressionContext;
this.orderby = null; // Order_by_listContext;
Fetch_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
FetchManyContext.prototype = Object.create(Fetch_expressionContext.prototype);
FetchManyContext.prototype.constructor = FetchManyContext;
EParser.FetchManyContext = FetchManyContext;
FetchManyContext.prototype.FETCH = function() {
return this.getToken(EParser.FETCH, 0);
};
FetchManyContext.prototype.WHERE = function() {
return this.getToken(EParser.WHERE, 0);
};
FetchManyContext.prototype.ORDER = function() {
return this.getToken(EParser.ORDER, 0);
};
FetchManyContext.prototype.BY = function() {
return this.getToken(EParser.BY, 0);
};
FetchManyContext.prototype.ALL = function() {
return this.getToken(EParser.ALL, 0);
};
FetchManyContext.prototype.TO = function() {
return this.getToken(EParser.TO, 0);
};
FetchManyContext.prototype.ROWS = function() {
return this.getToken(EParser.ROWS, 0);
};
FetchManyContext.prototype.expression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ExpressionContext);
} else {
return this.getTypedRuleContext(ExpressionContext,i);
}
};
FetchManyContext.prototype.order_by_list = function() {
return this.getTypedRuleContext(Order_by_listContext,0);
};
FetchManyContext.prototype.mutable_category_type = function() {
return this.getTypedRuleContext(Mutable_category_typeContext,0);
};
FetchManyContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterFetchMany(this);
}
};
FetchManyContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitFetchMany(this);
}
};
EParser.Fetch_expressionContext = Fetch_expressionContext;
EParser.prototype.fetch_expression = function() {
var localctx = new Fetch_expressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 118, EParser.RULE_fetch_expression);
var _la = 0; // Token type
try {
this.state = 1437;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,82,this._ctx);
switch(la_) {
case 1:
localctx = new FetchOneContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 1401;
this.match(EParser.FETCH);
this.state = 1402;
this.match(EParser.ONE);
this.state = 1404;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.MUTABLE || _la===EParser.TYPE_IDENTIFIER) {
this.state = 1403;
localctx.typ = this.mutable_category_type();
}
this.state = 1406;
this.match(EParser.WHERE);
this.state = 1407;
localctx.predicate = this.expression(0);
break;
case 2:
localctx = new FetchManyContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 1408;
this.match(EParser.FETCH);
this.state = 1426;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case EParser.ALL:
this.state = 1409;
this.match(EParser.ALL);
this.state = 1411;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,77,this._ctx);
if(la_===1) {
this.state = 1410;
localctx.typ = this.mutable_category_type();
}
break;
case EParser.MUTABLE:
case EParser.TYPE_IDENTIFIER:
this.state = 1413;
localctx.typ = this.mutable_category_type();
this.state = 1415;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.ROWS) {
this.state = 1414;
this.match(EParser.ROWS);
}
this.state = 1417;
localctx.xstart = this.expression(0);
this.state = 1418;
this.match(EParser.TO);
this.state = 1419;
localctx.xstop = this.expression(0);
break;
case EParser.ROWS:
this.state = 1421;
this.match(EParser.ROWS);
this.state = 1422;
localctx.xstart = this.expression(0);
this.state = 1423;
this.match(EParser.TO);
this.state = 1424;
localctx.xstop = this.expression(0);
break;
default:
throw new antlr4.error.NoViableAltException(this);
}
this.state = 1430;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,80,this._ctx);
if(la_===1) {
this.state = 1428;
this.match(EParser.WHERE);
this.state = 1429;
localctx.predicate = this.expression(0);
}
this.state = 1435;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,81,this._ctx);
if(la_===1) {
this.state = 1432;
this.match(EParser.ORDER);
this.state = 1433;
this.match(EParser.BY);
this.state = 1434;
localctx.orderby = this.order_by_list();
}
break;
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Fetch_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 = EParser.RULE_fetch_statement;
return this;
}
Fetch_statementContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Fetch_statementContext.prototype.constructor = Fetch_statementContext;
Fetch_statementContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function FetchManyAsyncContext(parser, ctx) {
Fetch_statementContext.call(this, parser);
this.typ = null; // Mutable_category_typeContext;
this.xstart = null; // ExpressionContext;
this.xstop = null; // ExpressionContext;
this.predicate = null; // ExpressionContext;
this.orderby = null; // Order_by_listContext;
this.name = null; // Variable_identifierContext;
this.stmts = null; // Statement_listContext;
Fetch_statementContext.prototype.copyFrom.call(this, ctx);
return this;
}
FetchManyAsyncContext.prototype = Object.create(Fetch_statementContext.prototype);
FetchManyAsyncContext.prototype.constructor = FetchManyAsyncContext;
EParser.FetchManyAsyncContext = FetchManyAsyncContext;
FetchManyAsyncContext.prototype.FETCH = function() {
return this.getToken(EParser.FETCH, 0);
};
FetchManyAsyncContext.prototype.THEN = function() {
return this.getToken(EParser.THEN, 0);
};
FetchManyAsyncContext.prototype.WITH = function() {
return this.getToken(EParser.WITH, 0);
};
FetchManyAsyncContext.prototype.COLON = function() {
return this.getToken(EParser.COLON, 0);
};
FetchManyAsyncContext.prototype.indent = function() {
return this.getTypedRuleContext(IndentContext,0);
};
FetchManyAsyncContext.prototype.dedent = function() {
return this.getTypedRuleContext(DedentContext,0);
};
FetchManyAsyncContext.prototype.variable_identifier = function() {
return this.getTypedRuleContext(Variable_identifierContext,0);
};
FetchManyAsyncContext.prototype.statement_list = function() {
return this.getTypedRuleContext(Statement_listContext,0);
};
FetchManyAsyncContext.prototype.WHERE = function() {
return this.getToken(EParser.WHERE, 0);
};
FetchManyAsyncContext.prototype.ORDER = function() {
return this.getToken(EParser.ORDER, 0);
};
FetchManyAsyncContext.prototype.BY = function() {
return this.getToken(EParser.BY, 0);
};
FetchManyAsyncContext.prototype.ALL = function() {
return this.getToken(EParser.ALL, 0);
};
FetchManyAsyncContext.prototype.TO = function() {
return this.getToken(EParser.TO, 0);
};
FetchManyAsyncContext.prototype.ROWS = function() {
return this.getToken(EParser.ROWS, 0);
};
FetchManyAsyncContext.prototype.expression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ExpressionContext);
} else {
return this.getTypedRuleContext(ExpressionContext,i);
}
};
FetchManyAsyncContext.prototype.order_by_list = function() {
return this.getTypedRuleContext(Order_by_listContext,0);
};
FetchManyAsyncContext.prototype.mutable_category_type = function() {
return this.getTypedRuleContext(Mutable_category_typeContext,0);
};
FetchManyAsyncContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterFetchManyAsync(this);
}
};
FetchManyAsyncContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitFetchManyAsync(this);
}
};
function FetchOneAsyncContext(parser, ctx) {
Fetch_statementContext.call(this, parser);
this.typ = null; // Mutable_category_typeContext;
this.predicate = null; // ExpressionContext;
this.name = null; // Variable_identifierContext;
this.stmts = null; // Statement_listContext;
Fetch_statementContext.prototype.copyFrom.call(this, ctx);
return this;
}
FetchOneAsyncContext.prototype = Object.create(Fetch_statementContext.prototype);
FetchOneAsyncContext.prototype.constructor = FetchOneAsyncContext;
EParser.FetchOneAsyncContext = FetchOneAsyncContext;
FetchOneAsyncContext.prototype.FETCH = function() {
return this.getToken(EParser.FETCH, 0);
};
FetchOneAsyncContext.prototype.ONE = function() {
return this.getToken(EParser.ONE, 0);
};
FetchOneAsyncContext.prototype.WHERE = function() {
return this.getToken(EParser.WHERE, 0);
};
FetchOneAsyncContext.prototype.THEN = function() {
return this.getToken(EParser.THEN, 0);
};
FetchOneAsyncContext.prototype.WITH = function() {
return this.getToken(EParser.WITH, 0);
};
FetchOneAsyncContext.prototype.COLON = function() {
return this.getToken(EParser.COLON, 0);
};
FetchOneAsyncContext.prototype.indent = function() {
return this.getTypedRuleContext(IndentContext,0);
};
FetchOneAsyncContext.prototype.dedent = function() {
return this.getTypedRuleContext(DedentContext,0);
};
FetchOneAsyncContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
FetchOneAsyncContext.prototype.variable_identifier = function() {
return this.getTypedRuleContext(Variable_identifierContext,0);
};
FetchOneAsyncContext.prototype.statement_list = function() {
return this.getTypedRuleContext(Statement_listContext,0);
};
FetchOneAsyncContext.prototype.mutable_category_type = function() {
return this.getTypedRuleContext(Mutable_category_typeContext,0);
};
FetchOneAsyncContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterFetchOneAsync(this);
}
};
FetchOneAsyncContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitFetchOneAsync(this);
}
};
EParser.Fetch_statementContext = Fetch_statementContext;
EParser.prototype.fetch_statement = function() {
var localctx = new Fetch_statementContext(this, this._ctx, this.state);
this.enterRule(localctx, 120, EParser.RULE_fetch_statement);
var _la = 0; // Token type
try {
this.state = 1491;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,89,this._ctx);
switch(la_) {
case 1:
localctx = new FetchOneAsyncContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 1439;
this.match(EParser.FETCH);
this.state = 1440;
this.match(EParser.ONE);
this.state = 1442;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.MUTABLE || _la===EParser.TYPE_IDENTIFIER) {
this.state = 1441;
localctx.typ = this.mutable_category_type();
}
this.state = 1444;
this.match(EParser.WHERE);
this.state = 1445;
localctx.predicate = this.expression(0);
this.state = 1446;
this.match(EParser.THEN);
this.state = 1447;
this.match(EParser.WITH);
this.state = 1448;
localctx.name = this.variable_identifier();
this.state = 1449;
this.match(EParser.COLON);
this.state = 1450;
this.indent();
this.state = 1451;
localctx.stmts = this.statement_list();
this.state = 1452;
this.dedent();
break;
case 2:
localctx = new FetchManyAsyncContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 1454;
this.match(EParser.FETCH);
this.state = 1472;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case EParser.ALL:
this.state = 1455;
this.match(EParser.ALL);
this.state = 1457;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.MUTABLE || _la===EParser.TYPE_IDENTIFIER) {
this.state = 1456;
localctx.typ = this.mutable_category_type();
}
break;
case EParser.MUTABLE:
case EParser.TYPE_IDENTIFIER:
this.state = 1459;
localctx.typ = this.mutable_category_type();
this.state = 1461;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.ROWS) {
this.state = 1460;
this.match(EParser.ROWS);
}
this.state = 1463;
localctx.xstart = this.expression(0);
this.state = 1464;
this.match(EParser.TO);
this.state = 1465;
localctx.xstop = this.expression(0);
break;
case EParser.ROWS:
this.state = 1467;
this.match(EParser.ROWS);
this.state = 1468;
localctx.xstart = this.expression(0);
this.state = 1469;
this.match(EParser.TO);
this.state = 1470;
localctx.xstop = this.expression(0);
break;
default:
throw new antlr4.error.NoViableAltException(this);
}
this.state = 1476;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.WHERE) {
this.state = 1474;
this.match(EParser.WHERE);
this.state = 1475;
localctx.predicate = this.expression(0);
}
this.state = 1481;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.ORDER) {
this.state = 1478;
this.match(EParser.ORDER);
this.state = 1479;
this.match(EParser.BY);
this.state = 1480;
localctx.orderby = this.order_by_list();
}
this.state = 1483;
this.match(EParser.THEN);
this.state = 1484;
this.match(EParser.WITH);
this.state = 1485;
localctx.name = this.variable_identifier();
this.state = 1486;
this.match(EParser.COLON);
this.state = 1487;
this.indent();
this.state = 1488;
localctx.stmts = this.statement_list();
this.state = 1489;
this.dedent();
break;
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Sorted_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 = EParser.RULE_sorted_expression;
this.source = null; // Instance_expressionContext
this.key = null; // Instance_expressionContext
return this;
}
Sorted_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Sorted_expressionContext.prototype.constructor = Sorted_expressionContext;
Sorted_expressionContext.prototype.SORTED = function() {
return this.getToken(EParser.SORTED, 0);
};
Sorted_expressionContext.prototype.instance_expression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(Instance_expressionContext);
} else {
return this.getTypedRuleContext(Instance_expressionContext,i);
}
};
Sorted_expressionContext.prototype.DESC = function() {
return this.getToken(EParser.DESC, 0);
};
Sorted_expressionContext.prototype.WITH = function() {
return this.getToken(EParser.WITH, 0);
};
Sorted_expressionContext.prototype.AS = function() {
return this.getToken(EParser.AS, 0);
};
Sorted_expressionContext.prototype.key_token = function() {
return this.getTypedRuleContext(Key_tokenContext,0);
};
Sorted_expressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterSorted_expression(this);
}
};
Sorted_expressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitSorted_expression(this);
}
};
EParser.Sorted_expressionContext = Sorted_expressionContext;
EParser.prototype.sorted_expression = function() {
var localctx = new Sorted_expressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 122, EParser.RULE_sorted_expression);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 1493;
this.match(EParser.SORTED);
this.state = 1495;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.DESC) {
this.state = 1494;
this.match(EParser.DESC);
}
this.state = 1497;
localctx.source = this.instance_expression(0);
this.state = 1503;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,91,this._ctx);
if(la_===1) {
this.state = 1498;
this.match(EParser.WITH);
this.state = 1499;
localctx.key = this.instance_expression(0);
this.state = 1500;
this.match(EParser.AS);
this.state = 1501;
this.key_token();
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Argument_assignment_listContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_argument_assignment_list;
return this;
}
Argument_assignment_listContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Argument_assignment_listContext.prototype.constructor = Argument_assignment_listContext;
Argument_assignment_listContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function ArgumentAssignmentListExpressionContext(parser, ctx) {
Argument_assignment_listContext.call(this, parser);
this.exp = null; // ExpressionContext;
this.items = null; // With_argument_assignment_listContext;
this.item = null; // Argument_assignmentContext;
Argument_assignment_listContext.prototype.copyFrom.call(this, ctx);
return this;
}
ArgumentAssignmentListExpressionContext.prototype = Object.create(Argument_assignment_listContext.prototype);
ArgumentAssignmentListExpressionContext.prototype.constructor = ArgumentAssignmentListExpressionContext;
EParser.ArgumentAssignmentListExpressionContext = ArgumentAssignmentListExpressionContext;
ArgumentAssignmentListExpressionContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
ArgumentAssignmentListExpressionContext.prototype.with_argument_assignment_list = function() {
return this.getTypedRuleContext(With_argument_assignment_listContext,0);
};
ArgumentAssignmentListExpressionContext.prototype.AND = function() {
return this.getToken(EParser.AND, 0);
};
ArgumentAssignmentListExpressionContext.prototype.argument_assignment = function() {
return this.getTypedRuleContext(Argument_assignmentContext,0);
};
ArgumentAssignmentListExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterArgumentAssignmentListExpression(this);
}
};
ArgumentAssignmentListExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitArgumentAssignmentListExpression(this);
}
};
function ArgumentAssignmentListNoExpressionContext(parser, ctx) {
Argument_assignment_listContext.call(this, parser);
this.items = null; // With_argument_assignment_listContext;
this.item = null; // Argument_assignmentContext;
Argument_assignment_listContext.prototype.copyFrom.call(this, ctx);
return this;
}
ArgumentAssignmentListNoExpressionContext.prototype = Object.create(Argument_assignment_listContext.prototype);
ArgumentAssignmentListNoExpressionContext.prototype.constructor = ArgumentAssignmentListNoExpressionContext;
EParser.ArgumentAssignmentListNoExpressionContext = ArgumentAssignmentListNoExpressionContext;
ArgumentAssignmentListNoExpressionContext.prototype.with_argument_assignment_list = function() {
return this.getTypedRuleContext(With_argument_assignment_listContext,0);
};
ArgumentAssignmentListNoExpressionContext.prototype.AND = function() {
return this.getToken(EParser.AND, 0);
};
ArgumentAssignmentListNoExpressionContext.prototype.argument_assignment = function() {
return this.getTypedRuleContext(Argument_assignmentContext,0);
};
ArgumentAssignmentListNoExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterArgumentAssignmentListNoExpression(this);
}
};
ArgumentAssignmentListNoExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitArgumentAssignmentListNoExpression(this);
}
};
EParser.Argument_assignment_listContext = Argument_assignment_listContext;
EParser.prototype.argument_assignment_list = function() {
var localctx = new Argument_assignment_listContext(this, this._ctx, this.state);
this.enterRule(localctx, 124, EParser.RULE_argument_assignment_list);
try {
this.state = 1519;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,95,this._ctx);
switch(la_) {
case 1:
localctx = new ArgumentAssignmentListExpressionContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 1505;
if (!( this.was(EParser.WS))) {
throw new antlr4.error.FailedPredicateException(this, "$parser.was(EParser.WS)");
}
this.state = 1506;
localctx.exp = this.expression(0);
this.state = 1512;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,93,this._ctx);
if(la_===1) {
this.state = 1507;
localctx.items = this.with_argument_assignment_list(0);
this.state = 1510;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,92,this._ctx);
if(la_===1) {
this.state = 1508;
this.match(EParser.AND);
this.state = 1509;
localctx.item = this.argument_assignment();
}
}
break;
case 2:
localctx = new ArgumentAssignmentListNoExpressionContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 1514;
localctx.items = this.with_argument_assignment_list(0);
this.state = 1517;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,94,this._ctx);
if(la_===1) {
this.state = 1515;
this.match(EParser.AND);
this.state = 1516;
localctx.item = this.argument_assignment();
}
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 With_argument_assignment_listContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_with_argument_assignment_list;
return this;
}
With_argument_assignment_listContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
With_argument_assignment_listContext.prototype.constructor = With_argument_assignment_listContext;
With_argument_assignment_listContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function ArgumentAssignmentListContext(parser, ctx) {
With_argument_assignment_listContext.call(this, parser);
this.item = null; // Argument_assignmentContext;
With_argument_assignment_listContext.prototype.copyFrom.call(this, ctx);
return this;
}
ArgumentAssignmentListContext.prototype = Object.create(With_argument_assignment_listContext.prototype);
ArgumentAssignmentListContext.prototype.constructor = ArgumentAssignmentListContext;
EParser.ArgumentAssignmentListContext = ArgumentAssignmentListContext;
ArgumentAssignmentListContext.prototype.WITH = function() {
return this.getToken(EParser.WITH, 0);
};
ArgumentAssignmentListContext.prototype.argument_assignment = function() {
return this.getTypedRuleContext(Argument_assignmentContext,0);
};
ArgumentAssignmentListContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterArgumentAssignmentList(this);
}
};
ArgumentAssignmentListContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitArgumentAssignmentList(this);
}
};
function ArgumentAssignmentListItemContext(parser, ctx) {
With_argument_assignment_listContext.call(this, parser);
this.items = null; // With_argument_assignment_listContext;
this.item = null; // Argument_assignmentContext;
With_argument_assignment_listContext.prototype.copyFrom.call(this, ctx);
return this;
}
ArgumentAssignmentListItemContext.prototype = Object.create(With_argument_assignment_listContext.prototype);
ArgumentAssignmentListItemContext.prototype.constructor = ArgumentAssignmentListItemContext;
EParser.ArgumentAssignmentListItemContext = ArgumentAssignmentListItemContext;
ArgumentAssignmentListItemContext.prototype.COMMA = function() {
return this.getToken(EParser.COMMA, 0);
};
ArgumentAssignmentListItemContext.prototype.with_argument_assignment_list = function() {
return this.getTypedRuleContext(With_argument_assignment_listContext,0);
};
ArgumentAssignmentListItemContext.prototype.argument_assignment = function() {
return this.getTypedRuleContext(Argument_assignmentContext,0);
};
ArgumentAssignmentListItemContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterArgumentAssignmentListItem(this);
}
};
ArgumentAssignmentListItemContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitArgumentAssignmentListItem(this);
}
};
EParser.prototype.with_argument_assignment_list = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new With_argument_assignment_listContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 126;
this.enterRecursionRule(localctx, 126, EParser.RULE_with_argument_assignment_list, _p);
try {
this.enterOuterAlt(localctx, 1);
localctx = new ArgumentAssignmentListContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1522;
this.match(EParser.WITH);
this.state = 1523;
localctx.item = this.argument_assignment();
this._ctx.stop = this._input.LT(-1);
this.state = 1530;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,96,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
if(this._parseListeners!==null) {
this.triggerExitRuleEvent();
}
_prevctx = localctx;
localctx = new ArgumentAssignmentListItemContext(this, new With_argument_assignment_listContext(this, _parentctx, _parentState));
localctx.items = _prevctx;
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_with_argument_assignment_list);
this.state = 1525;
if (!( this.precpred(this._ctx, 1))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
}
this.state = 1526;
this.match(EParser.COMMA);
this.state = 1527;
localctx.item = this.argument_assignment();
}
this.state = 1532;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,96,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 Argument_assignmentContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_argument_assignment;
this.exp = null; // ExpressionContext
this.name = null; // Variable_identifierContext
return this;
}
Argument_assignmentContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Argument_assignmentContext.prototype.constructor = Argument_assignmentContext;
Argument_assignmentContext.prototype.variable_identifier = function() {
return this.getTypedRuleContext(Variable_identifierContext,0);
};
Argument_assignmentContext.prototype.AS = function() {
return this.getToken(EParser.AS, 0);
};
Argument_assignmentContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
Argument_assignmentContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterArgument_assignment(this);
}
};
Argument_assignmentContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitArgument_assignment(this);
}
};
EParser.Argument_assignmentContext = Argument_assignmentContext;
EParser.prototype.argument_assignment = function() {
var localctx = new Argument_assignmentContext(this, this._ctx, this.state);
this.enterRule(localctx, 128, EParser.RULE_argument_assignment);
try {
this.enterOuterAlt(localctx, 1);
this.state = 1536;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,97,this._ctx);
if(la_===1) {
this.state = 1533;
localctx.exp = this.expression(0);
this.state = 1534;
this.match(EParser.AS);
}
this.state = 1538;
localctx.name = this.variable_identifier();
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Assign_instance_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 = EParser.RULE_assign_instance_statement;
this.inst = null; // Assignable_instanceContext
this.exp = null; // ExpressionContext
return this;
}
Assign_instance_statementContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Assign_instance_statementContext.prototype.constructor = Assign_instance_statementContext;
Assign_instance_statementContext.prototype.assign = function() {
return this.getTypedRuleContext(AssignContext,0);
};
Assign_instance_statementContext.prototype.assignable_instance = function() {
return this.getTypedRuleContext(Assignable_instanceContext,0);
};
Assign_instance_statementContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
Assign_instance_statementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterAssign_instance_statement(this);
}
};
Assign_instance_statementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitAssign_instance_statement(this);
}
};
EParser.Assign_instance_statementContext = Assign_instance_statementContext;
EParser.prototype.assign_instance_statement = function() {
var localctx = new Assign_instance_statementContext(this, this._ctx, this.state);
this.enterRule(localctx, 130, EParser.RULE_assign_instance_statement);
try {
this.enterOuterAlt(localctx, 1);
this.state = 1540;
localctx.inst = this.assignable_instance(0);
this.state = 1541;
this.assign();
this.state = 1542;
localctx.exp = this.expression(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 Child_instanceContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_child_instance;
return this;
}
Child_instanceContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Child_instanceContext.prototype.constructor = Child_instanceContext;
Child_instanceContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function MemberInstanceContext(parser, ctx) {
Child_instanceContext.call(this, parser);
this.name = null; // Variable_identifierContext;
Child_instanceContext.prototype.copyFrom.call(this, ctx);
return this;
}
MemberInstanceContext.prototype = Object.create(Child_instanceContext.prototype);
MemberInstanceContext.prototype.constructor = MemberInstanceContext;
EParser.MemberInstanceContext = MemberInstanceContext;
MemberInstanceContext.prototype.DOT = function() {
return this.getToken(EParser.DOT, 0);
};
MemberInstanceContext.prototype.variable_identifier = function() {
return this.getTypedRuleContext(Variable_identifierContext,0);
};
MemberInstanceContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterMemberInstance(this);
}
};
MemberInstanceContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitMemberInstance(this);
}
};
function ItemInstanceContext(parser, ctx) {
Child_instanceContext.call(this, parser);
this.exp = null; // ExpressionContext;
Child_instanceContext.prototype.copyFrom.call(this, ctx);
return this;
}
ItemInstanceContext.prototype = Object.create(Child_instanceContext.prototype);
ItemInstanceContext.prototype.constructor = ItemInstanceContext;
EParser.ItemInstanceContext = ItemInstanceContext;
ItemInstanceContext.prototype.LBRAK = function() {
return this.getToken(EParser.LBRAK, 0);
};
ItemInstanceContext.prototype.RBRAK = function() {
return this.getToken(EParser.RBRAK, 0);
};
ItemInstanceContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
ItemInstanceContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterItemInstance(this);
}
};
ItemInstanceContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitItemInstance(this);
}
};
EParser.Child_instanceContext = Child_instanceContext;
EParser.prototype.child_instance = function() {
var localctx = new Child_instanceContext(this, this._ctx, this.state);
this.enterRule(localctx, 132, EParser.RULE_child_instance);
try {
this.state = 1552;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,98,this._ctx);
switch(la_) {
case 1:
localctx = new MemberInstanceContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 1544;
if (!( this.wasNot(EParser.WS))) {
throw new antlr4.error.FailedPredicateException(this, "$parser.wasNot(EParser.WS)");
}
this.state = 1545;
this.match(EParser.DOT);
this.state = 1546;
localctx.name = this.variable_identifier();
break;
case 2:
localctx = new ItemInstanceContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 1547;
if (!( this.wasNot(EParser.WS))) {
throw new antlr4.error.FailedPredicateException(this, "$parser.wasNot(EParser.WS)");
}
this.state = 1548;
this.match(EParser.LBRAK);
this.state = 1549;
localctx.exp = this.expression(0);
this.state = 1550;
this.match(EParser.RBRAK);
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 Assign_tuple_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 = EParser.RULE_assign_tuple_statement;
this.items = null; // Variable_identifier_listContext
this.exp = null; // ExpressionContext
return this;
}
Assign_tuple_statementContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Assign_tuple_statementContext.prototype.constructor = Assign_tuple_statementContext;
Assign_tuple_statementContext.prototype.assign = function() {
return this.getTypedRuleContext(AssignContext,0);
};
Assign_tuple_statementContext.prototype.variable_identifier_list = function() {
return this.getTypedRuleContext(Variable_identifier_listContext,0);
};
Assign_tuple_statementContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
Assign_tuple_statementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterAssign_tuple_statement(this);
}
};
Assign_tuple_statementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitAssign_tuple_statement(this);
}
};
EParser.Assign_tuple_statementContext = Assign_tuple_statementContext;
EParser.prototype.assign_tuple_statement = function() {
var localctx = new Assign_tuple_statementContext(this, this._ctx, this.state);
this.enterRule(localctx, 134, EParser.RULE_assign_tuple_statement);
try {
this.enterOuterAlt(localctx, 1);
this.state = 1554;
localctx.items = this.variable_identifier_list();
this.state = 1555;
this.assign();
this.state = 1556;
localctx.exp = this.expression(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 LfsContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_lfs;
return this;
}
LfsContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
LfsContext.prototype.constructor = LfsContext;
LfsContext.prototype.LF = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(EParser.LF);
} else {
return this.getToken(EParser.LF, i);
}
};
LfsContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterLfs(this);
}
};
LfsContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitLfs(this);
}
};
EParser.LfsContext = LfsContext;
EParser.prototype.lfs = function() {
var localctx = new LfsContext(this, this._ctx, this.state);
this.enterRule(localctx, 136, EParser.RULE_lfs);
try {
this.enterOuterAlt(localctx, 1);
this.state = 1561;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,99,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
this.state = 1558;
this.match(EParser.LF);
}
this.state = 1563;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,99,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 LfpContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_lfp;
return this;
}
LfpContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
LfpContext.prototype.constructor = LfpContext;
LfpContext.prototype.LF = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(EParser.LF);
} else {
return this.getToken(EParser.LF, i);
}
};
LfpContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterLfp(this);
}
};
LfpContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitLfp(this);
}
};
EParser.LfpContext = LfpContext;
EParser.prototype.lfp = function() {
var localctx = new LfpContext(this, this._ctx, this.state);
this.enterRule(localctx, 138, EParser.RULE_lfp);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 1565;
this._errHandler.sync(this);
_la = this._input.LA(1);
do {
this.state = 1564;
this.match(EParser.LF);
this.state = 1567;
this._errHandler.sync(this);
_la = this._input.LA(1);
} while(_la===EParser.LF);
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Jsx_wsContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_jsx_ws;
return this;
}
Jsx_wsContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Jsx_wsContext.prototype.constructor = Jsx_wsContext;
Jsx_wsContext.prototype.LF = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(EParser.LF);
} else {
return this.getToken(EParser.LF, i);
}
};
Jsx_wsContext.prototype.TAB = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(EParser.TAB);
} else {
return this.getToken(EParser.TAB, i);
}
};
Jsx_wsContext.prototype.WS = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(EParser.WS);
} else {
return this.getToken(EParser.WS, i);
}
};
Jsx_wsContext.prototype.INDENT = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(EParser.INDENT);
} else {
return this.getToken(EParser.INDENT, i);
}
};
Jsx_wsContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJsx_ws(this);
}
};
Jsx_wsContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJsx_ws(this);
}
};
EParser.Jsx_wsContext = Jsx_wsContext;
EParser.prototype.jsx_ws = function() {
var localctx = new Jsx_wsContext(this, this._ctx, this.state);
this.enterRule(localctx, 140, EParser.RULE_jsx_ws);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 1572;
this._errHandler.sync(this);
_la = this._input.LA(1);
while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << EParser.INDENT) | (1 << EParser.LF) | (1 << EParser.TAB) | (1 << EParser.WS))) !== 0)) {
this.state = 1569;
_la = this._input.LA(1);
if(!((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << EParser.INDENT) | (1 << EParser.LF) | (1 << EParser.TAB) | (1 << EParser.WS))) !== 0))) {
this._errHandler.recoverInline(this);
}
else {
this._errHandler.reportMatch(this);
this.consume();
}
this.state = 1574;
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 IndentContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_indent;
return this;
}
IndentContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
IndentContext.prototype.constructor = IndentContext;
IndentContext.prototype.INDENT = function() {
return this.getToken(EParser.INDENT, 0);
};
IndentContext.prototype.LF = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(EParser.LF);
} else {
return this.getToken(EParser.LF, i);
}
};
IndentContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterIndent(this);
}
};
IndentContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitIndent(this);
}
};
EParser.IndentContext = IndentContext;
EParser.prototype.indent = function() {
var localctx = new IndentContext(this, this._ctx, this.state);
this.enterRule(localctx, 142, EParser.RULE_indent);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 1576;
this._errHandler.sync(this);
_la = this._input.LA(1);
do {
this.state = 1575;
this.match(EParser.LF);
this.state = 1578;
this._errHandler.sync(this);
_la = this._input.LA(1);
} while(_la===EParser.LF);
this.state = 1580;
this.match(EParser.INDENT);
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function DedentContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_dedent;
return this;
}
DedentContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
DedentContext.prototype.constructor = DedentContext;
DedentContext.prototype.DEDENT = function() {
return this.getToken(EParser.DEDENT, 0);
};
DedentContext.prototype.LF = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(EParser.LF);
} else {
return this.getToken(EParser.LF, i);
}
};
DedentContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterDedent(this);
}
};
DedentContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitDedent(this);
}
};
EParser.DedentContext = DedentContext;
EParser.prototype.dedent = function() {
var localctx = new DedentContext(this, this._ctx, this.state);
this.enterRule(localctx, 144, EParser.RULE_dedent);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 1585;
this._errHandler.sync(this);
_la = this._input.LA(1);
while(_la===EParser.LF) {
this.state = 1582;
this.match(EParser.LF);
this.state = 1587;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
this.state = 1588;
this.match(EParser.DEDENT);
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Null_literalContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_null_literal;
return this;
}
Null_literalContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Null_literalContext.prototype.constructor = Null_literalContext;
Null_literalContext.prototype.NOTHING = function() {
return this.getToken(EParser.NOTHING, 0);
};
Null_literalContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterNull_literal(this);
}
};
Null_literalContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitNull_literal(this);
}
};
EParser.Null_literalContext = Null_literalContext;
EParser.prototype.null_literal = function() {
var localctx = new Null_literalContext(this, this._ctx, this.state);
this.enterRule(localctx, 146, EParser.RULE_null_literal);
try {
this.enterOuterAlt(localctx, 1);
this.state = 1590;
this.match(EParser.NOTHING);
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Declaration_listContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_declaration_list;
return this;
}
Declaration_listContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Declaration_listContext.prototype.constructor = Declaration_listContext;
Declaration_listContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function FullDeclarationListContext(parser, ctx) {
Declaration_listContext.call(this, parser);
Declaration_listContext.prototype.copyFrom.call(this, ctx);
return this;
}
FullDeclarationListContext.prototype = Object.create(Declaration_listContext.prototype);
FullDeclarationListContext.prototype.constructor = FullDeclarationListContext;
EParser.FullDeclarationListContext = FullDeclarationListContext;
FullDeclarationListContext.prototype.lfs = function() {
return this.getTypedRuleContext(LfsContext,0);
};
FullDeclarationListContext.prototype.EOF = function() {
return this.getToken(EParser.EOF, 0);
};
FullDeclarationListContext.prototype.declarations = function() {
return this.getTypedRuleContext(DeclarationsContext,0);
};
FullDeclarationListContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterFullDeclarationList(this);
}
};
FullDeclarationListContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitFullDeclarationList(this);
}
};
EParser.Declaration_listContext = Declaration_listContext;
EParser.prototype.declaration_list = function() {
var localctx = new Declaration_listContext(this, this._ctx, this.state);
this.enterRule(localctx, 148, EParser.RULE_declaration_list);
var _la = 0; // Token type
try {
localctx = new FullDeclarationListContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 1593;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.COMMENT || _la===EParser.DEFINE || _la===EParser.ARONDBASE_IDENTIFIER) {
this.state = 1592;
this.declarations();
}
this.state = 1595;
this.lfs();
this.state = 1596;
this.match(EParser.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 DeclarationsContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_declarations;
return this;
}
DeclarationsContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
DeclarationsContext.prototype.constructor = DeclarationsContext;
DeclarationsContext.prototype.declaration = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(DeclarationContext);
} else {
return this.getTypedRuleContext(DeclarationContext,i);
}
};
DeclarationsContext.prototype.lfp = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(LfpContext);
} else {
return this.getTypedRuleContext(LfpContext,i);
}
};
DeclarationsContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterDeclarations(this);
}
};
DeclarationsContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitDeclarations(this);
}
};
EParser.DeclarationsContext = DeclarationsContext;
EParser.prototype.declarations = function() {
var localctx = new DeclarationsContext(this, this._ctx, this.state);
this.enterRule(localctx, 150, EParser.RULE_declarations);
try {
this.enterOuterAlt(localctx, 1);
this.state = 1598;
this.declaration();
this.state = 1604;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,105,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
this.state = 1599;
this.lfp();
this.state = 1600;
this.declaration();
}
this.state = 1606;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,105,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 DeclarationContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_declaration;
return this;
}
DeclarationContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
DeclarationContext.prototype.constructor = DeclarationContext;
DeclarationContext.prototype.attribute_declaration = function() {
return this.getTypedRuleContext(Attribute_declarationContext,0);
};
DeclarationContext.prototype.category_declaration = function() {
return this.getTypedRuleContext(Category_declarationContext,0);
};
DeclarationContext.prototype.resource_declaration = function() {
return this.getTypedRuleContext(Resource_declarationContext,0);
};
DeclarationContext.prototype.enum_declaration = function() {
return this.getTypedRuleContext(Enum_declarationContext,0);
};
DeclarationContext.prototype.widget_declaration = function() {
return this.getTypedRuleContext(Widget_declarationContext,0);
};
DeclarationContext.prototype.method_declaration = function() {
return this.getTypedRuleContext(Method_declarationContext,0);
};
DeclarationContext.prototype.comment_statement = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(Comment_statementContext);
} else {
return this.getTypedRuleContext(Comment_statementContext,i);
}
};
DeclarationContext.prototype.lfp = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(LfpContext);
} else {
return this.getTypedRuleContext(LfpContext,i);
}
};
DeclarationContext.prototype.annotation_constructor = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(Annotation_constructorContext);
} else {
return this.getTypedRuleContext(Annotation_constructorContext,i);
}
};
DeclarationContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterDeclaration(this);
}
};
DeclarationContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitDeclaration(this);
}
};
EParser.DeclarationContext = DeclarationContext;
EParser.prototype.declaration = function() {
var localctx = new DeclarationContext(this, this._ctx, this.state);
this.enterRule(localctx, 152, EParser.RULE_declaration);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 1612;
this._errHandler.sync(this);
_la = this._input.LA(1);
while(_la===EParser.COMMENT) {
this.state = 1607;
this.comment_statement();
this.state = 1608;
this.lfp();
this.state = 1614;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
this.state = 1620;
this._errHandler.sync(this);
_la = this._input.LA(1);
while(_la===EParser.ARONDBASE_IDENTIFIER) {
this.state = 1615;
this.annotation_constructor();
this.state = 1616;
this.lfp();
this.state = 1622;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
this.state = 1629;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,108,this._ctx);
switch(la_) {
case 1:
this.state = 1623;
this.attribute_declaration();
break;
case 2:
this.state = 1624;
this.category_declaration();
break;
case 3:
this.state = 1625;
this.resource_declaration();
break;
case 4:
this.state = 1626;
this.enum_declaration();
break;
case 5:
this.state = 1627;
this.widget_declaration();
break;
case 6:
this.state = 1628;
this.method_declaration();
break;
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Annotation_constructorContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_annotation_constructor;
this.name = null; // Annotation_identifierContext
this.exp = null; // Literal_expressionContext
return this;
}
Annotation_constructorContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Annotation_constructorContext.prototype.constructor = Annotation_constructorContext;
Annotation_constructorContext.prototype.annotation_identifier = function() {
return this.getTypedRuleContext(Annotation_identifierContext,0);
};
Annotation_constructorContext.prototype.LPAR = function() {
return this.getToken(EParser.LPAR, 0);
};
Annotation_constructorContext.prototype.RPAR = function() {
return this.getToken(EParser.RPAR, 0);
};
Annotation_constructorContext.prototype.literal_expression = function() {
return this.getTypedRuleContext(Literal_expressionContext,0);
};
Annotation_constructorContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterAnnotation_constructor(this);
}
};
Annotation_constructorContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitAnnotation_constructor(this);
}
};
EParser.Annotation_constructorContext = Annotation_constructorContext;
EParser.prototype.annotation_constructor = function() {
var localctx = new Annotation_constructorContext(this, this._ctx, this.state);
this.enterRule(localctx, 154, EParser.RULE_annotation_constructor);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 1631;
localctx.name = this.annotation_identifier();
this.state = 1636;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.LPAR) {
this.state = 1632;
this.match(EParser.LPAR);
this.state = 1633;
localctx.exp = this.literal_expression();
this.state = 1634;
this.match(EParser.RPAR);
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Annotation_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 = EParser.RULE_annotation_identifier;
return this;
}
Annotation_identifierContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Annotation_identifierContext.prototype.constructor = Annotation_identifierContext;
Annotation_identifierContext.prototype.ARONDBASE_IDENTIFIER = function() {
return this.getToken(EParser.ARONDBASE_IDENTIFIER, 0);
};
Annotation_identifierContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterAnnotation_identifier(this);
}
};
Annotation_identifierContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitAnnotation_identifier(this);
}
};
EParser.Annotation_identifierContext = Annotation_identifierContext;
EParser.prototype.annotation_identifier = function() {
var localctx = new Annotation_identifierContext(this, this._ctx, this.state);
this.enterRule(localctx, 156, EParser.RULE_annotation_identifier);
try {
this.enterOuterAlt(localctx, 1);
this.state = 1638;
this.match(EParser.ARONDBASE_IDENTIFIER);
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Resource_declarationContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_resource_declaration;
return this;
}
Resource_declarationContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Resource_declarationContext.prototype.constructor = Resource_declarationContext;
Resource_declarationContext.prototype.native_resource_declaration = function() {
return this.getTypedRuleContext(Native_resource_declarationContext,0);
};
Resource_declarationContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterResource_declaration(this);
}
};
Resource_declarationContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitResource_declaration(this);
}
};
EParser.Resource_declarationContext = Resource_declarationContext;
EParser.prototype.resource_declaration = function() {
var localctx = new Resource_declarationContext(this, this._ctx, this.state);
this.enterRule(localctx, 158, EParser.RULE_resource_declaration);
try {
this.enterOuterAlt(localctx, 1);
this.state = 1640;
this.native_resource_declaration();
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Enum_declarationContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_enum_declaration;
return this;
}
Enum_declarationContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Enum_declarationContext.prototype.constructor = Enum_declarationContext;
Enum_declarationContext.prototype.enum_category_declaration = function() {
return this.getTypedRuleContext(Enum_category_declarationContext,0);
};
Enum_declarationContext.prototype.enum_native_declaration = function() {
return this.getTypedRuleContext(Enum_native_declarationContext,0);
};
Enum_declarationContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterEnum_declaration(this);
}
};
Enum_declarationContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitEnum_declaration(this);
}
};
EParser.Enum_declarationContext = Enum_declarationContext;
EParser.prototype.enum_declaration = function() {
var localctx = new Enum_declarationContext(this, this._ctx, this.state);
this.enterRule(localctx, 160, EParser.RULE_enum_declaration);
try {
this.state = 1644;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,110,this._ctx);
switch(la_) {
case 1:
this.enterOuterAlt(localctx, 1);
this.state = 1642;
this.enum_category_declaration();
break;
case 2:
this.enterOuterAlt(localctx, 2);
this.state = 1643;
this.enum_native_declaration();
break;
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Native_symbol_listContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_native_symbol_list;
return this;
}
Native_symbol_listContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Native_symbol_listContext.prototype.constructor = Native_symbol_listContext;
Native_symbol_listContext.prototype.native_symbol = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(Native_symbolContext);
} else {
return this.getTypedRuleContext(Native_symbolContext,i);
}
};
Native_symbol_listContext.prototype.lfp = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(LfpContext);
} else {
return this.getTypedRuleContext(LfpContext,i);
}
};
Native_symbol_listContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterNative_symbol_list(this);
}
};
Native_symbol_listContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitNative_symbol_list(this);
}
};
EParser.Native_symbol_listContext = Native_symbol_listContext;
EParser.prototype.native_symbol_list = function() {
var localctx = new Native_symbol_listContext(this, this._ctx, this.state);
this.enterRule(localctx, 162, EParser.RULE_native_symbol_list);
try {
this.enterOuterAlt(localctx, 1);
this.state = 1646;
this.native_symbol();
this.state = 1652;
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) {
this.state = 1647;
this.lfp();
this.state = 1648;
this.native_symbol();
}
this.state = 1654;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,111,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 Category_symbol_listContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_category_symbol_list;
return this;
}
Category_symbol_listContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Category_symbol_listContext.prototype.constructor = Category_symbol_listContext;
Category_symbol_listContext.prototype.category_symbol = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(Category_symbolContext);
} else {
return this.getTypedRuleContext(Category_symbolContext,i);
}
};
Category_symbol_listContext.prototype.lfp = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(LfpContext);
} else {
return this.getTypedRuleContext(LfpContext,i);
}
};
Category_symbol_listContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterCategory_symbol_list(this);
}
};
Category_symbol_listContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitCategory_symbol_list(this);
}
};
EParser.Category_symbol_listContext = Category_symbol_listContext;
EParser.prototype.category_symbol_list = function() {
var localctx = new Category_symbol_listContext(this, this._ctx, this.state);
this.enterRule(localctx, 164, EParser.RULE_category_symbol_list);
try {
this.enterOuterAlt(localctx, 1);
this.state = 1655;
this.category_symbol();
this.state = 1661;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,112,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
this.state = 1656;
this.lfp();
this.state = 1657;
this.category_symbol();
}
this.state = 1663;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,112,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 Symbol_listContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_symbol_list;
return this;
}
Symbol_listContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Symbol_listContext.prototype.constructor = Symbol_listContext;
Symbol_listContext.prototype.symbol_identifier = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(Symbol_identifierContext);
} else {
return this.getTypedRuleContext(Symbol_identifierContext,i);
}
};
Symbol_listContext.prototype.COMMA = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(EParser.COMMA);
} else {
return this.getToken(EParser.COMMA, i);
}
};
Symbol_listContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterSymbol_list(this);
}
};
Symbol_listContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitSymbol_list(this);
}
};
EParser.Symbol_listContext = Symbol_listContext;
EParser.prototype.symbol_list = function() {
var localctx = new Symbol_listContext(this, this._ctx, this.state);
this.enterRule(localctx, 166, EParser.RULE_symbol_list);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 1664;
this.symbol_identifier();
this.state = 1669;
this._errHandler.sync(this);
_la = this._input.LA(1);
while(_la===EParser.COMMA) {
this.state = 1665;
this.match(EParser.COMMA);
this.state = 1666;
this.symbol_identifier();
this.state = 1671;
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 Attribute_constraintContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_attribute_constraint;
return this;
}
Attribute_constraintContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Attribute_constraintContext.prototype.constructor = Attribute_constraintContext;
Attribute_constraintContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function MatchingSetContext(parser, ctx) {
Attribute_constraintContext.call(this, parser);
this.source = null; // Set_literalContext;
Attribute_constraintContext.prototype.copyFrom.call(this, ctx);
return this;
}
MatchingSetContext.prototype = Object.create(Attribute_constraintContext.prototype);
MatchingSetContext.prototype.constructor = MatchingSetContext;
EParser.MatchingSetContext = MatchingSetContext;
MatchingSetContext.prototype.IN = function() {
return this.getToken(EParser.IN, 0);
};
MatchingSetContext.prototype.set_literal = function() {
return this.getTypedRuleContext(Set_literalContext,0);
};
MatchingSetContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterMatchingSet(this);
}
};
MatchingSetContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitMatchingSet(this);
}
};
function MatchingPatternContext(parser, ctx) {
Attribute_constraintContext.call(this, parser);
this.text = null; // Token;
Attribute_constraintContext.prototype.copyFrom.call(this, ctx);
return this;
}
MatchingPatternContext.prototype = Object.create(Attribute_constraintContext.prototype);
MatchingPatternContext.prototype.constructor = MatchingPatternContext;
EParser.MatchingPatternContext = MatchingPatternContext;
MatchingPatternContext.prototype.MATCHING = function() {
return this.getToken(EParser.MATCHING, 0);
};
MatchingPatternContext.prototype.TEXT_LITERAL = function() {
return this.getToken(EParser.TEXT_LITERAL, 0);
};
MatchingPatternContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterMatchingPattern(this);
}
};
MatchingPatternContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitMatchingPattern(this);
}
};
function MatchingListContext(parser, ctx) {
Attribute_constraintContext.call(this, parser);
this.source = null; // List_literalContext;
Attribute_constraintContext.prototype.copyFrom.call(this, ctx);
return this;
}
MatchingListContext.prototype = Object.create(Attribute_constraintContext.prototype);
MatchingListContext.prototype.constructor = MatchingListContext;
EParser.MatchingListContext = MatchingListContext;
MatchingListContext.prototype.IN = function() {
return this.getToken(EParser.IN, 0);
};
MatchingListContext.prototype.list_literal = function() {
return this.getTypedRuleContext(List_literalContext,0);
};
MatchingListContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterMatchingList(this);
}
};
MatchingListContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitMatchingList(this);
}
};
function MatchingRangeContext(parser, ctx) {
Attribute_constraintContext.call(this, parser);
this.source = null; // Range_literalContext;
Attribute_constraintContext.prototype.copyFrom.call(this, ctx);
return this;
}
MatchingRangeContext.prototype = Object.create(Attribute_constraintContext.prototype);
MatchingRangeContext.prototype.constructor = MatchingRangeContext;
EParser.MatchingRangeContext = MatchingRangeContext;
MatchingRangeContext.prototype.IN = function() {
return this.getToken(EParser.IN, 0);
};
MatchingRangeContext.prototype.range_literal = function() {
return this.getTypedRuleContext(Range_literalContext,0);
};
MatchingRangeContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterMatchingRange(this);
}
};
MatchingRangeContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitMatchingRange(this);
}
};
function MatchingExpressionContext(parser, ctx) {
Attribute_constraintContext.call(this, parser);
this.exp = null; // ExpressionContext;
Attribute_constraintContext.prototype.copyFrom.call(this, ctx);
return this;
}
MatchingExpressionContext.prototype = Object.create(Attribute_constraintContext.prototype);
MatchingExpressionContext.prototype.constructor = MatchingExpressionContext;
EParser.MatchingExpressionContext = MatchingExpressionContext;
MatchingExpressionContext.prototype.MATCHING = function() {
return this.getToken(EParser.MATCHING, 0);
};
MatchingExpressionContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
MatchingExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterMatchingExpression(this);
}
};
MatchingExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitMatchingExpression(this);
}
};
EParser.Attribute_constraintContext = Attribute_constraintContext;
EParser.prototype.attribute_constraint = function() {
var localctx = new Attribute_constraintContext(this, this._ctx, this.state);
this.enterRule(localctx, 168, EParser.RULE_attribute_constraint);
try {
this.state = 1682;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,114,this._ctx);
switch(la_) {
case 1:
localctx = new MatchingListContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 1672;
this.match(EParser.IN);
this.state = 1673;
localctx.source = this.list_literal();
break;
case 2:
localctx = new MatchingSetContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 1674;
this.match(EParser.IN);
this.state = 1675;
localctx.source = this.set_literal();
break;
case 3:
localctx = new MatchingRangeContext(this, localctx);
this.enterOuterAlt(localctx, 3);
this.state = 1676;
this.match(EParser.IN);
this.state = 1677;
localctx.source = this.range_literal();
break;
case 4:
localctx = new MatchingPatternContext(this, localctx);
this.enterOuterAlt(localctx, 4);
this.state = 1678;
this.match(EParser.MATCHING);
this.state = 1679;
localctx.text = this.match(EParser.TEXT_LITERAL);
break;
case 5:
localctx = new MatchingExpressionContext(this, localctx);
this.enterOuterAlt(localctx, 5);
this.state = 1680;
this.match(EParser.MATCHING);
this.state = 1681;
localctx.exp = this.expression(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 List_literalContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_list_literal;
return this;
}
List_literalContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
List_literalContext.prototype.constructor = List_literalContext;
List_literalContext.prototype.LBRAK = function() {
return this.getToken(EParser.LBRAK, 0);
};
List_literalContext.prototype.RBRAK = function() {
return this.getToken(EParser.RBRAK, 0);
};
List_literalContext.prototype.MUTABLE = function() {
return this.getToken(EParser.MUTABLE, 0);
};
List_literalContext.prototype.expression_list = function() {
return this.getTypedRuleContext(Expression_listContext,0);
};
List_literalContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterList_literal(this);
}
};
List_literalContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitList_literal(this);
}
};
EParser.List_literalContext = List_literalContext;
EParser.prototype.list_literal = function() {
var localctx = new List_literalContext(this, this._ctx, this.state);
this.enterRule(localctx, 170, EParser.RULE_list_literal);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 1685;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.MUTABLE) {
this.state = 1684;
this.match(EParser.MUTABLE);
}
this.state = 1687;
this.match(EParser.LBRAK);
this.state = 1689;
this._errHandler.sync(this);
_la = this._input.LA(1);
if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << EParser.LPAR) | (1 << EParser.LBRAK) | (1 << EParser.LCURL))) !== 0) || ((((_la - 33)) & ~0x1f) == 0 && ((1 << (_la - 33)) & ((1 << (EParser.MINUS - 33)) | (1 << (EParser.LT - 33)) | (1 << (EParser.LTGT - 33)) | (1 << (EParser.LTCOLONGT - 33)) | (1 << (EParser.METHOD_T - 33)) | (1 << (EParser.CODE - 33)) | (1 << (EParser.DOCUMENT - 33)) | (1 << (EParser.BLOB - 33)))) !== 0) || ((((_la - 101)) & ~0x1f) == 0 && ((1 << (_la - 101)) & ((1 << (EParser.EXECUTE - 101)) | (1 << (EParser.FETCH - 101)) | (1 << (EParser.INVOKE - 101)) | (1 << (EParser.MUTABLE - 101)) | (1 << (EParser.NOT - 101)) | (1 << (EParser.NOTHING - 101)))) !== 0) || ((((_la - 136)) & ~0x1f) == 0 && ((1 << (_la - 136)) & ((1 << (EParser.READ - 136)) | (1 << (EParser.SELF - 136)) | (1 << (EParser.SORTED - 136)) | (1 << (EParser.THIS - 136)) | (1 << (EParser.BOOLEAN_LITERAL - 136)) | (1 << (EParser.CHAR_LITERAL - 136)) | (1 << (EParser.MIN_INTEGER - 136)) | (1 << (EParser.MAX_INTEGER - 136)) | (1 << (EParser.SYMBOL_IDENTIFIER - 136)) | (1 << (EParser.TYPE_IDENTIFIER - 136)))) !== 0) || ((((_la - 168)) & ~0x1f) == 0 && ((1 << (_la - 168)) & ((1 << (EParser.VARIABLE_IDENTIFIER - 168)) | (1 << (EParser.TEXT_LITERAL - 168)) | (1 << (EParser.UUID_LITERAL - 168)) | (1 << (EParser.INTEGER_LITERAL - 168)) | (1 << (EParser.HEXA_LITERAL - 168)) | (1 << (EParser.DECIMAL_LITERAL - 168)) | (1 << (EParser.DATETIME_LITERAL - 168)) | (1 << (EParser.TIME_LITERAL - 168)) | (1 << (EParser.DATE_LITERAL - 168)) | (1 << (EParser.PERIOD_LITERAL - 168)) | (1 << (EParser.VERSION_LITERAL - 168)))) !== 0)) {
this.state = 1688;
this.expression_list();
}
this.state = 1691;
this.match(EParser.RBRAK);
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Set_literalContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_set_literal;
return this;
}
Set_literalContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Set_literalContext.prototype.constructor = Set_literalContext;
Set_literalContext.prototype.LT = function() {
return this.getToken(EParser.LT, 0);
};
Set_literalContext.prototype.GT = function() {
return this.getToken(EParser.GT, 0);
};
Set_literalContext.prototype.MUTABLE = function() {
return this.getToken(EParser.MUTABLE, 0);
};
Set_literalContext.prototype.expression_list = function() {
return this.getTypedRuleContext(Expression_listContext,0);
};
Set_literalContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterSet_literal(this);
}
};
Set_literalContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitSet_literal(this);
}
};
EParser.Set_literalContext = Set_literalContext;
EParser.prototype.set_literal = function() {
var localctx = new Set_literalContext(this, this._ctx, this.state);
this.enterRule(localctx, 172, EParser.RULE_set_literal);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 1694;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.MUTABLE) {
this.state = 1693;
this.match(EParser.MUTABLE);
}
this.state = 1696;
this.match(EParser.LT);
this.state = 1698;
this._errHandler.sync(this);
_la = this._input.LA(1);
if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << EParser.LPAR) | (1 << EParser.LBRAK) | (1 << EParser.LCURL))) !== 0) || ((((_la - 33)) & ~0x1f) == 0 && ((1 << (_la - 33)) & ((1 << (EParser.MINUS - 33)) | (1 << (EParser.LT - 33)) | (1 << (EParser.LTGT - 33)) | (1 << (EParser.LTCOLONGT - 33)) | (1 << (EParser.METHOD_T - 33)) | (1 << (EParser.CODE - 33)) | (1 << (EParser.DOCUMENT - 33)) | (1 << (EParser.BLOB - 33)))) !== 0) || ((((_la - 101)) & ~0x1f) == 0 && ((1 << (_la - 101)) & ((1 << (EParser.EXECUTE - 101)) | (1 << (EParser.FETCH - 101)) | (1 << (EParser.INVOKE - 101)) | (1 << (EParser.MUTABLE - 101)) | (1 << (EParser.NOT - 101)) | (1 << (EParser.NOTHING - 101)))) !== 0) || ((((_la - 136)) & ~0x1f) == 0 && ((1 << (_la - 136)) & ((1 << (EParser.READ - 136)) | (1 << (EParser.SELF - 136)) | (1 << (EParser.SORTED - 136)) | (1 << (EParser.THIS - 136)) | (1 << (EParser.BOOLEAN_LITERAL - 136)) | (1 << (EParser.CHAR_LITERAL - 136)) | (1 << (EParser.MIN_INTEGER - 136)) | (1 << (EParser.MAX_INTEGER - 136)) | (1 << (EParser.SYMBOL_IDENTIFIER - 136)) | (1 << (EParser.TYPE_IDENTIFIER - 136)))) !== 0) || ((((_la - 168)) & ~0x1f) == 0 && ((1 << (_la - 168)) & ((1 << (EParser.VARIABLE_IDENTIFIER - 168)) | (1 << (EParser.TEXT_LITERAL - 168)) | (1 << (EParser.UUID_LITERAL - 168)) | (1 << (EParser.INTEGER_LITERAL - 168)) | (1 << (EParser.HEXA_LITERAL - 168)) | (1 << (EParser.DECIMAL_LITERAL - 168)) | (1 << (EParser.DATETIME_LITERAL - 168)) | (1 << (EParser.TIME_LITERAL - 168)) | (1 << (EParser.DATE_LITERAL - 168)) | (1 << (EParser.PERIOD_LITERAL - 168)) | (1 << (EParser.VERSION_LITERAL - 168)))) !== 0)) {
this.state = 1697;
this.expression_list();
}
this.state = 1700;
this.match(EParser.GT);
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Expression_listContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_expression_list;
return this;
}
Expression_listContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Expression_listContext.prototype.constructor = Expression_listContext;
Expression_listContext.prototype.expression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ExpressionContext);
} else {
return this.getTypedRuleContext(ExpressionContext,i);
}
};
Expression_listContext.prototype.COMMA = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(EParser.COMMA);
} else {
return this.getToken(EParser.COMMA, i);
}
};
Expression_listContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterExpression_list(this);
}
};
Expression_listContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitExpression_list(this);
}
};
EParser.Expression_listContext = Expression_listContext;
EParser.prototype.expression_list = function() {
var localctx = new Expression_listContext(this, this._ctx, this.state);
this.enterRule(localctx, 174, EParser.RULE_expression_list);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 1702;
this.expression(0);
this.state = 1707;
this._errHandler.sync(this);
_la = this._input.LA(1);
while(_la===EParser.COMMA) {
this.state = 1703;
this.match(EParser.COMMA);
this.state = 1704;
this.expression(0);
this.state = 1709;
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 Range_literalContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_range_literal;
this.low = null; // ExpressionContext
this.high = null; // ExpressionContext
return this;
}
Range_literalContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Range_literalContext.prototype.constructor = Range_literalContext;
Range_literalContext.prototype.LBRAK = function() {
return this.getToken(EParser.LBRAK, 0);
};
Range_literalContext.prototype.RANGE = function() {
return this.getToken(EParser.RANGE, 0);
};
Range_literalContext.prototype.RBRAK = function() {
return this.getToken(EParser.RBRAK, 0);
};
Range_literalContext.prototype.expression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ExpressionContext);
} else {
return this.getTypedRuleContext(ExpressionContext,i);
}
};
Range_literalContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterRange_literal(this);
}
};
Range_literalContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitRange_literal(this);
}
};
EParser.Range_literalContext = Range_literalContext;
EParser.prototype.range_literal = function() {
var localctx = new Range_literalContext(this, this._ctx, this.state);
this.enterRule(localctx, 176, EParser.RULE_range_literal);
try {
this.enterOuterAlt(localctx, 1);
this.state = 1710;
this.match(EParser.LBRAK);
this.state = 1711;
localctx.low = this.expression(0);
this.state = 1712;
this.match(EParser.RANGE);
this.state = 1713;
localctx.high = this.expression(0);
this.state = 1714;
this.match(EParser.RBRAK);
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function TypedefContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_typedef;
return this;
}
TypedefContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
TypedefContext.prototype.constructor = TypedefContext;
TypedefContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function IteratorTypeContext(parser, ctx) {
TypedefContext.call(this, parser);
this.i = null; // TypedefContext;
TypedefContext.prototype.copyFrom.call(this, ctx);
return this;
}
IteratorTypeContext.prototype = Object.create(TypedefContext.prototype);
IteratorTypeContext.prototype.constructor = IteratorTypeContext;
EParser.IteratorTypeContext = IteratorTypeContext;
IteratorTypeContext.prototype.ITERATOR = function() {
return this.getToken(EParser.ITERATOR, 0);
};
IteratorTypeContext.prototype.LT = function() {
return this.getToken(EParser.LT, 0);
};
IteratorTypeContext.prototype.GT = function() {
return this.getToken(EParser.GT, 0);
};
IteratorTypeContext.prototype.typedef = function() {
return this.getTypedRuleContext(TypedefContext,0);
};
IteratorTypeContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterIteratorType(this);
}
};
IteratorTypeContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitIteratorType(this);
}
};
function SetTypeContext(parser, ctx) {
TypedefContext.call(this, parser);
this.s = null; // TypedefContext;
TypedefContext.prototype.copyFrom.call(this, ctx);
return this;
}
SetTypeContext.prototype = Object.create(TypedefContext.prototype);
SetTypeContext.prototype.constructor = SetTypeContext;
EParser.SetTypeContext = SetTypeContext;
SetTypeContext.prototype.LTGT = function() {
return this.getToken(EParser.LTGT, 0);
};
SetTypeContext.prototype.typedef = function() {
return this.getTypedRuleContext(TypedefContext,0);
};
SetTypeContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterSetType(this);
}
};
SetTypeContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitSetType(this);
}
};
function ListTypeContext(parser, ctx) {
TypedefContext.call(this, parser);
this.l = null; // TypedefContext;
TypedefContext.prototype.copyFrom.call(this, ctx);
return this;
}
ListTypeContext.prototype = Object.create(TypedefContext.prototype);
ListTypeContext.prototype.constructor = ListTypeContext;
EParser.ListTypeContext = ListTypeContext;
ListTypeContext.prototype.LBRAK = function() {
return this.getToken(EParser.LBRAK, 0);
};
ListTypeContext.prototype.RBRAK = function() {
return this.getToken(EParser.RBRAK, 0);
};
ListTypeContext.prototype.typedef = function() {
return this.getTypedRuleContext(TypedefContext,0);
};
ListTypeContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterListType(this);
}
};
ListTypeContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitListType(this);
}
};
function DictTypeContext(parser, ctx) {
TypedefContext.call(this, parser);
this.d = null; // TypedefContext;
TypedefContext.prototype.copyFrom.call(this, ctx);
return this;
}
DictTypeContext.prototype = Object.create(TypedefContext.prototype);
DictTypeContext.prototype.constructor = DictTypeContext;
EParser.DictTypeContext = DictTypeContext;
DictTypeContext.prototype.LTCOLONGT = function() {
return this.getToken(EParser.LTCOLONGT, 0);
};
DictTypeContext.prototype.typedef = function() {
return this.getTypedRuleContext(TypedefContext,0);
};
DictTypeContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterDictType(this);
}
};
DictTypeContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitDictType(this);
}
};
function CursorTypeContext(parser, ctx) {
TypedefContext.call(this, parser);
this.c = null; // TypedefContext;
TypedefContext.prototype.copyFrom.call(this, ctx);
return this;
}
CursorTypeContext.prototype = Object.create(TypedefContext.prototype);
CursorTypeContext.prototype.constructor = CursorTypeContext;
EParser.CursorTypeContext = CursorTypeContext;
CursorTypeContext.prototype.CURSOR = function() {
return this.getToken(EParser.CURSOR, 0);
};
CursorTypeContext.prototype.LT = function() {
return this.getToken(EParser.LT, 0);
};
CursorTypeContext.prototype.GT = function() {
return this.getToken(EParser.GT, 0);
};
CursorTypeContext.prototype.typedef = function() {
return this.getTypedRuleContext(TypedefContext,0);
};
CursorTypeContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterCursorType(this);
}
};
CursorTypeContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitCursorType(this);
}
};
function PrimaryTypeContext(parser, ctx) {
TypedefContext.call(this, parser);
this.p = null; // Primary_typeContext;
TypedefContext.prototype.copyFrom.call(this, ctx);
return this;
}
PrimaryTypeContext.prototype = Object.create(TypedefContext.prototype);
PrimaryTypeContext.prototype.constructor = PrimaryTypeContext;
EParser.PrimaryTypeContext = PrimaryTypeContext;
PrimaryTypeContext.prototype.primary_type = function() {
return this.getTypedRuleContext(Primary_typeContext,0);
};
PrimaryTypeContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterPrimaryType(this);
}
};
PrimaryTypeContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitPrimaryType(this);
}
};
EParser.prototype.typedef = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new TypedefContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 178;
this.enterRecursionRule(localctx, 178, EParser.RULE_typedef, _p);
try {
this.enterOuterAlt(localctx, 1);
this.state = 1728;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case EParser.BOOLEAN:
case EParser.CHARACTER:
case EParser.TEXT:
case EParser.INTEGER:
case EParser.DECIMAL:
case EParser.DATE:
case EParser.TIME:
case EParser.DATETIME:
case EParser.PERIOD:
case EParser.VERSION:
case EParser.CODE:
case EParser.DOCUMENT:
case EParser.BLOB:
case EParser.IMAGE:
case EParser.UUID:
case EParser.HTML:
case EParser.TYPE_IDENTIFIER:
localctx = new PrimaryTypeContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1717;
localctx.p = this.primary_type();
break;
case EParser.CURSOR:
localctx = new CursorTypeContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1718;
this.match(EParser.CURSOR);
this.state = 1719;
this.match(EParser.LT);
this.state = 1720;
localctx.c = this.typedef(0);
this.state = 1721;
this.match(EParser.GT);
break;
case EParser.ITERATOR:
localctx = new IteratorTypeContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1723;
this.match(EParser.ITERATOR);
this.state = 1724;
this.match(EParser.LT);
this.state = 1725;
localctx.i = this.typedef(0);
this.state = 1726;
this.match(EParser.GT);
break;
default:
throw new antlr4.error.NoViableAltException(this);
}
this._ctx.stop = this._input.LT(-1);
this.state = 1739;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,122,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 = 1737;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,121,this._ctx);
switch(la_) {
case 1:
localctx = new SetTypeContext(this, new TypedefContext(this, _parentctx, _parentState));
localctx.s = _prevctx;
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_typedef);
this.state = 1730;
if (!( this.precpred(this._ctx, 5))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 5)");
}
this.state = 1731;
this.match(EParser.LTGT);
break;
case 2:
localctx = new ListTypeContext(this, new TypedefContext(this, _parentctx, _parentState));
localctx.l = _prevctx;
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_typedef);
this.state = 1732;
if (!( this.precpred(this._ctx, 4))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 4)");
}
this.state = 1733;
this.match(EParser.LBRAK);
this.state = 1734;
this.match(EParser.RBRAK);
break;
case 3:
localctx = new DictTypeContext(this, new TypedefContext(this, _parentctx, _parentState));
localctx.d = _prevctx;
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_typedef);
this.state = 1735;
if (!( this.precpred(this._ctx, 3))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 3)");
}
this.state = 1736;
this.match(EParser.LTCOLONGT);
break;
}
}
this.state = 1741;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,122,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 Primary_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 = EParser.RULE_primary_type;
return this;
}
Primary_typeContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Primary_typeContext.prototype.constructor = Primary_typeContext;
Primary_typeContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function NativeTypeContext(parser, ctx) {
Primary_typeContext.call(this, parser);
this.n = null; // Native_typeContext;
Primary_typeContext.prototype.copyFrom.call(this, ctx);
return this;
}
NativeTypeContext.prototype = Object.create(Primary_typeContext.prototype);
NativeTypeContext.prototype.constructor = NativeTypeContext;
EParser.NativeTypeContext = NativeTypeContext;
NativeTypeContext.prototype.native_type = function() {
return this.getTypedRuleContext(Native_typeContext,0);
};
NativeTypeContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterNativeType(this);
}
};
NativeTypeContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitNativeType(this);
}
};
function CategoryTypeContext(parser, ctx) {
Primary_typeContext.call(this, parser);
this.c = null; // Category_typeContext;
Primary_typeContext.prototype.copyFrom.call(this, ctx);
return this;
}
CategoryTypeContext.prototype = Object.create(Primary_typeContext.prototype);
CategoryTypeContext.prototype.constructor = CategoryTypeContext;
EParser.CategoryTypeContext = CategoryTypeContext;
CategoryTypeContext.prototype.category_type = function() {
return this.getTypedRuleContext(Category_typeContext,0);
};
CategoryTypeContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterCategoryType(this);
}
};
CategoryTypeContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitCategoryType(this);
}
};
EParser.Primary_typeContext = Primary_typeContext;
EParser.prototype.primary_type = function() {
var localctx = new Primary_typeContext(this, this._ctx, this.state);
this.enterRule(localctx, 180, EParser.RULE_primary_type);
try {
this.state = 1744;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case EParser.BOOLEAN:
case EParser.CHARACTER:
case EParser.TEXT:
case EParser.INTEGER:
case EParser.DECIMAL:
case EParser.DATE:
case EParser.TIME:
case EParser.DATETIME:
case EParser.PERIOD:
case EParser.VERSION:
case EParser.CODE:
case EParser.DOCUMENT:
case EParser.BLOB:
case EParser.IMAGE:
case EParser.UUID:
case EParser.HTML:
localctx = new NativeTypeContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 1742;
localctx.n = this.native_type();
break;
case EParser.TYPE_IDENTIFIER:
localctx = new CategoryTypeContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 1743;
localctx.c = this.category_type();
break;
default:
throw new antlr4.error.NoViableAltException(this);
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Native_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 = EParser.RULE_native_type;
return this;
}
Native_typeContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Native_typeContext.prototype.constructor = Native_typeContext;
Native_typeContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function PeriodTypeContext(parser, ctx) {
Native_typeContext.call(this, parser);
Native_typeContext.prototype.copyFrom.call(this, ctx);
return this;
}
PeriodTypeContext.prototype = Object.create(Native_typeContext.prototype);
PeriodTypeContext.prototype.constructor = PeriodTypeContext;
EParser.PeriodTypeContext = PeriodTypeContext;
PeriodTypeContext.prototype.PERIOD = function() {
return this.getToken(EParser.PERIOD, 0);
};
PeriodTypeContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterPeriodType(this);
}
};
PeriodTypeContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitPeriodType(this);
}
};
function HtmlTypeContext(parser, ctx) {
Native_typeContext.call(this, parser);
Native_typeContext.prototype.copyFrom.call(this, ctx);
return this;
}
HtmlTypeContext.prototype = Object.create(Native_typeContext.prototype);
HtmlTypeContext.prototype.constructor = HtmlTypeContext;
EParser.HtmlTypeContext = HtmlTypeContext;
HtmlTypeContext.prototype.HTML = function() {
return this.getToken(EParser.HTML, 0);
};
HtmlTypeContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterHtmlType(this);
}
};
HtmlTypeContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitHtmlType(this);
}
};
function BooleanTypeContext(parser, ctx) {
Native_typeContext.call(this, parser);
Native_typeContext.prototype.copyFrom.call(this, ctx);
return this;
}
BooleanTypeContext.prototype = Object.create(Native_typeContext.prototype);
BooleanTypeContext.prototype.constructor = BooleanTypeContext;
EParser.BooleanTypeContext = BooleanTypeContext;
BooleanTypeContext.prototype.BOOLEAN = function() {
return this.getToken(EParser.BOOLEAN, 0);
};
BooleanTypeContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterBooleanType(this);
}
};
BooleanTypeContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitBooleanType(this);
}
};
function DocumentTypeContext(parser, ctx) {
Native_typeContext.call(this, parser);
Native_typeContext.prototype.copyFrom.call(this, ctx);
return this;
}
DocumentTypeContext.prototype = Object.create(Native_typeContext.prototype);
DocumentTypeContext.prototype.constructor = DocumentTypeContext;
EParser.DocumentTypeContext = DocumentTypeContext;
DocumentTypeContext.prototype.DOCUMENT = function() {
return this.getToken(EParser.DOCUMENT, 0);
};
DocumentTypeContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterDocumentType(this);
}
};
DocumentTypeContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitDocumentType(this);
}
};
function CharacterTypeContext(parser, ctx) {
Native_typeContext.call(this, parser);
Native_typeContext.prototype.copyFrom.call(this, ctx);
return this;
}
CharacterTypeContext.prototype = Object.create(Native_typeContext.prototype);
CharacterTypeContext.prototype.constructor = CharacterTypeContext;
EParser.CharacterTypeContext = CharacterTypeContext;
CharacterTypeContext.prototype.CHARACTER = function() {
return this.getToken(EParser.CHARACTER, 0);
};
CharacterTypeContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterCharacterType(this);
}
};
CharacterTypeContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitCharacterType(this);
}
};
function VersionTypeContext(parser, ctx) {
Native_typeContext.call(this, parser);
Native_typeContext.prototype.copyFrom.call(this, ctx);
return this;
}
VersionTypeContext.prototype = Object.create(Native_typeContext.prototype);
VersionTypeContext.prototype.constructor = VersionTypeContext;
EParser.VersionTypeContext = VersionTypeContext;
VersionTypeContext.prototype.VERSION = function() {
return this.getToken(EParser.VERSION, 0);
};
VersionTypeContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterVersionType(this);
}
};
VersionTypeContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitVersionType(this);
}
};
function TextTypeContext(parser, ctx) {
Native_typeContext.call(this, parser);
Native_typeContext.prototype.copyFrom.call(this, ctx);
return this;
}
TextTypeContext.prototype = Object.create(Native_typeContext.prototype);
TextTypeContext.prototype.constructor = TextTypeContext;
EParser.TextTypeContext = TextTypeContext;
TextTypeContext.prototype.TEXT = function() {
return this.getToken(EParser.TEXT, 0);
};
TextTypeContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterTextType(this);
}
};
TextTypeContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitTextType(this);
}
};
function ImageTypeContext(parser, ctx) {
Native_typeContext.call(this, parser);
Native_typeContext.prototype.copyFrom.call(this, ctx);
return this;
}
ImageTypeContext.prototype = Object.create(Native_typeContext.prototype);
ImageTypeContext.prototype.constructor = ImageTypeContext;
EParser.ImageTypeContext = ImageTypeContext;
ImageTypeContext.prototype.IMAGE = function() {
return this.getToken(EParser.IMAGE, 0);
};
ImageTypeContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterImageType(this);
}
};
ImageTypeContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitImageType(this);
}
};
function TimeTypeContext(parser, ctx) {
Native_typeContext.call(this, parser);
Native_typeContext.prototype.copyFrom.call(this, ctx);
return this;
}
TimeTypeContext.prototype = Object.create(Native_typeContext.prototype);
TimeTypeContext.prototype.constructor = TimeTypeContext;
EParser.TimeTypeContext = TimeTypeContext;
TimeTypeContext.prototype.TIME = function() {
return this.getToken(EParser.TIME, 0);
};
TimeTypeContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterTimeType(this);
}
};
TimeTypeContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitTimeType(this);
}
};
function IntegerTypeContext(parser, ctx) {
Native_typeContext.call(this, parser);
Native_typeContext.prototype.copyFrom.call(this, ctx);
return this;
}
IntegerTypeContext.prototype = Object.create(Native_typeContext.prototype);
IntegerTypeContext.prototype.constructor = IntegerTypeContext;
EParser.IntegerTypeContext = IntegerTypeContext;
IntegerTypeContext.prototype.INTEGER = function() {
return this.getToken(EParser.INTEGER, 0);
};
IntegerTypeContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterIntegerType(this);
}
};
IntegerTypeContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitIntegerType(this);
}
};
function DateTimeTypeContext(parser, ctx) {
Native_typeContext.call(this, parser);
Native_typeContext.prototype.copyFrom.call(this, ctx);
return this;
}
DateTimeTypeContext.prototype = Object.create(Native_typeContext.prototype);
DateTimeTypeContext.prototype.constructor = DateTimeTypeContext;
EParser.DateTimeTypeContext = DateTimeTypeContext;
DateTimeTypeContext.prototype.DATETIME = function() {
return this.getToken(EParser.DATETIME, 0);
};
DateTimeTypeContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterDateTimeType(this);
}
};
DateTimeTypeContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitDateTimeType(this);
}
};
function BlobTypeContext(parser, ctx) {
Native_typeContext.call(this, parser);
Native_typeContext.prototype.copyFrom.call(this, ctx);
return this;
}
BlobTypeContext.prototype = Object.create(Native_typeContext.prototype);
BlobTypeContext.prototype.constructor = BlobTypeContext;
EParser.BlobTypeContext = BlobTypeContext;
BlobTypeContext.prototype.BLOB = function() {
return this.getToken(EParser.BLOB, 0);
};
BlobTypeContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterBlobType(this);
}
};
BlobTypeContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitBlobType(this);
}
};
function UUIDTypeContext(parser, ctx) {
Native_typeContext.call(this, parser);
Native_typeContext.prototype.copyFrom.call(this, ctx);
return this;
}
UUIDTypeContext.prototype = Object.create(Native_typeContext.prototype);
UUIDTypeContext.prototype.constructor = UUIDTypeContext;
EParser.UUIDTypeContext = UUIDTypeContext;
UUIDTypeContext.prototype.UUID = function() {
return this.getToken(EParser.UUID, 0);
};
UUIDTypeContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterUUIDType(this);
}
};
UUIDTypeContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitUUIDType(this);
}
};
function DecimalTypeContext(parser, ctx) {
Native_typeContext.call(this, parser);
Native_typeContext.prototype.copyFrom.call(this, ctx);
return this;
}
DecimalTypeContext.prototype = Object.create(Native_typeContext.prototype);
DecimalTypeContext.prototype.constructor = DecimalTypeContext;
EParser.DecimalTypeContext = DecimalTypeContext;
DecimalTypeContext.prototype.DECIMAL = function() {
return this.getToken(EParser.DECIMAL, 0);
};
DecimalTypeContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterDecimalType(this);
}
};
DecimalTypeContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitDecimalType(this);
}
};
function CodeTypeContext(parser, ctx) {
Native_typeContext.call(this, parser);
Native_typeContext.prototype.copyFrom.call(this, ctx);
return this;
}
CodeTypeContext.prototype = Object.create(Native_typeContext.prototype);
CodeTypeContext.prototype.constructor = CodeTypeContext;
EParser.CodeTypeContext = CodeTypeContext;
CodeTypeContext.prototype.CODE = function() {
return this.getToken(EParser.CODE, 0);
};
CodeTypeContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterCodeType(this);
}
};
CodeTypeContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitCodeType(this);
}
};
function DateTypeContext(parser, ctx) {
Native_typeContext.call(this, parser);
Native_typeContext.prototype.copyFrom.call(this, ctx);
return this;
}
DateTypeContext.prototype = Object.create(Native_typeContext.prototype);
DateTypeContext.prototype.constructor = DateTypeContext;
EParser.DateTypeContext = DateTypeContext;
DateTypeContext.prototype.DATE = function() {
return this.getToken(EParser.DATE, 0);
};
DateTypeContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterDateType(this);
}
};
DateTypeContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitDateType(this);
}
};
EParser.Native_typeContext = Native_typeContext;
EParser.prototype.native_type = function() {
var localctx = new Native_typeContext(this, this._ctx, this.state);
this.enterRule(localctx, 182, EParser.RULE_native_type);
try {
this.state = 1762;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case EParser.BOOLEAN:
localctx = new BooleanTypeContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 1746;
this.match(EParser.BOOLEAN);
break;
case EParser.CHARACTER:
localctx = new CharacterTypeContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 1747;
this.match(EParser.CHARACTER);
break;
case EParser.TEXT:
localctx = new TextTypeContext(this, localctx);
this.enterOuterAlt(localctx, 3);
this.state = 1748;
this.match(EParser.TEXT);
break;
case EParser.IMAGE:
localctx = new ImageTypeContext(this, localctx);
this.enterOuterAlt(localctx, 4);
this.state = 1749;
this.match(EParser.IMAGE);
break;
case EParser.INTEGER:
localctx = new IntegerTypeContext(this, localctx);
this.enterOuterAlt(localctx, 5);
this.state = 1750;
this.match(EParser.INTEGER);
break;
case EParser.DECIMAL:
localctx = new DecimalTypeContext(this, localctx);
this.enterOuterAlt(localctx, 6);
this.state = 1751;
this.match(EParser.DECIMAL);
break;
case EParser.DOCUMENT:
localctx = new DocumentTypeContext(this, localctx);
this.enterOuterAlt(localctx, 7);
this.state = 1752;
this.match(EParser.DOCUMENT);
break;
case EParser.DATE:
localctx = new DateTypeContext(this, localctx);
this.enterOuterAlt(localctx, 8);
this.state = 1753;
this.match(EParser.DATE);
break;
case EParser.DATETIME:
localctx = new DateTimeTypeContext(this, localctx);
this.enterOuterAlt(localctx, 9);
this.state = 1754;
this.match(EParser.DATETIME);
break;
case EParser.TIME:
localctx = new TimeTypeContext(this, localctx);
this.enterOuterAlt(localctx, 10);
this.state = 1755;
this.match(EParser.TIME);
break;
case EParser.PERIOD:
localctx = new PeriodTypeContext(this, localctx);
this.enterOuterAlt(localctx, 11);
this.state = 1756;
this.match(EParser.PERIOD);
break;
case EParser.VERSION:
localctx = new VersionTypeContext(this, localctx);
this.enterOuterAlt(localctx, 12);
this.state = 1757;
this.match(EParser.VERSION);
break;
case EParser.CODE:
localctx = new CodeTypeContext(this, localctx);
this.enterOuterAlt(localctx, 13);
this.state = 1758;
this.match(EParser.CODE);
break;
case EParser.BLOB:
localctx = new BlobTypeContext(this, localctx);
this.enterOuterAlt(localctx, 14);
this.state = 1759;
this.match(EParser.BLOB);
break;
case EParser.UUID:
localctx = new UUIDTypeContext(this, localctx);
this.enterOuterAlt(localctx, 15);
this.state = 1760;
this.match(EParser.UUID);
break;
case EParser.HTML:
localctx = new HtmlTypeContext(this, localctx);
this.enterOuterAlt(localctx, 16);
this.state = 1761;
this.match(EParser.HTML);
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 Category_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 = EParser.RULE_category_type;
this.t1 = null; // Token
return this;
}
Category_typeContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Category_typeContext.prototype.constructor = Category_typeContext;
Category_typeContext.prototype.TYPE_IDENTIFIER = function() {
return this.getToken(EParser.TYPE_IDENTIFIER, 0);
};
Category_typeContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterCategory_type(this);
}
};
Category_typeContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitCategory_type(this);
}
};
EParser.Category_typeContext = Category_typeContext;
EParser.prototype.category_type = function() {
var localctx = new Category_typeContext(this, this._ctx, this.state);
this.enterRule(localctx, 184, EParser.RULE_category_type);
try {
this.enterOuterAlt(localctx, 1);
this.state = 1764;
localctx.t1 = this.match(EParser.TYPE_IDENTIFIER);
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Mutable_category_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 = EParser.RULE_mutable_category_type;
return this;
}
Mutable_category_typeContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Mutable_category_typeContext.prototype.constructor = Mutable_category_typeContext;
Mutable_category_typeContext.prototype.category_type = function() {
return this.getTypedRuleContext(Category_typeContext,0);
};
Mutable_category_typeContext.prototype.MUTABLE = function() {
return this.getToken(EParser.MUTABLE, 0);
};
Mutable_category_typeContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterMutable_category_type(this);
}
};
Mutable_category_typeContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitMutable_category_type(this);
}
};
EParser.Mutable_category_typeContext = Mutable_category_typeContext;
EParser.prototype.mutable_category_type = function() {
var localctx = new Mutable_category_typeContext(this, this._ctx, this.state);
this.enterRule(localctx, 186, EParser.RULE_mutable_category_type);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 1767;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.MUTABLE) {
this.state = 1766;
this.match(EParser.MUTABLE);
}
this.state = 1769;
this.category_type();
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Code_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 = EParser.RULE_code_type;
this.t1 = null; // Token
return this;
}
Code_typeContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Code_typeContext.prototype.constructor = Code_typeContext;
Code_typeContext.prototype.CODE = function() {
return this.getToken(EParser.CODE, 0);
};
Code_typeContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterCode_type(this);
}
};
Code_typeContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitCode_type(this);
}
};
EParser.Code_typeContext = Code_typeContext;
EParser.prototype.code_type = function() {
var localctx = new Code_typeContext(this, this._ctx, this.state);
this.enterRule(localctx, 188, EParser.RULE_code_type);
try {
this.enterOuterAlt(localctx, 1);
this.state = 1771;
localctx.t1 = this.match(EParser.CODE);
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Category_declarationContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_category_declaration;
return this;
}
Category_declarationContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Category_declarationContext.prototype.constructor = Category_declarationContext;
Category_declarationContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function ConcreteCategoryDeclarationContext(parser, ctx) {
Category_declarationContext.call(this, parser);
this.decl = null; // Concrete_category_declarationContext;
Category_declarationContext.prototype.copyFrom.call(this, ctx);
return this;
}
ConcreteCategoryDeclarationContext.prototype = Object.create(Category_declarationContext.prototype);
ConcreteCategoryDeclarationContext.prototype.constructor = ConcreteCategoryDeclarationContext;
EParser.ConcreteCategoryDeclarationContext = ConcreteCategoryDeclarationContext;
ConcreteCategoryDeclarationContext.prototype.concrete_category_declaration = function() {
return this.getTypedRuleContext(Concrete_category_declarationContext,0);
};
ConcreteCategoryDeclarationContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterConcreteCategoryDeclaration(this);
}
};
ConcreteCategoryDeclarationContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitConcreteCategoryDeclaration(this);
}
};
function NativeCategoryDeclarationContext(parser, ctx) {
Category_declarationContext.call(this, parser);
this.decl = null; // Native_category_declarationContext;
Category_declarationContext.prototype.copyFrom.call(this, ctx);
return this;
}
NativeCategoryDeclarationContext.prototype = Object.create(Category_declarationContext.prototype);
NativeCategoryDeclarationContext.prototype.constructor = NativeCategoryDeclarationContext;
EParser.NativeCategoryDeclarationContext = NativeCategoryDeclarationContext;
NativeCategoryDeclarationContext.prototype.native_category_declaration = function() {
return this.getTypedRuleContext(Native_category_declarationContext,0);
};
NativeCategoryDeclarationContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterNativeCategoryDeclaration(this);
}
};
NativeCategoryDeclarationContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitNativeCategoryDeclaration(this);
}
};
function SingletonCategoryDeclarationContext(parser, ctx) {
Category_declarationContext.call(this, parser);
this.decl = null; // Singleton_category_declarationContext;
Category_declarationContext.prototype.copyFrom.call(this, ctx);
return this;
}
SingletonCategoryDeclarationContext.prototype = Object.create(Category_declarationContext.prototype);
SingletonCategoryDeclarationContext.prototype.constructor = SingletonCategoryDeclarationContext;
EParser.SingletonCategoryDeclarationContext = SingletonCategoryDeclarationContext;
SingletonCategoryDeclarationContext.prototype.singleton_category_declaration = function() {
return this.getTypedRuleContext(Singleton_category_declarationContext,0);
};
SingletonCategoryDeclarationContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterSingletonCategoryDeclaration(this);
}
};
SingletonCategoryDeclarationContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitSingletonCategoryDeclaration(this);
}
};
EParser.Category_declarationContext = Category_declarationContext;
EParser.prototype.category_declaration = function() {
var localctx = new Category_declarationContext(this, this._ctx, this.state);
this.enterRule(localctx, 190, EParser.RULE_category_declaration);
try {
this.state = 1776;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,126,this._ctx);
switch(la_) {
case 1:
localctx = new ConcreteCategoryDeclarationContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 1773;
localctx.decl = this.concrete_category_declaration();
break;
case 2:
localctx = new NativeCategoryDeclarationContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 1774;
localctx.decl = this.native_category_declaration();
break;
case 3:
localctx = new SingletonCategoryDeclarationContext(this, localctx);
this.enterOuterAlt(localctx, 3);
this.state = 1775;
localctx.decl = this.singleton_category_declaration();
break;
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Widget_declarationContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_widget_declaration;
return this;
}
Widget_declarationContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Widget_declarationContext.prototype.constructor = Widget_declarationContext;
Widget_declarationContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function ConcreteWidgetDeclarationContext(parser, ctx) {
Widget_declarationContext.call(this, parser);
this.decl = null; // Concrete_widget_declarationContext;
Widget_declarationContext.prototype.copyFrom.call(this, ctx);
return this;
}
ConcreteWidgetDeclarationContext.prototype = Object.create(Widget_declarationContext.prototype);
ConcreteWidgetDeclarationContext.prototype.constructor = ConcreteWidgetDeclarationContext;
EParser.ConcreteWidgetDeclarationContext = ConcreteWidgetDeclarationContext;
ConcreteWidgetDeclarationContext.prototype.concrete_widget_declaration = function() {
return this.getTypedRuleContext(Concrete_widget_declarationContext,0);
};
ConcreteWidgetDeclarationContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterConcreteWidgetDeclaration(this);
}
};
ConcreteWidgetDeclarationContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitConcreteWidgetDeclaration(this);
}
};
function NativeWidgetDeclarationContext(parser, ctx) {
Widget_declarationContext.call(this, parser);
this.decl = null; // Native_widget_declarationContext;
Widget_declarationContext.prototype.copyFrom.call(this, ctx);
return this;
}
NativeWidgetDeclarationContext.prototype = Object.create(Widget_declarationContext.prototype);
NativeWidgetDeclarationContext.prototype.constructor = NativeWidgetDeclarationContext;
EParser.NativeWidgetDeclarationContext = NativeWidgetDeclarationContext;
NativeWidgetDeclarationContext.prototype.native_widget_declaration = function() {
return this.getTypedRuleContext(Native_widget_declarationContext,0);
};
NativeWidgetDeclarationContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterNativeWidgetDeclaration(this);
}
};
NativeWidgetDeclarationContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitNativeWidgetDeclaration(this);
}
};
EParser.Widget_declarationContext = Widget_declarationContext;
EParser.prototype.widget_declaration = function() {
var localctx = new Widget_declarationContext(this, this._ctx, this.state);
this.enterRule(localctx, 192, EParser.RULE_widget_declaration);
try {
this.state = 1780;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,127,this._ctx);
switch(la_) {
case 1:
localctx = new ConcreteWidgetDeclarationContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 1778;
localctx.decl = this.concrete_widget_declaration();
break;
case 2:
localctx = new NativeWidgetDeclarationContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 1779;
localctx.decl = this.native_widget_declaration();
break;
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Type_identifier_listContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_type_identifier_list;
return this;
}
Type_identifier_listContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Type_identifier_listContext.prototype.constructor = Type_identifier_listContext;
Type_identifier_listContext.prototype.type_identifier = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(Type_identifierContext);
} else {
return this.getTypedRuleContext(Type_identifierContext,i);
}
};
Type_identifier_listContext.prototype.COMMA = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(EParser.COMMA);
} else {
return this.getToken(EParser.COMMA, i);
}
};
Type_identifier_listContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterType_identifier_list(this);
}
};
Type_identifier_listContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitType_identifier_list(this);
}
};
EParser.Type_identifier_listContext = Type_identifier_listContext;
EParser.prototype.type_identifier_list = function() {
var localctx = new Type_identifier_listContext(this, this._ctx, this.state);
this.enterRule(localctx, 194, EParser.RULE_type_identifier_list);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 1782;
this.type_identifier();
this.state = 1787;
this._errHandler.sync(this);
_la = this._input.LA(1);
while(_la===EParser.COMMA) {
this.state = 1783;
this.match(EParser.COMMA);
this.state = 1784;
this.type_identifier();
this.state = 1789;
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 Method_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 = EParser.RULE_method_identifier;
return this;
}
Method_identifierContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Method_identifierContext.prototype.constructor = Method_identifierContext;
Method_identifierContext.prototype.variable_identifier = function() {
return this.getTypedRuleContext(Variable_identifierContext,0);
};
Method_identifierContext.prototype.type_identifier = function() {
return this.getTypedRuleContext(Type_identifierContext,0);
};
Method_identifierContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterMethod_identifier(this);
}
};
Method_identifierContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitMethod_identifier(this);
}
};
EParser.Method_identifierContext = Method_identifierContext;
EParser.prototype.method_identifier = function() {
var localctx = new Method_identifierContext(this, this._ctx, this.state);
this.enterRule(localctx, 196, EParser.RULE_method_identifier);
try {
this.state = 1792;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case EParser.VARIABLE_IDENTIFIER:
this.enterOuterAlt(localctx, 1);
this.state = 1790;
this.variable_identifier();
break;
case EParser.TYPE_IDENTIFIER:
this.enterOuterAlt(localctx, 2);
this.state = 1791;
this.type_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 Identifier_or_keywordContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_identifier_or_keyword;
return this;
}
Identifier_or_keywordContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Identifier_or_keywordContext.prototype.constructor = Identifier_or_keywordContext;
Identifier_or_keywordContext.prototype.identifier = function() {
return this.getTypedRuleContext(IdentifierContext,0);
};
Identifier_or_keywordContext.prototype.keyword = function() {
return this.getTypedRuleContext(KeywordContext,0);
};
Identifier_or_keywordContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterIdentifier_or_keyword(this);
}
};
Identifier_or_keywordContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitIdentifier_or_keyword(this);
}
};
EParser.Identifier_or_keywordContext = Identifier_or_keywordContext;
EParser.prototype.identifier_or_keyword = function() {
var localctx = new Identifier_or_keywordContext(this, this._ctx, this.state);
this.enterRule(localctx, 198, EParser.RULE_identifier_or_keyword);
try {
this.state = 1796;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case EParser.SYMBOL_IDENTIFIER:
case EParser.TYPE_IDENTIFIER:
case EParser.VARIABLE_IDENTIFIER:
this.enterOuterAlt(localctx, 1);
this.state = 1794;
this.identifier();
break;
case EParser.JAVA:
case EParser.CSHARP:
case EParser.PYTHON2:
case EParser.PYTHON3:
case EParser.JAVASCRIPT:
case EParser.SWIFT:
case EParser.BOOLEAN:
case EParser.CHARACTER:
case EParser.TEXT:
case EParser.INTEGER:
case EParser.DECIMAL:
case EParser.DATE:
case EParser.TIME:
case EParser.DATETIME:
case EParser.PERIOD:
case EParser.VERSION:
case EParser.METHOD_T:
case EParser.CODE:
case EParser.DOCUMENT:
case EParser.BLOB:
case EParser.IMAGE:
case EParser.UUID:
case EParser.ITERATOR:
case EParser.CURSOR:
case EParser.HTML:
case EParser.ABSTRACT:
case EParser.ALL:
case EParser.ALWAYS:
case EParser.AND:
case EParser.ANY:
case EParser.AS:
case EParser.ASC:
case EParser.ATTR:
case EParser.ATTRIBUTE:
case EParser.ATTRIBUTES:
case EParser.BINDINGS:
case EParser.BREAK:
case EParser.BY:
case EParser.CASE:
case EParser.CATCH:
case EParser.CATEGORY:
case EParser.CLASS:
case EParser.CLOSE:
case EParser.CONTAINS:
case EParser.DEF:
case EParser.DEFAULT:
case EParser.DEFINE:
case EParser.DELETE:
case EParser.DESC:
case EParser.DO:
case EParser.DOING:
case EParser.EACH:
case EParser.ELSE:
case EParser.ENUM:
case EParser.ENUMERATED:
case EParser.EXCEPT:
case EParser.EXECUTE:
case EParser.EXPECTING:
case EParser.EXTENDS:
case EParser.FETCH:
case EParser.FILTERED:
case EParser.FINALLY:
case EParser.FLUSH:
case EParser.FOR:
case EParser.FROM:
case EParser.GETTER:
case EParser.HAS:
case EParser.IF:
case EParser.IN:
case EParser.INDEX:
case EParser.INVOKE:
case EParser.IS:
case EParser.MATCHING:
case EParser.METHOD:
case EParser.METHODS:
case EParser.MODULO:
case EParser.MUTABLE:
case EParser.NATIVE:
case EParser.NONE:
case EParser.NOT:
case EParser.NOTHING:
case EParser.NULL:
case EParser.ON:
case EParser.ONE:
case EParser.OPEN:
case EParser.OPERATOR:
case EParser.OR:
case EParser.ORDER:
case EParser.OTHERWISE:
case EParser.PASS:
case EParser.RAISE:
case EParser.READ:
case EParser.RECEIVING:
case EParser.RESOURCE:
case EParser.RETURN:
case EParser.RETURNING:
case EParser.ROWS:
case EParser.SELF:
case EParser.SETTER:
case EParser.SINGLETON:
case EParser.SORTED:
case EParser.STORABLE:
case EParser.STORE:
case EParser.SWITCH:
case EParser.TEST:
case EParser.THIS:
case EParser.THROW:
case EParser.TO:
case EParser.TRY:
case EParser.VERIFYING:
case EParser.WIDGET:
case EParser.WITH:
case EParser.WHEN:
case EParser.WHERE:
case EParser.WHILE:
case EParser.WRITE:
this.enterOuterAlt(localctx, 2);
this.state = 1795;
this.keyword();
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 Nospace_hyphen_identifier_or_keywordContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_nospace_hyphen_identifier_or_keyword;
return this;
}
Nospace_hyphen_identifier_or_keywordContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Nospace_hyphen_identifier_or_keywordContext.prototype.constructor = Nospace_hyphen_identifier_or_keywordContext;
Nospace_hyphen_identifier_or_keywordContext.prototype.MINUS = function() {
return this.getToken(EParser.MINUS, 0);
};
Nospace_hyphen_identifier_or_keywordContext.prototype.nospace_identifier_or_keyword = function() {
return this.getTypedRuleContext(Nospace_identifier_or_keywordContext,0);
};
Nospace_hyphen_identifier_or_keywordContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterNospace_hyphen_identifier_or_keyword(this);
}
};
Nospace_hyphen_identifier_or_keywordContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitNospace_hyphen_identifier_or_keyword(this);
}
};
EParser.Nospace_hyphen_identifier_or_keywordContext = Nospace_hyphen_identifier_or_keywordContext;
EParser.prototype.nospace_hyphen_identifier_or_keyword = function() {
var localctx = new Nospace_hyphen_identifier_or_keywordContext(this, this._ctx, this.state);
this.enterRule(localctx, 200, EParser.RULE_nospace_hyphen_identifier_or_keyword);
try {
this.enterOuterAlt(localctx, 1);
this.state = 1798;
if (!( this.wasNotWhiteSpace())) {
throw new antlr4.error.FailedPredicateException(this, "$parser.wasNotWhiteSpace()");
}
this.state = 1799;
this.match(EParser.MINUS);
this.state = 1800;
this.nospace_identifier_or_keyword();
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Nospace_identifier_or_keywordContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_nospace_identifier_or_keyword;
return this;
}
Nospace_identifier_or_keywordContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Nospace_identifier_or_keywordContext.prototype.constructor = Nospace_identifier_or_keywordContext;
Nospace_identifier_or_keywordContext.prototype.identifier_or_keyword = function() {
return this.getTypedRuleContext(Identifier_or_keywordContext,0);
};
Nospace_identifier_or_keywordContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterNospace_identifier_or_keyword(this);
}
};
Nospace_identifier_or_keywordContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitNospace_identifier_or_keyword(this);
}
};
EParser.Nospace_identifier_or_keywordContext = Nospace_identifier_or_keywordContext;
EParser.prototype.nospace_identifier_or_keyword = function() {
var localctx = new Nospace_identifier_or_keywordContext(this, this._ctx, this.state);
this.enterRule(localctx, 202, EParser.RULE_nospace_identifier_or_keyword);
try {
this.enterOuterAlt(localctx, 1);
this.state = 1802;
if (!( this.wasNotWhiteSpace())) {
throw new antlr4.error.FailedPredicateException(this, "$parser.wasNotWhiteSpace()");
}
this.state = 1803;
this.identifier_or_keyword();
} catch (re) {
if(re instanceof antlr4.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 = EParser.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 TypeIdentifierContext(parser, ctx) {
IdentifierContext.call(this, parser);
IdentifierContext.prototype.copyFrom.call(this, ctx);
return this;
}
TypeIdentifierContext.prototype = Object.create(IdentifierContext.prototype);
TypeIdentifierContext.prototype.constructor = TypeIdentifierContext;
EParser.TypeIdentifierContext = TypeIdentifierContext;
TypeIdentifierContext.prototype.type_identifier = function() {
return this.getTypedRuleContext(Type_identifierContext,0);
};
TypeIdentifierContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterTypeIdentifier(this);
}
};
TypeIdentifierContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitTypeIdentifier(this);
}
};
function SymbolIdentifierContext(parser, ctx) {
IdentifierContext.call(this, parser);
IdentifierContext.prototype.copyFrom.call(this, ctx);
return this;
}
SymbolIdentifierContext.prototype = Object.create(IdentifierContext.prototype);
SymbolIdentifierContext.prototype.constructor = SymbolIdentifierContext;
EParser.SymbolIdentifierContext = SymbolIdentifierContext;
SymbolIdentifierContext.prototype.symbol_identifier = function() {
return this.getTypedRuleContext(Symbol_identifierContext,0);
};
SymbolIdentifierContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterSymbolIdentifier(this);
}
};
SymbolIdentifierContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitSymbolIdentifier(this);
}
};
function VariableIdentifierContext(parser, ctx) {
IdentifierContext.call(this, parser);
IdentifierContext.prototype.copyFrom.call(this, ctx);
return this;
}
VariableIdentifierContext.prototype = Object.create(IdentifierContext.prototype);
VariableIdentifierContext.prototype.constructor = VariableIdentifierContext;
EParser.VariableIdentifierContext = VariableIdentifierContext;
VariableIdentifierContext.prototype.variable_identifier = function() {
return this.getTypedRuleContext(Variable_identifierContext,0);
};
VariableIdentifierContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterVariableIdentifier(this);
}
};
VariableIdentifierContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitVariableIdentifier(this);
}
};
EParser.IdentifierContext = IdentifierContext;
EParser.prototype.identifier = function() {
var localctx = new IdentifierContext(this, this._ctx, this.state);
this.enterRule(localctx, 204, EParser.RULE_identifier);
try {
this.state = 1808;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case EParser.VARIABLE_IDENTIFIER:
localctx = new VariableIdentifierContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 1805;
this.variable_identifier();
break;
case EParser.TYPE_IDENTIFIER:
localctx = new TypeIdentifierContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 1806;
this.type_identifier();
break;
case EParser.SYMBOL_IDENTIFIER:
localctx = new SymbolIdentifierContext(this, localctx);
this.enterOuterAlt(localctx, 3);
this.state = 1807;
this.symbol_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 Variable_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 = EParser.RULE_variable_identifier;
return this;
}
Variable_identifierContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Variable_identifierContext.prototype.constructor = Variable_identifierContext;
Variable_identifierContext.prototype.VARIABLE_IDENTIFIER = function() {
return this.getToken(EParser.VARIABLE_IDENTIFIER, 0);
};
Variable_identifierContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterVariable_identifier(this);
}
};
Variable_identifierContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitVariable_identifier(this);
}
};
EParser.Variable_identifierContext = Variable_identifierContext;
EParser.prototype.variable_identifier = function() {
var localctx = new Variable_identifierContext(this, this._ctx, this.state);
this.enterRule(localctx, 206, EParser.RULE_variable_identifier);
try {
this.enterOuterAlt(localctx, 1);
this.state = 1810;
this.match(EParser.VARIABLE_IDENTIFIER);
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Attribute_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 = EParser.RULE_attribute_identifier;
return this;
}
Attribute_identifierContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Attribute_identifierContext.prototype.constructor = Attribute_identifierContext;
Attribute_identifierContext.prototype.VARIABLE_IDENTIFIER = function() {
return this.getToken(EParser.VARIABLE_IDENTIFIER, 0);
};
Attribute_identifierContext.prototype.STORABLE = function() {
return this.getToken(EParser.STORABLE, 0);
};
Attribute_identifierContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterAttribute_identifier(this);
}
};
Attribute_identifierContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitAttribute_identifier(this);
}
};
EParser.Attribute_identifierContext = Attribute_identifierContext;
EParser.prototype.attribute_identifier = function() {
var localctx = new Attribute_identifierContext(this, this._ctx, this.state);
this.enterRule(localctx, 208, EParser.RULE_attribute_identifier);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 1812;
_la = this._input.LA(1);
if(!(_la===EParser.STORABLE || _la===EParser.VARIABLE_IDENTIFIER)) {
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 Type_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 = EParser.RULE_type_identifier;
return this;
}
Type_identifierContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Type_identifierContext.prototype.constructor = Type_identifierContext;
Type_identifierContext.prototype.TYPE_IDENTIFIER = function() {
return this.getToken(EParser.TYPE_IDENTIFIER, 0);
};
Type_identifierContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterType_identifier(this);
}
};
Type_identifierContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitType_identifier(this);
}
};
EParser.Type_identifierContext = Type_identifierContext;
EParser.prototype.type_identifier = function() {
var localctx = new Type_identifierContext(this, this._ctx, this.state);
this.enterRule(localctx, 210, EParser.RULE_type_identifier);
try {
this.enterOuterAlt(localctx, 1);
this.state = 1814;
this.match(EParser.TYPE_IDENTIFIER);
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Symbol_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 = EParser.RULE_symbol_identifier;
return this;
}
Symbol_identifierContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Symbol_identifierContext.prototype.constructor = Symbol_identifierContext;
Symbol_identifierContext.prototype.SYMBOL_IDENTIFIER = function() {
return this.getToken(EParser.SYMBOL_IDENTIFIER, 0);
};
Symbol_identifierContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterSymbol_identifier(this);
}
};
Symbol_identifierContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitSymbol_identifier(this);
}
};
EParser.Symbol_identifierContext = Symbol_identifierContext;
EParser.prototype.symbol_identifier = function() {
var localctx = new Symbol_identifierContext(this, this._ctx, this.state);
this.enterRule(localctx, 212, EParser.RULE_symbol_identifier);
try {
this.enterOuterAlt(localctx, 1);
this.state = 1816;
this.match(EParser.SYMBOL_IDENTIFIER);
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Any_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 = EParser.RULE_any_identifier;
return this;
}
Any_identifierContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Any_identifierContext.prototype.constructor = Any_identifierContext;
Any_identifierContext.prototype.VARIABLE_IDENTIFIER = function() {
return this.getToken(EParser.VARIABLE_IDENTIFIER, 0);
};
Any_identifierContext.prototype.TYPE_IDENTIFIER = function() {
return this.getToken(EParser.TYPE_IDENTIFIER, 0);
};
Any_identifierContext.prototype.SYMBOL_IDENTIFIER = function() {
return this.getToken(EParser.SYMBOL_IDENTIFIER, 0);
};
Any_identifierContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterAny_identifier(this);
}
};
Any_identifierContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitAny_identifier(this);
}
};
EParser.Any_identifierContext = Any_identifierContext;
EParser.prototype.any_identifier = function() {
var localctx = new Any_identifierContext(this, this._ctx, this.state);
this.enterRule(localctx, 214, EParser.RULE_any_identifier);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 1818;
_la = this._input.LA(1);
if(!(((((_la - 166)) & ~0x1f) == 0 && ((1 << (_la - 166)) & ((1 << (EParser.SYMBOL_IDENTIFIER - 166)) | (1 << (EParser.TYPE_IDENTIFIER - 166)) | (1 << (EParser.VARIABLE_IDENTIFIER - 166)))) !== 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 Argument_listContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_argument_list;
return this;
}
Argument_listContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Argument_listContext.prototype.constructor = Argument_listContext;
Argument_listContext.prototype.argument = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ArgumentContext);
} else {
return this.getTypedRuleContext(ArgumentContext,i);
}
};
Argument_listContext.prototype.COMMA = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(EParser.COMMA);
} else {
return this.getToken(EParser.COMMA, i);
}
};
Argument_listContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterArgument_list(this);
}
};
Argument_listContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitArgument_list(this);
}
};
EParser.Argument_listContext = Argument_listContext;
EParser.prototype.argument_list = function() {
var localctx = new Argument_listContext(this, this._ctx, this.state);
this.enterRule(localctx, 216, EParser.RULE_argument_list);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 1820;
this.argument();
this.state = 1825;
this._errHandler.sync(this);
_la = this._input.LA(1);
while(_la===EParser.COMMA) {
this.state = 1821;
this.match(EParser.COMMA);
this.state = 1822;
this.argument();
this.state = 1827;
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 ArgumentContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_argument;
return this;
}
ArgumentContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
ArgumentContext.prototype.constructor = ArgumentContext;
ArgumentContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function OperatorArgumentContext(parser, ctx) {
ArgumentContext.call(this, parser);
this.arg = null; // Operator_argumentContext;
ArgumentContext.prototype.copyFrom.call(this, ctx);
return this;
}
OperatorArgumentContext.prototype = Object.create(ArgumentContext.prototype);
OperatorArgumentContext.prototype.constructor = OperatorArgumentContext;
EParser.OperatorArgumentContext = OperatorArgumentContext;
OperatorArgumentContext.prototype.operator_argument = function() {
return this.getTypedRuleContext(Operator_argumentContext,0);
};
OperatorArgumentContext.prototype.MUTABLE = function() {
return this.getToken(EParser.MUTABLE, 0);
};
OperatorArgumentContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterOperatorArgument(this);
}
};
OperatorArgumentContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitOperatorArgument(this);
}
};
function CodeArgumentContext(parser, ctx) {
ArgumentContext.call(this, parser);
this.arg = null; // Code_argumentContext;
ArgumentContext.prototype.copyFrom.call(this, ctx);
return this;
}
CodeArgumentContext.prototype = Object.create(ArgumentContext.prototype);
CodeArgumentContext.prototype.constructor = CodeArgumentContext;
EParser.CodeArgumentContext = CodeArgumentContext;
CodeArgumentContext.prototype.code_argument = function() {
return this.getTypedRuleContext(Code_argumentContext,0);
};
CodeArgumentContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterCodeArgument(this);
}
};
CodeArgumentContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitCodeArgument(this);
}
};
EParser.ArgumentContext = ArgumentContext;
EParser.prototype.argument = function() {
var localctx = new ArgumentContext(this, this._ctx, this.state);
this.enterRule(localctx, 218, EParser.RULE_argument);
var _la = 0; // Token type
try {
this.state = 1833;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,134,this._ctx);
switch(la_) {
case 1:
localctx = new CodeArgumentContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 1828;
localctx.arg = this.code_argument();
break;
case 2:
localctx = new OperatorArgumentContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 1830;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.MUTABLE) {
this.state = 1829;
this.match(EParser.MUTABLE);
}
this.state = 1832;
localctx.arg = this.operator_argument();
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 Operator_argumentContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_operator_argument;
return this;
}
Operator_argumentContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Operator_argumentContext.prototype.constructor = Operator_argumentContext;
Operator_argumentContext.prototype.named_argument = function() {
return this.getTypedRuleContext(Named_argumentContext,0);
};
Operator_argumentContext.prototype.typed_argument = function() {
return this.getTypedRuleContext(Typed_argumentContext,0);
};
Operator_argumentContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterOperator_argument(this);
}
};
Operator_argumentContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitOperator_argument(this);
}
};
EParser.Operator_argumentContext = Operator_argumentContext;
EParser.prototype.operator_argument = function() {
var localctx = new Operator_argumentContext(this, this._ctx, this.state);
this.enterRule(localctx, 220, EParser.RULE_operator_argument);
try {
this.state = 1837;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case EParser.VARIABLE_IDENTIFIER:
this.enterOuterAlt(localctx, 1);
this.state = 1835;
this.named_argument();
break;
case EParser.BOOLEAN:
case EParser.CHARACTER:
case EParser.TEXT:
case EParser.INTEGER:
case EParser.DECIMAL:
case EParser.DATE:
case EParser.TIME:
case EParser.DATETIME:
case EParser.PERIOD:
case EParser.VERSION:
case EParser.CODE:
case EParser.DOCUMENT:
case EParser.BLOB:
case EParser.IMAGE:
case EParser.UUID:
case EParser.ITERATOR:
case EParser.CURSOR:
case EParser.HTML:
case EParser.ANY:
case EParser.TYPE_IDENTIFIER:
this.enterOuterAlt(localctx, 2);
this.state = 1836;
this.typed_argument();
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 Named_argumentContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_named_argument;
return this;
}
Named_argumentContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Named_argumentContext.prototype.constructor = Named_argumentContext;
Named_argumentContext.prototype.variable_identifier = function() {
return this.getTypedRuleContext(Variable_identifierContext,0);
};
Named_argumentContext.prototype.EQ = function() {
return this.getToken(EParser.EQ, 0);
};
Named_argumentContext.prototype.literal_expression = function() {
return this.getTypedRuleContext(Literal_expressionContext,0);
};
Named_argumentContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterNamed_argument(this);
}
};
Named_argumentContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitNamed_argument(this);
}
};
EParser.Named_argumentContext = Named_argumentContext;
EParser.prototype.named_argument = function() {
var localctx = new Named_argumentContext(this, this._ctx, this.state);
this.enterRule(localctx, 222, EParser.RULE_named_argument);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 1839;
this.variable_identifier();
this.state = 1842;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.EQ) {
this.state = 1840;
this.match(EParser.EQ);
this.state = 1841;
this.literal_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 Code_argumentContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_code_argument;
this.name = null; // Variable_identifierContext
return this;
}
Code_argumentContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Code_argumentContext.prototype.constructor = Code_argumentContext;
Code_argumentContext.prototype.code_type = function() {
return this.getTypedRuleContext(Code_typeContext,0);
};
Code_argumentContext.prototype.variable_identifier = function() {
return this.getTypedRuleContext(Variable_identifierContext,0);
};
Code_argumentContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterCode_argument(this);
}
};
Code_argumentContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitCode_argument(this);
}
};
EParser.Code_argumentContext = Code_argumentContext;
EParser.prototype.code_argument = function() {
var localctx = new Code_argumentContext(this, this._ctx, this.state);
this.enterRule(localctx, 224, EParser.RULE_code_argument);
try {
this.enterOuterAlt(localctx, 1);
this.state = 1844;
this.code_type();
this.state = 1845;
localctx.name = this.variable_identifier();
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Category_or_any_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 = EParser.RULE_category_or_any_type;
return this;
}
Category_or_any_typeContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Category_or_any_typeContext.prototype.constructor = Category_or_any_typeContext;
Category_or_any_typeContext.prototype.typedef = function() {
return this.getTypedRuleContext(TypedefContext,0);
};
Category_or_any_typeContext.prototype.any_type = function() {
return this.getTypedRuleContext(Any_typeContext,0);
};
Category_or_any_typeContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterCategory_or_any_type(this);
}
};
Category_or_any_typeContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitCategory_or_any_type(this);
}
};
EParser.Category_or_any_typeContext = Category_or_any_typeContext;
EParser.prototype.category_or_any_type = function() {
var localctx = new Category_or_any_typeContext(this, this._ctx, this.state);
this.enterRule(localctx, 226, EParser.RULE_category_or_any_type);
try {
this.state = 1849;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case EParser.BOOLEAN:
case EParser.CHARACTER:
case EParser.TEXT:
case EParser.INTEGER:
case EParser.DECIMAL:
case EParser.DATE:
case EParser.TIME:
case EParser.DATETIME:
case EParser.PERIOD:
case EParser.VERSION:
case EParser.CODE:
case EParser.DOCUMENT:
case EParser.BLOB:
case EParser.IMAGE:
case EParser.UUID:
case EParser.ITERATOR:
case EParser.CURSOR:
case EParser.HTML:
case EParser.TYPE_IDENTIFIER:
this.enterOuterAlt(localctx, 1);
this.state = 1847;
this.typedef(0);
break;
case EParser.ANY:
this.enterOuterAlt(localctx, 2);
this.state = 1848;
this.any_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 Any_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 = EParser.RULE_any_type;
return this;
}
Any_typeContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Any_typeContext.prototype.constructor = Any_typeContext;
Any_typeContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function AnyListTypeContext(parser, ctx) {
Any_typeContext.call(this, parser);
Any_typeContext.prototype.copyFrom.call(this, ctx);
return this;
}
AnyListTypeContext.prototype = Object.create(Any_typeContext.prototype);
AnyListTypeContext.prototype.constructor = AnyListTypeContext;
EParser.AnyListTypeContext = AnyListTypeContext;
AnyListTypeContext.prototype.any_type = function() {
return this.getTypedRuleContext(Any_typeContext,0);
};
AnyListTypeContext.prototype.LBRAK = function() {
return this.getToken(EParser.LBRAK, 0);
};
AnyListTypeContext.prototype.RBRAK = function() {
return this.getToken(EParser.RBRAK, 0);
};
AnyListTypeContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterAnyListType(this);
}
};
AnyListTypeContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitAnyListType(this);
}
};
function AnyTypeContext(parser, ctx) {
Any_typeContext.call(this, parser);
Any_typeContext.prototype.copyFrom.call(this, ctx);
return this;
}
AnyTypeContext.prototype = Object.create(Any_typeContext.prototype);
AnyTypeContext.prototype.constructor = AnyTypeContext;
EParser.AnyTypeContext = AnyTypeContext;
AnyTypeContext.prototype.ANY = function() {
return this.getToken(EParser.ANY, 0);
};
AnyTypeContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterAnyType(this);
}
};
AnyTypeContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitAnyType(this);
}
};
function AnyDictTypeContext(parser, ctx) {
Any_typeContext.call(this, parser);
Any_typeContext.prototype.copyFrom.call(this, ctx);
return this;
}
AnyDictTypeContext.prototype = Object.create(Any_typeContext.prototype);
AnyDictTypeContext.prototype.constructor = AnyDictTypeContext;
EParser.AnyDictTypeContext = AnyDictTypeContext;
AnyDictTypeContext.prototype.any_type = function() {
return this.getTypedRuleContext(Any_typeContext,0);
};
AnyDictTypeContext.prototype.LCURL = function() {
return this.getToken(EParser.LCURL, 0);
};
AnyDictTypeContext.prototype.RCURL = function() {
return this.getToken(EParser.RCURL, 0);
};
AnyDictTypeContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterAnyDictType(this);
}
};
AnyDictTypeContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitAnyDictType(this);
}
};
EParser.prototype.any_type = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new Any_typeContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 228;
this.enterRecursionRule(localctx, 228, EParser.RULE_any_type, _p);
try {
this.enterOuterAlt(localctx, 1);
localctx = new AnyTypeContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 1852;
this.match(EParser.ANY);
this._ctx.stop = this._input.LT(-1);
this.state = 1862;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,139,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
if(this._parseListeners!==null) {
this.triggerExitRuleEvent();
}
_prevctx = localctx;
this.state = 1860;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,138,this._ctx);
switch(la_) {
case 1:
localctx = new AnyListTypeContext(this, new Any_typeContext(this, _parentctx, _parentState));
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_any_type);
this.state = 1854;
if (!( this.precpred(this._ctx, 2))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 2)");
}
this.state = 1855;
this.match(EParser.LBRAK);
this.state = 1856;
this.match(EParser.RBRAK);
break;
case 2:
localctx = new AnyDictTypeContext(this, new Any_typeContext(this, _parentctx, _parentState));
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_any_type);
this.state = 1857;
if (!( this.precpred(this._ctx, 1))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
}
this.state = 1858;
this.match(EParser.LCURL);
this.state = 1859;
this.match(EParser.RCURL);
break;
}
}
this.state = 1864;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,139,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 Member_method_declaration_listContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_member_method_declaration_list;
return this;
}
Member_method_declaration_listContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Member_method_declaration_listContext.prototype.constructor = Member_method_declaration_listContext;
Member_method_declaration_listContext.prototype.member_method_declaration = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(Member_method_declarationContext);
} else {
return this.getTypedRuleContext(Member_method_declarationContext,i);
}
};
Member_method_declaration_listContext.prototype.lfp = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(LfpContext);
} else {
return this.getTypedRuleContext(LfpContext,i);
}
};
Member_method_declaration_listContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterMember_method_declaration_list(this);
}
};
Member_method_declaration_listContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitMember_method_declaration_list(this);
}
};
EParser.Member_method_declaration_listContext = Member_method_declaration_listContext;
EParser.prototype.member_method_declaration_list = function() {
var localctx = new Member_method_declaration_listContext(this, this._ctx, this.state);
this.enterRule(localctx, 230, EParser.RULE_member_method_declaration_list);
try {
this.enterOuterAlt(localctx, 1);
this.state = 1865;
this.member_method_declaration();
this.state = 1871;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,140,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
this.state = 1866;
this.lfp();
this.state = 1867;
this.member_method_declaration();
}
this.state = 1873;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,140,this._ctx);
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Member_method_declarationContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_member_method_declaration;
return this;
}
Member_method_declarationContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Member_method_declarationContext.prototype.constructor = Member_method_declarationContext;
Member_method_declarationContext.prototype.setter_method_declaration = function() {
return this.getTypedRuleContext(Setter_method_declarationContext,0);
};
Member_method_declarationContext.prototype.getter_method_declaration = function() {
return this.getTypedRuleContext(Getter_method_declarationContext,0);
};
Member_method_declarationContext.prototype.concrete_method_declaration = function() {
return this.getTypedRuleContext(Concrete_method_declarationContext,0);
};
Member_method_declarationContext.prototype.abstract_method_declaration = function() {
return this.getTypedRuleContext(Abstract_method_declarationContext,0);
};
Member_method_declarationContext.prototype.operator_method_declaration = function() {
return this.getTypedRuleContext(Operator_method_declarationContext,0);
};
Member_method_declarationContext.prototype.comment_statement = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(Comment_statementContext);
} else {
return this.getTypedRuleContext(Comment_statementContext,i);
}
};
Member_method_declarationContext.prototype.lfp = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(LfpContext);
} else {
return this.getTypedRuleContext(LfpContext,i);
}
};
Member_method_declarationContext.prototype.annotation_constructor = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(Annotation_constructorContext);
} else {
return this.getTypedRuleContext(Annotation_constructorContext,i);
}
};
Member_method_declarationContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterMember_method_declaration(this);
}
};
Member_method_declarationContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitMember_method_declaration(this);
}
};
EParser.Member_method_declarationContext = Member_method_declarationContext;
EParser.prototype.member_method_declaration = function() {
var localctx = new Member_method_declarationContext(this, this._ctx, this.state);
this.enterRule(localctx, 232, EParser.RULE_member_method_declaration);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 1879;
this._errHandler.sync(this);
_la = this._input.LA(1);
while(_la===EParser.COMMENT) {
this.state = 1874;
this.comment_statement();
this.state = 1875;
this.lfp();
this.state = 1881;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
this.state = 1887;
this._errHandler.sync(this);
_la = this._input.LA(1);
while(_la===EParser.ARONDBASE_IDENTIFIER) {
this.state = 1882;
this.annotation_constructor();
this.state = 1883;
this.lfp();
this.state = 1889;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
this.state = 1895;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,143,this._ctx);
switch(la_) {
case 1:
this.state = 1890;
this.setter_method_declaration();
break;
case 2:
this.state = 1891;
this.getter_method_declaration();
break;
case 3:
this.state = 1892;
this.concrete_method_declaration();
break;
case 4:
this.state = 1893;
this.abstract_method_declaration();
break;
case 5:
this.state = 1894;
this.operator_method_declaration();
break;
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Native_member_method_declaration_listContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_native_member_method_declaration_list;
return this;
}
Native_member_method_declaration_listContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Native_member_method_declaration_listContext.prototype.constructor = Native_member_method_declaration_listContext;
Native_member_method_declaration_listContext.prototype.native_member_method_declaration = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(Native_member_method_declarationContext);
} else {
return this.getTypedRuleContext(Native_member_method_declarationContext,i);
}
};
Native_member_method_declaration_listContext.prototype.lfp = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(LfpContext);
} else {
return this.getTypedRuleContext(LfpContext,i);
}
};
Native_member_method_declaration_listContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterNative_member_method_declaration_list(this);
}
};
Native_member_method_declaration_listContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitNative_member_method_declaration_list(this);
}
};
EParser.Native_member_method_declaration_listContext = Native_member_method_declaration_listContext;
EParser.prototype.native_member_method_declaration_list = function() {
var localctx = new Native_member_method_declaration_listContext(this, this._ctx, this.state);
this.enterRule(localctx, 234, EParser.RULE_native_member_method_declaration_list);
try {
this.enterOuterAlt(localctx, 1);
this.state = 1897;
this.native_member_method_declaration();
this.state = 1903;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,144,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
this.state = 1898;
this.lfp();
this.state = 1899;
this.native_member_method_declaration();
}
this.state = 1905;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,144,this._ctx);
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Native_member_method_declarationContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_native_member_method_declaration;
return this;
}
Native_member_method_declarationContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Native_member_method_declarationContext.prototype.constructor = Native_member_method_declarationContext;
Native_member_method_declarationContext.prototype.native_getter_declaration = function() {
return this.getTypedRuleContext(Native_getter_declarationContext,0);
};
Native_member_method_declarationContext.prototype.native_setter_declaration = function() {
return this.getTypedRuleContext(Native_setter_declarationContext,0);
};
Native_member_method_declarationContext.prototype.native_method_declaration = function() {
return this.getTypedRuleContext(Native_method_declarationContext,0);
};
Native_member_method_declarationContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterNative_member_method_declaration(this);
}
};
Native_member_method_declarationContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitNative_member_method_declaration(this);
}
};
EParser.Native_member_method_declarationContext = Native_member_method_declarationContext;
EParser.prototype.native_member_method_declaration = function() {
var localctx = new Native_member_method_declarationContext(this, this._ctx, this.state);
this.enterRule(localctx, 236, EParser.RULE_native_member_method_declaration);
try {
this.state = 1909;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,145,this._ctx);
switch(la_) {
case 1:
this.enterOuterAlt(localctx, 1);
this.state = 1906;
this.native_getter_declaration();
break;
case 2:
this.enterOuterAlt(localctx, 2);
this.state = 1907;
this.native_setter_declaration();
break;
case 3:
this.enterOuterAlt(localctx, 3);
this.state = 1908;
this.native_method_declaration();
break;
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Native_category_bindingContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_native_category_binding;
return this;
}
Native_category_bindingContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Native_category_bindingContext.prototype.constructor = Native_category_bindingContext;
Native_category_bindingContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function Python2CategoryBindingContext(parser, ctx) {
Native_category_bindingContext.call(this, parser);
this.binding = null; // Python_category_bindingContext;
Native_category_bindingContext.prototype.copyFrom.call(this, ctx);
return this;
}
Python2CategoryBindingContext.prototype = Object.create(Native_category_bindingContext.prototype);
Python2CategoryBindingContext.prototype.constructor = Python2CategoryBindingContext;
EParser.Python2CategoryBindingContext = Python2CategoryBindingContext;
Python2CategoryBindingContext.prototype.PYTHON2 = function() {
return this.getToken(EParser.PYTHON2, 0);
};
Python2CategoryBindingContext.prototype.python_category_binding = function() {
return this.getTypedRuleContext(Python_category_bindingContext,0);
};
Python2CategoryBindingContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterPython2CategoryBinding(this);
}
};
Python2CategoryBindingContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitPython2CategoryBinding(this);
}
};
function Python3CategoryBindingContext(parser, ctx) {
Native_category_bindingContext.call(this, parser);
this.binding = null; // Python_category_bindingContext;
Native_category_bindingContext.prototype.copyFrom.call(this, ctx);
return this;
}
Python3CategoryBindingContext.prototype = Object.create(Native_category_bindingContext.prototype);
Python3CategoryBindingContext.prototype.constructor = Python3CategoryBindingContext;
EParser.Python3CategoryBindingContext = Python3CategoryBindingContext;
Python3CategoryBindingContext.prototype.PYTHON3 = function() {
return this.getToken(EParser.PYTHON3, 0);
};
Python3CategoryBindingContext.prototype.python_category_binding = function() {
return this.getTypedRuleContext(Python_category_bindingContext,0);
};
Python3CategoryBindingContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterPython3CategoryBinding(this);
}
};
Python3CategoryBindingContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitPython3CategoryBinding(this);
}
};
function JavaCategoryBindingContext(parser, ctx) {
Native_category_bindingContext.call(this, parser);
this.binding = null; // Java_class_identifier_expressionContext;
Native_category_bindingContext.prototype.copyFrom.call(this, ctx);
return this;
}
JavaCategoryBindingContext.prototype = Object.create(Native_category_bindingContext.prototype);
JavaCategoryBindingContext.prototype.constructor = JavaCategoryBindingContext;
EParser.JavaCategoryBindingContext = JavaCategoryBindingContext;
JavaCategoryBindingContext.prototype.JAVA = function() {
return this.getToken(EParser.JAVA, 0);
};
JavaCategoryBindingContext.prototype.java_class_identifier_expression = function() {
return this.getTypedRuleContext(Java_class_identifier_expressionContext,0);
};
JavaCategoryBindingContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJavaCategoryBinding(this);
}
};
JavaCategoryBindingContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJavaCategoryBinding(this);
}
};
function CSharpCategoryBindingContext(parser, ctx) {
Native_category_bindingContext.call(this, parser);
this.binding = null; // Csharp_identifier_expressionContext;
Native_category_bindingContext.prototype.copyFrom.call(this, ctx);
return this;
}
CSharpCategoryBindingContext.prototype = Object.create(Native_category_bindingContext.prototype);
CSharpCategoryBindingContext.prototype.constructor = CSharpCategoryBindingContext;
EParser.CSharpCategoryBindingContext = CSharpCategoryBindingContext;
CSharpCategoryBindingContext.prototype.CSHARP = function() {
return this.getToken(EParser.CSHARP, 0);
};
CSharpCategoryBindingContext.prototype.csharp_identifier_expression = function() {
return this.getTypedRuleContext(Csharp_identifier_expressionContext,0);
};
CSharpCategoryBindingContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterCSharpCategoryBinding(this);
}
};
CSharpCategoryBindingContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitCSharpCategoryBinding(this);
}
};
function JavaScriptCategoryBindingContext(parser, ctx) {
Native_category_bindingContext.call(this, parser);
this.binding = null; // Javascript_category_bindingContext;
Native_category_bindingContext.prototype.copyFrom.call(this, ctx);
return this;
}
JavaScriptCategoryBindingContext.prototype = Object.create(Native_category_bindingContext.prototype);
JavaScriptCategoryBindingContext.prototype.constructor = JavaScriptCategoryBindingContext;
EParser.JavaScriptCategoryBindingContext = JavaScriptCategoryBindingContext;
JavaScriptCategoryBindingContext.prototype.JAVASCRIPT = function() {
return this.getToken(EParser.JAVASCRIPT, 0);
};
JavaScriptCategoryBindingContext.prototype.javascript_category_binding = function() {
return this.getTypedRuleContext(Javascript_category_bindingContext,0);
};
JavaScriptCategoryBindingContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJavaScriptCategoryBinding(this);
}
};
JavaScriptCategoryBindingContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJavaScriptCategoryBinding(this);
}
};
EParser.Native_category_bindingContext = Native_category_bindingContext;
EParser.prototype.native_category_binding = function() {
var localctx = new Native_category_bindingContext(this, this._ctx, this.state);
this.enterRule(localctx, 238, EParser.RULE_native_category_binding);
try {
this.state = 1921;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case EParser.JAVA:
localctx = new JavaCategoryBindingContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 1911;
this.match(EParser.JAVA);
this.state = 1912;
localctx.binding = this.java_class_identifier_expression(0);
break;
case EParser.CSHARP:
localctx = new CSharpCategoryBindingContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 1913;
this.match(EParser.CSHARP);
this.state = 1914;
localctx.binding = this.csharp_identifier_expression(0);
break;
case EParser.PYTHON2:
localctx = new Python2CategoryBindingContext(this, localctx);
this.enterOuterAlt(localctx, 3);
this.state = 1915;
this.match(EParser.PYTHON2);
this.state = 1916;
localctx.binding = this.python_category_binding();
break;
case EParser.PYTHON3:
localctx = new Python3CategoryBindingContext(this, localctx);
this.enterOuterAlt(localctx, 4);
this.state = 1917;
this.match(EParser.PYTHON3);
this.state = 1918;
localctx.binding = this.python_category_binding();
break;
case EParser.JAVASCRIPT:
localctx = new JavaScriptCategoryBindingContext(this, localctx);
this.enterOuterAlt(localctx, 5);
this.state = 1919;
this.match(EParser.JAVASCRIPT);
this.state = 1920;
localctx.binding = this.javascript_category_binding();
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 Python_category_bindingContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_python_category_binding;
return this;
}
Python_category_bindingContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Python_category_bindingContext.prototype.constructor = Python_category_bindingContext;
Python_category_bindingContext.prototype.identifier = function() {
return this.getTypedRuleContext(IdentifierContext,0);
};
Python_category_bindingContext.prototype.python_module = function() {
return this.getTypedRuleContext(Python_moduleContext,0);
};
Python_category_bindingContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterPython_category_binding(this);
}
};
Python_category_bindingContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitPython_category_binding(this);
}
};
EParser.Python_category_bindingContext = Python_category_bindingContext;
EParser.prototype.python_category_binding = function() {
var localctx = new Python_category_bindingContext(this, this._ctx, this.state);
this.enterRule(localctx, 240, EParser.RULE_python_category_binding);
try {
this.enterOuterAlt(localctx, 1);
this.state = 1923;
this.identifier();
this.state = 1925;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,147,this._ctx);
if(la_===1) {
this.state = 1924;
this.python_module();
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Python_moduleContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_python_module;
return this;
}
Python_moduleContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Python_moduleContext.prototype.constructor = Python_moduleContext;
Python_moduleContext.prototype.FROM = function() {
return this.getToken(EParser.FROM, 0);
};
Python_moduleContext.prototype.module_token = function() {
return this.getTypedRuleContext(Module_tokenContext,0);
};
Python_moduleContext.prototype.COLON = function() {
return this.getToken(EParser.COLON, 0);
};
Python_moduleContext.prototype.python_identifier = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(Python_identifierContext);
} else {
return this.getTypedRuleContext(Python_identifierContext,i);
}
};
Python_moduleContext.prototype.DOT = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(EParser.DOT);
} else {
return this.getToken(EParser.DOT, i);
}
};
Python_moduleContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterPython_module(this);
}
};
Python_moduleContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitPython_module(this);
}
};
EParser.Python_moduleContext = Python_moduleContext;
EParser.prototype.python_module = function() {
var localctx = new Python_moduleContext(this, this._ctx, this.state);
this.enterRule(localctx, 242, EParser.RULE_python_module);
try {
this.enterOuterAlt(localctx, 1);
this.state = 1927;
this.match(EParser.FROM);
this.state = 1928;
this.module_token();
this.state = 1929;
this.match(EParser.COLON);
this.state = 1930;
this.python_identifier();
this.state = 1935;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,148,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
this.state = 1931;
this.match(EParser.DOT);
this.state = 1932;
this.python_identifier();
}
this.state = 1937;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,148,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 Javascript_category_bindingContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_javascript_category_binding;
return this;
}
Javascript_category_bindingContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Javascript_category_bindingContext.prototype.constructor = Javascript_category_bindingContext;
Javascript_category_bindingContext.prototype.javascript_identifier = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(Javascript_identifierContext);
} else {
return this.getTypedRuleContext(Javascript_identifierContext,i);
}
};
Javascript_category_bindingContext.prototype.DOT = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(EParser.DOT);
} else {
return this.getToken(EParser.DOT, i);
}
};
Javascript_category_bindingContext.prototype.javascript_module = function() {
return this.getTypedRuleContext(Javascript_moduleContext,0);
};
Javascript_category_bindingContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJavascript_category_binding(this);
}
};
Javascript_category_bindingContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJavascript_category_binding(this);
}
};
EParser.Javascript_category_bindingContext = Javascript_category_bindingContext;
EParser.prototype.javascript_category_binding = function() {
var localctx = new Javascript_category_bindingContext(this, this._ctx, this.state);
this.enterRule(localctx, 244, EParser.RULE_javascript_category_binding);
try {
this.enterOuterAlt(localctx, 1);
this.state = 1938;
this.javascript_identifier();
this.state = 1943;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,149,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
this.state = 1939;
this.match(EParser.DOT);
this.state = 1940;
this.javascript_identifier();
}
this.state = 1945;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,149,this._ctx);
}
this.state = 1947;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,150,this._ctx);
if(la_===1) {
this.state = 1946;
this.javascript_module();
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Javascript_moduleContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_javascript_module;
return this;
}
Javascript_moduleContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Javascript_moduleContext.prototype.constructor = Javascript_moduleContext;
Javascript_moduleContext.prototype.FROM = function() {
return this.getToken(EParser.FROM, 0);
};
Javascript_moduleContext.prototype.module_token = function() {
return this.getTypedRuleContext(Module_tokenContext,0);
};
Javascript_moduleContext.prototype.COLON = function() {
return this.getToken(EParser.COLON, 0);
};
Javascript_moduleContext.prototype.javascript_identifier = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(Javascript_identifierContext);
} else {
return this.getTypedRuleContext(Javascript_identifierContext,i);
}
};
Javascript_moduleContext.prototype.SLASH = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(EParser.SLASH);
} else {
return this.getToken(EParser.SLASH, i);
}
};
Javascript_moduleContext.prototype.DOT = function() {
return this.getToken(EParser.DOT, 0);
};
Javascript_moduleContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJavascript_module(this);
}
};
Javascript_moduleContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJavascript_module(this);
}
};
EParser.Javascript_moduleContext = Javascript_moduleContext;
EParser.prototype.javascript_module = function() {
var localctx = new Javascript_moduleContext(this, this._ctx, this.state);
this.enterRule(localctx, 246, EParser.RULE_javascript_module);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 1949;
this.match(EParser.FROM);
this.state = 1950;
this.module_token();
this.state = 1951;
this.match(EParser.COLON);
this.state = 1953;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.SLASH) {
this.state = 1952;
this.match(EParser.SLASH);
}
this.state = 1955;
this.javascript_identifier();
this.state = 1960;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,152,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
this.state = 1956;
this.match(EParser.SLASH);
this.state = 1957;
this.javascript_identifier();
}
this.state = 1962;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,152,this._ctx);
}
this.state = 1965;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,153,this._ctx);
if(la_===1) {
this.state = 1963;
this.match(EParser.DOT);
this.state = 1964;
this.javascript_identifier();
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Variable_identifier_listContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_variable_identifier_list;
return this;
}
Variable_identifier_listContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Variable_identifier_listContext.prototype.constructor = Variable_identifier_listContext;
Variable_identifier_listContext.prototype.variable_identifier = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(Variable_identifierContext);
} else {
return this.getTypedRuleContext(Variable_identifierContext,i);
}
};
Variable_identifier_listContext.prototype.COMMA = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(EParser.COMMA);
} else {
return this.getToken(EParser.COMMA, i);
}
};
Variable_identifier_listContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterVariable_identifier_list(this);
}
};
Variable_identifier_listContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitVariable_identifier_list(this);
}
};
EParser.Variable_identifier_listContext = Variable_identifier_listContext;
EParser.prototype.variable_identifier_list = function() {
var localctx = new Variable_identifier_listContext(this, this._ctx, this.state);
this.enterRule(localctx, 248, EParser.RULE_variable_identifier_list);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 1967;
this.variable_identifier();
this.state = 1972;
this._errHandler.sync(this);
_la = this._input.LA(1);
while(_la===EParser.COMMA) {
this.state = 1968;
this.match(EParser.COMMA);
this.state = 1969;
this.variable_identifier();
this.state = 1974;
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 Attribute_identifier_listContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_attribute_identifier_list;
return this;
}
Attribute_identifier_listContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Attribute_identifier_listContext.prototype.constructor = Attribute_identifier_listContext;
Attribute_identifier_listContext.prototype.attribute_identifier = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(Attribute_identifierContext);
} else {
return this.getTypedRuleContext(Attribute_identifierContext,i);
}
};
Attribute_identifier_listContext.prototype.COMMA = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(EParser.COMMA);
} else {
return this.getToken(EParser.COMMA, i);
}
};
Attribute_identifier_listContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterAttribute_identifier_list(this);
}
};
Attribute_identifier_listContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitAttribute_identifier_list(this);
}
};
EParser.Attribute_identifier_listContext = Attribute_identifier_listContext;
EParser.prototype.attribute_identifier_list = function() {
var localctx = new Attribute_identifier_listContext(this, this._ctx, this.state);
this.enterRule(localctx, 250, EParser.RULE_attribute_identifier_list);
try {
this.enterOuterAlt(localctx, 1);
this.state = 1975;
this.attribute_identifier();
this.state = 1980;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,155,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
this.state = 1976;
this.match(EParser.COMMA);
this.state = 1977;
this.attribute_identifier();
}
this.state = 1982;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,155,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 Method_declarationContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_method_declaration;
return this;
}
Method_declarationContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Method_declarationContext.prototype.constructor = Method_declarationContext;
Method_declarationContext.prototype.abstract_method_declaration = function() {
return this.getTypedRuleContext(Abstract_method_declarationContext,0);
};
Method_declarationContext.prototype.concrete_method_declaration = function() {
return this.getTypedRuleContext(Concrete_method_declarationContext,0);
};
Method_declarationContext.prototype.native_method_declaration = function() {
return this.getTypedRuleContext(Native_method_declarationContext,0);
};
Method_declarationContext.prototype.test_method_declaration = function() {
return this.getTypedRuleContext(Test_method_declarationContext,0);
};
Method_declarationContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterMethod_declaration(this);
}
};
Method_declarationContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitMethod_declaration(this);
}
};
EParser.Method_declarationContext = Method_declarationContext;
EParser.prototype.method_declaration = function() {
var localctx = new Method_declarationContext(this, this._ctx, this.state);
this.enterRule(localctx, 252, EParser.RULE_method_declaration);
try {
this.state = 1987;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,156,this._ctx);
switch(la_) {
case 1:
this.enterOuterAlt(localctx, 1);
this.state = 1983;
this.abstract_method_declaration();
break;
case 2:
this.enterOuterAlt(localctx, 2);
this.state = 1984;
this.concrete_method_declaration();
break;
case 3:
this.enterOuterAlt(localctx, 3);
this.state = 1985;
this.native_method_declaration();
break;
case 4:
this.enterOuterAlt(localctx, 4);
this.state = 1986;
this.test_method_declaration();
break;
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Comment_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 = EParser.RULE_comment_statement;
return this;
}
Comment_statementContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Comment_statementContext.prototype.constructor = Comment_statementContext;
Comment_statementContext.prototype.COMMENT = function() {
return this.getToken(EParser.COMMENT, 0);
};
Comment_statementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterComment_statement(this);
}
};
Comment_statementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitComment_statement(this);
}
};
EParser.Comment_statementContext = Comment_statementContext;
EParser.prototype.comment_statement = function() {
var localctx = new Comment_statementContext(this, this._ctx, this.state);
this.enterRule(localctx, 254, EParser.RULE_comment_statement);
try {
this.enterOuterAlt(localctx, 1);
this.state = 1989;
this.match(EParser.COMMENT);
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Native_statement_listContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_native_statement_list;
return this;
}
Native_statement_listContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Native_statement_listContext.prototype.constructor = Native_statement_listContext;
Native_statement_listContext.prototype.native_statement = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(Native_statementContext);
} else {
return this.getTypedRuleContext(Native_statementContext,i);
}
};
Native_statement_listContext.prototype.lfp = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(LfpContext);
} else {
return this.getTypedRuleContext(LfpContext,i);
}
};
Native_statement_listContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterNative_statement_list(this);
}
};
Native_statement_listContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitNative_statement_list(this);
}
};
EParser.Native_statement_listContext = Native_statement_listContext;
EParser.prototype.native_statement_list = function() {
var localctx = new Native_statement_listContext(this, this._ctx, this.state);
this.enterRule(localctx, 256, EParser.RULE_native_statement_list);
try {
this.enterOuterAlt(localctx, 1);
this.state = 1991;
this.native_statement();
this.state = 1997;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,157,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
this.state = 1992;
this.lfp();
this.state = 1993;
this.native_statement();
}
this.state = 1999;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,157,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 Native_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 = EParser.RULE_native_statement;
return this;
}
Native_statementContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Native_statementContext.prototype.constructor = Native_statementContext;
Native_statementContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function CSharpNativeStatementContext(parser, ctx) {
Native_statementContext.call(this, parser);
Native_statementContext.prototype.copyFrom.call(this, ctx);
return this;
}
CSharpNativeStatementContext.prototype = Object.create(Native_statementContext.prototype);
CSharpNativeStatementContext.prototype.constructor = CSharpNativeStatementContext;
EParser.CSharpNativeStatementContext = CSharpNativeStatementContext;
CSharpNativeStatementContext.prototype.CSHARP = function() {
return this.getToken(EParser.CSHARP, 0);
};
CSharpNativeStatementContext.prototype.csharp_statement = function() {
return this.getTypedRuleContext(Csharp_statementContext,0);
};
CSharpNativeStatementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterCSharpNativeStatement(this);
}
};
CSharpNativeStatementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitCSharpNativeStatement(this);
}
};
function JavaNativeStatementContext(parser, ctx) {
Native_statementContext.call(this, parser);
Native_statementContext.prototype.copyFrom.call(this, ctx);
return this;
}
JavaNativeStatementContext.prototype = Object.create(Native_statementContext.prototype);
JavaNativeStatementContext.prototype.constructor = JavaNativeStatementContext;
EParser.JavaNativeStatementContext = JavaNativeStatementContext;
JavaNativeStatementContext.prototype.JAVA = function() {
return this.getToken(EParser.JAVA, 0);
};
JavaNativeStatementContext.prototype.java_statement = function() {
return this.getTypedRuleContext(Java_statementContext,0);
};
JavaNativeStatementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJavaNativeStatement(this);
}
};
JavaNativeStatementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJavaNativeStatement(this);
}
};
function JavaScriptNativeStatementContext(parser, ctx) {
Native_statementContext.call(this, parser);
Native_statementContext.prototype.copyFrom.call(this, ctx);
return this;
}
JavaScriptNativeStatementContext.prototype = Object.create(Native_statementContext.prototype);
JavaScriptNativeStatementContext.prototype.constructor = JavaScriptNativeStatementContext;
EParser.JavaScriptNativeStatementContext = JavaScriptNativeStatementContext;
JavaScriptNativeStatementContext.prototype.JAVASCRIPT = function() {
return this.getToken(EParser.JAVASCRIPT, 0);
};
JavaScriptNativeStatementContext.prototype.javascript_native_statement = function() {
return this.getTypedRuleContext(Javascript_native_statementContext,0);
};
JavaScriptNativeStatementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJavaScriptNativeStatement(this);
}
};
JavaScriptNativeStatementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJavaScriptNativeStatement(this);
}
};
function Python2NativeStatementContext(parser, ctx) {
Native_statementContext.call(this, parser);
Native_statementContext.prototype.copyFrom.call(this, ctx);
return this;
}
Python2NativeStatementContext.prototype = Object.create(Native_statementContext.prototype);
Python2NativeStatementContext.prototype.constructor = Python2NativeStatementContext;
EParser.Python2NativeStatementContext = Python2NativeStatementContext;
Python2NativeStatementContext.prototype.PYTHON2 = function() {
return this.getToken(EParser.PYTHON2, 0);
};
Python2NativeStatementContext.prototype.python_native_statement = function() {
return this.getTypedRuleContext(Python_native_statementContext,0);
};
Python2NativeStatementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterPython2NativeStatement(this);
}
};
Python2NativeStatementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitPython2NativeStatement(this);
}
};
function Python3NativeStatementContext(parser, ctx) {
Native_statementContext.call(this, parser);
Native_statementContext.prototype.copyFrom.call(this, ctx);
return this;
}
Python3NativeStatementContext.prototype = Object.create(Native_statementContext.prototype);
Python3NativeStatementContext.prototype.constructor = Python3NativeStatementContext;
EParser.Python3NativeStatementContext = Python3NativeStatementContext;
Python3NativeStatementContext.prototype.PYTHON3 = function() {
return this.getToken(EParser.PYTHON3, 0);
};
Python3NativeStatementContext.prototype.python_native_statement = function() {
return this.getTypedRuleContext(Python_native_statementContext,0);
};
Python3NativeStatementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterPython3NativeStatement(this);
}
};
Python3NativeStatementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitPython3NativeStatement(this);
}
};
EParser.Native_statementContext = Native_statementContext;
EParser.prototype.native_statement = function() {
var localctx = new Native_statementContext(this, this._ctx, this.state);
this.enterRule(localctx, 258, EParser.RULE_native_statement);
try {
this.state = 2010;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case EParser.JAVA:
localctx = new JavaNativeStatementContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 2000;
this.match(EParser.JAVA);
this.state = 2001;
this.java_statement();
break;
case EParser.CSHARP:
localctx = new CSharpNativeStatementContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 2002;
this.match(EParser.CSHARP);
this.state = 2003;
this.csharp_statement();
break;
case EParser.PYTHON2:
localctx = new Python2NativeStatementContext(this, localctx);
this.enterOuterAlt(localctx, 3);
this.state = 2004;
this.match(EParser.PYTHON2);
this.state = 2005;
this.python_native_statement();
break;
case EParser.PYTHON3:
localctx = new Python3NativeStatementContext(this, localctx);
this.enterOuterAlt(localctx, 4);
this.state = 2006;
this.match(EParser.PYTHON3);
this.state = 2007;
this.python_native_statement();
break;
case EParser.JAVASCRIPT:
localctx = new JavaScriptNativeStatementContext(this, localctx);
this.enterOuterAlt(localctx, 5);
this.state = 2008;
this.match(EParser.JAVASCRIPT);
this.state = 2009;
this.javascript_native_statement();
break;
default:
throw new antlr4.error.NoViableAltException(this);
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Python_native_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 = EParser.RULE_python_native_statement;
return this;
}
Python_native_statementContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Python_native_statementContext.prototype.constructor = Python_native_statementContext;
Python_native_statementContext.prototype.python_statement = function() {
return this.getTypedRuleContext(Python_statementContext,0);
};
Python_native_statementContext.prototype.SEMI = function() {
return this.getToken(EParser.SEMI, 0);
};
Python_native_statementContext.prototype.python_module = function() {
return this.getTypedRuleContext(Python_moduleContext,0);
};
Python_native_statementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterPython_native_statement(this);
}
};
Python_native_statementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitPython_native_statement(this);
}
};
EParser.Python_native_statementContext = Python_native_statementContext;
EParser.prototype.python_native_statement = function() {
var localctx = new Python_native_statementContext(this, this._ctx, this.state);
this.enterRule(localctx, 260, EParser.RULE_python_native_statement);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 2012;
this.python_statement();
this.state = 2014;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.SEMI) {
this.state = 2013;
this.match(EParser.SEMI);
}
this.state = 2017;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.FROM) {
this.state = 2016;
this.python_module();
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Javascript_native_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 = EParser.RULE_javascript_native_statement;
return this;
}
Javascript_native_statementContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Javascript_native_statementContext.prototype.constructor = Javascript_native_statementContext;
Javascript_native_statementContext.prototype.javascript_statement = function() {
return this.getTypedRuleContext(Javascript_statementContext,0);
};
Javascript_native_statementContext.prototype.SEMI = function() {
return this.getToken(EParser.SEMI, 0);
};
Javascript_native_statementContext.prototype.javascript_module = function() {
return this.getTypedRuleContext(Javascript_moduleContext,0);
};
Javascript_native_statementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJavascript_native_statement(this);
}
};
Javascript_native_statementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJavascript_native_statement(this);
}
};
EParser.Javascript_native_statementContext = Javascript_native_statementContext;
EParser.prototype.javascript_native_statement = function() {
var localctx = new Javascript_native_statementContext(this, this._ctx, this.state);
this.enterRule(localctx, 262, EParser.RULE_javascript_native_statement);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 2019;
this.javascript_statement();
this.state = 2021;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.SEMI) {
this.state = 2020;
this.match(EParser.SEMI);
}
this.state = 2024;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.FROM) {
this.state = 2023;
this.javascript_module();
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Statement_listContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_statement_list;
return this;
}
Statement_listContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Statement_listContext.prototype.constructor = Statement_listContext;
Statement_listContext.prototype.statement = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(StatementContext);
} else {
return this.getTypedRuleContext(StatementContext,i);
}
};
Statement_listContext.prototype.lfp = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(LfpContext);
} else {
return this.getTypedRuleContext(LfpContext,i);
}
};
Statement_listContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterStatement_list(this);
}
};
Statement_listContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitStatement_list(this);
}
};
EParser.Statement_listContext = Statement_listContext;
EParser.prototype.statement_list = function() {
var localctx = new Statement_listContext(this, this._ctx, this.state);
this.enterRule(localctx, 264, EParser.RULE_statement_list);
try {
this.enterOuterAlt(localctx, 1);
this.state = 2026;
this.statement();
this.state = 2032;
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) {
this.state = 2027;
this.lfp();
this.state = 2028;
this.statement();
}
this.state = 2034;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,163,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 Assertion_listContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_assertion_list;
return this;
}
Assertion_listContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Assertion_listContext.prototype.constructor = Assertion_listContext;
Assertion_listContext.prototype.assertion = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(AssertionContext);
} else {
return this.getTypedRuleContext(AssertionContext,i);
}
};
Assertion_listContext.prototype.lfp = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(LfpContext);
} else {
return this.getTypedRuleContext(LfpContext,i);
}
};
Assertion_listContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterAssertion_list(this);
}
};
Assertion_listContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitAssertion_list(this);
}
};
EParser.Assertion_listContext = Assertion_listContext;
EParser.prototype.assertion_list = function() {
var localctx = new Assertion_listContext(this, this._ctx, this.state);
this.enterRule(localctx, 266, EParser.RULE_assertion_list);
try {
this.enterOuterAlt(localctx, 1);
this.state = 2035;
this.assertion();
this.state = 2041;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,164,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
this.state = 2036;
this.lfp();
this.state = 2037;
this.assertion();
}
this.state = 2043;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,164,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 Switch_case_statement_listContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_switch_case_statement_list;
return this;
}
Switch_case_statement_listContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Switch_case_statement_listContext.prototype.constructor = Switch_case_statement_listContext;
Switch_case_statement_listContext.prototype.switch_case_statement = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(Switch_case_statementContext);
} else {
return this.getTypedRuleContext(Switch_case_statementContext,i);
}
};
Switch_case_statement_listContext.prototype.lfp = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(LfpContext);
} else {
return this.getTypedRuleContext(LfpContext,i);
}
};
Switch_case_statement_listContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterSwitch_case_statement_list(this);
}
};
Switch_case_statement_listContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitSwitch_case_statement_list(this);
}
};
EParser.Switch_case_statement_listContext = Switch_case_statement_listContext;
EParser.prototype.switch_case_statement_list = function() {
var localctx = new Switch_case_statement_listContext(this, this._ctx, this.state);
this.enterRule(localctx, 268, EParser.RULE_switch_case_statement_list);
try {
this.enterOuterAlt(localctx, 1);
this.state = 2044;
this.switch_case_statement();
this.state = 2050;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,165,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
this.state = 2045;
this.lfp();
this.state = 2046;
this.switch_case_statement();
}
this.state = 2052;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,165,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 Catch_statement_listContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_catch_statement_list;
return this;
}
Catch_statement_listContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Catch_statement_listContext.prototype.constructor = Catch_statement_listContext;
Catch_statement_listContext.prototype.catch_statement = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(Catch_statementContext);
} else {
return this.getTypedRuleContext(Catch_statementContext,i);
}
};
Catch_statement_listContext.prototype.lfp = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(LfpContext);
} else {
return this.getTypedRuleContext(LfpContext,i);
}
};
Catch_statement_listContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterCatch_statement_list(this);
}
};
Catch_statement_listContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitCatch_statement_list(this);
}
};
EParser.Catch_statement_listContext = Catch_statement_listContext;
EParser.prototype.catch_statement_list = function() {
var localctx = new Catch_statement_listContext(this, this._ctx, this.state);
this.enterRule(localctx, 270, EParser.RULE_catch_statement_list);
try {
this.enterOuterAlt(localctx, 1);
this.state = 2053;
this.catch_statement();
this.state = 2059;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,166,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
this.state = 2054;
this.lfp();
this.state = 2055;
this.catch_statement();
}
this.state = 2061;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,166,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 Literal_collectionContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_literal_collection;
return this;
}
Literal_collectionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Literal_collectionContext.prototype.constructor = Literal_collectionContext;
Literal_collectionContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function LiteralListLiteralContext(parser, ctx) {
Literal_collectionContext.call(this, parser);
Literal_collectionContext.prototype.copyFrom.call(this, ctx);
return this;
}
LiteralListLiteralContext.prototype = Object.create(Literal_collectionContext.prototype);
LiteralListLiteralContext.prototype.constructor = LiteralListLiteralContext;
EParser.LiteralListLiteralContext = LiteralListLiteralContext;
LiteralListLiteralContext.prototype.LBRAK = function() {
return this.getToken(EParser.LBRAK, 0);
};
LiteralListLiteralContext.prototype.literal_list_literal = function() {
return this.getTypedRuleContext(Literal_list_literalContext,0);
};
LiteralListLiteralContext.prototype.RBRAK = function() {
return this.getToken(EParser.RBRAK, 0);
};
LiteralListLiteralContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterLiteralListLiteral(this);
}
};
LiteralListLiteralContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitLiteralListLiteral(this);
}
};
function LiteralRangeLiteralContext(parser, ctx) {
Literal_collectionContext.call(this, parser);
this.low = null; // Atomic_literalContext;
this.high = null; // Atomic_literalContext;
Literal_collectionContext.prototype.copyFrom.call(this, ctx);
return this;
}
LiteralRangeLiteralContext.prototype = Object.create(Literal_collectionContext.prototype);
LiteralRangeLiteralContext.prototype.constructor = LiteralRangeLiteralContext;
EParser.LiteralRangeLiteralContext = LiteralRangeLiteralContext;
LiteralRangeLiteralContext.prototype.LBRAK = function() {
return this.getToken(EParser.LBRAK, 0);
};
LiteralRangeLiteralContext.prototype.RANGE = function() {
return this.getToken(EParser.RANGE, 0);
};
LiteralRangeLiteralContext.prototype.RBRAK = function() {
return this.getToken(EParser.RBRAK, 0);
};
LiteralRangeLiteralContext.prototype.atomic_literal = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(Atomic_literalContext);
} else {
return this.getTypedRuleContext(Atomic_literalContext,i);
}
};
LiteralRangeLiteralContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterLiteralRangeLiteral(this);
}
};
LiteralRangeLiteralContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitLiteralRangeLiteral(this);
}
};
function LiteralSetLiteralContext(parser, ctx) {
Literal_collectionContext.call(this, parser);
Literal_collectionContext.prototype.copyFrom.call(this, ctx);
return this;
}
LiteralSetLiteralContext.prototype = Object.create(Literal_collectionContext.prototype);
LiteralSetLiteralContext.prototype.constructor = LiteralSetLiteralContext;
EParser.LiteralSetLiteralContext = LiteralSetLiteralContext;
LiteralSetLiteralContext.prototype.LT = function() {
return this.getToken(EParser.LT, 0);
};
LiteralSetLiteralContext.prototype.literal_list_literal = function() {
return this.getTypedRuleContext(Literal_list_literalContext,0);
};
LiteralSetLiteralContext.prototype.GT = function() {
return this.getToken(EParser.GT, 0);
};
LiteralSetLiteralContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterLiteralSetLiteral(this);
}
};
LiteralSetLiteralContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitLiteralSetLiteral(this);
}
};
EParser.Literal_collectionContext = Literal_collectionContext;
EParser.prototype.literal_collection = function() {
var localctx = new Literal_collectionContext(this, this._ctx, this.state);
this.enterRule(localctx, 272, EParser.RULE_literal_collection);
try {
this.state = 2076;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,167,this._ctx);
switch(la_) {
case 1:
localctx = new LiteralRangeLiteralContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 2062;
this.match(EParser.LBRAK);
this.state = 2063;
localctx.low = this.atomic_literal();
this.state = 2064;
this.match(EParser.RANGE);
this.state = 2065;
localctx.high = this.atomic_literal();
this.state = 2066;
this.match(EParser.RBRAK);
break;
case 2:
localctx = new LiteralListLiteralContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 2068;
this.match(EParser.LBRAK);
this.state = 2069;
this.literal_list_literal();
this.state = 2070;
this.match(EParser.RBRAK);
break;
case 3:
localctx = new LiteralSetLiteralContext(this, localctx);
this.enterOuterAlt(localctx, 3);
this.state = 2072;
this.match(EParser.LT);
this.state = 2073;
this.literal_list_literal();
this.state = 2074;
this.match(EParser.GT);
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 Atomic_literalContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_atomic_literal;
return this;
}
Atomic_literalContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Atomic_literalContext.prototype.constructor = Atomic_literalContext;
Atomic_literalContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function MinIntegerLiteralContext(parser, ctx) {
Atomic_literalContext.call(this, parser);
this.t = null; // Token;
Atomic_literalContext.prototype.copyFrom.call(this, ctx);
return this;
}
MinIntegerLiteralContext.prototype = Object.create(Atomic_literalContext.prototype);
MinIntegerLiteralContext.prototype.constructor = MinIntegerLiteralContext;
EParser.MinIntegerLiteralContext = MinIntegerLiteralContext;
MinIntegerLiteralContext.prototype.MIN_INTEGER = function() {
return this.getToken(EParser.MIN_INTEGER, 0);
};
MinIntegerLiteralContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterMinIntegerLiteral(this);
}
};
MinIntegerLiteralContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitMinIntegerLiteral(this);
}
};
function DateLiteralContext(parser, ctx) {
Atomic_literalContext.call(this, parser);
this.t = null; // Token;
Atomic_literalContext.prototype.copyFrom.call(this, ctx);
return this;
}
DateLiteralContext.prototype = Object.create(Atomic_literalContext.prototype);
DateLiteralContext.prototype.constructor = DateLiteralContext;
EParser.DateLiteralContext = DateLiteralContext;
DateLiteralContext.prototype.DATE_LITERAL = function() {
return this.getToken(EParser.DATE_LITERAL, 0);
};
DateLiteralContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterDateLiteral(this);
}
};
DateLiteralContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitDateLiteral(this);
}
};
function BooleanLiteralContext(parser, ctx) {
Atomic_literalContext.call(this, parser);
this.t = null; // Token;
Atomic_literalContext.prototype.copyFrom.call(this, ctx);
return this;
}
BooleanLiteralContext.prototype = Object.create(Atomic_literalContext.prototype);
BooleanLiteralContext.prototype.constructor = BooleanLiteralContext;
EParser.BooleanLiteralContext = BooleanLiteralContext;
BooleanLiteralContext.prototype.BOOLEAN_LITERAL = function() {
return this.getToken(EParser.BOOLEAN_LITERAL, 0);
};
BooleanLiteralContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterBooleanLiteral(this);
}
};
BooleanLiteralContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitBooleanLiteral(this);
}
};
function VersionLiteralContext(parser, ctx) {
Atomic_literalContext.call(this, parser);
this.t = null; // Token;
Atomic_literalContext.prototype.copyFrom.call(this, ctx);
return this;
}
VersionLiteralContext.prototype = Object.create(Atomic_literalContext.prototype);
VersionLiteralContext.prototype.constructor = VersionLiteralContext;
EParser.VersionLiteralContext = VersionLiteralContext;
VersionLiteralContext.prototype.VERSION_LITERAL = function() {
return this.getToken(EParser.VERSION_LITERAL, 0);
};
VersionLiteralContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterVersionLiteral(this);
}
};
VersionLiteralContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitVersionLiteral(this);
}
};
function HexadecimalLiteralContext(parser, ctx) {
Atomic_literalContext.call(this, parser);
this.t = null; // Token;
Atomic_literalContext.prototype.copyFrom.call(this, ctx);
return this;
}
HexadecimalLiteralContext.prototype = Object.create(Atomic_literalContext.prototype);
HexadecimalLiteralContext.prototype.constructor = HexadecimalLiteralContext;
EParser.HexadecimalLiteralContext = HexadecimalLiteralContext;
HexadecimalLiteralContext.prototype.HEXA_LITERAL = function() {
return this.getToken(EParser.HEXA_LITERAL, 0);
};
HexadecimalLiteralContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterHexadecimalLiteral(this);
}
};
HexadecimalLiteralContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitHexadecimalLiteral(this);
}
};
function UUIDLiteralContext(parser, ctx) {
Atomic_literalContext.call(this, parser);
this.t = null; // Token;
Atomic_literalContext.prototype.copyFrom.call(this, ctx);
return this;
}
UUIDLiteralContext.prototype = Object.create(Atomic_literalContext.prototype);
UUIDLiteralContext.prototype.constructor = UUIDLiteralContext;
EParser.UUIDLiteralContext = UUIDLiteralContext;
UUIDLiteralContext.prototype.UUID_LITERAL = function() {
return this.getToken(EParser.UUID_LITERAL, 0);
};
UUIDLiteralContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterUUIDLiteral(this);
}
};
UUIDLiteralContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitUUIDLiteral(this);
}
};
function MaxIntegerLiteralContext(parser, ctx) {
Atomic_literalContext.call(this, parser);
this.t = null; // Token;
Atomic_literalContext.prototype.copyFrom.call(this, ctx);
return this;
}
MaxIntegerLiteralContext.prototype = Object.create(Atomic_literalContext.prototype);
MaxIntegerLiteralContext.prototype.constructor = MaxIntegerLiteralContext;
EParser.MaxIntegerLiteralContext = MaxIntegerLiteralContext;
MaxIntegerLiteralContext.prototype.MAX_INTEGER = function() {
return this.getToken(EParser.MAX_INTEGER, 0);
};
MaxIntegerLiteralContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterMaxIntegerLiteral(this);
}
};
MaxIntegerLiteralContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitMaxIntegerLiteral(this);
}
};
function DateTimeLiteralContext(parser, ctx) {
Atomic_literalContext.call(this, parser);
this.t = null; // Token;
Atomic_literalContext.prototype.copyFrom.call(this, ctx);
return this;
}
DateTimeLiteralContext.prototype = Object.create(Atomic_literalContext.prototype);
DateTimeLiteralContext.prototype.constructor = DateTimeLiteralContext;
EParser.DateTimeLiteralContext = DateTimeLiteralContext;
DateTimeLiteralContext.prototype.DATETIME_LITERAL = function() {
return this.getToken(EParser.DATETIME_LITERAL, 0);
};
DateTimeLiteralContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterDateTimeLiteral(this);
}
};
DateTimeLiteralContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitDateTimeLiteral(this);
}
};
function PeriodLiteralContext(parser, ctx) {
Atomic_literalContext.call(this, parser);
this.t = null; // Token;
Atomic_literalContext.prototype.copyFrom.call(this, ctx);
return this;
}
PeriodLiteralContext.prototype = Object.create(Atomic_literalContext.prototype);
PeriodLiteralContext.prototype.constructor = PeriodLiteralContext;
EParser.PeriodLiteralContext = PeriodLiteralContext;
PeriodLiteralContext.prototype.PERIOD_LITERAL = function() {
return this.getToken(EParser.PERIOD_LITERAL, 0);
};
PeriodLiteralContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterPeriodLiteral(this);
}
};
PeriodLiteralContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitPeriodLiteral(this);
}
};
function DecimalLiteralContext(parser, ctx) {
Atomic_literalContext.call(this, parser);
this.t = null; // Token;
Atomic_literalContext.prototype.copyFrom.call(this, ctx);
return this;
}
DecimalLiteralContext.prototype = Object.create(Atomic_literalContext.prototype);
DecimalLiteralContext.prototype.constructor = DecimalLiteralContext;
EParser.DecimalLiteralContext = DecimalLiteralContext;
DecimalLiteralContext.prototype.DECIMAL_LITERAL = function() {
return this.getToken(EParser.DECIMAL_LITERAL, 0);
};
DecimalLiteralContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterDecimalLiteral(this);
}
};
DecimalLiteralContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitDecimalLiteral(this);
}
};
function TextLiteralContext(parser, ctx) {
Atomic_literalContext.call(this, parser);
this.t = null; // Token;
Atomic_literalContext.prototype.copyFrom.call(this, ctx);
return this;
}
TextLiteralContext.prototype = Object.create(Atomic_literalContext.prototype);
TextLiteralContext.prototype.constructor = TextLiteralContext;
EParser.TextLiteralContext = TextLiteralContext;
TextLiteralContext.prototype.TEXT_LITERAL = function() {
return this.getToken(EParser.TEXT_LITERAL, 0);
};
TextLiteralContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterTextLiteral(this);
}
};
TextLiteralContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitTextLiteral(this);
}
};
function NullLiteralContext(parser, ctx) {
Atomic_literalContext.call(this, parser);
this.n = null; // Null_literalContext;
Atomic_literalContext.prototype.copyFrom.call(this, ctx);
return this;
}
NullLiteralContext.prototype = Object.create(Atomic_literalContext.prototype);
NullLiteralContext.prototype.constructor = NullLiteralContext;
EParser.NullLiteralContext = NullLiteralContext;
NullLiteralContext.prototype.null_literal = function() {
return this.getTypedRuleContext(Null_literalContext,0);
};
NullLiteralContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterNullLiteral(this);
}
};
NullLiteralContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitNullLiteral(this);
}
};
function IntegerLiteralContext(parser, ctx) {
Atomic_literalContext.call(this, parser);
this.t = null; // Token;
Atomic_literalContext.prototype.copyFrom.call(this, ctx);
return this;
}
IntegerLiteralContext.prototype = Object.create(Atomic_literalContext.prototype);
IntegerLiteralContext.prototype.constructor = IntegerLiteralContext;
EParser.IntegerLiteralContext = IntegerLiteralContext;
IntegerLiteralContext.prototype.INTEGER_LITERAL = function() {
return this.getToken(EParser.INTEGER_LITERAL, 0);
};
IntegerLiteralContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterIntegerLiteral(this);
}
};
IntegerLiteralContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitIntegerLiteral(this);
}
};
function TimeLiteralContext(parser, ctx) {
Atomic_literalContext.call(this, parser);
this.t = null; // Token;
Atomic_literalContext.prototype.copyFrom.call(this, ctx);
return this;
}
TimeLiteralContext.prototype = Object.create(Atomic_literalContext.prototype);
TimeLiteralContext.prototype.constructor = TimeLiteralContext;
EParser.TimeLiteralContext = TimeLiteralContext;
TimeLiteralContext.prototype.TIME_LITERAL = function() {
return this.getToken(EParser.TIME_LITERAL, 0);
};
TimeLiteralContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterTimeLiteral(this);
}
};
TimeLiteralContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitTimeLiteral(this);
}
};
function CharacterLiteralContext(parser, ctx) {
Atomic_literalContext.call(this, parser);
this.t = null; // Token;
Atomic_literalContext.prototype.copyFrom.call(this, ctx);
return this;
}
CharacterLiteralContext.prototype = Object.create(Atomic_literalContext.prototype);
CharacterLiteralContext.prototype.constructor = CharacterLiteralContext;
EParser.CharacterLiteralContext = CharacterLiteralContext;
CharacterLiteralContext.prototype.CHAR_LITERAL = function() {
return this.getToken(EParser.CHAR_LITERAL, 0);
};
CharacterLiteralContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterCharacterLiteral(this);
}
};
CharacterLiteralContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitCharacterLiteral(this);
}
};
EParser.Atomic_literalContext = Atomic_literalContext;
EParser.prototype.atomic_literal = function() {
var localctx = new Atomic_literalContext(this, this._ctx, this.state);
this.enterRule(localctx, 274, EParser.RULE_atomic_literal);
try {
this.state = 2093;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case EParser.MIN_INTEGER:
localctx = new MinIntegerLiteralContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 2078;
localctx.t = this.match(EParser.MIN_INTEGER);
break;
case EParser.MAX_INTEGER:
localctx = new MaxIntegerLiteralContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 2079;
localctx.t = this.match(EParser.MAX_INTEGER);
break;
case EParser.INTEGER_LITERAL:
localctx = new IntegerLiteralContext(this, localctx);
this.enterOuterAlt(localctx, 3);
this.state = 2080;
localctx.t = this.match(EParser.INTEGER_LITERAL);
break;
case EParser.HEXA_LITERAL:
localctx = new HexadecimalLiteralContext(this, localctx);
this.enterOuterAlt(localctx, 4);
this.state = 2081;
localctx.t = this.match(EParser.HEXA_LITERAL);
break;
case EParser.CHAR_LITERAL:
localctx = new CharacterLiteralContext(this, localctx);
this.enterOuterAlt(localctx, 5);
this.state = 2082;
localctx.t = this.match(EParser.CHAR_LITERAL);
break;
case EParser.DATE_LITERAL:
localctx = new DateLiteralContext(this, localctx);
this.enterOuterAlt(localctx, 6);
this.state = 2083;
localctx.t = this.match(EParser.DATE_LITERAL);
break;
case EParser.TIME_LITERAL:
localctx = new TimeLiteralContext(this, localctx);
this.enterOuterAlt(localctx, 7);
this.state = 2084;
localctx.t = this.match(EParser.TIME_LITERAL);
break;
case EParser.TEXT_LITERAL:
localctx = new TextLiteralContext(this, localctx);
this.enterOuterAlt(localctx, 8);
this.state = 2085;
localctx.t = this.match(EParser.TEXT_LITERAL);
break;
case EParser.DECIMAL_LITERAL:
localctx = new DecimalLiteralContext(this, localctx);
this.enterOuterAlt(localctx, 9);
this.state = 2086;
localctx.t = this.match(EParser.DECIMAL_LITERAL);
break;
case EParser.DATETIME_LITERAL:
localctx = new DateTimeLiteralContext(this, localctx);
this.enterOuterAlt(localctx, 10);
this.state = 2087;
localctx.t = this.match(EParser.DATETIME_LITERAL);
break;
case EParser.BOOLEAN_LITERAL:
localctx = new BooleanLiteralContext(this, localctx);
this.enterOuterAlt(localctx, 11);
this.state = 2088;
localctx.t = this.match(EParser.BOOLEAN_LITERAL);
break;
case EParser.PERIOD_LITERAL:
localctx = new PeriodLiteralContext(this, localctx);
this.enterOuterAlt(localctx, 12);
this.state = 2089;
localctx.t = this.match(EParser.PERIOD_LITERAL);
break;
case EParser.VERSION_LITERAL:
localctx = new VersionLiteralContext(this, localctx);
this.enterOuterAlt(localctx, 13);
this.state = 2090;
localctx.t = this.match(EParser.VERSION_LITERAL);
break;
case EParser.UUID_LITERAL:
localctx = new UUIDLiteralContext(this, localctx);
this.enterOuterAlt(localctx, 14);
this.state = 2091;
localctx.t = this.match(EParser.UUID_LITERAL);
break;
case EParser.NOTHING:
localctx = new NullLiteralContext(this, localctx);
this.enterOuterAlt(localctx, 15);
this.state = 2092;
localctx.n = this.null_literal();
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 Literal_list_literalContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_literal_list_literal;
return this;
}
Literal_list_literalContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Literal_list_literalContext.prototype.constructor = Literal_list_literalContext;
Literal_list_literalContext.prototype.atomic_literal = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(Atomic_literalContext);
} else {
return this.getTypedRuleContext(Atomic_literalContext,i);
}
};
Literal_list_literalContext.prototype.COMMA = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(EParser.COMMA);
} else {
return this.getToken(EParser.COMMA, i);
}
};
Literal_list_literalContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterLiteral_list_literal(this);
}
};
Literal_list_literalContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitLiteral_list_literal(this);
}
};
EParser.Literal_list_literalContext = Literal_list_literalContext;
EParser.prototype.literal_list_literal = function() {
var localctx = new Literal_list_literalContext(this, this._ctx, this.state);
this.enterRule(localctx, 276, EParser.RULE_literal_list_literal);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 2095;
this.atomic_literal();
this.state = 2100;
this._errHandler.sync(this);
_la = this._input.LA(1);
while(_la===EParser.COMMA) {
this.state = 2096;
this.match(EParser.COMMA);
this.state = 2097;
this.atomic_literal();
this.state = 2102;
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 This_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 = EParser.RULE_this_expression;
return this;
}
This_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
This_expressionContext.prototype.constructor = This_expressionContext;
This_expressionContext.prototype.SELF = function() {
return this.getToken(EParser.SELF, 0);
};
This_expressionContext.prototype.THIS = function() {
return this.getToken(EParser.THIS, 0);
};
This_expressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterThis_expression(this);
}
};
This_expressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitThis_expression(this);
}
};
EParser.This_expressionContext = This_expressionContext;
EParser.prototype.this_expression = function() {
var localctx = new This_expressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 278, EParser.RULE_this_expression);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 2103;
_la = this._input.LA(1);
if(!(_la===EParser.SELF || _la===EParser.THIS)) {
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 Parenthesis_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 = EParser.RULE_parenthesis_expression;
return this;
}
Parenthesis_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Parenthesis_expressionContext.prototype.constructor = Parenthesis_expressionContext;
Parenthesis_expressionContext.prototype.LPAR = function() {
return this.getToken(EParser.LPAR, 0);
};
Parenthesis_expressionContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
Parenthesis_expressionContext.prototype.RPAR = function() {
return this.getToken(EParser.RPAR, 0);
};
Parenthesis_expressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterParenthesis_expression(this);
}
};
Parenthesis_expressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitParenthesis_expression(this);
}
};
EParser.Parenthesis_expressionContext = Parenthesis_expressionContext;
EParser.prototype.parenthesis_expression = function() {
var localctx = new Parenthesis_expressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 280, EParser.RULE_parenthesis_expression);
try {
this.enterOuterAlt(localctx, 1);
this.state = 2105;
this.match(EParser.LPAR);
this.state = 2106;
this.expression(0);
this.state = 2107;
this.match(EParser.RPAR);
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Literal_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 = EParser.RULE_literal_expression;
return this;
}
Literal_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Literal_expressionContext.prototype.constructor = Literal_expressionContext;
Literal_expressionContext.prototype.atomic_literal = function() {
return this.getTypedRuleContext(Atomic_literalContext,0);
};
Literal_expressionContext.prototype.collection_literal = function() {
return this.getTypedRuleContext(Collection_literalContext,0);
};
Literal_expressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterLiteral_expression(this);
}
};
Literal_expressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitLiteral_expression(this);
}
};
EParser.Literal_expressionContext = Literal_expressionContext;
EParser.prototype.literal_expression = function() {
var localctx = new Literal_expressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 282, EParser.RULE_literal_expression);
try {
this.state = 2111;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case EParser.NOTHING:
case EParser.BOOLEAN_LITERAL:
case EParser.CHAR_LITERAL:
case EParser.MIN_INTEGER:
case EParser.MAX_INTEGER:
case EParser.TEXT_LITERAL:
case EParser.UUID_LITERAL:
case EParser.INTEGER_LITERAL:
case EParser.HEXA_LITERAL:
case EParser.DECIMAL_LITERAL:
case EParser.DATETIME_LITERAL:
case EParser.TIME_LITERAL:
case EParser.DATE_LITERAL:
case EParser.PERIOD_LITERAL:
case EParser.VERSION_LITERAL:
this.enterOuterAlt(localctx, 1);
this.state = 2109;
this.atomic_literal();
break;
case EParser.LPAR:
case EParser.LBRAK:
case EParser.LCURL:
case EParser.LT:
case EParser.LTCOLONGT:
case EParser.MUTABLE:
this.enterOuterAlt(localctx, 2);
this.state = 2110;
this.collection_literal();
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 Collection_literalContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_collection_literal;
return this;
}
Collection_literalContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Collection_literalContext.prototype.constructor = Collection_literalContext;
Collection_literalContext.prototype.range_literal = function() {
return this.getTypedRuleContext(Range_literalContext,0);
};
Collection_literalContext.prototype.list_literal = function() {
return this.getTypedRuleContext(List_literalContext,0);
};
Collection_literalContext.prototype.set_literal = function() {
return this.getTypedRuleContext(Set_literalContext,0);
};
Collection_literalContext.prototype.dict_literal = function() {
return this.getTypedRuleContext(Dict_literalContext,0);
};
Collection_literalContext.prototype.document_literal = function() {
return this.getTypedRuleContext(Document_literalContext,0);
};
Collection_literalContext.prototype.tuple_literal = function() {
return this.getTypedRuleContext(Tuple_literalContext,0);
};
Collection_literalContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterCollection_literal(this);
}
};
Collection_literalContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitCollection_literal(this);
}
};
EParser.Collection_literalContext = Collection_literalContext;
EParser.prototype.collection_literal = function() {
var localctx = new Collection_literalContext(this, this._ctx, this.state);
this.enterRule(localctx, 284, EParser.RULE_collection_literal);
try {
this.state = 2119;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,171,this._ctx);
switch(la_) {
case 1:
this.enterOuterAlt(localctx, 1);
this.state = 2113;
this.range_literal();
break;
case 2:
this.enterOuterAlt(localctx, 2);
this.state = 2114;
this.list_literal();
break;
case 3:
this.enterOuterAlt(localctx, 3);
this.state = 2115;
this.set_literal();
break;
case 4:
this.enterOuterAlt(localctx, 4);
this.state = 2116;
this.dict_literal();
break;
case 5:
this.enterOuterAlt(localctx, 5);
this.state = 2117;
this.document_literal();
break;
case 6:
this.enterOuterAlt(localctx, 6);
this.state = 2118;
this.tuple_literal();
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 Tuple_literalContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_tuple_literal;
return this;
}
Tuple_literalContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Tuple_literalContext.prototype.constructor = Tuple_literalContext;
Tuple_literalContext.prototype.LPAR = function() {
return this.getToken(EParser.LPAR, 0);
};
Tuple_literalContext.prototype.RPAR = function() {
return this.getToken(EParser.RPAR, 0);
};
Tuple_literalContext.prototype.MUTABLE = function() {
return this.getToken(EParser.MUTABLE, 0);
};
Tuple_literalContext.prototype.expression_tuple = function() {
return this.getTypedRuleContext(Expression_tupleContext,0);
};
Tuple_literalContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterTuple_literal(this);
}
};
Tuple_literalContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitTuple_literal(this);
}
};
EParser.Tuple_literalContext = Tuple_literalContext;
EParser.prototype.tuple_literal = function() {
var localctx = new Tuple_literalContext(this, this._ctx, this.state);
this.enterRule(localctx, 286, EParser.RULE_tuple_literal);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 2122;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.MUTABLE) {
this.state = 2121;
this.match(EParser.MUTABLE);
}
this.state = 2124;
this.match(EParser.LPAR);
this.state = 2126;
this._errHandler.sync(this);
_la = this._input.LA(1);
if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << EParser.LPAR) | (1 << EParser.LBRAK) | (1 << EParser.LCURL))) !== 0) || ((((_la - 33)) & ~0x1f) == 0 && ((1 << (_la - 33)) & ((1 << (EParser.MINUS - 33)) | (1 << (EParser.LT - 33)) | (1 << (EParser.LTGT - 33)) | (1 << (EParser.LTCOLONGT - 33)) | (1 << (EParser.METHOD_T - 33)) | (1 << (EParser.CODE - 33)) | (1 << (EParser.DOCUMENT - 33)) | (1 << (EParser.BLOB - 33)))) !== 0) || ((((_la - 101)) & ~0x1f) == 0 && ((1 << (_la - 101)) & ((1 << (EParser.EXECUTE - 101)) | (1 << (EParser.FETCH - 101)) | (1 << (EParser.INVOKE - 101)) | (1 << (EParser.MUTABLE - 101)) | (1 << (EParser.NOT - 101)) | (1 << (EParser.NOTHING - 101)))) !== 0) || ((((_la - 136)) & ~0x1f) == 0 && ((1 << (_la - 136)) & ((1 << (EParser.READ - 136)) | (1 << (EParser.SELF - 136)) | (1 << (EParser.SORTED - 136)) | (1 << (EParser.THIS - 136)) | (1 << (EParser.BOOLEAN_LITERAL - 136)) | (1 << (EParser.CHAR_LITERAL - 136)) | (1 << (EParser.MIN_INTEGER - 136)) | (1 << (EParser.MAX_INTEGER - 136)) | (1 << (EParser.SYMBOL_IDENTIFIER - 136)) | (1 << (EParser.TYPE_IDENTIFIER - 136)))) !== 0) || ((((_la - 168)) & ~0x1f) == 0 && ((1 << (_la - 168)) & ((1 << (EParser.VARIABLE_IDENTIFIER - 168)) | (1 << (EParser.TEXT_LITERAL - 168)) | (1 << (EParser.UUID_LITERAL - 168)) | (1 << (EParser.INTEGER_LITERAL - 168)) | (1 << (EParser.HEXA_LITERAL - 168)) | (1 << (EParser.DECIMAL_LITERAL - 168)) | (1 << (EParser.DATETIME_LITERAL - 168)) | (1 << (EParser.TIME_LITERAL - 168)) | (1 << (EParser.DATE_LITERAL - 168)) | (1 << (EParser.PERIOD_LITERAL - 168)) | (1 << (EParser.VERSION_LITERAL - 168)))) !== 0)) {
this.state = 2125;
this.expression_tuple();
}
this.state = 2128;
this.match(EParser.RPAR);
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Dict_literalContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_dict_literal;
return this;
}
Dict_literalContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Dict_literalContext.prototype.constructor = Dict_literalContext;
Dict_literalContext.prototype.LTCOLONGT = function() {
return this.getToken(EParser.LTCOLONGT, 0);
};
Dict_literalContext.prototype.MUTABLE = function() {
return this.getToken(EParser.MUTABLE, 0);
};
Dict_literalContext.prototype.LT = function() {
return this.getToken(EParser.LT, 0);
};
Dict_literalContext.prototype.dict_entry_list = function() {
return this.getTypedRuleContext(Dict_entry_listContext,0);
};
Dict_literalContext.prototype.GT = function() {
return this.getToken(EParser.GT, 0);
};
Dict_literalContext.prototype.COLON = function() {
return this.getToken(EParser.COLON, 0);
};
Dict_literalContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterDict_literal(this);
}
};
Dict_literalContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitDict_literal(this);
}
};
EParser.Dict_literalContext = Dict_literalContext;
EParser.prototype.dict_literal = function() {
var localctx = new Dict_literalContext(this, this._ctx, this.state);
this.enterRule(localctx, 288, EParser.RULE_dict_literal);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 2131;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.MUTABLE) {
this.state = 2130;
this.match(EParser.MUTABLE);
}
this.state = 2141;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,175,this._ctx);
switch(la_) {
case 1:
this.state = 2133;
this.match(EParser.LT);
this.state = 2134;
this.dict_entry_list();
this.state = 2135;
this.match(EParser.GT);
break;
case 2:
this.state = 2137;
this.match(EParser.LTCOLONGT);
break;
case 3:
this.state = 2138;
this.match(EParser.LT);
this.state = 2139;
this.match(EParser.COLON);
this.state = 2140;
this.match(EParser.GT);
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 Document_literalContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_document_literal;
return this;
}
Document_literalContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Document_literalContext.prototype.constructor = Document_literalContext;
Document_literalContext.prototype.LCURL = function() {
return this.getToken(EParser.LCURL, 0);
};
Document_literalContext.prototype.RCURL = function() {
return this.getToken(EParser.RCURL, 0);
};
Document_literalContext.prototype.dict_entry_list = function() {
return this.getTypedRuleContext(Dict_entry_listContext,0);
};
Document_literalContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterDocument_literal(this);
}
};
Document_literalContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitDocument_literal(this);
}
};
EParser.Document_literalContext = Document_literalContext;
EParser.prototype.document_literal = function() {
var localctx = new Document_literalContext(this, this._ctx, this.state);
this.enterRule(localctx, 290, EParser.RULE_document_literal);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 2143;
this.match(EParser.LCURL);
this.state = 2145;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(((((_la - 166)) & ~0x1f) == 0 && ((1 << (_la - 166)) & ((1 << (EParser.SYMBOL_IDENTIFIER - 166)) | (1 << (EParser.TYPE_IDENTIFIER - 166)) | (1 << (EParser.VARIABLE_IDENTIFIER - 166)) | (1 << (EParser.TEXT_LITERAL - 166)))) !== 0)) {
this.state = 2144;
this.dict_entry_list();
}
this.state = 2147;
this.match(EParser.RCURL);
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Expression_tupleContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_expression_tuple;
return this;
}
Expression_tupleContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Expression_tupleContext.prototype.constructor = Expression_tupleContext;
Expression_tupleContext.prototype.expression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ExpressionContext);
} else {
return this.getTypedRuleContext(ExpressionContext,i);
}
};
Expression_tupleContext.prototype.COMMA = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(EParser.COMMA);
} else {
return this.getToken(EParser.COMMA, i);
}
};
Expression_tupleContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterExpression_tuple(this);
}
};
Expression_tupleContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitExpression_tuple(this);
}
};
EParser.Expression_tupleContext = Expression_tupleContext;
EParser.prototype.expression_tuple = function() {
var localctx = new Expression_tupleContext(this, this._ctx, this.state);
this.enterRule(localctx, 292, EParser.RULE_expression_tuple);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 2149;
this.expression(0);
this.state = 2150;
this.match(EParser.COMMA);
this.state = 2159;
this._errHandler.sync(this);
_la = this._input.LA(1);
if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << EParser.LPAR) | (1 << EParser.LBRAK) | (1 << EParser.LCURL))) !== 0) || ((((_la - 33)) & ~0x1f) == 0 && ((1 << (_la - 33)) & ((1 << (EParser.MINUS - 33)) | (1 << (EParser.LT - 33)) | (1 << (EParser.LTGT - 33)) | (1 << (EParser.LTCOLONGT - 33)) | (1 << (EParser.METHOD_T - 33)) | (1 << (EParser.CODE - 33)) | (1 << (EParser.DOCUMENT - 33)) | (1 << (EParser.BLOB - 33)))) !== 0) || ((((_la - 101)) & ~0x1f) == 0 && ((1 << (_la - 101)) & ((1 << (EParser.EXECUTE - 101)) | (1 << (EParser.FETCH - 101)) | (1 << (EParser.INVOKE - 101)) | (1 << (EParser.MUTABLE - 101)) | (1 << (EParser.NOT - 101)) | (1 << (EParser.NOTHING - 101)))) !== 0) || ((((_la - 136)) & ~0x1f) == 0 && ((1 << (_la - 136)) & ((1 << (EParser.READ - 136)) | (1 << (EParser.SELF - 136)) | (1 << (EParser.SORTED - 136)) | (1 << (EParser.THIS - 136)) | (1 << (EParser.BOOLEAN_LITERAL - 136)) | (1 << (EParser.CHAR_LITERAL - 136)) | (1 << (EParser.MIN_INTEGER - 136)) | (1 << (EParser.MAX_INTEGER - 136)) | (1 << (EParser.SYMBOL_IDENTIFIER - 136)) | (1 << (EParser.TYPE_IDENTIFIER - 136)))) !== 0) || ((((_la - 168)) & ~0x1f) == 0 && ((1 << (_la - 168)) & ((1 << (EParser.VARIABLE_IDENTIFIER - 168)) | (1 << (EParser.TEXT_LITERAL - 168)) | (1 << (EParser.UUID_LITERAL - 168)) | (1 << (EParser.INTEGER_LITERAL - 168)) | (1 << (EParser.HEXA_LITERAL - 168)) | (1 << (EParser.DECIMAL_LITERAL - 168)) | (1 << (EParser.DATETIME_LITERAL - 168)) | (1 << (EParser.TIME_LITERAL - 168)) | (1 << (EParser.DATE_LITERAL - 168)) | (1 << (EParser.PERIOD_LITERAL - 168)) | (1 << (EParser.VERSION_LITERAL - 168)))) !== 0)) {
this.state = 2151;
this.expression(0);
this.state = 2156;
this._errHandler.sync(this);
_la = this._input.LA(1);
while(_la===EParser.COMMA) {
this.state = 2152;
this.match(EParser.COMMA);
this.state = 2153;
this.expression(0);
this.state = 2158;
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 Dict_entry_listContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_dict_entry_list;
return this;
}
Dict_entry_listContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Dict_entry_listContext.prototype.constructor = Dict_entry_listContext;
Dict_entry_listContext.prototype.dict_entry = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(Dict_entryContext);
} else {
return this.getTypedRuleContext(Dict_entryContext,i);
}
};
Dict_entry_listContext.prototype.COMMA = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(EParser.COMMA);
} else {
return this.getToken(EParser.COMMA, i);
}
};
Dict_entry_listContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterDict_entry_list(this);
}
};
Dict_entry_listContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitDict_entry_list(this);
}
};
EParser.Dict_entry_listContext = Dict_entry_listContext;
EParser.prototype.dict_entry_list = function() {
var localctx = new Dict_entry_listContext(this, this._ctx, this.state);
this.enterRule(localctx, 294, EParser.RULE_dict_entry_list);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 2161;
this.dict_entry();
this.state = 2166;
this._errHandler.sync(this);
_la = this._input.LA(1);
while(_la===EParser.COMMA) {
this.state = 2162;
this.match(EParser.COMMA);
this.state = 2163;
this.dict_entry();
this.state = 2168;
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 Dict_entryContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_dict_entry;
this.key = null; // Dict_keyContext
this.value = null; // ExpressionContext
return this;
}
Dict_entryContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Dict_entryContext.prototype.constructor = Dict_entryContext;
Dict_entryContext.prototype.COLON = function() {
return this.getToken(EParser.COLON, 0);
};
Dict_entryContext.prototype.dict_key = function() {
return this.getTypedRuleContext(Dict_keyContext,0);
};
Dict_entryContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
Dict_entryContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterDict_entry(this);
}
};
Dict_entryContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitDict_entry(this);
}
};
EParser.Dict_entryContext = Dict_entryContext;
EParser.prototype.dict_entry = function() {
var localctx = new Dict_entryContext(this, this._ctx, this.state);
this.enterRule(localctx, 296, EParser.RULE_dict_entry);
try {
this.enterOuterAlt(localctx, 1);
this.state = 2169;
localctx.key = this.dict_key();
this.state = 2170;
this.match(EParser.COLON);
this.state = 2171;
localctx.value = this.expression(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 Dict_keyContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_dict_key;
return this;
}
Dict_keyContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Dict_keyContext.prototype.constructor = Dict_keyContext;
Dict_keyContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function DictKeyIdentifierContext(parser, ctx) {
Dict_keyContext.call(this, parser);
this.name = null; // Any_identifierContext;
Dict_keyContext.prototype.copyFrom.call(this, ctx);
return this;
}
DictKeyIdentifierContext.prototype = Object.create(Dict_keyContext.prototype);
DictKeyIdentifierContext.prototype.constructor = DictKeyIdentifierContext;
EParser.DictKeyIdentifierContext = DictKeyIdentifierContext;
DictKeyIdentifierContext.prototype.any_identifier = function() {
return this.getTypedRuleContext(Any_identifierContext,0);
};
DictKeyIdentifierContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterDictKeyIdentifier(this);
}
};
DictKeyIdentifierContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitDictKeyIdentifier(this);
}
};
function DictKeyTextContext(parser, ctx) {
Dict_keyContext.call(this, parser);
this.name = null; // Token;
Dict_keyContext.prototype.copyFrom.call(this, ctx);
return this;
}
DictKeyTextContext.prototype = Object.create(Dict_keyContext.prototype);
DictKeyTextContext.prototype.constructor = DictKeyTextContext;
EParser.DictKeyTextContext = DictKeyTextContext;
DictKeyTextContext.prototype.TEXT_LITERAL = function() {
return this.getToken(EParser.TEXT_LITERAL, 0);
};
DictKeyTextContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterDictKeyText(this);
}
};
DictKeyTextContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitDictKeyText(this);
}
};
EParser.Dict_keyContext = Dict_keyContext;
EParser.prototype.dict_key = function() {
var localctx = new Dict_keyContext(this, this._ctx, this.state);
this.enterRule(localctx, 298, EParser.RULE_dict_key);
try {
this.state = 2175;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case EParser.SYMBOL_IDENTIFIER:
case EParser.TYPE_IDENTIFIER:
case EParser.VARIABLE_IDENTIFIER:
localctx = new DictKeyIdentifierContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 2173;
localctx.name = this.any_identifier();
break;
case EParser.TEXT_LITERAL:
localctx = new DictKeyTextContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 2174;
localctx.name = this.match(EParser.TEXT_LITERAL);
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 Slice_argumentsContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_slice_arguments;
return this;
}
Slice_argumentsContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Slice_argumentsContext.prototype.constructor = Slice_argumentsContext;
Slice_argumentsContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function SliceFirstAndLastContext(parser, ctx) {
Slice_argumentsContext.call(this, parser);
this.first = null; // ExpressionContext;
this.last = null; // ExpressionContext;
Slice_argumentsContext.prototype.copyFrom.call(this, ctx);
return this;
}
SliceFirstAndLastContext.prototype = Object.create(Slice_argumentsContext.prototype);
SliceFirstAndLastContext.prototype.constructor = SliceFirstAndLastContext;
EParser.SliceFirstAndLastContext = SliceFirstAndLastContext;
SliceFirstAndLastContext.prototype.COLON = function() {
return this.getToken(EParser.COLON, 0);
};
SliceFirstAndLastContext.prototype.expression = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(ExpressionContext);
} else {
return this.getTypedRuleContext(ExpressionContext,i);
}
};
SliceFirstAndLastContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterSliceFirstAndLast(this);
}
};
SliceFirstAndLastContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitSliceFirstAndLast(this);
}
};
function SliceLastOnlyContext(parser, ctx) {
Slice_argumentsContext.call(this, parser);
this.last = null; // ExpressionContext;
Slice_argumentsContext.prototype.copyFrom.call(this, ctx);
return this;
}
SliceLastOnlyContext.prototype = Object.create(Slice_argumentsContext.prototype);
SliceLastOnlyContext.prototype.constructor = SliceLastOnlyContext;
EParser.SliceLastOnlyContext = SliceLastOnlyContext;
SliceLastOnlyContext.prototype.COLON = function() {
return this.getToken(EParser.COLON, 0);
};
SliceLastOnlyContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
SliceLastOnlyContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterSliceLastOnly(this);
}
};
SliceLastOnlyContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitSliceLastOnly(this);
}
};
function SliceFirstOnlyContext(parser, ctx) {
Slice_argumentsContext.call(this, parser);
this.first = null; // ExpressionContext;
Slice_argumentsContext.prototype.copyFrom.call(this, ctx);
return this;
}
SliceFirstOnlyContext.prototype = Object.create(Slice_argumentsContext.prototype);
SliceFirstOnlyContext.prototype.constructor = SliceFirstOnlyContext;
EParser.SliceFirstOnlyContext = SliceFirstOnlyContext;
SliceFirstOnlyContext.prototype.COLON = function() {
return this.getToken(EParser.COLON, 0);
};
SliceFirstOnlyContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
SliceFirstOnlyContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterSliceFirstOnly(this);
}
};
SliceFirstOnlyContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitSliceFirstOnly(this);
}
};
EParser.Slice_argumentsContext = Slice_argumentsContext;
EParser.prototype.slice_arguments = function() {
var localctx = new Slice_argumentsContext(this, this._ctx, this.state);
this.enterRule(localctx, 300, EParser.RULE_slice_arguments);
try {
this.state = 2186;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,181,this._ctx);
switch(la_) {
case 1:
localctx = new SliceFirstAndLastContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 2177;
localctx.first = this.expression(0);
this.state = 2178;
this.match(EParser.COLON);
this.state = 2179;
localctx.last = this.expression(0);
break;
case 2:
localctx = new SliceFirstOnlyContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 2181;
localctx.first = this.expression(0);
this.state = 2182;
this.match(EParser.COLON);
break;
case 3:
localctx = new SliceLastOnlyContext(this, localctx);
this.enterOuterAlt(localctx, 3);
this.state = 2184;
this.match(EParser.COLON);
this.state = 2185;
localctx.last = this.expression(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 Assign_variable_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 = EParser.RULE_assign_variable_statement;
return this;
}
Assign_variable_statementContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Assign_variable_statementContext.prototype.constructor = Assign_variable_statementContext;
Assign_variable_statementContext.prototype.variable_identifier = function() {
return this.getTypedRuleContext(Variable_identifierContext,0);
};
Assign_variable_statementContext.prototype.assign = function() {
return this.getTypedRuleContext(AssignContext,0);
};
Assign_variable_statementContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
Assign_variable_statementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterAssign_variable_statement(this);
}
};
Assign_variable_statementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitAssign_variable_statement(this);
}
};
EParser.Assign_variable_statementContext = Assign_variable_statementContext;
EParser.prototype.assign_variable_statement = function() {
var localctx = new Assign_variable_statementContext(this, this._ctx, this.state);
this.enterRule(localctx, 302, EParser.RULE_assign_variable_statement);
try {
this.enterOuterAlt(localctx, 1);
this.state = 2188;
this.variable_identifier();
this.state = 2189;
this.assign();
this.state = 2190;
this.expression(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 Assignable_instanceContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_assignable_instance;
return this;
}
Assignable_instanceContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Assignable_instanceContext.prototype.constructor = Assignable_instanceContext;
Assignable_instanceContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function ChildInstanceContext(parser, ctx) {
Assignable_instanceContext.call(this, parser);
Assignable_instanceContext.prototype.copyFrom.call(this, ctx);
return this;
}
ChildInstanceContext.prototype = Object.create(Assignable_instanceContext.prototype);
ChildInstanceContext.prototype.constructor = ChildInstanceContext;
EParser.ChildInstanceContext = ChildInstanceContext;
ChildInstanceContext.prototype.assignable_instance = function() {
return this.getTypedRuleContext(Assignable_instanceContext,0);
};
ChildInstanceContext.prototype.child_instance = function() {
return this.getTypedRuleContext(Child_instanceContext,0);
};
ChildInstanceContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterChildInstance(this);
}
};
ChildInstanceContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitChildInstance(this);
}
};
function RootInstanceContext(parser, ctx) {
Assignable_instanceContext.call(this, parser);
Assignable_instanceContext.prototype.copyFrom.call(this, ctx);
return this;
}
RootInstanceContext.prototype = Object.create(Assignable_instanceContext.prototype);
RootInstanceContext.prototype.constructor = RootInstanceContext;
EParser.RootInstanceContext = RootInstanceContext;
RootInstanceContext.prototype.variable_identifier = function() {
return this.getTypedRuleContext(Variable_identifierContext,0);
};
RootInstanceContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterRootInstance(this);
}
};
RootInstanceContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitRootInstance(this);
}
};
EParser.prototype.assignable_instance = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new Assignable_instanceContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 304;
this.enterRecursionRule(localctx, 304, EParser.RULE_assignable_instance, _p);
try {
this.enterOuterAlt(localctx, 1);
localctx = new RootInstanceContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 2193;
this.variable_identifier();
this._ctx.stop = this._input.LT(-1);
this.state = 2199;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,182,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 ChildInstanceContext(this, new Assignable_instanceContext(this, _parentctx, _parentState));
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_assignable_instance);
this.state = 2195;
if (!( this.precpred(this._ctx, 1))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
}
this.state = 2196;
this.child_instance();
}
this.state = 2201;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,182,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 Is_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 = EParser.RULE_is_expression;
return this;
}
Is_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Is_expressionContext.prototype.constructor = Is_expressionContext;
Is_expressionContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function IsATypeExpressionContext(parser, ctx) {
Is_expressionContext.call(this, parser);
Is_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
IsATypeExpressionContext.prototype = Object.create(Is_expressionContext.prototype);
IsATypeExpressionContext.prototype.constructor = IsATypeExpressionContext;
EParser.IsATypeExpressionContext = IsATypeExpressionContext;
IsATypeExpressionContext.prototype.VARIABLE_IDENTIFIER = function() {
return this.getToken(EParser.VARIABLE_IDENTIFIER, 0);
};
IsATypeExpressionContext.prototype.category_or_any_type = function() {
return this.getTypedRuleContext(Category_or_any_typeContext,0);
};
IsATypeExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterIsATypeExpression(this);
}
};
IsATypeExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitIsATypeExpression(this);
}
};
function IsOtherExpressionContext(parser, ctx) {
Is_expressionContext.call(this, parser);
Is_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
IsOtherExpressionContext.prototype = Object.create(Is_expressionContext.prototype);
IsOtherExpressionContext.prototype.constructor = IsOtherExpressionContext;
EParser.IsOtherExpressionContext = IsOtherExpressionContext;
IsOtherExpressionContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
IsOtherExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterIsOtherExpression(this);
}
};
IsOtherExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitIsOtherExpression(this);
}
};
EParser.Is_expressionContext = Is_expressionContext;
EParser.prototype.is_expression = function() {
var localctx = new Is_expressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 306, EParser.RULE_is_expression);
try {
this.state = 2206;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,183,this._ctx);
switch(la_) {
case 1:
localctx = new IsATypeExpressionContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 2202;
if (!( this.willBeAOrAn())) {
throw new antlr4.error.FailedPredicateException(this, "$parser.willBeAOrAn()");
}
this.state = 2203;
this.match(EParser.VARIABLE_IDENTIFIER);
this.state = 2204;
this.category_or_any_type();
break;
case 2:
localctx = new IsOtherExpressionContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 2205;
this.expression(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 Read_all_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 = EParser.RULE_read_all_expression;
this.source = null; // ExpressionContext
return this;
}
Read_all_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Read_all_expressionContext.prototype.constructor = Read_all_expressionContext;
Read_all_expressionContext.prototype.READ = function() {
return this.getToken(EParser.READ, 0);
};
Read_all_expressionContext.prototype.ALL = function() {
return this.getToken(EParser.ALL, 0);
};
Read_all_expressionContext.prototype.FROM = function() {
return this.getToken(EParser.FROM, 0);
};
Read_all_expressionContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
Read_all_expressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterRead_all_expression(this);
}
};
Read_all_expressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitRead_all_expression(this);
}
};
EParser.Read_all_expressionContext = Read_all_expressionContext;
EParser.prototype.read_all_expression = function() {
var localctx = new Read_all_expressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 308, EParser.RULE_read_all_expression);
try {
this.enterOuterAlt(localctx, 1);
this.state = 2208;
this.match(EParser.READ);
this.state = 2209;
this.match(EParser.ALL);
this.state = 2210;
this.match(EParser.FROM);
this.state = 2211;
localctx.source = this.expression(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 Read_one_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 = EParser.RULE_read_one_expression;
this.source = null; // ExpressionContext
return this;
}
Read_one_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Read_one_expressionContext.prototype.constructor = Read_one_expressionContext;
Read_one_expressionContext.prototype.READ = function() {
return this.getToken(EParser.READ, 0);
};
Read_one_expressionContext.prototype.ONE = function() {
return this.getToken(EParser.ONE, 0);
};
Read_one_expressionContext.prototype.FROM = function() {
return this.getToken(EParser.FROM, 0);
};
Read_one_expressionContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
Read_one_expressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterRead_one_expression(this);
}
};
Read_one_expressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitRead_one_expression(this);
}
};
EParser.Read_one_expressionContext = Read_one_expressionContext;
EParser.prototype.read_one_expression = function() {
var localctx = new Read_one_expressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 310, EParser.RULE_read_one_expression);
try {
this.enterOuterAlt(localctx, 1);
this.state = 2213;
this.match(EParser.READ);
this.state = 2214;
this.match(EParser.ONE);
this.state = 2215;
this.match(EParser.FROM);
this.state = 2216;
localctx.source = this.expression(0);
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Order_by_listContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_order_by_list;
return this;
}
Order_by_listContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Order_by_listContext.prototype.constructor = Order_by_listContext;
Order_by_listContext.prototype.order_by = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(Order_byContext);
} else {
return this.getTypedRuleContext(Order_byContext,i);
}
};
Order_by_listContext.prototype.COMMA = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(EParser.COMMA);
} else {
return this.getToken(EParser.COMMA, i);
}
};
Order_by_listContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterOrder_by_list(this);
}
};
Order_by_listContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitOrder_by_list(this);
}
};
EParser.Order_by_listContext = Order_by_listContext;
EParser.prototype.order_by_list = function() {
var localctx = new Order_by_listContext(this, this._ctx, this.state);
this.enterRule(localctx, 312, EParser.RULE_order_by_list);
try {
this.enterOuterAlt(localctx, 1);
this.state = 2218;
this.order_by();
this.state = 2223;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,184,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
this.state = 2219;
this.match(EParser.COMMA);
this.state = 2220;
this.order_by();
}
this.state = 2225;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,184,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 Order_byContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_order_by;
return this;
}
Order_byContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Order_byContext.prototype.constructor = Order_byContext;
Order_byContext.prototype.variable_identifier = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(Variable_identifierContext);
} else {
return this.getTypedRuleContext(Variable_identifierContext,i);
}
};
Order_byContext.prototype.DOT = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(EParser.DOT);
} else {
return this.getToken(EParser.DOT, i);
}
};
Order_byContext.prototype.ASC = function() {
return this.getToken(EParser.ASC, 0);
};
Order_byContext.prototype.DESC = function() {
return this.getToken(EParser.DESC, 0);
};
Order_byContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterOrder_by(this);
}
};
Order_byContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitOrder_by(this);
}
};
EParser.Order_byContext = Order_byContext;
EParser.prototype.order_by = function() {
var localctx = new Order_byContext(this, this._ctx, this.state);
this.enterRule(localctx, 314, EParser.RULE_order_by);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 2226;
this.variable_identifier();
this.state = 2231;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,185,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
this.state = 2227;
this.match(EParser.DOT);
this.state = 2228;
this.variable_identifier();
}
this.state = 2233;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,185,this._ctx);
}
this.state = 2235;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,186,this._ctx);
if(la_===1) {
this.state = 2234;
_la = this._input.LA(1);
if(!(_la===EParser.ASC || _la===EParser.DESC)) {
this._errHandler.recoverInline(this);
}
else {
this._errHandler.reportMatch(this);
this.consume();
}
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function OperatorContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_operator;
return this;
}
OperatorContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
OperatorContext.prototype.constructor = OperatorContext;
OperatorContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function OperatorPlusContext(parser, ctx) {
OperatorContext.call(this, parser);
OperatorContext.prototype.copyFrom.call(this, ctx);
return this;
}
OperatorPlusContext.prototype = Object.create(OperatorContext.prototype);
OperatorPlusContext.prototype.constructor = OperatorPlusContext;
EParser.OperatorPlusContext = OperatorPlusContext;
OperatorPlusContext.prototype.PLUS = function() {
return this.getToken(EParser.PLUS, 0);
};
OperatorPlusContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterOperatorPlus(this);
}
};
OperatorPlusContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitOperatorPlus(this);
}
};
function OperatorDivideContext(parser, ctx) {
OperatorContext.call(this, parser);
OperatorContext.prototype.copyFrom.call(this, ctx);
return this;
}
OperatorDivideContext.prototype = Object.create(OperatorContext.prototype);
OperatorDivideContext.prototype.constructor = OperatorDivideContext;
EParser.OperatorDivideContext = OperatorDivideContext;
OperatorDivideContext.prototype.divide = function() {
return this.getTypedRuleContext(DivideContext,0);
};
OperatorDivideContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterOperatorDivide(this);
}
};
OperatorDivideContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitOperatorDivide(this);
}
};
function OperatorIDivideContext(parser, ctx) {
OperatorContext.call(this, parser);
OperatorContext.prototype.copyFrom.call(this, ctx);
return this;
}
OperatorIDivideContext.prototype = Object.create(OperatorContext.prototype);
OperatorIDivideContext.prototype.constructor = OperatorIDivideContext;
EParser.OperatorIDivideContext = OperatorIDivideContext;
OperatorIDivideContext.prototype.idivide = function() {
return this.getTypedRuleContext(IdivideContext,0);
};
OperatorIDivideContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterOperatorIDivide(this);
}
};
OperatorIDivideContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitOperatorIDivide(this);
}
};
function OperatorMultiplyContext(parser, ctx) {
OperatorContext.call(this, parser);
OperatorContext.prototype.copyFrom.call(this, ctx);
return this;
}
OperatorMultiplyContext.prototype = Object.create(OperatorContext.prototype);
OperatorMultiplyContext.prototype.constructor = OperatorMultiplyContext;
EParser.OperatorMultiplyContext = OperatorMultiplyContext;
OperatorMultiplyContext.prototype.multiply = function() {
return this.getTypedRuleContext(MultiplyContext,0);
};
OperatorMultiplyContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterOperatorMultiply(this);
}
};
OperatorMultiplyContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitOperatorMultiply(this);
}
};
function OperatorMinusContext(parser, ctx) {
OperatorContext.call(this, parser);
OperatorContext.prototype.copyFrom.call(this, ctx);
return this;
}
OperatorMinusContext.prototype = Object.create(OperatorContext.prototype);
OperatorMinusContext.prototype.constructor = OperatorMinusContext;
EParser.OperatorMinusContext = OperatorMinusContext;
OperatorMinusContext.prototype.MINUS = function() {
return this.getToken(EParser.MINUS, 0);
};
OperatorMinusContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterOperatorMinus(this);
}
};
OperatorMinusContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitOperatorMinus(this);
}
};
function OperatorModuloContext(parser, ctx) {
OperatorContext.call(this, parser);
OperatorContext.prototype.copyFrom.call(this, ctx);
return this;
}
OperatorModuloContext.prototype = Object.create(OperatorContext.prototype);
OperatorModuloContext.prototype.constructor = OperatorModuloContext;
EParser.OperatorModuloContext = OperatorModuloContext;
OperatorModuloContext.prototype.modulo = function() {
return this.getTypedRuleContext(ModuloContext,0);
};
OperatorModuloContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterOperatorModulo(this);
}
};
OperatorModuloContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitOperatorModulo(this);
}
};
EParser.OperatorContext = OperatorContext;
EParser.prototype.operator = function() {
var localctx = new OperatorContext(this, this._ctx, this.state);
this.enterRule(localctx, 316, EParser.RULE_operator);
try {
this.state = 2243;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case EParser.PLUS:
localctx = new OperatorPlusContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 2237;
this.match(EParser.PLUS);
break;
case EParser.MINUS:
localctx = new OperatorMinusContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 2238;
this.match(EParser.MINUS);
break;
case EParser.STAR:
localctx = new OperatorMultiplyContext(this, localctx);
this.enterOuterAlt(localctx, 3);
this.state = 2239;
this.multiply();
break;
case EParser.SLASH:
localctx = new OperatorDivideContext(this, localctx);
this.enterOuterAlt(localctx, 4);
this.state = 2240;
this.divide();
break;
case EParser.BSLASH:
localctx = new OperatorIDivideContext(this, localctx);
this.enterOuterAlt(localctx, 5);
this.state = 2241;
this.idivide();
break;
case EParser.PERCENT:
case EParser.MODULO:
localctx = new OperatorModuloContext(this, localctx);
this.enterOuterAlt(localctx, 6);
this.state = 2242;
this.modulo();
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 KeywordContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_keyword;
return this;
}
KeywordContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
KeywordContext.prototype.constructor = KeywordContext;
KeywordContext.prototype.JAVA = function() {
return this.getToken(EParser.JAVA, 0);
};
KeywordContext.prototype.CSHARP = function() {
return this.getToken(EParser.CSHARP, 0);
};
KeywordContext.prototype.PYTHON2 = function() {
return this.getToken(EParser.PYTHON2, 0);
};
KeywordContext.prototype.PYTHON3 = function() {
return this.getToken(EParser.PYTHON3, 0);
};
KeywordContext.prototype.JAVASCRIPT = function() {
return this.getToken(EParser.JAVASCRIPT, 0);
};
KeywordContext.prototype.SWIFT = function() {
return this.getToken(EParser.SWIFT, 0);
};
KeywordContext.prototype.BOOLEAN = function() {
return this.getToken(EParser.BOOLEAN, 0);
};
KeywordContext.prototype.CHARACTER = function() {
return this.getToken(EParser.CHARACTER, 0);
};
KeywordContext.prototype.TEXT = function() {
return this.getToken(EParser.TEXT, 0);
};
KeywordContext.prototype.INTEGER = function() {
return this.getToken(EParser.INTEGER, 0);
};
KeywordContext.prototype.DECIMAL = function() {
return this.getToken(EParser.DECIMAL, 0);
};
KeywordContext.prototype.DATE = function() {
return this.getToken(EParser.DATE, 0);
};
KeywordContext.prototype.TIME = function() {
return this.getToken(EParser.TIME, 0);
};
KeywordContext.prototype.DATETIME = function() {
return this.getToken(EParser.DATETIME, 0);
};
KeywordContext.prototype.PERIOD = function() {
return this.getToken(EParser.PERIOD, 0);
};
KeywordContext.prototype.VERSION = function() {
return this.getToken(EParser.VERSION, 0);
};
KeywordContext.prototype.METHOD_T = function() {
return this.getToken(EParser.METHOD_T, 0);
};
KeywordContext.prototype.CODE = function() {
return this.getToken(EParser.CODE, 0);
};
KeywordContext.prototype.DOCUMENT = function() {
return this.getToken(EParser.DOCUMENT, 0);
};
KeywordContext.prototype.BLOB = function() {
return this.getToken(EParser.BLOB, 0);
};
KeywordContext.prototype.IMAGE = function() {
return this.getToken(EParser.IMAGE, 0);
};
KeywordContext.prototype.UUID = function() {
return this.getToken(EParser.UUID, 0);
};
KeywordContext.prototype.ITERATOR = function() {
return this.getToken(EParser.ITERATOR, 0);
};
KeywordContext.prototype.CURSOR = function() {
return this.getToken(EParser.CURSOR, 0);
};
KeywordContext.prototype.HTML = function() {
return this.getToken(EParser.HTML, 0);
};
KeywordContext.prototype.ABSTRACT = function() {
return this.getToken(EParser.ABSTRACT, 0);
};
KeywordContext.prototype.ALL = function() {
return this.getToken(EParser.ALL, 0);
};
KeywordContext.prototype.ALWAYS = function() {
return this.getToken(EParser.ALWAYS, 0);
};
KeywordContext.prototype.AND = function() {
return this.getToken(EParser.AND, 0);
};
KeywordContext.prototype.ANY = function() {
return this.getToken(EParser.ANY, 0);
};
KeywordContext.prototype.AS = function() {
return this.getToken(EParser.AS, 0);
};
KeywordContext.prototype.ASC = function() {
return this.getToken(EParser.ASC, 0);
};
KeywordContext.prototype.ATTR = function() {
return this.getToken(EParser.ATTR, 0);
};
KeywordContext.prototype.ATTRIBUTE = function() {
return this.getToken(EParser.ATTRIBUTE, 0);
};
KeywordContext.prototype.ATTRIBUTES = function() {
return this.getToken(EParser.ATTRIBUTES, 0);
};
KeywordContext.prototype.BINDINGS = function() {
return this.getToken(EParser.BINDINGS, 0);
};
KeywordContext.prototype.BREAK = function() {
return this.getToken(EParser.BREAK, 0);
};
KeywordContext.prototype.BY = function() {
return this.getToken(EParser.BY, 0);
};
KeywordContext.prototype.CASE = function() {
return this.getToken(EParser.CASE, 0);
};
KeywordContext.prototype.CATCH = function() {
return this.getToken(EParser.CATCH, 0);
};
KeywordContext.prototype.CATEGORY = function() {
return this.getToken(EParser.CATEGORY, 0);
};
KeywordContext.prototype.CLASS = function() {
return this.getToken(EParser.CLASS, 0);
};
KeywordContext.prototype.CLOSE = function() {
return this.getToken(EParser.CLOSE, 0);
};
KeywordContext.prototype.CONTAINS = function() {
return this.getToken(EParser.CONTAINS, 0);
};
KeywordContext.prototype.DEF = function() {
return this.getToken(EParser.DEF, 0);
};
KeywordContext.prototype.DEFAULT = function() {
return this.getToken(EParser.DEFAULT, 0);
};
KeywordContext.prototype.DEFINE = function() {
return this.getToken(EParser.DEFINE, 0);
};
KeywordContext.prototype.DELETE = function() {
return this.getToken(EParser.DELETE, 0);
};
KeywordContext.prototype.DESC = function() {
return this.getToken(EParser.DESC, 0);
};
KeywordContext.prototype.DO = function() {
return this.getToken(EParser.DO, 0);
};
KeywordContext.prototype.DOING = function() {
return this.getToken(EParser.DOING, 0);
};
KeywordContext.prototype.EACH = function() {
return this.getToken(EParser.EACH, 0);
};
KeywordContext.prototype.ELSE = function() {
return this.getToken(EParser.ELSE, 0);
};
KeywordContext.prototype.ENUM = function() {
return this.getToken(EParser.ENUM, 0);
};
KeywordContext.prototype.ENUMERATED = function() {
return this.getToken(EParser.ENUMERATED, 0);
};
KeywordContext.prototype.EXCEPT = function() {
return this.getToken(EParser.EXCEPT, 0);
};
KeywordContext.prototype.EXECUTE = function() {
return this.getToken(EParser.EXECUTE, 0);
};
KeywordContext.prototype.EXPECTING = function() {
return this.getToken(EParser.EXPECTING, 0);
};
KeywordContext.prototype.EXTENDS = function() {
return this.getToken(EParser.EXTENDS, 0);
};
KeywordContext.prototype.FETCH = function() {
return this.getToken(EParser.FETCH, 0);
};
KeywordContext.prototype.FILTERED = function() {
return this.getToken(EParser.FILTERED, 0);
};
KeywordContext.prototype.FINALLY = function() {
return this.getToken(EParser.FINALLY, 0);
};
KeywordContext.prototype.FLUSH = function() {
return this.getToken(EParser.FLUSH, 0);
};
KeywordContext.prototype.FOR = function() {
return this.getToken(EParser.FOR, 0);
};
KeywordContext.prototype.FROM = function() {
return this.getToken(EParser.FROM, 0);
};
KeywordContext.prototype.GETTER = function() {
return this.getToken(EParser.GETTER, 0);
};
KeywordContext.prototype.HAS = function() {
return this.getToken(EParser.HAS, 0);
};
KeywordContext.prototype.IF = function() {
return this.getToken(EParser.IF, 0);
};
KeywordContext.prototype.IN = function() {
return this.getToken(EParser.IN, 0);
};
KeywordContext.prototype.INDEX = function() {
return this.getToken(EParser.INDEX, 0);
};
KeywordContext.prototype.INVOKE = function() {
return this.getToken(EParser.INVOKE, 0);
};
KeywordContext.prototype.IS = function() {
return this.getToken(EParser.IS, 0);
};
KeywordContext.prototype.MATCHING = function() {
return this.getToken(EParser.MATCHING, 0);
};
KeywordContext.prototype.METHOD = function() {
return this.getToken(EParser.METHOD, 0);
};
KeywordContext.prototype.METHODS = function() {
return this.getToken(EParser.METHODS, 0);
};
KeywordContext.prototype.MODULO = function() {
return this.getToken(EParser.MODULO, 0);
};
KeywordContext.prototype.MUTABLE = function() {
return this.getToken(EParser.MUTABLE, 0);
};
KeywordContext.prototype.NATIVE = function() {
return this.getToken(EParser.NATIVE, 0);
};
KeywordContext.prototype.NONE = function() {
return this.getToken(EParser.NONE, 0);
};
KeywordContext.prototype.NOT = function() {
return this.getToken(EParser.NOT, 0);
};
KeywordContext.prototype.NOTHING = function() {
return this.getToken(EParser.NOTHING, 0);
};
KeywordContext.prototype.NULL = function() {
return this.getToken(EParser.NULL, 0);
};
KeywordContext.prototype.ON = function() {
return this.getToken(EParser.ON, 0);
};
KeywordContext.prototype.ONE = function() {
return this.getToken(EParser.ONE, 0);
};
KeywordContext.prototype.OPEN = function() {
return this.getToken(EParser.OPEN, 0);
};
KeywordContext.prototype.OPERATOR = function() {
return this.getToken(EParser.OPERATOR, 0);
};
KeywordContext.prototype.OR = function() {
return this.getToken(EParser.OR, 0);
};
KeywordContext.prototype.ORDER = function() {
return this.getToken(EParser.ORDER, 0);
};
KeywordContext.prototype.OTHERWISE = function() {
return this.getToken(EParser.OTHERWISE, 0);
};
KeywordContext.prototype.PASS = function() {
return this.getToken(EParser.PASS, 0);
};
KeywordContext.prototype.RAISE = function() {
return this.getToken(EParser.RAISE, 0);
};
KeywordContext.prototype.READ = function() {
return this.getToken(EParser.READ, 0);
};
KeywordContext.prototype.RECEIVING = function() {
return this.getToken(EParser.RECEIVING, 0);
};
KeywordContext.prototype.RESOURCE = function() {
return this.getToken(EParser.RESOURCE, 0);
};
KeywordContext.prototype.RETURN = function() {
return this.getToken(EParser.RETURN, 0);
};
KeywordContext.prototype.RETURNING = function() {
return this.getToken(EParser.RETURNING, 0);
};
KeywordContext.prototype.ROWS = function() {
return this.getToken(EParser.ROWS, 0);
};
KeywordContext.prototype.SELF = function() {
return this.getToken(EParser.SELF, 0);
};
KeywordContext.prototype.SETTER = function() {
return this.getToken(EParser.SETTER, 0);
};
KeywordContext.prototype.SINGLETON = function() {
return this.getToken(EParser.SINGLETON, 0);
};
KeywordContext.prototype.SORTED = function() {
return this.getToken(EParser.SORTED, 0);
};
KeywordContext.prototype.STORABLE = function() {
return this.getToken(EParser.STORABLE, 0);
};
KeywordContext.prototype.STORE = function() {
return this.getToken(EParser.STORE, 0);
};
KeywordContext.prototype.SWITCH = function() {
return this.getToken(EParser.SWITCH, 0);
};
KeywordContext.prototype.TEST = function() {
return this.getToken(EParser.TEST, 0);
};
KeywordContext.prototype.THIS = function() {
return this.getToken(EParser.THIS, 0);
};
KeywordContext.prototype.THROW = function() {
return this.getToken(EParser.THROW, 0);
};
KeywordContext.prototype.TO = function() {
return this.getToken(EParser.TO, 0);
};
KeywordContext.prototype.TRY = function() {
return this.getToken(EParser.TRY, 0);
};
KeywordContext.prototype.VERIFYING = function() {
return this.getToken(EParser.VERIFYING, 0);
};
KeywordContext.prototype.WIDGET = function() {
return this.getToken(EParser.WIDGET, 0);
};
KeywordContext.prototype.WITH = function() {
return this.getToken(EParser.WITH, 0);
};
KeywordContext.prototype.WHEN = function() {
return this.getToken(EParser.WHEN, 0);
};
KeywordContext.prototype.WHERE = function() {
return this.getToken(EParser.WHERE, 0);
};
KeywordContext.prototype.WHILE = function() {
return this.getToken(EParser.WHILE, 0);
};
KeywordContext.prototype.WRITE = function() {
return this.getToken(EParser.WRITE, 0);
};
KeywordContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterKeyword(this);
}
};
KeywordContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitKeyword(this);
}
};
EParser.KeywordContext = KeywordContext;
EParser.prototype.keyword = function() {
var localctx = new KeywordContext(this, this._ctx, this.state);
this.enterRule(localctx, 318, EParser.RULE_keyword);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 2245;
_la = this._input.LA(1);
if(!((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << EParser.JAVA) | (1 << EParser.CSHARP) | (1 << EParser.PYTHON2) | (1 << EParser.PYTHON3) | (1 << EParser.JAVASCRIPT) | (1 << EParser.SWIFT))) !== 0) || ((((_la - 51)) & ~0x1f) == 0 && ((1 << (_la - 51)) & ((1 << (EParser.BOOLEAN - 51)) | (1 << (EParser.CHARACTER - 51)) | (1 << (EParser.TEXT - 51)) | (1 << (EParser.INTEGER - 51)) | (1 << (EParser.DECIMAL - 51)) | (1 << (EParser.DATE - 51)) | (1 << (EParser.TIME - 51)) | (1 << (EParser.DATETIME - 51)) | (1 << (EParser.PERIOD - 51)) | (1 << (EParser.VERSION - 51)) | (1 << (EParser.METHOD_T - 51)) | (1 << (EParser.CODE - 51)) | (1 << (EParser.DOCUMENT - 51)) | (1 << (EParser.BLOB - 51)) | (1 << (EParser.IMAGE - 51)) | (1 << (EParser.UUID - 51)) | (1 << (EParser.ITERATOR - 51)) | (1 << (EParser.CURSOR - 51)) | (1 << (EParser.HTML - 51)) | (1 << (EParser.ABSTRACT - 51)) | (1 << (EParser.ALL - 51)) | (1 << (EParser.ALWAYS - 51)) | (1 << (EParser.AND - 51)) | (1 << (EParser.ANY - 51)) | (1 << (EParser.AS - 51)) | (1 << (EParser.ASC - 51)) | (1 << (EParser.ATTR - 51)) | (1 << (EParser.ATTRIBUTE - 51)) | (1 << (EParser.ATTRIBUTES - 51)) | (1 << (EParser.BINDINGS - 51)) | (1 << (EParser.BREAK - 51)) | (1 << (EParser.BY - 51)))) !== 0) || ((((_la - 83)) & ~0x1f) == 0 && ((1 << (_la - 83)) & ((1 << (EParser.CASE - 83)) | (1 << (EParser.CATCH - 83)) | (1 << (EParser.CATEGORY - 83)) | (1 << (EParser.CLASS - 83)) | (1 << (EParser.CLOSE - 83)) | (1 << (EParser.CONTAINS - 83)) | (1 << (EParser.DEF - 83)) | (1 << (EParser.DEFAULT - 83)) | (1 << (EParser.DEFINE - 83)) | (1 << (EParser.DELETE - 83)) | (1 << (EParser.DESC - 83)) | (1 << (EParser.DO - 83)) | (1 << (EParser.DOING - 83)) | (1 << (EParser.EACH - 83)) | (1 << (EParser.ELSE - 83)) | (1 << (EParser.ENUM - 83)) | (1 << (EParser.ENUMERATED - 83)) | (1 << (EParser.EXCEPT - 83)) | (1 << (EParser.EXECUTE - 83)) | (1 << (EParser.EXPECTING - 83)) | (1 << (EParser.EXTENDS - 83)) | (1 << (EParser.FETCH - 83)) | (1 << (EParser.FILTERED - 83)) | (1 << (EParser.FINALLY - 83)) | (1 << (EParser.FLUSH - 83)) | (1 << (EParser.FOR - 83)) | (1 << (EParser.FROM - 83)) | (1 << (EParser.GETTER - 83)) | (1 << (EParser.HAS - 83)) | (1 << (EParser.IF - 83)) | (1 << (EParser.IN - 83)) | (1 << (EParser.INDEX - 83)))) !== 0) || ((((_la - 115)) & ~0x1f) == 0 && ((1 << (_la - 115)) & ((1 << (EParser.INVOKE - 115)) | (1 << (EParser.IS - 115)) | (1 << (EParser.MATCHING - 115)) | (1 << (EParser.METHOD - 115)) | (1 << (EParser.METHODS - 115)) | (1 << (EParser.MODULO - 115)) | (1 << (EParser.MUTABLE - 115)) | (1 << (EParser.NATIVE - 115)) | (1 << (EParser.NONE - 115)) | (1 << (EParser.NOT - 115)) | (1 << (EParser.NOTHING - 115)) | (1 << (EParser.NULL - 115)) | (1 << (EParser.ON - 115)) | (1 << (EParser.ONE - 115)) | (1 << (EParser.OPEN - 115)) | (1 << (EParser.OPERATOR - 115)) | (1 << (EParser.OR - 115)) | (1 << (EParser.ORDER - 115)) | (1 << (EParser.OTHERWISE - 115)) | (1 << (EParser.PASS - 115)) | (1 << (EParser.RAISE - 115)) | (1 << (EParser.READ - 115)) | (1 << (EParser.RECEIVING - 115)) | (1 << (EParser.RESOURCE - 115)) | (1 << (EParser.RETURN - 115)) | (1 << (EParser.RETURNING - 115)) | (1 << (EParser.ROWS - 115)) | (1 << (EParser.SELF - 115)) | (1 << (EParser.SETTER - 115)) | (1 << (EParser.SINGLETON - 115)) | (1 << (EParser.SORTED - 115)) | (1 << (EParser.STORABLE - 115)))) !== 0) || ((((_la - 147)) & ~0x1f) == 0 && ((1 << (_la - 147)) & ((1 << (EParser.STORE - 147)) | (1 << (EParser.SWITCH - 147)) | (1 << (EParser.TEST - 147)) | (1 << (EParser.THIS - 147)) | (1 << (EParser.THROW - 147)) | (1 << (EParser.TO - 147)) | (1 << (EParser.TRY - 147)) | (1 << (EParser.VERIFYING - 147)) | (1 << (EParser.WIDGET - 147)) | (1 << (EParser.WITH - 147)) | (1 << (EParser.WHEN - 147)) | (1 << (EParser.WHERE - 147)) | (1 << (EParser.WHILE - 147)) | (1 << (EParser.WRITE - 147)))) !== 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 New_tokenContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_new_token;
this.i1 = null; // Token
return this;
}
New_tokenContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
New_tokenContext.prototype.constructor = New_tokenContext;
New_tokenContext.prototype.VARIABLE_IDENTIFIER = function() {
return this.getToken(EParser.VARIABLE_IDENTIFIER, 0);
};
New_tokenContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterNew_token(this);
}
};
New_tokenContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitNew_token(this);
}
};
EParser.New_tokenContext = New_tokenContext;
EParser.prototype.new_token = function() {
var localctx = new New_tokenContext(this, this._ctx, this.state);
this.enterRule(localctx, 320, EParser.RULE_new_token);
try {
this.enterOuterAlt(localctx, 1);
this.state = 2247;
localctx.i1 = this.match(EParser.VARIABLE_IDENTIFIER);
this.state = 2248;
if (!( this.isText(localctx.i1,"new"))) {
throw new antlr4.error.FailedPredicateException(this, "$parser.isText($i1,\"new\")");
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Key_tokenContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_key_token;
this.i1 = null; // Token
return this;
}
Key_tokenContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Key_tokenContext.prototype.constructor = Key_tokenContext;
Key_tokenContext.prototype.VARIABLE_IDENTIFIER = function() {
return this.getToken(EParser.VARIABLE_IDENTIFIER, 0);
};
Key_tokenContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterKey_token(this);
}
};
Key_tokenContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitKey_token(this);
}
};
EParser.Key_tokenContext = Key_tokenContext;
EParser.prototype.key_token = function() {
var localctx = new Key_tokenContext(this, this._ctx, this.state);
this.enterRule(localctx, 322, EParser.RULE_key_token);
try {
this.enterOuterAlt(localctx, 1);
this.state = 2250;
localctx.i1 = this.match(EParser.VARIABLE_IDENTIFIER);
this.state = 2251;
if (!( this.isText(localctx.i1,"key"))) {
throw new antlr4.error.FailedPredicateException(this, "$parser.isText($i1,\"key\")");
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Module_tokenContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_module_token;
this.i1 = null; // Token
return this;
}
Module_tokenContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Module_tokenContext.prototype.constructor = Module_tokenContext;
Module_tokenContext.prototype.VARIABLE_IDENTIFIER = function() {
return this.getToken(EParser.VARIABLE_IDENTIFIER, 0);
};
Module_tokenContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterModule_token(this);
}
};
Module_tokenContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitModule_token(this);
}
};
EParser.Module_tokenContext = Module_tokenContext;
EParser.prototype.module_token = function() {
var localctx = new Module_tokenContext(this, this._ctx, this.state);
this.enterRule(localctx, 324, EParser.RULE_module_token);
try {
this.enterOuterAlt(localctx, 1);
this.state = 2253;
localctx.i1 = this.match(EParser.VARIABLE_IDENTIFIER);
this.state = 2254;
if (!( this.isText(localctx.i1,"module"))) {
throw new antlr4.error.FailedPredicateException(this, "$parser.isText($i1,\"module\")");
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Value_tokenContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_value_token;
this.i1 = null; // Token
return this;
}
Value_tokenContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Value_tokenContext.prototype.constructor = Value_tokenContext;
Value_tokenContext.prototype.VARIABLE_IDENTIFIER = function() {
return this.getToken(EParser.VARIABLE_IDENTIFIER, 0);
};
Value_tokenContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterValue_token(this);
}
};
Value_tokenContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitValue_token(this);
}
};
EParser.Value_tokenContext = Value_tokenContext;
EParser.prototype.value_token = function() {
var localctx = new Value_tokenContext(this, this._ctx, this.state);
this.enterRule(localctx, 326, EParser.RULE_value_token);
try {
this.enterOuterAlt(localctx, 1);
this.state = 2256;
localctx.i1 = this.match(EParser.VARIABLE_IDENTIFIER);
this.state = 2257;
if (!( this.isText(localctx.i1,"value"))) {
throw new antlr4.error.FailedPredicateException(this, "$parser.isText($i1,\"value\")");
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Symbols_tokenContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_symbols_token;
this.i1 = null; // Token
return this;
}
Symbols_tokenContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Symbols_tokenContext.prototype.constructor = Symbols_tokenContext;
Symbols_tokenContext.prototype.VARIABLE_IDENTIFIER = function() {
return this.getToken(EParser.VARIABLE_IDENTIFIER, 0);
};
Symbols_tokenContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterSymbols_token(this);
}
};
Symbols_tokenContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitSymbols_token(this);
}
};
EParser.Symbols_tokenContext = Symbols_tokenContext;
EParser.prototype.symbols_token = function() {
var localctx = new Symbols_tokenContext(this, this._ctx, this.state);
this.enterRule(localctx, 328, EParser.RULE_symbols_token);
try {
this.enterOuterAlt(localctx, 1);
this.state = 2259;
localctx.i1 = this.match(EParser.VARIABLE_IDENTIFIER);
this.state = 2260;
if (!( this.isText(localctx.i1,"symbols"))) {
throw new antlr4.error.FailedPredicateException(this, "$parser.isText($i1,\"symbols\")");
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function AssignContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_assign;
return this;
}
AssignContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
AssignContext.prototype.constructor = AssignContext;
AssignContext.prototype.EQ = function() {
return this.getToken(EParser.EQ, 0);
};
AssignContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterAssign(this);
}
};
AssignContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitAssign(this);
}
};
EParser.AssignContext = AssignContext;
EParser.prototype.assign = function() {
var localctx = new AssignContext(this, this._ctx, this.state);
this.enterRule(localctx, 330, EParser.RULE_assign);
try {
this.enterOuterAlt(localctx, 1);
this.state = 2262;
this.match(EParser.EQ);
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function MultiplyContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_multiply;
return this;
}
MultiplyContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
MultiplyContext.prototype.constructor = MultiplyContext;
MultiplyContext.prototype.STAR = function() {
return this.getToken(EParser.STAR, 0);
};
MultiplyContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterMultiply(this);
}
};
MultiplyContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitMultiply(this);
}
};
EParser.MultiplyContext = MultiplyContext;
EParser.prototype.multiply = function() {
var localctx = new MultiplyContext(this, this._ctx, this.state);
this.enterRule(localctx, 332, EParser.RULE_multiply);
try {
this.enterOuterAlt(localctx, 1);
this.state = 2264;
this.match(EParser.STAR);
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function DivideContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_divide;
return this;
}
DivideContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
DivideContext.prototype.constructor = DivideContext;
DivideContext.prototype.SLASH = function() {
return this.getToken(EParser.SLASH, 0);
};
DivideContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterDivide(this);
}
};
DivideContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitDivide(this);
}
};
EParser.DivideContext = DivideContext;
EParser.prototype.divide = function() {
var localctx = new DivideContext(this, this._ctx, this.state);
this.enterRule(localctx, 334, EParser.RULE_divide);
try {
this.enterOuterAlt(localctx, 1);
this.state = 2266;
this.match(EParser.SLASH);
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function IdivideContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_idivide;
return this;
}
IdivideContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
IdivideContext.prototype.constructor = IdivideContext;
IdivideContext.prototype.BSLASH = function() {
return this.getToken(EParser.BSLASH, 0);
};
IdivideContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterIdivide(this);
}
};
IdivideContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitIdivide(this);
}
};
EParser.IdivideContext = IdivideContext;
EParser.prototype.idivide = function() {
var localctx = new IdivideContext(this, this._ctx, this.state);
this.enterRule(localctx, 336, EParser.RULE_idivide);
try {
this.enterOuterAlt(localctx, 1);
this.state = 2268;
this.match(EParser.BSLASH);
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function ModuloContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_modulo;
return this;
}
ModuloContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
ModuloContext.prototype.constructor = ModuloContext;
ModuloContext.prototype.PERCENT = function() {
return this.getToken(EParser.PERCENT, 0);
};
ModuloContext.prototype.MODULO = function() {
return this.getToken(EParser.MODULO, 0);
};
ModuloContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterModulo(this);
}
};
ModuloContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitModulo(this);
}
};
EParser.ModuloContext = ModuloContext;
EParser.prototype.modulo = function() {
var localctx = new ModuloContext(this, this._ctx, this.state);
this.enterRule(localctx, 338, EParser.RULE_modulo);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 2270;
_la = this._input.LA(1);
if(!(_la===EParser.PERCENT || _la===EParser.MODULO)) {
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 Javascript_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 = EParser.RULE_javascript_statement;
return this;
}
Javascript_statementContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Javascript_statementContext.prototype.constructor = Javascript_statementContext;
Javascript_statementContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function JavascriptStatementContext(parser, ctx) {
Javascript_statementContext.call(this, parser);
this.exp = null; // Javascript_expressionContext;
Javascript_statementContext.prototype.copyFrom.call(this, ctx);
return this;
}
JavascriptStatementContext.prototype = Object.create(Javascript_statementContext.prototype);
JavascriptStatementContext.prototype.constructor = JavascriptStatementContext;
EParser.JavascriptStatementContext = JavascriptStatementContext;
JavascriptStatementContext.prototype.SEMI = function() {
return this.getToken(EParser.SEMI, 0);
};
JavascriptStatementContext.prototype.javascript_expression = function() {
return this.getTypedRuleContext(Javascript_expressionContext,0);
};
JavascriptStatementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJavascriptStatement(this);
}
};
JavascriptStatementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJavascriptStatement(this);
}
};
function JavascriptReturnStatementContext(parser, ctx) {
Javascript_statementContext.call(this, parser);
this.exp = null; // Javascript_expressionContext;
Javascript_statementContext.prototype.copyFrom.call(this, ctx);
return this;
}
JavascriptReturnStatementContext.prototype = Object.create(Javascript_statementContext.prototype);
JavascriptReturnStatementContext.prototype.constructor = JavascriptReturnStatementContext;
EParser.JavascriptReturnStatementContext = JavascriptReturnStatementContext;
JavascriptReturnStatementContext.prototype.RETURN = function() {
return this.getToken(EParser.RETURN, 0);
};
JavascriptReturnStatementContext.prototype.SEMI = function() {
return this.getToken(EParser.SEMI, 0);
};
JavascriptReturnStatementContext.prototype.javascript_expression = function() {
return this.getTypedRuleContext(Javascript_expressionContext,0);
};
JavascriptReturnStatementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJavascriptReturnStatement(this);
}
};
JavascriptReturnStatementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJavascriptReturnStatement(this);
}
};
EParser.Javascript_statementContext = Javascript_statementContext;
EParser.prototype.javascript_statement = function() {
var localctx = new Javascript_statementContext(this, this._ctx, this.state);
this.enterRule(localctx, 340, EParser.RULE_javascript_statement);
try {
this.state = 2279;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case EParser.RETURN:
localctx = new JavascriptReturnStatementContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 2272;
this.match(EParser.RETURN);
this.state = 2273;
localctx.exp = this.javascript_expression(0);
this.state = 2274;
this.match(EParser.SEMI);
break;
case EParser.LPAR:
case EParser.LBRAK:
case EParser.BOOLEAN:
case EParser.CHARACTER:
case EParser.TEXT:
case EParser.INTEGER:
case EParser.DECIMAL:
case EParser.DATE:
case EParser.TIME:
case EParser.DATETIME:
case EParser.PERIOD:
case EParser.VERSION:
case EParser.UUID:
case EParser.HTML:
case EParser.NONE:
case EParser.NULL:
case EParser.READ:
case EParser.SELF:
case EParser.TEST:
case EParser.THIS:
case EParser.WRITE:
case EParser.BOOLEAN_LITERAL:
case EParser.CHAR_LITERAL:
case EParser.SYMBOL_IDENTIFIER:
case EParser.TYPE_IDENTIFIER:
case EParser.VARIABLE_IDENTIFIER:
case EParser.DOLLAR_IDENTIFIER:
case EParser.TEXT_LITERAL:
case EParser.INTEGER_LITERAL:
case EParser.DECIMAL_LITERAL:
localctx = new JavascriptStatementContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 2276;
localctx.exp = this.javascript_expression(0);
this.state = 2277;
this.match(EParser.SEMI);
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 Javascript_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 = EParser.RULE_javascript_expression;
return this;
}
Javascript_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Javascript_expressionContext.prototype.constructor = Javascript_expressionContext;
Javascript_expressionContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function JavascriptSelectorExpressionContext(parser, ctx) {
Javascript_expressionContext.call(this, parser);
this.parent = null; // Javascript_expressionContext;
this.child = null; // Javascript_selector_expressionContext;
Javascript_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
JavascriptSelectorExpressionContext.prototype = Object.create(Javascript_expressionContext.prototype);
JavascriptSelectorExpressionContext.prototype.constructor = JavascriptSelectorExpressionContext;
EParser.JavascriptSelectorExpressionContext = JavascriptSelectorExpressionContext;
JavascriptSelectorExpressionContext.prototype.javascript_expression = function() {
return this.getTypedRuleContext(Javascript_expressionContext,0);
};
JavascriptSelectorExpressionContext.prototype.javascript_selector_expression = function() {
return this.getTypedRuleContext(Javascript_selector_expressionContext,0);
};
JavascriptSelectorExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJavascriptSelectorExpression(this);
}
};
JavascriptSelectorExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJavascriptSelectorExpression(this);
}
};
function JavascriptPrimaryExpressionContext(parser, ctx) {
Javascript_expressionContext.call(this, parser);
this.exp = null; // Javascript_primary_expressionContext;
Javascript_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
JavascriptPrimaryExpressionContext.prototype = Object.create(Javascript_expressionContext.prototype);
JavascriptPrimaryExpressionContext.prototype.constructor = JavascriptPrimaryExpressionContext;
EParser.JavascriptPrimaryExpressionContext = JavascriptPrimaryExpressionContext;
JavascriptPrimaryExpressionContext.prototype.javascript_primary_expression = function() {
return this.getTypedRuleContext(Javascript_primary_expressionContext,0);
};
JavascriptPrimaryExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJavascriptPrimaryExpression(this);
}
};
JavascriptPrimaryExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJavascriptPrimaryExpression(this);
}
};
EParser.prototype.javascript_expression = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new Javascript_expressionContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 342;
this.enterRecursionRule(localctx, 342, EParser.RULE_javascript_expression, _p);
try {
this.enterOuterAlt(localctx, 1);
localctx = new JavascriptPrimaryExpressionContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 2282;
localctx.exp = this.javascript_primary_expression();
this._ctx.stop = this._input.LT(-1);
this.state = 2288;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,189,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 JavascriptSelectorExpressionContext(this, new Javascript_expressionContext(this, _parentctx, _parentState));
localctx.parent = _prevctx;
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_javascript_expression);
this.state = 2284;
if (!( this.precpred(this._ctx, 1))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
}
this.state = 2285;
localctx.child = this.javascript_selector_expression();
}
this.state = 2290;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,189,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 Javascript_primary_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 = EParser.RULE_javascript_primary_expression;
return this;
}
Javascript_primary_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Javascript_primary_expressionContext.prototype.constructor = Javascript_primary_expressionContext;
Javascript_primary_expressionContext.prototype.javascript_this_expression = function() {
return this.getTypedRuleContext(Javascript_this_expressionContext,0);
};
Javascript_primary_expressionContext.prototype.javascript_new_expression = function() {
return this.getTypedRuleContext(Javascript_new_expressionContext,0);
};
Javascript_primary_expressionContext.prototype.javascript_parenthesis_expression = function() {
return this.getTypedRuleContext(Javascript_parenthesis_expressionContext,0);
};
Javascript_primary_expressionContext.prototype.javascript_identifier_expression = function() {
return this.getTypedRuleContext(Javascript_identifier_expressionContext,0);
};
Javascript_primary_expressionContext.prototype.javascript_literal_expression = function() {
return this.getTypedRuleContext(Javascript_literal_expressionContext,0);
};
Javascript_primary_expressionContext.prototype.javascript_method_expression = function() {
return this.getTypedRuleContext(Javascript_method_expressionContext,0);
};
Javascript_primary_expressionContext.prototype.javascript_item_expression = function() {
return this.getTypedRuleContext(Javascript_item_expressionContext,0);
};
Javascript_primary_expressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJavascript_primary_expression(this);
}
};
Javascript_primary_expressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJavascript_primary_expression(this);
}
};
EParser.Javascript_primary_expressionContext = Javascript_primary_expressionContext;
EParser.prototype.javascript_primary_expression = function() {
var localctx = new Javascript_primary_expressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 344, EParser.RULE_javascript_primary_expression);
try {
this.state = 2298;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,190,this._ctx);
switch(la_) {
case 1:
this.enterOuterAlt(localctx, 1);
this.state = 2291;
this.javascript_this_expression();
break;
case 2:
this.enterOuterAlt(localctx, 2);
this.state = 2292;
this.javascript_new_expression();
break;
case 3:
this.enterOuterAlt(localctx, 3);
this.state = 2293;
this.javascript_parenthesis_expression();
break;
case 4:
this.enterOuterAlt(localctx, 4);
this.state = 2294;
this.javascript_identifier_expression();
break;
case 5:
this.enterOuterAlt(localctx, 5);
this.state = 2295;
this.javascript_literal_expression();
break;
case 6:
this.enterOuterAlt(localctx, 6);
this.state = 2296;
this.javascript_method_expression();
break;
case 7:
this.enterOuterAlt(localctx, 7);
this.state = 2297;
this.javascript_item_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 Javascript_this_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 = EParser.RULE_javascript_this_expression;
return this;
}
Javascript_this_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Javascript_this_expressionContext.prototype.constructor = Javascript_this_expressionContext;
Javascript_this_expressionContext.prototype.this_expression = function() {
return this.getTypedRuleContext(This_expressionContext,0);
};
Javascript_this_expressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJavascript_this_expression(this);
}
};
Javascript_this_expressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJavascript_this_expression(this);
}
};
EParser.Javascript_this_expressionContext = Javascript_this_expressionContext;
EParser.prototype.javascript_this_expression = function() {
var localctx = new Javascript_this_expressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 346, EParser.RULE_javascript_this_expression);
try {
this.enterOuterAlt(localctx, 1);
this.state = 2300;
this.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 Javascript_new_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 = EParser.RULE_javascript_new_expression;
return this;
}
Javascript_new_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Javascript_new_expressionContext.prototype.constructor = Javascript_new_expressionContext;
Javascript_new_expressionContext.prototype.new_token = function() {
return this.getTypedRuleContext(New_tokenContext,0);
};
Javascript_new_expressionContext.prototype.javascript_method_expression = function() {
return this.getTypedRuleContext(Javascript_method_expressionContext,0);
};
Javascript_new_expressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJavascript_new_expression(this);
}
};
Javascript_new_expressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJavascript_new_expression(this);
}
};
EParser.Javascript_new_expressionContext = Javascript_new_expressionContext;
EParser.prototype.javascript_new_expression = function() {
var localctx = new Javascript_new_expressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 348, EParser.RULE_javascript_new_expression);
try {
this.enterOuterAlt(localctx, 1);
this.state = 2302;
this.new_token();
this.state = 2303;
this.javascript_method_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 Javascript_selector_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 = EParser.RULE_javascript_selector_expression;
return this;
}
Javascript_selector_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Javascript_selector_expressionContext.prototype.constructor = Javascript_selector_expressionContext;
Javascript_selector_expressionContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function JavaScriptMemberExpressionContext(parser, ctx) {
Javascript_selector_expressionContext.call(this, parser);
this.name = null; // Javascript_identifierContext;
Javascript_selector_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
JavaScriptMemberExpressionContext.prototype = Object.create(Javascript_selector_expressionContext.prototype);
JavaScriptMemberExpressionContext.prototype.constructor = JavaScriptMemberExpressionContext;
EParser.JavaScriptMemberExpressionContext = JavaScriptMemberExpressionContext;
JavaScriptMemberExpressionContext.prototype.DOT = function() {
return this.getToken(EParser.DOT, 0);
};
JavaScriptMemberExpressionContext.prototype.javascript_identifier = function() {
return this.getTypedRuleContext(Javascript_identifierContext,0);
};
JavaScriptMemberExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJavaScriptMemberExpression(this);
}
};
JavaScriptMemberExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJavaScriptMemberExpression(this);
}
};
function JavaScriptItemExpressionContext(parser, ctx) {
Javascript_selector_expressionContext.call(this, parser);
this.exp = null; // Javascript_item_expressionContext;
Javascript_selector_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
JavaScriptItemExpressionContext.prototype = Object.create(Javascript_selector_expressionContext.prototype);
JavaScriptItemExpressionContext.prototype.constructor = JavaScriptItemExpressionContext;
EParser.JavaScriptItemExpressionContext = JavaScriptItemExpressionContext;
JavaScriptItemExpressionContext.prototype.javascript_item_expression = function() {
return this.getTypedRuleContext(Javascript_item_expressionContext,0);
};
JavaScriptItemExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJavaScriptItemExpression(this);
}
};
JavaScriptItemExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJavaScriptItemExpression(this);
}
};
function JavaScriptMethodExpressionContext(parser, ctx) {
Javascript_selector_expressionContext.call(this, parser);
this.method = null; // Javascript_method_expressionContext;
Javascript_selector_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
JavaScriptMethodExpressionContext.prototype = Object.create(Javascript_selector_expressionContext.prototype);
JavaScriptMethodExpressionContext.prototype.constructor = JavaScriptMethodExpressionContext;
EParser.JavaScriptMethodExpressionContext = JavaScriptMethodExpressionContext;
JavaScriptMethodExpressionContext.prototype.DOT = function() {
return this.getToken(EParser.DOT, 0);
};
JavaScriptMethodExpressionContext.prototype.javascript_method_expression = function() {
return this.getTypedRuleContext(Javascript_method_expressionContext,0);
};
JavaScriptMethodExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJavaScriptMethodExpression(this);
}
};
JavaScriptMethodExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJavaScriptMethodExpression(this);
}
};
EParser.Javascript_selector_expressionContext = Javascript_selector_expressionContext;
EParser.prototype.javascript_selector_expression = function() {
var localctx = new Javascript_selector_expressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 350, EParser.RULE_javascript_selector_expression);
try {
this.state = 2310;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,191,this._ctx);
switch(la_) {
case 1:
localctx = new JavaScriptMethodExpressionContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 2305;
this.match(EParser.DOT);
this.state = 2306;
localctx.method = this.javascript_method_expression();
break;
case 2:
localctx = new JavaScriptMemberExpressionContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 2307;
this.match(EParser.DOT);
this.state = 2308;
localctx.name = this.javascript_identifier();
break;
case 3:
localctx = new JavaScriptItemExpressionContext(this, localctx);
this.enterOuterAlt(localctx, 3);
this.state = 2309;
localctx.exp = this.javascript_item_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 Javascript_method_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 = EParser.RULE_javascript_method_expression;
this.name = null; // Javascript_identifierContext
this.args = null; // Javascript_argumentsContext
return this;
}
Javascript_method_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Javascript_method_expressionContext.prototype.constructor = Javascript_method_expressionContext;
Javascript_method_expressionContext.prototype.LPAR = function() {
return this.getToken(EParser.LPAR, 0);
};
Javascript_method_expressionContext.prototype.RPAR = function() {
return this.getToken(EParser.RPAR, 0);
};
Javascript_method_expressionContext.prototype.javascript_identifier = function() {
return this.getTypedRuleContext(Javascript_identifierContext,0);
};
Javascript_method_expressionContext.prototype.javascript_arguments = function() {
return this.getTypedRuleContext(Javascript_argumentsContext,0);
};
Javascript_method_expressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJavascript_method_expression(this);
}
};
Javascript_method_expressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJavascript_method_expression(this);
}
};
EParser.Javascript_method_expressionContext = Javascript_method_expressionContext;
EParser.prototype.javascript_method_expression = function() {
var localctx = new Javascript_method_expressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 352, EParser.RULE_javascript_method_expression);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 2312;
localctx.name = this.javascript_identifier();
this.state = 2313;
this.match(EParser.LPAR);
this.state = 2315;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.LPAR || _la===EParser.LBRAK || ((((_la - 51)) & ~0x1f) == 0 && ((1 << (_la - 51)) & ((1 << (EParser.BOOLEAN - 51)) | (1 << (EParser.CHARACTER - 51)) | (1 << (EParser.TEXT - 51)) | (1 << (EParser.INTEGER - 51)) | (1 << (EParser.DECIMAL - 51)) | (1 << (EParser.DATE - 51)) | (1 << (EParser.TIME - 51)) | (1 << (EParser.DATETIME - 51)) | (1 << (EParser.PERIOD - 51)) | (1 << (EParser.VERSION - 51)) | (1 << (EParser.UUID - 51)) | (1 << (EParser.HTML - 51)))) !== 0) || ((((_la - 123)) & ~0x1f) == 0 && ((1 << (_la - 123)) & ((1 << (EParser.NONE - 123)) | (1 << (EParser.NULL - 123)) | (1 << (EParser.READ - 123)) | (1 << (EParser.SELF - 123)) | (1 << (EParser.TEST - 123)) | (1 << (EParser.THIS - 123)))) !== 0) || ((((_la - 161)) & ~0x1f) == 0 && ((1 << (_la - 161)) & ((1 << (EParser.WRITE - 161)) | (1 << (EParser.BOOLEAN_LITERAL - 161)) | (1 << (EParser.CHAR_LITERAL - 161)) | (1 << (EParser.SYMBOL_IDENTIFIER - 161)) | (1 << (EParser.TYPE_IDENTIFIER - 161)) | (1 << (EParser.VARIABLE_IDENTIFIER - 161)) | (1 << (EParser.DOLLAR_IDENTIFIER - 161)) | (1 << (EParser.TEXT_LITERAL - 161)) | (1 << (EParser.INTEGER_LITERAL - 161)) | (1 << (EParser.DECIMAL_LITERAL - 161)))) !== 0)) {
this.state = 2314;
localctx.args = this.javascript_arguments(0);
}
this.state = 2317;
this.match(EParser.RPAR);
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Javascript_argumentsContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_javascript_arguments;
return this;
}
Javascript_argumentsContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Javascript_argumentsContext.prototype.constructor = Javascript_argumentsContext;
Javascript_argumentsContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function JavascriptArgumentListContext(parser, ctx) {
Javascript_argumentsContext.call(this, parser);
this.item = null; // Javascript_expressionContext;
Javascript_argumentsContext.prototype.copyFrom.call(this, ctx);
return this;
}
JavascriptArgumentListContext.prototype = Object.create(Javascript_argumentsContext.prototype);
JavascriptArgumentListContext.prototype.constructor = JavascriptArgumentListContext;
EParser.JavascriptArgumentListContext = JavascriptArgumentListContext;
JavascriptArgumentListContext.prototype.javascript_expression = function() {
return this.getTypedRuleContext(Javascript_expressionContext,0);
};
JavascriptArgumentListContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJavascriptArgumentList(this);
}
};
JavascriptArgumentListContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJavascriptArgumentList(this);
}
};
function JavascriptArgumentListItemContext(parser, ctx) {
Javascript_argumentsContext.call(this, parser);
this.items = null; // Javascript_argumentsContext;
this.item = null; // Javascript_expressionContext;
Javascript_argumentsContext.prototype.copyFrom.call(this, ctx);
return this;
}
JavascriptArgumentListItemContext.prototype = Object.create(Javascript_argumentsContext.prototype);
JavascriptArgumentListItemContext.prototype.constructor = JavascriptArgumentListItemContext;
EParser.JavascriptArgumentListItemContext = JavascriptArgumentListItemContext;
JavascriptArgumentListItemContext.prototype.COMMA = function() {
return this.getToken(EParser.COMMA, 0);
};
JavascriptArgumentListItemContext.prototype.javascript_arguments = function() {
return this.getTypedRuleContext(Javascript_argumentsContext,0);
};
JavascriptArgumentListItemContext.prototype.javascript_expression = function() {
return this.getTypedRuleContext(Javascript_expressionContext,0);
};
JavascriptArgumentListItemContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJavascriptArgumentListItem(this);
}
};
JavascriptArgumentListItemContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJavascriptArgumentListItem(this);
}
};
EParser.prototype.javascript_arguments = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new Javascript_argumentsContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 354;
this.enterRecursionRule(localctx, 354, EParser.RULE_javascript_arguments, _p);
try {
this.enterOuterAlt(localctx, 1);
localctx = new JavascriptArgumentListContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 2320;
localctx.item = this.javascript_expression(0);
this._ctx.stop = this._input.LT(-1);
this.state = 2327;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,193,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
if(this._parseListeners!==null) {
this.triggerExitRuleEvent();
}
_prevctx = localctx;
localctx = new JavascriptArgumentListItemContext(this, new Javascript_argumentsContext(this, _parentctx, _parentState));
localctx.items = _prevctx;
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_javascript_arguments);
this.state = 2322;
if (!( this.precpred(this._ctx, 1))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
}
this.state = 2323;
this.match(EParser.COMMA);
this.state = 2324;
localctx.item = this.javascript_expression(0);
}
this.state = 2329;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,193,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 Javascript_item_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 = EParser.RULE_javascript_item_expression;
this.exp = null; // Javascript_expressionContext
return this;
}
Javascript_item_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Javascript_item_expressionContext.prototype.constructor = Javascript_item_expressionContext;
Javascript_item_expressionContext.prototype.LBRAK = function() {
return this.getToken(EParser.LBRAK, 0);
};
Javascript_item_expressionContext.prototype.RBRAK = function() {
return this.getToken(EParser.RBRAK, 0);
};
Javascript_item_expressionContext.prototype.javascript_expression = function() {
return this.getTypedRuleContext(Javascript_expressionContext,0);
};
Javascript_item_expressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJavascript_item_expression(this);
}
};
Javascript_item_expressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJavascript_item_expression(this);
}
};
EParser.Javascript_item_expressionContext = Javascript_item_expressionContext;
EParser.prototype.javascript_item_expression = function() {
var localctx = new Javascript_item_expressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 356, EParser.RULE_javascript_item_expression);
try {
this.enterOuterAlt(localctx, 1);
this.state = 2330;
this.match(EParser.LBRAK);
this.state = 2331;
localctx.exp = this.javascript_expression(0);
this.state = 2332;
this.match(EParser.RBRAK);
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Javascript_parenthesis_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 = EParser.RULE_javascript_parenthesis_expression;
this.exp = null; // Javascript_expressionContext
return this;
}
Javascript_parenthesis_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Javascript_parenthesis_expressionContext.prototype.constructor = Javascript_parenthesis_expressionContext;
Javascript_parenthesis_expressionContext.prototype.LPAR = function() {
return this.getToken(EParser.LPAR, 0);
};
Javascript_parenthesis_expressionContext.prototype.RPAR = function() {
return this.getToken(EParser.RPAR, 0);
};
Javascript_parenthesis_expressionContext.prototype.javascript_expression = function() {
return this.getTypedRuleContext(Javascript_expressionContext,0);
};
Javascript_parenthesis_expressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJavascript_parenthesis_expression(this);
}
};
Javascript_parenthesis_expressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJavascript_parenthesis_expression(this);
}
};
EParser.Javascript_parenthesis_expressionContext = Javascript_parenthesis_expressionContext;
EParser.prototype.javascript_parenthesis_expression = function() {
var localctx = new Javascript_parenthesis_expressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 358, EParser.RULE_javascript_parenthesis_expression);
try {
this.enterOuterAlt(localctx, 1);
this.state = 2334;
this.match(EParser.LPAR);
this.state = 2335;
localctx.exp = this.javascript_expression(0);
this.state = 2336;
this.match(EParser.RPAR);
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Javascript_identifier_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 = EParser.RULE_javascript_identifier_expression;
this.name = null; // Javascript_identifierContext
return this;
}
Javascript_identifier_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Javascript_identifier_expressionContext.prototype.constructor = Javascript_identifier_expressionContext;
Javascript_identifier_expressionContext.prototype.javascript_identifier = function() {
return this.getTypedRuleContext(Javascript_identifierContext,0);
};
Javascript_identifier_expressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJavascript_identifier_expression(this);
}
};
Javascript_identifier_expressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJavascript_identifier_expression(this);
}
};
EParser.Javascript_identifier_expressionContext = Javascript_identifier_expressionContext;
EParser.prototype.javascript_identifier_expression = function() {
var localctx = new Javascript_identifier_expressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 360, EParser.RULE_javascript_identifier_expression);
try {
this.enterOuterAlt(localctx, 1);
this.state = 2338;
localctx.name = this.javascript_identifier();
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Javascript_literal_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 = EParser.RULE_javascript_literal_expression;
return this;
}
Javascript_literal_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Javascript_literal_expressionContext.prototype.constructor = Javascript_literal_expressionContext;
Javascript_literal_expressionContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function JavascriptIntegerLiteralContext(parser, ctx) {
Javascript_literal_expressionContext.call(this, parser);
this.t = null; // Token;
Javascript_literal_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
JavascriptIntegerLiteralContext.prototype = Object.create(Javascript_literal_expressionContext.prototype);
JavascriptIntegerLiteralContext.prototype.constructor = JavascriptIntegerLiteralContext;
EParser.JavascriptIntegerLiteralContext = JavascriptIntegerLiteralContext;
JavascriptIntegerLiteralContext.prototype.INTEGER_LITERAL = function() {
return this.getToken(EParser.INTEGER_LITERAL, 0);
};
JavascriptIntegerLiteralContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJavascriptIntegerLiteral(this);
}
};
JavascriptIntegerLiteralContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJavascriptIntegerLiteral(this);
}
};
function JavascriptBooleanLiteralContext(parser, ctx) {
Javascript_literal_expressionContext.call(this, parser);
this.t = null; // Token;
Javascript_literal_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
JavascriptBooleanLiteralContext.prototype = Object.create(Javascript_literal_expressionContext.prototype);
JavascriptBooleanLiteralContext.prototype.constructor = JavascriptBooleanLiteralContext;
EParser.JavascriptBooleanLiteralContext = JavascriptBooleanLiteralContext;
JavascriptBooleanLiteralContext.prototype.BOOLEAN_LITERAL = function() {
return this.getToken(EParser.BOOLEAN_LITERAL, 0);
};
JavascriptBooleanLiteralContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJavascriptBooleanLiteral(this);
}
};
JavascriptBooleanLiteralContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJavascriptBooleanLiteral(this);
}
};
function JavascriptCharacterLiteralContext(parser, ctx) {
Javascript_literal_expressionContext.call(this, parser);
this.t = null; // Token;
Javascript_literal_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
JavascriptCharacterLiteralContext.prototype = Object.create(Javascript_literal_expressionContext.prototype);
JavascriptCharacterLiteralContext.prototype.constructor = JavascriptCharacterLiteralContext;
EParser.JavascriptCharacterLiteralContext = JavascriptCharacterLiteralContext;
JavascriptCharacterLiteralContext.prototype.CHAR_LITERAL = function() {
return this.getToken(EParser.CHAR_LITERAL, 0);
};
JavascriptCharacterLiteralContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJavascriptCharacterLiteral(this);
}
};
JavascriptCharacterLiteralContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJavascriptCharacterLiteral(this);
}
};
function JavascriptTextLiteralContext(parser, ctx) {
Javascript_literal_expressionContext.call(this, parser);
this.t = null; // Token;
Javascript_literal_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
JavascriptTextLiteralContext.prototype = Object.create(Javascript_literal_expressionContext.prototype);
JavascriptTextLiteralContext.prototype.constructor = JavascriptTextLiteralContext;
EParser.JavascriptTextLiteralContext = JavascriptTextLiteralContext;
JavascriptTextLiteralContext.prototype.TEXT_LITERAL = function() {
return this.getToken(EParser.TEXT_LITERAL, 0);
};
JavascriptTextLiteralContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJavascriptTextLiteral(this);
}
};
JavascriptTextLiteralContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJavascriptTextLiteral(this);
}
};
function JavascriptDecimalLiteralContext(parser, ctx) {
Javascript_literal_expressionContext.call(this, parser);
this.t = null; // Token;
Javascript_literal_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
JavascriptDecimalLiteralContext.prototype = Object.create(Javascript_literal_expressionContext.prototype);
JavascriptDecimalLiteralContext.prototype.constructor = JavascriptDecimalLiteralContext;
EParser.JavascriptDecimalLiteralContext = JavascriptDecimalLiteralContext;
JavascriptDecimalLiteralContext.prototype.DECIMAL_LITERAL = function() {
return this.getToken(EParser.DECIMAL_LITERAL, 0);
};
JavascriptDecimalLiteralContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJavascriptDecimalLiteral(this);
}
};
JavascriptDecimalLiteralContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJavascriptDecimalLiteral(this);
}
};
EParser.Javascript_literal_expressionContext = Javascript_literal_expressionContext;
EParser.prototype.javascript_literal_expression = function() {
var localctx = new Javascript_literal_expressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 362, EParser.RULE_javascript_literal_expression);
try {
this.state = 2345;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case EParser.INTEGER_LITERAL:
localctx = new JavascriptIntegerLiteralContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 2340;
localctx.t = this.match(EParser.INTEGER_LITERAL);
break;
case EParser.DECIMAL_LITERAL:
localctx = new JavascriptDecimalLiteralContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 2341;
localctx.t = this.match(EParser.DECIMAL_LITERAL);
break;
case EParser.TEXT_LITERAL:
localctx = new JavascriptTextLiteralContext(this, localctx);
this.enterOuterAlt(localctx, 3);
this.state = 2342;
localctx.t = this.match(EParser.TEXT_LITERAL);
break;
case EParser.BOOLEAN_LITERAL:
localctx = new JavascriptBooleanLiteralContext(this, localctx);
this.enterOuterAlt(localctx, 4);
this.state = 2343;
localctx.t = this.match(EParser.BOOLEAN_LITERAL);
break;
case EParser.CHAR_LITERAL:
localctx = new JavascriptCharacterLiteralContext(this, localctx);
this.enterOuterAlt(localctx, 5);
this.state = 2344;
localctx.t = this.match(EParser.CHAR_LITERAL);
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 Javascript_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 = EParser.RULE_javascript_identifier;
return this;
}
Javascript_identifierContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Javascript_identifierContext.prototype.constructor = Javascript_identifierContext;
Javascript_identifierContext.prototype.VARIABLE_IDENTIFIER = function() {
return this.getToken(EParser.VARIABLE_IDENTIFIER, 0);
};
Javascript_identifierContext.prototype.SYMBOL_IDENTIFIER = function() {
return this.getToken(EParser.SYMBOL_IDENTIFIER, 0);
};
Javascript_identifierContext.prototype.DOLLAR_IDENTIFIER = function() {
return this.getToken(EParser.DOLLAR_IDENTIFIER, 0);
};
Javascript_identifierContext.prototype.TYPE_IDENTIFIER = function() {
return this.getToken(EParser.TYPE_IDENTIFIER, 0);
};
Javascript_identifierContext.prototype.BOOLEAN = function() {
return this.getToken(EParser.BOOLEAN, 0);
};
Javascript_identifierContext.prototype.CHARACTER = function() {
return this.getToken(EParser.CHARACTER, 0);
};
Javascript_identifierContext.prototype.TEXT = function() {
return this.getToken(EParser.TEXT, 0);
};
Javascript_identifierContext.prototype.INTEGER = function() {
return this.getToken(EParser.INTEGER, 0);
};
Javascript_identifierContext.prototype.DECIMAL = function() {
return this.getToken(EParser.DECIMAL, 0);
};
Javascript_identifierContext.prototype.DATE = function() {
return this.getToken(EParser.DATE, 0);
};
Javascript_identifierContext.prototype.TIME = function() {
return this.getToken(EParser.TIME, 0);
};
Javascript_identifierContext.prototype.DATETIME = function() {
return this.getToken(EParser.DATETIME, 0);
};
Javascript_identifierContext.prototype.PERIOD = function() {
return this.getToken(EParser.PERIOD, 0);
};
Javascript_identifierContext.prototype.VERSION = function() {
return this.getToken(EParser.VERSION, 0);
};
Javascript_identifierContext.prototype.UUID = function() {
return this.getToken(EParser.UUID, 0);
};
Javascript_identifierContext.prototype.HTML = function() {
return this.getToken(EParser.HTML, 0);
};
Javascript_identifierContext.prototype.READ = function() {
return this.getToken(EParser.READ, 0);
};
Javascript_identifierContext.prototype.WRITE = function() {
return this.getToken(EParser.WRITE, 0);
};
Javascript_identifierContext.prototype.TEST = function() {
return this.getToken(EParser.TEST, 0);
};
Javascript_identifierContext.prototype.SELF = function() {
return this.getToken(EParser.SELF, 0);
};
Javascript_identifierContext.prototype.NONE = function() {
return this.getToken(EParser.NONE, 0);
};
Javascript_identifierContext.prototype.NULL = function() {
return this.getToken(EParser.NULL, 0);
};
Javascript_identifierContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJavascript_identifier(this);
}
};
Javascript_identifierContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJavascript_identifier(this);
}
};
EParser.Javascript_identifierContext = Javascript_identifierContext;
EParser.prototype.javascript_identifier = function() {
var localctx = new Javascript_identifierContext(this, this._ctx, this.state);
this.enterRule(localctx, 364, EParser.RULE_javascript_identifier);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 2347;
_la = this._input.LA(1);
if(!(((((_la - 51)) & ~0x1f) == 0 && ((1 << (_la - 51)) & ((1 << (EParser.BOOLEAN - 51)) | (1 << (EParser.CHARACTER - 51)) | (1 << (EParser.TEXT - 51)) | (1 << (EParser.INTEGER - 51)) | (1 << (EParser.DECIMAL - 51)) | (1 << (EParser.DATE - 51)) | (1 << (EParser.TIME - 51)) | (1 << (EParser.DATETIME - 51)) | (1 << (EParser.PERIOD - 51)) | (1 << (EParser.VERSION - 51)) | (1 << (EParser.UUID - 51)) | (1 << (EParser.HTML - 51)))) !== 0) || ((((_la - 123)) & ~0x1f) == 0 && ((1 << (_la - 123)) & ((1 << (EParser.NONE - 123)) | (1 << (EParser.NULL - 123)) | (1 << (EParser.READ - 123)) | (1 << (EParser.SELF - 123)) | (1 << (EParser.TEST - 123)))) !== 0) || ((((_la - 161)) & ~0x1f) == 0 && ((1 << (_la - 161)) & ((1 << (EParser.WRITE - 161)) | (1 << (EParser.SYMBOL_IDENTIFIER - 161)) | (1 << (EParser.TYPE_IDENTIFIER - 161)) | (1 << (EParser.VARIABLE_IDENTIFIER - 161)) | (1 << (EParser.DOLLAR_IDENTIFIER - 161)))) !== 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 Python_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 = EParser.RULE_python_statement;
return this;
}
Python_statementContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Python_statementContext.prototype.constructor = Python_statementContext;
Python_statementContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function PythonStatementContext(parser, ctx) {
Python_statementContext.call(this, parser);
this.exp = null; // Python_expressionContext;
Python_statementContext.prototype.copyFrom.call(this, ctx);
return this;
}
PythonStatementContext.prototype = Object.create(Python_statementContext.prototype);
PythonStatementContext.prototype.constructor = PythonStatementContext;
EParser.PythonStatementContext = PythonStatementContext;
PythonStatementContext.prototype.python_expression = function() {
return this.getTypedRuleContext(Python_expressionContext,0);
};
PythonStatementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterPythonStatement(this);
}
};
PythonStatementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitPythonStatement(this);
}
};
function PythonReturnStatementContext(parser, ctx) {
Python_statementContext.call(this, parser);
this.exp = null; // Python_expressionContext;
Python_statementContext.prototype.copyFrom.call(this, ctx);
return this;
}
PythonReturnStatementContext.prototype = Object.create(Python_statementContext.prototype);
PythonReturnStatementContext.prototype.constructor = PythonReturnStatementContext;
EParser.PythonReturnStatementContext = PythonReturnStatementContext;
PythonReturnStatementContext.prototype.RETURN = function() {
return this.getToken(EParser.RETURN, 0);
};
PythonReturnStatementContext.prototype.python_expression = function() {
return this.getTypedRuleContext(Python_expressionContext,0);
};
PythonReturnStatementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterPythonReturnStatement(this);
}
};
PythonReturnStatementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitPythonReturnStatement(this);
}
};
EParser.Python_statementContext = Python_statementContext;
EParser.prototype.python_statement = function() {
var localctx = new Python_statementContext(this, this._ctx, this.state);
this.enterRule(localctx, 366, EParser.RULE_python_statement);
try {
this.state = 2352;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case EParser.RETURN:
localctx = new PythonReturnStatementContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 2349;
this.match(EParser.RETURN);
this.state = 2350;
localctx.exp = this.python_expression(0);
break;
case EParser.LPAR:
case EParser.BOOLEAN:
case EParser.CHARACTER:
case EParser.TEXT:
case EParser.INTEGER:
case EParser.DECIMAL:
case EParser.DATE:
case EParser.TIME:
case EParser.DATETIME:
case EParser.PERIOD:
case EParser.VERSION:
case EParser.UUID:
case EParser.HTML:
case EParser.NONE:
case EParser.NULL:
case EParser.READ:
case EParser.SELF:
case EParser.TEST:
case EParser.THIS:
case EParser.WRITE:
case EParser.BOOLEAN_LITERAL:
case EParser.CHAR_LITERAL:
case EParser.SYMBOL_IDENTIFIER:
case EParser.TYPE_IDENTIFIER:
case EParser.VARIABLE_IDENTIFIER:
case EParser.DOLLAR_IDENTIFIER:
case EParser.TEXT_LITERAL:
case EParser.INTEGER_LITERAL:
case EParser.DECIMAL_LITERAL:
localctx = new PythonStatementContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 2351;
localctx.exp = this.python_expression(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 Python_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 = EParser.RULE_python_expression;
return this;
}
Python_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Python_expressionContext.prototype.constructor = Python_expressionContext;
Python_expressionContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function PythonSelectorExpressionContext(parser, ctx) {
Python_expressionContext.call(this, parser);
this.parent = null; // Python_expressionContext;
this.child = null; // Python_selector_expressionContext;
Python_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
PythonSelectorExpressionContext.prototype = Object.create(Python_expressionContext.prototype);
PythonSelectorExpressionContext.prototype.constructor = PythonSelectorExpressionContext;
EParser.PythonSelectorExpressionContext = PythonSelectorExpressionContext;
PythonSelectorExpressionContext.prototype.python_expression = function() {
return this.getTypedRuleContext(Python_expressionContext,0);
};
PythonSelectorExpressionContext.prototype.python_selector_expression = function() {
return this.getTypedRuleContext(Python_selector_expressionContext,0);
};
PythonSelectorExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterPythonSelectorExpression(this);
}
};
PythonSelectorExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitPythonSelectorExpression(this);
}
};
function PythonPrimaryExpressionContext(parser, ctx) {
Python_expressionContext.call(this, parser);
this.exp = null; // Python_primary_expressionContext;
Python_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
PythonPrimaryExpressionContext.prototype = Object.create(Python_expressionContext.prototype);
PythonPrimaryExpressionContext.prototype.constructor = PythonPrimaryExpressionContext;
EParser.PythonPrimaryExpressionContext = PythonPrimaryExpressionContext;
PythonPrimaryExpressionContext.prototype.python_primary_expression = function() {
return this.getTypedRuleContext(Python_primary_expressionContext,0);
};
PythonPrimaryExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterPythonPrimaryExpression(this);
}
};
PythonPrimaryExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitPythonPrimaryExpression(this);
}
};
EParser.prototype.python_expression = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new Python_expressionContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 368;
this.enterRecursionRule(localctx, 368, EParser.RULE_python_expression, _p);
try {
this.enterOuterAlt(localctx, 1);
localctx = new PythonPrimaryExpressionContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 2355;
localctx.exp = this.python_primary_expression();
this._ctx.stop = this._input.LT(-1);
this.state = 2361;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,196,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 PythonSelectorExpressionContext(this, new Python_expressionContext(this, _parentctx, _parentState));
localctx.parent = _prevctx;
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_python_expression);
this.state = 2357;
if (!( this.precpred(this._ctx, 1))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
}
this.state = 2358;
localctx.child = this.python_selector_expression();
}
this.state = 2363;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,196,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 Python_primary_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 = EParser.RULE_python_primary_expression;
return this;
}
Python_primary_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Python_primary_expressionContext.prototype.constructor = Python_primary_expressionContext;
Python_primary_expressionContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function PythonParenthesisExpressionContext(parser, ctx) {
Python_primary_expressionContext.call(this, parser);
this.exp = null; // Python_parenthesis_expressionContext;
Python_primary_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
PythonParenthesisExpressionContext.prototype = Object.create(Python_primary_expressionContext.prototype);
PythonParenthesisExpressionContext.prototype.constructor = PythonParenthesisExpressionContext;
EParser.PythonParenthesisExpressionContext = PythonParenthesisExpressionContext;
PythonParenthesisExpressionContext.prototype.python_parenthesis_expression = function() {
return this.getTypedRuleContext(Python_parenthesis_expressionContext,0);
};
PythonParenthesisExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterPythonParenthesisExpression(this);
}
};
PythonParenthesisExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitPythonParenthesisExpression(this);
}
};
function PythonIdentifierExpressionContext(parser, ctx) {
Python_primary_expressionContext.call(this, parser);
this.exp = null; // Python_identifier_expressionContext;
Python_primary_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
PythonIdentifierExpressionContext.prototype = Object.create(Python_primary_expressionContext.prototype);
PythonIdentifierExpressionContext.prototype.constructor = PythonIdentifierExpressionContext;
EParser.PythonIdentifierExpressionContext = PythonIdentifierExpressionContext;
PythonIdentifierExpressionContext.prototype.python_identifier_expression = function() {
return this.getTypedRuleContext(Python_identifier_expressionContext,0);
};
PythonIdentifierExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterPythonIdentifierExpression(this);
}
};
PythonIdentifierExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitPythonIdentifierExpression(this);
}
};
function PythonSelfExpressionContext(parser, ctx) {
Python_primary_expressionContext.call(this, parser);
this.exp = null; // Python_self_expressionContext;
Python_primary_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
PythonSelfExpressionContext.prototype = Object.create(Python_primary_expressionContext.prototype);
PythonSelfExpressionContext.prototype.constructor = PythonSelfExpressionContext;
EParser.PythonSelfExpressionContext = PythonSelfExpressionContext;
PythonSelfExpressionContext.prototype.python_self_expression = function() {
return this.getTypedRuleContext(Python_self_expressionContext,0);
};
PythonSelfExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterPythonSelfExpression(this);
}
};
PythonSelfExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitPythonSelfExpression(this);
}
};
function PythonLiteralExpressionContext(parser, ctx) {
Python_primary_expressionContext.call(this, parser);
this.exp = null; // Python_literal_expressionContext;
Python_primary_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
PythonLiteralExpressionContext.prototype = Object.create(Python_primary_expressionContext.prototype);
PythonLiteralExpressionContext.prototype.constructor = PythonLiteralExpressionContext;
EParser.PythonLiteralExpressionContext = PythonLiteralExpressionContext;
PythonLiteralExpressionContext.prototype.python_literal_expression = function() {
return this.getTypedRuleContext(Python_literal_expressionContext,0);
};
PythonLiteralExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterPythonLiteralExpression(this);
}
};
PythonLiteralExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitPythonLiteralExpression(this);
}
};
function PythonGlobalMethodExpressionContext(parser, ctx) {
Python_primary_expressionContext.call(this, parser);
this.exp = null; // Python_method_expressionContext;
Python_primary_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
PythonGlobalMethodExpressionContext.prototype = Object.create(Python_primary_expressionContext.prototype);
PythonGlobalMethodExpressionContext.prototype.constructor = PythonGlobalMethodExpressionContext;
EParser.PythonGlobalMethodExpressionContext = PythonGlobalMethodExpressionContext;
PythonGlobalMethodExpressionContext.prototype.python_method_expression = function() {
return this.getTypedRuleContext(Python_method_expressionContext,0);
};
PythonGlobalMethodExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterPythonGlobalMethodExpression(this);
}
};
PythonGlobalMethodExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitPythonGlobalMethodExpression(this);
}
};
EParser.Python_primary_expressionContext = Python_primary_expressionContext;
EParser.prototype.python_primary_expression = function() {
var localctx = new Python_primary_expressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 370, EParser.RULE_python_primary_expression);
try {
this.state = 2369;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,197,this._ctx);
switch(la_) {
case 1:
localctx = new PythonSelfExpressionContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 2364;
localctx.exp = this.python_self_expression();
break;
case 2:
localctx = new PythonParenthesisExpressionContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 2365;
localctx.exp = this.python_parenthesis_expression();
break;
case 3:
localctx = new PythonIdentifierExpressionContext(this, localctx);
this.enterOuterAlt(localctx, 3);
this.state = 2366;
localctx.exp = this.python_identifier_expression(0);
break;
case 4:
localctx = new PythonLiteralExpressionContext(this, localctx);
this.enterOuterAlt(localctx, 4);
this.state = 2367;
localctx.exp = this.python_literal_expression();
break;
case 5:
localctx = new PythonGlobalMethodExpressionContext(this, localctx);
this.enterOuterAlt(localctx, 5);
this.state = 2368;
localctx.exp = this.python_method_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 Python_self_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 = EParser.RULE_python_self_expression;
return this;
}
Python_self_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Python_self_expressionContext.prototype.constructor = Python_self_expressionContext;
Python_self_expressionContext.prototype.this_expression = function() {
return this.getTypedRuleContext(This_expressionContext,0);
};
Python_self_expressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterPython_self_expression(this);
}
};
Python_self_expressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitPython_self_expression(this);
}
};
EParser.Python_self_expressionContext = Python_self_expressionContext;
EParser.prototype.python_self_expression = function() {
var localctx = new Python_self_expressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 372, EParser.RULE_python_self_expression);
try {
this.enterOuterAlt(localctx, 1);
this.state = 2371;
this.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 Python_selector_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 = EParser.RULE_python_selector_expression;
return this;
}
Python_selector_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Python_selector_expressionContext.prototype.constructor = Python_selector_expressionContext;
Python_selector_expressionContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function PythonMethodExpressionContext(parser, ctx) {
Python_selector_expressionContext.call(this, parser);
this.exp = null; // Python_method_expressionContext;
Python_selector_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
PythonMethodExpressionContext.prototype = Object.create(Python_selector_expressionContext.prototype);
PythonMethodExpressionContext.prototype.constructor = PythonMethodExpressionContext;
EParser.PythonMethodExpressionContext = PythonMethodExpressionContext;
PythonMethodExpressionContext.prototype.DOT = function() {
return this.getToken(EParser.DOT, 0);
};
PythonMethodExpressionContext.prototype.python_method_expression = function() {
return this.getTypedRuleContext(Python_method_expressionContext,0);
};
PythonMethodExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterPythonMethodExpression(this);
}
};
PythonMethodExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitPythonMethodExpression(this);
}
};
function PythonItemExpressionContext(parser, ctx) {
Python_selector_expressionContext.call(this, parser);
this.exp = null; // Python_expressionContext;
Python_selector_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
PythonItemExpressionContext.prototype = Object.create(Python_selector_expressionContext.prototype);
PythonItemExpressionContext.prototype.constructor = PythonItemExpressionContext;
EParser.PythonItemExpressionContext = PythonItemExpressionContext;
PythonItemExpressionContext.prototype.LBRAK = function() {
return this.getToken(EParser.LBRAK, 0);
};
PythonItemExpressionContext.prototype.RBRAK = function() {
return this.getToken(EParser.RBRAK, 0);
};
PythonItemExpressionContext.prototype.python_expression = function() {
return this.getTypedRuleContext(Python_expressionContext,0);
};
PythonItemExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterPythonItemExpression(this);
}
};
PythonItemExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitPythonItemExpression(this);
}
};
EParser.Python_selector_expressionContext = Python_selector_expressionContext;
EParser.prototype.python_selector_expression = function() {
var localctx = new Python_selector_expressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 374, EParser.RULE_python_selector_expression);
try {
this.state = 2379;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case EParser.DOT:
localctx = new PythonMethodExpressionContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 2373;
this.match(EParser.DOT);
this.state = 2374;
localctx.exp = this.python_method_expression();
break;
case EParser.LBRAK:
localctx = new PythonItemExpressionContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 2375;
this.match(EParser.LBRAK);
this.state = 2376;
localctx.exp = this.python_expression(0);
this.state = 2377;
this.match(EParser.RBRAK);
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 Python_method_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 = EParser.RULE_python_method_expression;
this.name = null; // Python_identifierContext
this.args = null; // Python_argument_listContext
return this;
}
Python_method_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Python_method_expressionContext.prototype.constructor = Python_method_expressionContext;
Python_method_expressionContext.prototype.LPAR = function() {
return this.getToken(EParser.LPAR, 0);
};
Python_method_expressionContext.prototype.RPAR = function() {
return this.getToken(EParser.RPAR, 0);
};
Python_method_expressionContext.prototype.python_identifier = function() {
return this.getTypedRuleContext(Python_identifierContext,0);
};
Python_method_expressionContext.prototype.python_argument_list = function() {
return this.getTypedRuleContext(Python_argument_listContext,0);
};
Python_method_expressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterPython_method_expression(this);
}
};
Python_method_expressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitPython_method_expression(this);
}
};
EParser.Python_method_expressionContext = Python_method_expressionContext;
EParser.prototype.python_method_expression = function() {
var localctx = new Python_method_expressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 376, EParser.RULE_python_method_expression);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 2381;
localctx.name = this.python_identifier();
this.state = 2382;
this.match(EParser.LPAR);
this.state = 2384;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.LPAR || ((((_la - 51)) & ~0x1f) == 0 && ((1 << (_la - 51)) & ((1 << (EParser.BOOLEAN - 51)) | (1 << (EParser.CHARACTER - 51)) | (1 << (EParser.TEXT - 51)) | (1 << (EParser.INTEGER - 51)) | (1 << (EParser.DECIMAL - 51)) | (1 << (EParser.DATE - 51)) | (1 << (EParser.TIME - 51)) | (1 << (EParser.DATETIME - 51)) | (1 << (EParser.PERIOD - 51)) | (1 << (EParser.VERSION - 51)) | (1 << (EParser.UUID - 51)) | (1 << (EParser.HTML - 51)))) !== 0) || ((((_la - 123)) & ~0x1f) == 0 && ((1 << (_la - 123)) & ((1 << (EParser.NONE - 123)) | (1 << (EParser.NULL - 123)) | (1 << (EParser.READ - 123)) | (1 << (EParser.SELF - 123)) | (1 << (EParser.TEST - 123)) | (1 << (EParser.THIS - 123)))) !== 0) || ((((_la - 161)) & ~0x1f) == 0 && ((1 << (_la - 161)) & ((1 << (EParser.WRITE - 161)) | (1 << (EParser.BOOLEAN_LITERAL - 161)) | (1 << (EParser.CHAR_LITERAL - 161)) | (1 << (EParser.SYMBOL_IDENTIFIER - 161)) | (1 << (EParser.TYPE_IDENTIFIER - 161)) | (1 << (EParser.VARIABLE_IDENTIFIER - 161)) | (1 << (EParser.DOLLAR_IDENTIFIER - 161)) | (1 << (EParser.TEXT_LITERAL - 161)) | (1 << (EParser.INTEGER_LITERAL - 161)) | (1 << (EParser.DECIMAL_LITERAL - 161)))) !== 0)) {
this.state = 2383;
localctx.args = this.python_argument_list();
}
this.state = 2386;
this.match(EParser.RPAR);
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Python_argument_listContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_python_argument_list;
return this;
}
Python_argument_listContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Python_argument_listContext.prototype.constructor = Python_argument_listContext;
Python_argument_listContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function PythonOrdinalOnlyArgumentListContext(parser, ctx) {
Python_argument_listContext.call(this, parser);
this.ordinal = null; // Python_ordinal_argument_listContext;
Python_argument_listContext.prototype.copyFrom.call(this, ctx);
return this;
}
PythonOrdinalOnlyArgumentListContext.prototype = Object.create(Python_argument_listContext.prototype);
PythonOrdinalOnlyArgumentListContext.prototype.constructor = PythonOrdinalOnlyArgumentListContext;
EParser.PythonOrdinalOnlyArgumentListContext = PythonOrdinalOnlyArgumentListContext;
PythonOrdinalOnlyArgumentListContext.prototype.python_ordinal_argument_list = function() {
return this.getTypedRuleContext(Python_ordinal_argument_listContext,0);
};
PythonOrdinalOnlyArgumentListContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterPythonOrdinalOnlyArgumentList(this);
}
};
PythonOrdinalOnlyArgumentListContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitPythonOrdinalOnlyArgumentList(this);
}
};
function PythonNamedOnlyArgumentListContext(parser, ctx) {
Python_argument_listContext.call(this, parser);
this.named = null; // Python_named_argument_listContext;
Python_argument_listContext.prototype.copyFrom.call(this, ctx);
return this;
}
PythonNamedOnlyArgumentListContext.prototype = Object.create(Python_argument_listContext.prototype);
PythonNamedOnlyArgumentListContext.prototype.constructor = PythonNamedOnlyArgumentListContext;
EParser.PythonNamedOnlyArgumentListContext = PythonNamedOnlyArgumentListContext;
PythonNamedOnlyArgumentListContext.prototype.python_named_argument_list = function() {
return this.getTypedRuleContext(Python_named_argument_listContext,0);
};
PythonNamedOnlyArgumentListContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterPythonNamedOnlyArgumentList(this);
}
};
PythonNamedOnlyArgumentListContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitPythonNamedOnlyArgumentList(this);
}
};
function PythonArgumentListContext(parser, ctx) {
Python_argument_listContext.call(this, parser);
this.ordinal = null; // Python_ordinal_argument_listContext;
this.named = null; // Python_named_argument_listContext;
Python_argument_listContext.prototype.copyFrom.call(this, ctx);
return this;
}
PythonArgumentListContext.prototype = Object.create(Python_argument_listContext.prototype);
PythonArgumentListContext.prototype.constructor = PythonArgumentListContext;
EParser.PythonArgumentListContext = PythonArgumentListContext;
PythonArgumentListContext.prototype.COMMA = function() {
return this.getToken(EParser.COMMA, 0);
};
PythonArgumentListContext.prototype.python_ordinal_argument_list = function() {
return this.getTypedRuleContext(Python_ordinal_argument_listContext,0);
};
PythonArgumentListContext.prototype.python_named_argument_list = function() {
return this.getTypedRuleContext(Python_named_argument_listContext,0);
};
PythonArgumentListContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterPythonArgumentList(this);
}
};
PythonArgumentListContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitPythonArgumentList(this);
}
};
EParser.Python_argument_listContext = Python_argument_listContext;
EParser.prototype.python_argument_list = function() {
var localctx = new Python_argument_listContext(this, this._ctx, this.state);
this.enterRule(localctx, 378, EParser.RULE_python_argument_list);
try {
this.state = 2394;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,200,this._ctx);
switch(la_) {
case 1:
localctx = new PythonOrdinalOnlyArgumentListContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 2388;
localctx.ordinal = this.python_ordinal_argument_list(0);
break;
case 2:
localctx = new PythonNamedOnlyArgumentListContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 2389;
localctx.named = this.python_named_argument_list(0);
break;
case 3:
localctx = new PythonArgumentListContext(this, localctx);
this.enterOuterAlt(localctx, 3);
this.state = 2390;
localctx.ordinal = this.python_ordinal_argument_list(0);
this.state = 2391;
this.match(EParser.COMMA);
this.state = 2392;
localctx.named = this.python_named_argument_list(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 Python_ordinal_argument_listContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_python_ordinal_argument_list;
return this;
}
Python_ordinal_argument_listContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Python_ordinal_argument_listContext.prototype.constructor = Python_ordinal_argument_listContext;
Python_ordinal_argument_listContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function PythonOrdinalArgumentListContext(parser, ctx) {
Python_ordinal_argument_listContext.call(this, parser);
this.item = null; // Python_expressionContext;
Python_ordinal_argument_listContext.prototype.copyFrom.call(this, ctx);
return this;
}
PythonOrdinalArgumentListContext.prototype = Object.create(Python_ordinal_argument_listContext.prototype);
PythonOrdinalArgumentListContext.prototype.constructor = PythonOrdinalArgumentListContext;
EParser.PythonOrdinalArgumentListContext = PythonOrdinalArgumentListContext;
PythonOrdinalArgumentListContext.prototype.python_expression = function() {
return this.getTypedRuleContext(Python_expressionContext,0);
};
PythonOrdinalArgumentListContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterPythonOrdinalArgumentList(this);
}
};
PythonOrdinalArgumentListContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitPythonOrdinalArgumentList(this);
}
};
function PythonOrdinalArgumentListItemContext(parser, ctx) {
Python_ordinal_argument_listContext.call(this, parser);
this.items = null; // Python_ordinal_argument_listContext;
this.item = null; // Python_expressionContext;
Python_ordinal_argument_listContext.prototype.copyFrom.call(this, ctx);
return this;
}
PythonOrdinalArgumentListItemContext.prototype = Object.create(Python_ordinal_argument_listContext.prototype);
PythonOrdinalArgumentListItemContext.prototype.constructor = PythonOrdinalArgumentListItemContext;
EParser.PythonOrdinalArgumentListItemContext = PythonOrdinalArgumentListItemContext;
PythonOrdinalArgumentListItemContext.prototype.COMMA = function() {
return this.getToken(EParser.COMMA, 0);
};
PythonOrdinalArgumentListItemContext.prototype.python_ordinal_argument_list = function() {
return this.getTypedRuleContext(Python_ordinal_argument_listContext,0);
};
PythonOrdinalArgumentListItemContext.prototype.python_expression = function() {
return this.getTypedRuleContext(Python_expressionContext,0);
};
PythonOrdinalArgumentListItemContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterPythonOrdinalArgumentListItem(this);
}
};
PythonOrdinalArgumentListItemContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitPythonOrdinalArgumentListItem(this);
}
};
EParser.prototype.python_ordinal_argument_list = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new Python_ordinal_argument_listContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 380;
this.enterRecursionRule(localctx, 380, EParser.RULE_python_ordinal_argument_list, _p);
try {
this.enterOuterAlt(localctx, 1);
localctx = new PythonOrdinalArgumentListContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 2397;
localctx.item = this.python_expression(0);
this._ctx.stop = this._input.LT(-1);
this.state = 2404;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,201,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 PythonOrdinalArgumentListItemContext(this, new Python_ordinal_argument_listContext(this, _parentctx, _parentState));
localctx.items = _prevctx;
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_python_ordinal_argument_list);
this.state = 2399;
if (!( this.precpred(this._ctx, 1))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
}
this.state = 2400;
this.match(EParser.COMMA);
this.state = 2401;
localctx.item = this.python_expression(0);
}
this.state = 2406;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,201,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 Python_named_argument_listContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_python_named_argument_list;
return this;
}
Python_named_argument_listContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Python_named_argument_listContext.prototype.constructor = Python_named_argument_listContext;
Python_named_argument_listContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function PythonNamedArgumentListContext(parser, ctx) {
Python_named_argument_listContext.call(this, parser);
this.name = null; // Python_identifierContext;
this.exp = null; // Python_expressionContext;
Python_named_argument_listContext.prototype.copyFrom.call(this, ctx);
return this;
}
PythonNamedArgumentListContext.prototype = Object.create(Python_named_argument_listContext.prototype);
PythonNamedArgumentListContext.prototype.constructor = PythonNamedArgumentListContext;
EParser.PythonNamedArgumentListContext = PythonNamedArgumentListContext;
PythonNamedArgumentListContext.prototype.EQ = function() {
return this.getToken(EParser.EQ, 0);
};
PythonNamedArgumentListContext.prototype.python_identifier = function() {
return this.getTypedRuleContext(Python_identifierContext,0);
};
PythonNamedArgumentListContext.prototype.python_expression = function() {
return this.getTypedRuleContext(Python_expressionContext,0);
};
PythonNamedArgumentListContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterPythonNamedArgumentList(this);
}
};
PythonNamedArgumentListContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitPythonNamedArgumentList(this);
}
};
function PythonNamedArgumentListItemContext(parser, ctx) {
Python_named_argument_listContext.call(this, parser);
this.items = null; // Python_named_argument_listContext;
this.name = null; // Python_identifierContext;
this.exp = null; // Python_expressionContext;
Python_named_argument_listContext.prototype.copyFrom.call(this, ctx);
return this;
}
PythonNamedArgumentListItemContext.prototype = Object.create(Python_named_argument_listContext.prototype);
PythonNamedArgumentListItemContext.prototype.constructor = PythonNamedArgumentListItemContext;
EParser.PythonNamedArgumentListItemContext = PythonNamedArgumentListItemContext;
PythonNamedArgumentListItemContext.prototype.COMMA = function() {
return this.getToken(EParser.COMMA, 0);
};
PythonNamedArgumentListItemContext.prototype.EQ = function() {
return this.getToken(EParser.EQ, 0);
};
PythonNamedArgumentListItemContext.prototype.python_named_argument_list = function() {
return this.getTypedRuleContext(Python_named_argument_listContext,0);
};
PythonNamedArgumentListItemContext.prototype.python_identifier = function() {
return this.getTypedRuleContext(Python_identifierContext,0);
};
PythonNamedArgumentListItemContext.prototype.python_expression = function() {
return this.getTypedRuleContext(Python_expressionContext,0);
};
PythonNamedArgumentListItemContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterPythonNamedArgumentListItem(this);
}
};
PythonNamedArgumentListItemContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitPythonNamedArgumentListItem(this);
}
};
EParser.prototype.python_named_argument_list = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new Python_named_argument_listContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 382;
this.enterRecursionRule(localctx, 382, EParser.RULE_python_named_argument_list, _p);
try {
this.enterOuterAlt(localctx, 1);
localctx = new PythonNamedArgumentListContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 2408;
localctx.name = this.python_identifier();
this.state = 2409;
this.match(EParser.EQ);
this.state = 2410;
localctx.exp = this.python_expression(0);
this._ctx.stop = this._input.LT(-1);
this.state = 2420;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,202,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 PythonNamedArgumentListItemContext(this, new Python_named_argument_listContext(this, _parentctx, _parentState));
localctx.items = _prevctx;
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_python_named_argument_list);
this.state = 2412;
if (!( this.precpred(this._ctx, 1))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
}
this.state = 2413;
this.match(EParser.COMMA);
this.state = 2414;
localctx.name = this.python_identifier();
this.state = 2415;
this.match(EParser.EQ);
this.state = 2416;
localctx.exp = this.python_expression(0);
}
this.state = 2422;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,202,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 Python_parenthesis_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 = EParser.RULE_python_parenthesis_expression;
this.exp = null; // Python_expressionContext
return this;
}
Python_parenthesis_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Python_parenthesis_expressionContext.prototype.constructor = Python_parenthesis_expressionContext;
Python_parenthesis_expressionContext.prototype.LPAR = function() {
return this.getToken(EParser.LPAR, 0);
};
Python_parenthesis_expressionContext.prototype.RPAR = function() {
return this.getToken(EParser.RPAR, 0);
};
Python_parenthesis_expressionContext.prototype.python_expression = function() {
return this.getTypedRuleContext(Python_expressionContext,0);
};
Python_parenthesis_expressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterPython_parenthesis_expression(this);
}
};
Python_parenthesis_expressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitPython_parenthesis_expression(this);
}
};
EParser.Python_parenthesis_expressionContext = Python_parenthesis_expressionContext;
EParser.prototype.python_parenthesis_expression = function() {
var localctx = new Python_parenthesis_expressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 384, EParser.RULE_python_parenthesis_expression);
try {
this.enterOuterAlt(localctx, 1);
this.state = 2423;
this.match(EParser.LPAR);
this.state = 2424;
localctx.exp = this.python_expression(0);
this.state = 2425;
this.match(EParser.RPAR);
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Python_identifier_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 = EParser.RULE_python_identifier_expression;
return this;
}
Python_identifier_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Python_identifier_expressionContext.prototype.constructor = Python_identifier_expressionContext;
Python_identifier_expressionContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function PythonChildIdentifierContext(parser, ctx) {
Python_identifier_expressionContext.call(this, parser);
this.parent = null; // Python_identifier_expressionContext;
this.name = null; // Python_identifierContext;
Python_identifier_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
PythonChildIdentifierContext.prototype = Object.create(Python_identifier_expressionContext.prototype);
PythonChildIdentifierContext.prototype.constructor = PythonChildIdentifierContext;
EParser.PythonChildIdentifierContext = PythonChildIdentifierContext;
PythonChildIdentifierContext.prototype.DOT = function() {
return this.getToken(EParser.DOT, 0);
};
PythonChildIdentifierContext.prototype.python_identifier_expression = function() {
return this.getTypedRuleContext(Python_identifier_expressionContext,0);
};
PythonChildIdentifierContext.prototype.python_identifier = function() {
return this.getTypedRuleContext(Python_identifierContext,0);
};
PythonChildIdentifierContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterPythonChildIdentifier(this);
}
};
PythonChildIdentifierContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitPythonChildIdentifier(this);
}
};
function PythonPromptoIdentifierContext(parser, ctx) {
Python_identifier_expressionContext.call(this, parser);
Python_identifier_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
PythonPromptoIdentifierContext.prototype = Object.create(Python_identifier_expressionContext.prototype);
PythonPromptoIdentifierContext.prototype.constructor = PythonPromptoIdentifierContext;
EParser.PythonPromptoIdentifierContext = PythonPromptoIdentifierContext;
PythonPromptoIdentifierContext.prototype.DOLLAR_IDENTIFIER = function() {
return this.getToken(EParser.DOLLAR_IDENTIFIER, 0);
};
PythonPromptoIdentifierContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterPythonPromptoIdentifier(this);
}
};
PythonPromptoIdentifierContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitPythonPromptoIdentifier(this);
}
};
function PythonIdentifierContext(parser, ctx) {
Python_identifier_expressionContext.call(this, parser);
this.name = null; // Python_identifierContext;
Python_identifier_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
PythonIdentifierContext.prototype = Object.create(Python_identifier_expressionContext.prototype);
PythonIdentifierContext.prototype.constructor = PythonIdentifierContext;
EParser.PythonIdentifierContext = PythonIdentifierContext;
PythonIdentifierContext.prototype.python_identifier = function() {
return this.getTypedRuleContext(Python_identifierContext,0);
};
PythonIdentifierContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterPythonIdentifier(this);
}
};
PythonIdentifierContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitPythonIdentifier(this);
}
};
EParser.prototype.python_identifier_expression = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new Python_identifier_expressionContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 386;
this.enterRecursionRule(localctx, 386, EParser.RULE_python_identifier_expression, _p);
try {
this.enterOuterAlt(localctx, 1);
this.state = 2430;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case EParser.DOLLAR_IDENTIFIER:
localctx = new PythonPromptoIdentifierContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 2428;
this.match(EParser.DOLLAR_IDENTIFIER);
break;
case EParser.BOOLEAN:
case EParser.CHARACTER:
case EParser.TEXT:
case EParser.INTEGER:
case EParser.DECIMAL:
case EParser.DATE:
case EParser.TIME:
case EParser.DATETIME:
case EParser.PERIOD:
case EParser.VERSION:
case EParser.UUID:
case EParser.HTML:
case EParser.NONE:
case EParser.NULL:
case EParser.READ:
case EParser.TEST:
case EParser.THIS:
case EParser.WRITE:
case EParser.SYMBOL_IDENTIFIER:
case EParser.TYPE_IDENTIFIER:
case EParser.VARIABLE_IDENTIFIER:
localctx = new PythonIdentifierContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 2429;
localctx.name = this.python_identifier();
break;
default:
throw new antlr4.error.NoViableAltException(this);
}
this._ctx.stop = this._input.LT(-1);
this.state = 2437;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,204,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 PythonChildIdentifierContext(this, new Python_identifier_expressionContext(this, _parentctx, _parentState));
localctx.parent = _prevctx;
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_python_identifier_expression);
this.state = 2432;
if (!( this.precpred(this._ctx, 1))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
}
this.state = 2433;
this.match(EParser.DOT);
this.state = 2434;
localctx.name = this.python_identifier();
}
this.state = 2439;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,204,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 Python_literal_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 = EParser.RULE_python_literal_expression;
return this;
}
Python_literal_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Python_literal_expressionContext.prototype.constructor = Python_literal_expressionContext;
Python_literal_expressionContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function PythonIntegerLiteralContext(parser, ctx) {
Python_literal_expressionContext.call(this, parser);
this.t = null; // Token;
Python_literal_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
PythonIntegerLiteralContext.prototype = Object.create(Python_literal_expressionContext.prototype);
PythonIntegerLiteralContext.prototype.constructor = PythonIntegerLiteralContext;
EParser.PythonIntegerLiteralContext = PythonIntegerLiteralContext;
PythonIntegerLiteralContext.prototype.INTEGER_LITERAL = function() {
return this.getToken(EParser.INTEGER_LITERAL, 0);
};
PythonIntegerLiteralContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterPythonIntegerLiteral(this);
}
};
PythonIntegerLiteralContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitPythonIntegerLiteral(this);
}
};
function PythonBooleanLiteralContext(parser, ctx) {
Python_literal_expressionContext.call(this, parser);
this.t = null; // Token;
Python_literal_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
PythonBooleanLiteralContext.prototype = Object.create(Python_literal_expressionContext.prototype);
PythonBooleanLiteralContext.prototype.constructor = PythonBooleanLiteralContext;
EParser.PythonBooleanLiteralContext = PythonBooleanLiteralContext;
PythonBooleanLiteralContext.prototype.BOOLEAN_LITERAL = function() {
return this.getToken(EParser.BOOLEAN_LITERAL, 0);
};
PythonBooleanLiteralContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterPythonBooleanLiteral(this);
}
};
PythonBooleanLiteralContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitPythonBooleanLiteral(this);
}
};
function PythonCharacterLiteralContext(parser, ctx) {
Python_literal_expressionContext.call(this, parser);
this.t = null; // Token;
Python_literal_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
PythonCharacterLiteralContext.prototype = Object.create(Python_literal_expressionContext.prototype);
PythonCharacterLiteralContext.prototype.constructor = PythonCharacterLiteralContext;
EParser.PythonCharacterLiteralContext = PythonCharacterLiteralContext;
PythonCharacterLiteralContext.prototype.CHAR_LITERAL = function() {
return this.getToken(EParser.CHAR_LITERAL, 0);
};
PythonCharacterLiteralContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterPythonCharacterLiteral(this);
}
};
PythonCharacterLiteralContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitPythonCharacterLiteral(this);
}
};
function PythonTextLiteralContext(parser, ctx) {
Python_literal_expressionContext.call(this, parser);
this.t = null; // Token;
Python_literal_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
PythonTextLiteralContext.prototype = Object.create(Python_literal_expressionContext.prototype);
PythonTextLiteralContext.prototype.constructor = PythonTextLiteralContext;
EParser.PythonTextLiteralContext = PythonTextLiteralContext;
PythonTextLiteralContext.prototype.TEXT_LITERAL = function() {
return this.getToken(EParser.TEXT_LITERAL, 0);
};
PythonTextLiteralContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterPythonTextLiteral(this);
}
};
PythonTextLiteralContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitPythonTextLiteral(this);
}
};
function PythonDecimalLiteralContext(parser, ctx) {
Python_literal_expressionContext.call(this, parser);
this.t = null; // Token;
Python_literal_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
PythonDecimalLiteralContext.prototype = Object.create(Python_literal_expressionContext.prototype);
PythonDecimalLiteralContext.prototype.constructor = PythonDecimalLiteralContext;
EParser.PythonDecimalLiteralContext = PythonDecimalLiteralContext;
PythonDecimalLiteralContext.prototype.DECIMAL_LITERAL = function() {
return this.getToken(EParser.DECIMAL_LITERAL, 0);
};
PythonDecimalLiteralContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterPythonDecimalLiteral(this);
}
};
PythonDecimalLiteralContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitPythonDecimalLiteral(this);
}
};
EParser.Python_literal_expressionContext = Python_literal_expressionContext;
EParser.prototype.python_literal_expression = function() {
var localctx = new Python_literal_expressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 388, EParser.RULE_python_literal_expression);
try {
this.state = 2445;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case EParser.INTEGER_LITERAL:
localctx = new PythonIntegerLiteralContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 2440;
localctx.t = this.match(EParser.INTEGER_LITERAL);
break;
case EParser.DECIMAL_LITERAL:
localctx = new PythonDecimalLiteralContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 2441;
localctx.t = this.match(EParser.DECIMAL_LITERAL);
break;
case EParser.TEXT_LITERAL:
localctx = new PythonTextLiteralContext(this, localctx);
this.enterOuterAlt(localctx, 3);
this.state = 2442;
localctx.t = this.match(EParser.TEXT_LITERAL);
break;
case EParser.BOOLEAN_LITERAL:
localctx = new PythonBooleanLiteralContext(this, localctx);
this.enterOuterAlt(localctx, 4);
this.state = 2443;
localctx.t = this.match(EParser.BOOLEAN_LITERAL);
break;
case EParser.CHAR_LITERAL:
localctx = new PythonCharacterLiteralContext(this, localctx);
this.enterOuterAlt(localctx, 5);
this.state = 2444;
localctx.t = this.match(EParser.CHAR_LITERAL);
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 Python_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 = EParser.RULE_python_identifier;
return this;
}
Python_identifierContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Python_identifierContext.prototype.constructor = Python_identifierContext;
Python_identifierContext.prototype.VARIABLE_IDENTIFIER = function() {
return this.getToken(EParser.VARIABLE_IDENTIFIER, 0);
};
Python_identifierContext.prototype.SYMBOL_IDENTIFIER = function() {
return this.getToken(EParser.SYMBOL_IDENTIFIER, 0);
};
Python_identifierContext.prototype.TYPE_IDENTIFIER = function() {
return this.getToken(EParser.TYPE_IDENTIFIER, 0);
};
Python_identifierContext.prototype.BOOLEAN = function() {
return this.getToken(EParser.BOOLEAN, 0);
};
Python_identifierContext.prototype.CHARACTER = function() {
return this.getToken(EParser.CHARACTER, 0);
};
Python_identifierContext.prototype.TEXT = function() {
return this.getToken(EParser.TEXT, 0);
};
Python_identifierContext.prototype.INTEGER = function() {
return this.getToken(EParser.INTEGER, 0);
};
Python_identifierContext.prototype.DECIMAL = function() {
return this.getToken(EParser.DECIMAL, 0);
};
Python_identifierContext.prototype.DATE = function() {
return this.getToken(EParser.DATE, 0);
};
Python_identifierContext.prototype.TIME = function() {
return this.getToken(EParser.TIME, 0);
};
Python_identifierContext.prototype.DATETIME = function() {
return this.getToken(EParser.DATETIME, 0);
};
Python_identifierContext.prototype.PERIOD = function() {
return this.getToken(EParser.PERIOD, 0);
};
Python_identifierContext.prototype.VERSION = function() {
return this.getToken(EParser.VERSION, 0);
};
Python_identifierContext.prototype.UUID = function() {
return this.getToken(EParser.UUID, 0);
};
Python_identifierContext.prototype.HTML = function() {
return this.getToken(EParser.HTML, 0);
};
Python_identifierContext.prototype.READ = function() {
return this.getToken(EParser.READ, 0);
};
Python_identifierContext.prototype.WRITE = function() {
return this.getToken(EParser.WRITE, 0);
};
Python_identifierContext.prototype.TEST = function() {
return this.getToken(EParser.TEST, 0);
};
Python_identifierContext.prototype.THIS = function() {
return this.getToken(EParser.THIS, 0);
};
Python_identifierContext.prototype.NONE = function() {
return this.getToken(EParser.NONE, 0);
};
Python_identifierContext.prototype.NULL = function() {
return this.getToken(EParser.NULL, 0);
};
Python_identifierContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterPython_identifier(this);
}
};
Python_identifierContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitPython_identifier(this);
}
};
EParser.Python_identifierContext = Python_identifierContext;
EParser.prototype.python_identifier = function() {
var localctx = new Python_identifierContext(this, this._ctx, this.state);
this.enterRule(localctx, 390, EParser.RULE_python_identifier);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 2447;
_la = this._input.LA(1);
if(!(((((_la - 51)) & ~0x1f) == 0 && ((1 << (_la - 51)) & ((1 << (EParser.BOOLEAN - 51)) | (1 << (EParser.CHARACTER - 51)) | (1 << (EParser.TEXT - 51)) | (1 << (EParser.INTEGER - 51)) | (1 << (EParser.DECIMAL - 51)) | (1 << (EParser.DATE - 51)) | (1 << (EParser.TIME - 51)) | (1 << (EParser.DATETIME - 51)) | (1 << (EParser.PERIOD - 51)) | (1 << (EParser.VERSION - 51)) | (1 << (EParser.UUID - 51)) | (1 << (EParser.HTML - 51)))) !== 0) || ((((_la - 123)) & ~0x1f) == 0 && ((1 << (_la - 123)) & ((1 << (EParser.NONE - 123)) | (1 << (EParser.NULL - 123)) | (1 << (EParser.READ - 123)) | (1 << (EParser.TEST - 123)) | (1 << (EParser.THIS - 123)))) !== 0) || ((((_la - 161)) & ~0x1f) == 0 && ((1 << (_la - 161)) & ((1 << (EParser.WRITE - 161)) | (1 << (EParser.SYMBOL_IDENTIFIER - 161)) | (1 << (EParser.TYPE_IDENTIFIER - 161)) | (1 << (EParser.VARIABLE_IDENTIFIER - 161)))) !== 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 Java_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 = EParser.RULE_java_statement;
return this;
}
Java_statementContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Java_statementContext.prototype.constructor = Java_statementContext;
Java_statementContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function JavaReturnStatementContext(parser, ctx) {
Java_statementContext.call(this, parser);
this.exp = null; // Java_expressionContext;
Java_statementContext.prototype.copyFrom.call(this, ctx);
return this;
}
JavaReturnStatementContext.prototype = Object.create(Java_statementContext.prototype);
JavaReturnStatementContext.prototype.constructor = JavaReturnStatementContext;
EParser.JavaReturnStatementContext = JavaReturnStatementContext;
JavaReturnStatementContext.prototype.RETURN = function() {
return this.getToken(EParser.RETURN, 0);
};
JavaReturnStatementContext.prototype.SEMI = function() {
return this.getToken(EParser.SEMI, 0);
};
JavaReturnStatementContext.prototype.java_expression = function() {
return this.getTypedRuleContext(Java_expressionContext,0);
};
JavaReturnStatementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJavaReturnStatement(this);
}
};
JavaReturnStatementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJavaReturnStatement(this);
}
};
function JavaStatementContext(parser, ctx) {
Java_statementContext.call(this, parser);
this.exp = null; // Java_expressionContext;
Java_statementContext.prototype.copyFrom.call(this, ctx);
return this;
}
JavaStatementContext.prototype = Object.create(Java_statementContext.prototype);
JavaStatementContext.prototype.constructor = JavaStatementContext;
EParser.JavaStatementContext = JavaStatementContext;
JavaStatementContext.prototype.SEMI = function() {
return this.getToken(EParser.SEMI, 0);
};
JavaStatementContext.prototype.java_expression = function() {
return this.getTypedRuleContext(Java_expressionContext,0);
};
JavaStatementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJavaStatement(this);
}
};
JavaStatementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJavaStatement(this);
}
};
EParser.Java_statementContext = Java_statementContext;
EParser.prototype.java_statement = function() {
var localctx = new Java_statementContext(this, this._ctx, this.state);
this.enterRule(localctx, 392, EParser.RULE_java_statement);
try {
this.state = 2456;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case EParser.RETURN:
localctx = new JavaReturnStatementContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 2449;
this.match(EParser.RETURN);
this.state = 2450;
localctx.exp = this.java_expression(0);
this.state = 2451;
this.match(EParser.SEMI);
break;
case EParser.LPAR:
case EParser.BOOLEAN:
case EParser.CHARACTER:
case EParser.TEXT:
case EParser.INTEGER:
case EParser.DECIMAL:
case EParser.DATE:
case EParser.TIME:
case EParser.DATETIME:
case EParser.PERIOD:
case EParser.VERSION:
case EParser.UUID:
case EParser.HTML:
case EParser.NONE:
case EParser.NULL:
case EParser.READ:
case EParser.SELF:
case EParser.TEST:
case EParser.THIS:
case EParser.WRITE:
case EParser.BOOLEAN_LITERAL:
case EParser.CHAR_LITERAL:
case EParser.SYMBOL_IDENTIFIER:
case EParser.TYPE_IDENTIFIER:
case EParser.VARIABLE_IDENTIFIER:
case EParser.NATIVE_IDENTIFIER:
case EParser.DOLLAR_IDENTIFIER:
case EParser.TEXT_LITERAL:
case EParser.INTEGER_LITERAL:
case EParser.DECIMAL_LITERAL:
localctx = new JavaStatementContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 2453;
localctx.exp = this.java_expression(0);
this.state = 2454;
this.match(EParser.SEMI);
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 Java_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 = EParser.RULE_java_expression;
return this;
}
Java_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Java_expressionContext.prototype.constructor = Java_expressionContext;
Java_expressionContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function JavaSelectorExpressionContext(parser, ctx) {
Java_expressionContext.call(this, parser);
this.parent = null; // Java_expressionContext;
this.child = null; // Java_selector_expressionContext;
Java_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
JavaSelectorExpressionContext.prototype = Object.create(Java_expressionContext.prototype);
JavaSelectorExpressionContext.prototype.constructor = JavaSelectorExpressionContext;
EParser.JavaSelectorExpressionContext = JavaSelectorExpressionContext;
JavaSelectorExpressionContext.prototype.java_expression = function() {
return this.getTypedRuleContext(Java_expressionContext,0);
};
JavaSelectorExpressionContext.prototype.java_selector_expression = function() {
return this.getTypedRuleContext(Java_selector_expressionContext,0);
};
JavaSelectorExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJavaSelectorExpression(this);
}
};
JavaSelectorExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJavaSelectorExpression(this);
}
};
function JavaPrimaryExpressionContext(parser, ctx) {
Java_expressionContext.call(this, parser);
this.exp = null; // Java_primary_expressionContext;
Java_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
JavaPrimaryExpressionContext.prototype = Object.create(Java_expressionContext.prototype);
JavaPrimaryExpressionContext.prototype.constructor = JavaPrimaryExpressionContext;
EParser.JavaPrimaryExpressionContext = JavaPrimaryExpressionContext;
JavaPrimaryExpressionContext.prototype.java_primary_expression = function() {
return this.getTypedRuleContext(Java_primary_expressionContext,0);
};
JavaPrimaryExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJavaPrimaryExpression(this);
}
};
JavaPrimaryExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJavaPrimaryExpression(this);
}
};
EParser.prototype.java_expression = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new Java_expressionContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 394;
this.enterRecursionRule(localctx, 394, EParser.RULE_java_expression, _p);
try {
this.enterOuterAlt(localctx, 1);
localctx = new JavaPrimaryExpressionContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 2459;
localctx.exp = this.java_primary_expression();
this._ctx.stop = this._input.LT(-1);
this.state = 2465;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,207,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 JavaSelectorExpressionContext(this, new Java_expressionContext(this, _parentctx, _parentState));
localctx.parent = _prevctx;
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_java_expression);
this.state = 2461;
if (!( this.precpred(this._ctx, 1))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
}
this.state = 2462;
localctx.child = this.java_selector_expression();
}
this.state = 2467;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,207,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 Java_primary_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 = EParser.RULE_java_primary_expression;
return this;
}
Java_primary_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Java_primary_expressionContext.prototype.constructor = Java_primary_expressionContext;
Java_primary_expressionContext.prototype.java_this_expression = function() {
return this.getTypedRuleContext(Java_this_expressionContext,0);
};
Java_primary_expressionContext.prototype.java_new_expression = function() {
return this.getTypedRuleContext(Java_new_expressionContext,0);
};
Java_primary_expressionContext.prototype.java_parenthesis_expression = function() {
return this.getTypedRuleContext(Java_parenthesis_expressionContext,0);
};
Java_primary_expressionContext.prototype.java_identifier_expression = function() {
return this.getTypedRuleContext(Java_identifier_expressionContext,0);
};
Java_primary_expressionContext.prototype.java_literal_expression = function() {
return this.getTypedRuleContext(Java_literal_expressionContext,0);
};
Java_primary_expressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJava_primary_expression(this);
}
};
Java_primary_expressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJava_primary_expression(this);
}
};
EParser.Java_primary_expressionContext = Java_primary_expressionContext;
EParser.prototype.java_primary_expression = function() {
var localctx = new Java_primary_expressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 396, EParser.RULE_java_primary_expression);
try {
this.state = 2473;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,208,this._ctx);
switch(la_) {
case 1:
this.enterOuterAlt(localctx, 1);
this.state = 2468;
this.java_this_expression();
break;
case 2:
this.enterOuterAlt(localctx, 2);
this.state = 2469;
this.java_new_expression();
break;
case 3:
this.enterOuterAlt(localctx, 3);
this.state = 2470;
this.java_parenthesis_expression();
break;
case 4:
this.enterOuterAlt(localctx, 4);
this.state = 2471;
this.java_identifier_expression(0);
break;
case 5:
this.enterOuterAlt(localctx, 5);
this.state = 2472;
this.java_literal_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 Java_this_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 = EParser.RULE_java_this_expression;
return this;
}
Java_this_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Java_this_expressionContext.prototype.constructor = Java_this_expressionContext;
Java_this_expressionContext.prototype.this_expression = function() {
return this.getTypedRuleContext(This_expressionContext,0);
};
Java_this_expressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJava_this_expression(this);
}
};
Java_this_expressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJava_this_expression(this);
}
};
EParser.Java_this_expressionContext = Java_this_expressionContext;
EParser.prototype.java_this_expression = function() {
var localctx = new Java_this_expressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 398, EParser.RULE_java_this_expression);
try {
this.enterOuterAlt(localctx, 1);
this.state = 2475;
this.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 Java_new_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 = EParser.RULE_java_new_expression;
return this;
}
Java_new_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Java_new_expressionContext.prototype.constructor = Java_new_expressionContext;
Java_new_expressionContext.prototype.new_token = function() {
return this.getTypedRuleContext(New_tokenContext,0);
};
Java_new_expressionContext.prototype.java_method_expression = function() {
return this.getTypedRuleContext(Java_method_expressionContext,0);
};
Java_new_expressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJava_new_expression(this);
}
};
Java_new_expressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJava_new_expression(this);
}
};
EParser.Java_new_expressionContext = Java_new_expressionContext;
EParser.prototype.java_new_expression = function() {
var localctx = new Java_new_expressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 400, EParser.RULE_java_new_expression);
try {
this.enterOuterAlt(localctx, 1);
this.state = 2477;
this.new_token();
this.state = 2478;
this.java_method_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 Java_selector_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 = EParser.RULE_java_selector_expression;
return this;
}
Java_selector_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Java_selector_expressionContext.prototype.constructor = Java_selector_expressionContext;
Java_selector_expressionContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function JavaItemExpressionContext(parser, ctx) {
Java_selector_expressionContext.call(this, parser);
this.exp = null; // Java_item_expressionContext;
Java_selector_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
JavaItemExpressionContext.prototype = Object.create(Java_selector_expressionContext.prototype);
JavaItemExpressionContext.prototype.constructor = JavaItemExpressionContext;
EParser.JavaItemExpressionContext = JavaItemExpressionContext;
JavaItemExpressionContext.prototype.java_item_expression = function() {
return this.getTypedRuleContext(Java_item_expressionContext,0);
};
JavaItemExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJavaItemExpression(this);
}
};
JavaItemExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJavaItemExpression(this);
}
};
function JavaMethodExpressionContext(parser, ctx) {
Java_selector_expressionContext.call(this, parser);
this.exp = null; // Java_method_expressionContext;
Java_selector_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
JavaMethodExpressionContext.prototype = Object.create(Java_selector_expressionContext.prototype);
JavaMethodExpressionContext.prototype.constructor = JavaMethodExpressionContext;
EParser.JavaMethodExpressionContext = JavaMethodExpressionContext;
JavaMethodExpressionContext.prototype.DOT = function() {
return this.getToken(EParser.DOT, 0);
};
JavaMethodExpressionContext.prototype.java_method_expression = function() {
return this.getTypedRuleContext(Java_method_expressionContext,0);
};
JavaMethodExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJavaMethodExpression(this);
}
};
JavaMethodExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJavaMethodExpression(this);
}
};
EParser.Java_selector_expressionContext = Java_selector_expressionContext;
EParser.prototype.java_selector_expression = function() {
var localctx = new Java_selector_expressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 402, EParser.RULE_java_selector_expression);
try {
this.state = 2483;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case EParser.DOT:
localctx = new JavaMethodExpressionContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 2480;
this.match(EParser.DOT);
this.state = 2481;
localctx.exp = this.java_method_expression();
break;
case EParser.LBRAK:
localctx = new JavaItemExpressionContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 2482;
localctx.exp = this.java_item_expression();
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 Java_method_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 = EParser.RULE_java_method_expression;
this.name = null; // Java_identifierContext
this.args = null; // Java_argumentsContext
return this;
}
Java_method_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Java_method_expressionContext.prototype.constructor = Java_method_expressionContext;
Java_method_expressionContext.prototype.LPAR = function() {
return this.getToken(EParser.LPAR, 0);
};
Java_method_expressionContext.prototype.RPAR = function() {
return this.getToken(EParser.RPAR, 0);
};
Java_method_expressionContext.prototype.java_identifier = function() {
return this.getTypedRuleContext(Java_identifierContext,0);
};
Java_method_expressionContext.prototype.java_arguments = function() {
return this.getTypedRuleContext(Java_argumentsContext,0);
};
Java_method_expressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJava_method_expression(this);
}
};
Java_method_expressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJava_method_expression(this);
}
};
EParser.Java_method_expressionContext = Java_method_expressionContext;
EParser.prototype.java_method_expression = function() {
var localctx = new Java_method_expressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 404, EParser.RULE_java_method_expression);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 2485;
localctx.name = this.java_identifier();
this.state = 2486;
this.match(EParser.LPAR);
this.state = 2488;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.LPAR || ((((_la - 51)) & ~0x1f) == 0 && ((1 << (_la - 51)) & ((1 << (EParser.BOOLEAN - 51)) | (1 << (EParser.CHARACTER - 51)) | (1 << (EParser.TEXT - 51)) | (1 << (EParser.INTEGER - 51)) | (1 << (EParser.DECIMAL - 51)) | (1 << (EParser.DATE - 51)) | (1 << (EParser.TIME - 51)) | (1 << (EParser.DATETIME - 51)) | (1 << (EParser.PERIOD - 51)) | (1 << (EParser.VERSION - 51)) | (1 << (EParser.UUID - 51)) | (1 << (EParser.HTML - 51)))) !== 0) || ((((_la - 123)) & ~0x1f) == 0 && ((1 << (_la - 123)) & ((1 << (EParser.NONE - 123)) | (1 << (EParser.NULL - 123)) | (1 << (EParser.READ - 123)) | (1 << (EParser.SELF - 123)) | (1 << (EParser.TEST - 123)) | (1 << (EParser.THIS - 123)))) !== 0) || ((((_la - 161)) & ~0x1f) == 0 && ((1 << (_la - 161)) & ((1 << (EParser.WRITE - 161)) | (1 << (EParser.BOOLEAN_LITERAL - 161)) | (1 << (EParser.CHAR_LITERAL - 161)) | (1 << (EParser.SYMBOL_IDENTIFIER - 161)) | (1 << (EParser.TYPE_IDENTIFIER - 161)) | (1 << (EParser.VARIABLE_IDENTIFIER - 161)) | (1 << (EParser.NATIVE_IDENTIFIER - 161)) | (1 << (EParser.DOLLAR_IDENTIFIER - 161)) | (1 << (EParser.TEXT_LITERAL - 161)) | (1 << (EParser.INTEGER_LITERAL - 161)) | (1 << (EParser.DECIMAL_LITERAL - 161)))) !== 0)) {
this.state = 2487;
localctx.args = this.java_arguments(0);
}
this.state = 2490;
this.match(EParser.RPAR);
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Java_argumentsContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_java_arguments;
return this;
}
Java_argumentsContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Java_argumentsContext.prototype.constructor = Java_argumentsContext;
Java_argumentsContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function JavaArgumentListItemContext(parser, ctx) {
Java_argumentsContext.call(this, parser);
this.items = null; // Java_argumentsContext;
this.item = null; // Java_expressionContext;
Java_argumentsContext.prototype.copyFrom.call(this, ctx);
return this;
}
JavaArgumentListItemContext.prototype = Object.create(Java_argumentsContext.prototype);
JavaArgumentListItemContext.prototype.constructor = JavaArgumentListItemContext;
EParser.JavaArgumentListItemContext = JavaArgumentListItemContext;
JavaArgumentListItemContext.prototype.COMMA = function() {
return this.getToken(EParser.COMMA, 0);
};
JavaArgumentListItemContext.prototype.java_arguments = function() {
return this.getTypedRuleContext(Java_argumentsContext,0);
};
JavaArgumentListItemContext.prototype.java_expression = function() {
return this.getTypedRuleContext(Java_expressionContext,0);
};
JavaArgumentListItemContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJavaArgumentListItem(this);
}
};
JavaArgumentListItemContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJavaArgumentListItem(this);
}
};
function JavaArgumentListContext(parser, ctx) {
Java_argumentsContext.call(this, parser);
this.item = null; // Java_expressionContext;
Java_argumentsContext.prototype.copyFrom.call(this, ctx);
return this;
}
JavaArgumentListContext.prototype = Object.create(Java_argumentsContext.prototype);
JavaArgumentListContext.prototype.constructor = JavaArgumentListContext;
EParser.JavaArgumentListContext = JavaArgumentListContext;
JavaArgumentListContext.prototype.java_expression = function() {
return this.getTypedRuleContext(Java_expressionContext,0);
};
JavaArgumentListContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJavaArgumentList(this);
}
};
JavaArgumentListContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJavaArgumentList(this);
}
};
EParser.prototype.java_arguments = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new Java_argumentsContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 406;
this.enterRecursionRule(localctx, 406, EParser.RULE_java_arguments, _p);
try {
this.enterOuterAlt(localctx, 1);
localctx = new JavaArgumentListContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 2493;
localctx.item = this.java_expression(0);
this._ctx.stop = this._input.LT(-1);
this.state = 2500;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,211,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 JavaArgumentListItemContext(this, new Java_argumentsContext(this, _parentctx, _parentState));
localctx.items = _prevctx;
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_java_arguments);
this.state = 2495;
if (!( this.precpred(this._ctx, 1))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
}
this.state = 2496;
this.match(EParser.COMMA);
this.state = 2497;
localctx.item = this.java_expression(0);
}
this.state = 2502;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,211,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 Java_item_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 = EParser.RULE_java_item_expression;
this.exp = null; // Java_expressionContext
return this;
}
Java_item_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Java_item_expressionContext.prototype.constructor = Java_item_expressionContext;
Java_item_expressionContext.prototype.LBRAK = function() {
return this.getToken(EParser.LBRAK, 0);
};
Java_item_expressionContext.prototype.RBRAK = function() {
return this.getToken(EParser.RBRAK, 0);
};
Java_item_expressionContext.prototype.java_expression = function() {
return this.getTypedRuleContext(Java_expressionContext,0);
};
Java_item_expressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJava_item_expression(this);
}
};
Java_item_expressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJava_item_expression(this);
}
};
EParser.Java_item_expressionContext = Java_item_expressionContext;
EParser.prototype.java_item_expression = function() {
var localctx = new Java_item_expressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 408, EParser.RULE_java_item_expression);
try {
this.enterOuterAlt(localctx, 1);
this.state = 2503;
this.match(EParser.LBRAK);
this.state = 2504;
localctx.exp = this.java_expression(0);
this.state = 2505;
this.match(EParser.RBRAK);
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Java_parenthesis_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 = EParser.RULE_java_parenthesis_expression;
this.exp = null; // Java_expressionContext
return this;
}
Java_parenthesis_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Java_parenthesis_expressionContext.prototype.constructor = Java_parenthesis_expressionContext;
Java_parenthesis_expressionContext.prototype.LPAR = function() {
return this.getToken(EParser.LPAR, 0);
};
Java_parenthesis_expressionContext.prototype.RPAR = function() {
return this.getToken(EParser.RPAR, 0);
};
Java_parenthesis_expressionContext.prototype.java_expression = function() {
return this.getTypedRuleContext(Java_expressionContext,0);
};
Java_parenthesis_expressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJava_parenthesis_expression(this);
}
};
Java_parenthesis_expressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJava_parenthesis_expression(this);
}
};
EParser.Java_parenthesis_expressionContext = Java_parenthesis_expressionContext;
EParser.prototype.java_parenthesis_expression = function() {
var localctx = new Java_parenthesis_expressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 410, EParser.RULE_java_parenthesis_expression);
try {
this.enterOuterAlt(localctx, 1);
this.state = 2507;
this.match(EParser.LPAR);
this.state = 2508;
localctx.exp = this.java_expression(0);
this.state = 2509;
this.match(EParser.RPAR);
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Java_identifier_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 = EParser.RULE_java_identifier_expression;
return this;
}
Java_identifier_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Java_identifier_expressionContext.prototype.constructor = Java_identifier_expressionContext;
Java_identifier_expressionContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function JavaIdentifierContext(parser, ctx) {
Java_identifier_expressionContext.call(this, parser);
this.name = null; // Java_identifierContext;
Java_identifier_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
JavaIdentifierContext.prototype = Object.create(Java_identifier_expressionContext.prototype);
JavaIdentifierContext.prototype.constructor = JavaIdentifierContext;
EParser.JavaIdentifierContext = JavaIdentifierContext;
JavaIdentifierContext.prototype.java_identifier = function() {
return this.getTypedRuleContext(Java_identifierContext,0);
};
JavaIdentifierContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJavaIdentifier(this);
}
};
JavaIdentifierContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJavaIdentifier(this);
}
};
function JavaChildIdentifierContext(parser, ctx) {
Java_identifier_expressionContext.call(this, parser);
this.parent = null; // Java_identifier_expressionContext;
this.name = null; // Java_identifierContext;
Java_identifier_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
JavaChildIdentifierContext.prototype = Object.create(Java_identifier_expressionContext.prototype);
JavaChildIdentifierContext.prototype.constructor = JavaChildIdentifierContext;
EParser.JavaChildIdentifierContext = JavaChildIdentifierContext;
JavaChildIdentifierContext.prototype.DOT = function() {
return this.getToken(EParser.DOT, 0);
};
JavaChildIdentifierContext.prototype.java_identifier_expression = function() {
return this.getTypedRuleContext(Java_identifier_expressionContext,0);
};
JavaChildIdentifierContext.prototype.java_identifier = function() {
return this.getTypedRuleContext(Java_identifierContext,0);
};
JavaChildIdentifierContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJavaChildIdentifier(this);
}
};
JavaChildIdentifierContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJavaChildIdentifier(this);
}
};
EParser.prototype.java_identifier_expression = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new Java_identifier_expressionContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 412;
this.enterRecursionRule(localctx, 412, EParser.RULE_java_identifier_expression, _p);
try {
this.enterOuterAlt(localctx, 1);
localctx = new JavaIdentifierContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 2512;
localctx.name = this.java_identifier();
this._ctx.stop = this._input.LT(-1);
this.state = 2519;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,212,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 JavaChildIdentifierContext(this, new Java_identifier_expressionContext(this, _parentctx, _parentState));
localctx.parent = _prevctx;
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_java_identifier_expression);
this.state = 2514;
if (!( this.precpred(this._ctx, 1))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
}
this.state = 2515;
this.match(EParser.DOT);
this.state = 2516;
localctx.name = this.java_identifier();
}
this.state = 2521;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,212,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 Java_class_identifier_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 = EParser.RULE_java_class_identifier_expression;
return this;
}
Java_class_identifier_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Java_class_identifier_expressionContext.prototype.constructor = Java_class_identifier_expressionContext;
Java_class_identifier_expressionContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function JavaClassIdentifierContext(parser, ctx) {
Java_class_identifier_expressionContext.call(this, parser);
this.klass = null; // Java_identifier_expressionContext;
Java_class_identifier_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
JavaClassIdentifierContext.prototype = Object.create(Java_class_identifier_expressionContext.prototype);
JavaClassIdentifierContext.prototype.constructor = JavaClassIdentifierContext;
EParser.JavaClassIdentifierContext = JavaClassIdentifierContext;
JavaClassIdentifierContext.prototype.java_identifier_expression = function() {
return this.getTypedRuleContext(Java_identifier_expressionContext,0);
};
JavaClassIdentifierContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJavaClassIdentifier(this);
}
};
JavaClassIdentifierContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJavaClassIdentifier(this);
}
};
function JavaChildClassIdentifierContext(parser, ctx) {
Java_class_identifier_expressionContext.call(this, parser);
this.parent = null; // Java_class_identifier_expressionContext;
this.name = null; // Token;
Java_class_identifier_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
JavaChildClassIdentifierContext.prototype = Object.create(Java_class_identifier_expressionContext.prototype);
JavaChildClassIdentifierContext.prototype.constructor = JavaChildClassIdentifierContext;
EParser.JavaChildClassIdentifierContext = JavaChildClassIdentifierContext;
JavaChildClassIdentifierContext.prototype.java_class_identifier_expression = function() {
return this.getTypedRuleContext(Java_class_identifier_expressionContext,0);
};
JavaChildClassIdentifierContext.prototype.DOLLAR_IDENTIFIER = function() {
return this.getToken(EParser.DOLLAR_IDENTIFIER, 0);
};
JavaChildClassIdentifierContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJavaChildClassIdentifier(this);
}
};
JavaChildClassIdentifierContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJavaChildClassIdentifier(this);
}
};
EParser.prototype.java_class_identifier_expression = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new Java_class_identifier_expressionContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 414;
this.enterRecursionRule(localctx, 414, EParser.RULE_java_class_identifier_expression, _p);
try {
this.enterOuterAlt(localctx, 1);
localctx = new JavaClassIdentifierContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 2523;
localctx.klass = this.java_identifier_expression(0);
this._ctx.stop = this._input.LT(-1);
this.state = 2529;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,213,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
if(this._parseListeners!==null) {
this.triggerExitRuleEvent();
}
_prevctx = localctx;
localctx = new JavaChildClassIdentifierContext(this, new Java_class_identifier_expressionContext(this, _parentctx, _parentState));
localctx.parent = _prevctx;
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_java_class_identifier_expression);
this.state = 2525;
if (!( this.precpred(this._ctx, 1))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
}
this.state = 2526;
localctx.name = this.match(EParser.DOLLAR_IDENTIFIER);
}
this.state = 2531;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,213,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 Java_literal_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 = EParser.RULE_java_literal_expression;
return this;
}
Java_literal_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Java_literal_expressionContext.prototype.constructor = Java_literal_expressionContext;
Java_literal_expressionContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function JavaBooleanLiteralContext(parser, ctx) {
Java_literal_expressionContext.call(this, parser);
this.t = null; // Token;
Java_literal_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
JavaBooleanLiteralContext.prototype = Object.create(Java_literal_expressionContext.prototype);
JavaBooleanLiteralContext.prototype.constructor = JavaBooleanLiteralContext;
EParser.JavaBooleanLiteralContext = JavaBooleanLiteralContext;
JavaBooleanLiteralContext.prototype.BOOLEAN_LITERAL = function() {
return this.getToken(EParser.BOOLEAN_LITERAL, 0);
};
JavaBooleanLiteralContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJavaBooleanLiteral(this);
}
};
JavaBooleanLiteralContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJavaBooleanLiteral(this);
}
};
function JavaCharacterLiteralContext(parser, ctx) {
Java_literal_expressionContext.call(this, parser);
this.t = null; // Token;
Java_literal_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
JavaCharacterLiteralContext.prototype = Object.create(Java_literal_expressionContext.prototype);
JavaCharacterLiteralContext.prototype.constructor = JavaCharacterLiteralContext;
EParser.JavaCharacterLiteralContext = JavaCharacterLiteralContext;
JavaCharacterLiteralContext.prototype.CHAR_LITERAL = function() {
return this.getToken(EParser.CHAR_LITERAL, 0);
};
JavaCharacterLiteralContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJavaCharacterLiteral(this);
}
};
JavaCharacterLiteralContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJavaCharacterLiteral(this);
}
};
function JavaIntegerLiteralContext(parser, ctx) {
Java_literal_expressionContext.call(this, parser);
this.t = null; // Token;
Java_literal_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
JavaIntegerLiteralContext.prototype = Object.create(Java_literal_expressionContext.prototype);
JavaIntegerLiteralContext.prototype.constructor = JavaIntegerLiteralContext;
EParser.JavaIntegerLiteralContext = JavaIntegerLiteralContext;
JavaIntegerLiteralContext.prototype.INTEGER_LITERAL = function() {
return this.getToken(EParser.INTEGER_LITERAL, 0);
};
JavaIntegerLiteralContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJavaIntegerLiteral(this);
}
};
JavaIntegerLiteralContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJavaIntegerLiteral(this);
}
};
function JavaTextLiteralContext(parser, ctx) {
Java_literal_expressionContext.call(this, parser);
this.t = null; // Token;
Java_literal_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
JavaTextLiteralContext.prototype = Object.create(Java_literal_expressionContext.prototype);
JavaTextLiteralContext.prototype.constructor = JavaTextLiteralContext;
EParser.JavaTextLiteralContext = JavaTextLiteralContext;
JavaTextLiteralContext.prototype.TEXT_LITERAL = function() {
return this.getToken(EParser.TEXT_LITERAL, 0);
};
JavaTextLiteralContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJavaTextLiteral(this);
}
};
JavaTextLiteralContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJavaTextLiteral(this);
}
};
function JavaDecimalLiteralContext(parser, ctx) {
Java_literal_expressionContext.call(this, parser);
this.t = null; // Token;
Java_literal_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
JavaDecimalLiteralContext.prototype = Object.create(Java_literal_expressionContext.prototype);
JavaDecimalLiteralContext.prototype.constructor = JavaDecimalLiteralContext;
EParser.JavaDecimalLiteralContext = JavaDecimalLiteralContext;
JavaDecimalLiteralContext.prototype.DECIMAL_LITERAL = function() {
return this.getToken(EParser.DECIMAL_LITERAL, 0);
};
JavaDecimalLiteralContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJavaDecimalLiteral(this);
}
};
JavaDecimalLiteralContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJavaDecimalLiteral(this);
}
};
EParser.Java_literal_expressionContext = Java_literal_expressionContext;
EParser.prototype.java_literal_expression = function() {
var localctx = new Java_literal_expressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 416, EParser.RULE_java_literal_expression);
try {
this.state = 2537;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case EParser.INTEGER_LITERAL:
localctx = new JavaIntegerLiteralContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 2532;
localctx.t = this.match(EParser.INTEGER_LITERAL);
break;
case EParser.DECIMAL_LITERAL:
localctx = new JavaDecimalLiteralContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 2533;
localctx.t = this.match(EParser.DECIMAL_LITERAL);
break;
case EParser.TEXT_LITERAL:
localctx = new JavaTextLiteralContext(this, localctx);
this.enterOuterAlt(localctx, 3);
this.state = 2534;
localctx.t = this.match(EParser.TEXT_LITERAL);
break;
case EParser.BOOLEAN_LITERAL:
localctx = new JavaBooleanLiteralContext(this, localctx);
this.enterOuterAlt(localctx, 4);
this.state = 2535;
localctx.t = this.match(EParser.BOOLEAN_LITERAL);
break;
case EParser.CHAR_LITERAL:
localctx = new JavaCharacterLiteralContext(this, localctx);
this.enterOuterAlt(localctx, 5);
this.state = 2536;
localctx.t = this.match(EParser.CHAR_LITERAL);
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 Java_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 = EParser.RULE_java_identifier;
return this;
}
Java_identifierContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Java_identifierContext.prototype.constructor = Java_identifierContext;
Java_identifierContext.prototype.VARIABLE_IDENTIFIER = function() {
return this.getToken(EParser.VARIABLE_IDENTIFIER, 0);
};
Java_identifierContext.prototype.SYMBOL_IDENTIFIER = function() {
return this.getToken(EParser.SYMBOL_IDENTIFIER, 0);
};
Java_identifierContext.prototype.NATIVE_IDENTIFIER = function() {
return this.getToken(EParser.NATIVE_IDENTIFIER, 0);
};
Java_identifierContext.prototype.DOLLAR_IDENTIFIER = function() {
return this.getToken(EParser.DOLLAR_IDENTIFIER, 0);
};
Java_identifierContext.prototype.TYPE_IDENTIFIER = function() {
return this.getToken(EParser.TYPE_IDENTIFIER, 0);
};
Java_identifierContext.prototype.BOOLEAN = function() {
return this.getToken(EParser.BOOLEAN, 0);
};
Java_identifierContext.prototype.CHARACTER = function() {
return this.getToken(EParser.CHARACTER, 0);
};
Java_identifierContext.prototype.TEXT = function() {
return this.getToken(EParser.TEXT, 0);
};
Java_identifierContext.prototype.INTEGER = function() {
return this.getToken(EParser.INTEGER, 0);
};
Java_identifierContext.prototype.DECIMAL = function() {
return this.getToken(EParser.DECIMAL, 0);
};
Java_identifierContext.prototype.DATE = function() {
return this.getToken(EParser.DATE, 0);
};
Java_identifierContext.prototype.TIME = function() {
return this.getToken(EParser.TIME, 0);
};
Java_identifierContext.prototype.DATETIME = function() {
return this.getToken(EParser.DATETIME, 0);
};
Java_identifierContext.prototype.PERIOD = function() {
return this.getToken(EParser.PERIOD, 0);
};
Java_identifierContext.prototype.VERSION = function() {
return this.getToken(EParser.VERSION, 0);
};
Java_identifierContext.prototype.UUID = function() {
return this.getToken(EParser.UUID, 0);
};
Java_identifierContext.prototype.HTML = function() {
return this.getToken(EParser.HTML, 0);
};
Java_identifierContext.prototype.READ = function() {
return this.getToken(EParser.READ, 0);
};
Java_identifierContext.prototype.WRITE = function() {
return this.getToken(EParser.WRITE, 0);
};
Java_identifierContext.prototype.TEST = function() {
return this.getToken(EParser.TEST, 0);
};
Java_identifierContext.prototype.SELF = function() {
return this.getToken(EParser.SELF, 0);
};
Java_identifierContext.prototype.NONE = function() {
return this.getToken(EParser.NONE, 0);
};
Java_identifierContext.prototype.NULL = function() {
return this.getToken(EParser.NULL, 0);
};
Java_identifierContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJava_identifier(this);
}
};
Java_identifierContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJava_identifier(this);
}
};
EParser.Java_identifierContext = Java_identifierContext;
EParser.prototype.java_identifier = function() {
var localctx = new Java_identifierContext(this, this._ctx, this.state);
this.enterRule(localctx, 418, EParser.RULE_java_identifier);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 2539;
_la = this._input.LA(1);
if(!(((((_la - 51)) & ~0x1f) == 0 && ((1 << (_la - 51)) & ((1 << (EParser.BOOLEAN - 51)) | (1 << (EParser.CHARACTER - 51)) | (1 << (EParser.TEXT - 51)) | (1 << (EParser.INTEGER - 51)) | (1 << (EParser.DECIMAL - 51)) | (1 << (EParser.DATE - 51)) | (1 << (EParser.TIME - 51)) | (1 << (EParser.DATETIME - 51)) | (1 << (EParser.PERIOD - 51)) | (1 << (EParser.VERSION - 51)) | (1 << (EParser.UUID - 51)) | (1 << (EParser.HTML - 51)))) !== 0) || ((((_la - 123)) & ~0x1f) == 0 && ((1 << (_la - 123)) & ((1 << (EParser.NONE - 123)) | (1 << (EParser.NULL - 123)) | (1 << (EParser.READ - 123)) | (1 << (EParser.SELF - 123)) | (1 << (EParser.TEST - 123)))) !== 0) || ((((_la - 161)) & ~0x1f) == 0 && ((1 << (_la - 161)) & ((1 << (EParser.WRITE - 161)) | (1 << (EParser.SYMBOL_IDENTIFIER - 161)) | (1 << (EParser.TYPE_IDENTIFIER - 161)) | (1 << (EParser.VARIABLE_IDENTIFIER - 161)) | (1 << (EParser.NATIVE_IDENTIFIER - 161)) | (1 << (EParser.DOLLAR_IDENTIFIER - 161)))) !== 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 Csharp_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 = EParser.RULE_csharp_statement;
return this;
}
Csharp_statementContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Csharp_statementContext.prototype.constructor = Csharp_statementContext;
Csharp_statementContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function CSharpReturnStatementContext(parser, ctx) {
Csharp_statementContext.call(this, parser);
this.exp = null; // Csharp_expressionContext;
Csharp_statementContext.prototype.copyFrom.call(this, ctx);
return this;
}
CSharpReturnStatementContext.prototype = Object.create(Csharp_statementContext.prototype);
CSharpReturnStatementContext.prototype.constructor = CSharpReturnStatementContext;
EParser.CSharpReturnStatementContext = CSharpReturnStatementContext;
CSharpReturnStatementContext.prototype.RETURN = function() {
return this.getToken(EParser.RETURN, 0);
};
CSharpReturnStatementContext.prototype.SEMI = function() {
return this.getToken(EParser.SEMI, 0);
};
CSharpReturnStatementContext.prototype.csharp_expression = function() {
return this.getTypedRuleContext(Csharp_expressionContext,0);
};
CSharpReturnStatementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterCSharpReturnStatement(this);
}
};
CSharpReturnStatementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitCSharpReturnStatement(this);
}
};
function CSharpStatementContext(parser, ctx) {
Csharp_statementContext.call(this, parser);
this.exp = null; // Csharp_expressionContext;
Csharp_statementContext.prototype.copyFrom.call(this, ctx);
return this;
}
CSharpStatementContext.prototype = Object.create(Csharp_statementContext.prototype);
CSharpStatementContext.prototype.constructor = CSharpStatementContext;
EParser.CSharpStatementContext = CSharpStatementContext;
CSharpStatementContext.prototype.SEMI = function() {
return this.getToken(EParser.SEMI, 0);
};
CSharpStatementContext.prototype.csharp_expression = function() {
return this.getTypedRuleContext(Csharp_expressionContext,0);
};
CSharpStatementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterCSharpStatement(this);
}
};
CSharpStatementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitCSharpStatement(this);
}
};
EParser.Csharp_statementContext = Csharp_statementContext;
EParser.prototype.csharp_statement = function() {
var localctx = new Csharp_statementContext(this, this._ctx, this.state);
this.enterRule(localctx, 420, EParser.RULE_csharp_statement);
try {
this.state = 2548;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case EParser.RETURN:
localctx = new CSharpReturnStatementContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 2541;
this.match(EParser.RETURN);
this.state = 2542;
localctx.exp = this.csharp_expression(0);
this.state = 2543;
this.match(EParser.SEMI);
break;
case EParser.LPAR:
case EParser.BOOLEAN:
case EParser.CHARACTER:
case EParser.TEXT:
case EParser.INTEGER:
case EParser.DECIMAL:
case EParser.DATE:
case EParser.TIME:
case EParser.DATETIME:
case EParser.PERIOD:
case EParser.VERSION:
case EParser.UUID:
case EParser.HTML:
case EParser.NONE:
case EParser.NULL:
case EParser.READ:
case EParser.SELF:
case EParser.TEST:
case EParser.THIS:
case EParser.WRITE:
case EParser.BOOLEAN_LITERAL:
case EParser.CHAR_LITERAL:
case EParser.SYMBOL_IDENTIFIER:
case EParser.TYPE_IDENTIFIER:
case EParser.VARIABLE_IDENTIFIER:
case EParser.DOLLAR_IDENTIFIER:
case EParser.TEXT_LITERAL:
case EParser.INTEGER_LITERAL:
case EParser.DECIMAL_LITERAL:
localctx = new CSharpStatementContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 2545;
localctx.exp = this.csharp_expression(0);
this.state = 2546;
this.match(EParser.SEMI);
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 Csharp_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 = EParser.RULE_csharp_expression;
return this;
}
Csharp_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Csharp_expressionContext.prototype.constructor = Csharp_expressionContext;
Csharp_expressionContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function CSharpSelectorExpressionContext(parser, ctx) {
Csharp_expressionContext.call(this, parser);
this.parent = null; // Csharp_expressionContext;
this.child = null; // Csharp_selector_expressionContext;
Csharp_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
CSharpSelectorExpressionContext.prototype = Object.create(Csharp_expressionContext.prototype);
CSharpSelectorExpressionContext.prototype.constructor = CSharpSelectorExpressionContext;
EParser.CSharpSelectorExpressionContext = CSharpSelectorExpressionContext;
CSharpSelectorExpressionContext.prototype.csharp_expression = function() {
return this.getTypedRuleContext(Csharp_expressionContext,0);
};
CSharpSelectorExpressionContext.prototype.csharp_selector_expression = function() {
return this.getTypedRuleContext(Csharp_selector_expressionContext,0);
};
CSharpSelectorExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterCSharpSelectorExpression(this);
}
};
CSharpSelectorExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitCSharpSelectorExpression(this);
}
};
function CSharpPrimaryExpressionContext(parser, ctx) {
Csharp_expressionContext.call(this, parser);
this.exp = null; // Csharp_primary_expressionContext;
Csharp_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
CSharpPrimaryExpressionContext.prototype = Object.create(Csharp_expressionContext.prototype);
CSharpPrimaryExpressionContext.prototype.constructor = CSharpPrimaryExpressionContext;
EParser.CSharpPrimaryExpressionContext = CSharpPrimaryExpressionContext;
CSharpPrimaryExpressionContext.prototype.csharp_primary_expression = function() {
return this.getTypedRuleContext(Csharp_primary_expressionContext,0);
};
CSharpPrimaryExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterCSharpPrimaryExpression(this);
}
};
CSharpPrimaryExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitCSharpPrimaryExpression(this);
}
};
EParser.prototype.csharp_expression = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new Csharp_expressionContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 422;
this.enterRecursionRule(localctx, 422, EParser.RULE_csharp_expression, _p);
try {
this.enterOuterAlt(localctx, 1);
localctx = new CSharpPrimaryExpressionContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 2551;
localctx.exp = this.csharp_primary_expression();
this._ctx.stop = this._input.LT(-1);
this.state = 2557;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,216,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
if(this._parseListeners!==null) {
this.triggerExitRuleEvent();
}
_prevctx = localctx;
localctx = new CSharpSelectorExpressionContext(this, new Csharp_expressionContext(this, _parentctx, _parentState));
localctx.parent = _prevctx;
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_csharp_expression);
this.state = 2553;
if (!( this.precpred(this._ctx, 1))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
}
this.state = 2554;
localctx.child = this.csharp_selector_expression();
}
this.state = 2559;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,216,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 Csharp_primary_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 = EParser.RULE_csharp_primary_expression;
return this;
}
Csharp_primary_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Csharp_primary_expressionContext.prototype.constructor = Csharp_primary_expressionContext;
Csharp_primary_expressionContext.prototype.csharp_this_expression = function() {
return this.getTypedRuleContext(Csharp_this_expressionContext,0);
};
Csharp_primary_expressionContext.prototype.csharp_new_expression = function() {
return this.getTypedRuleContext(Csharp_new_expressionContext,0);
};
Csharp_primary_expressionContext.prototype.csharp_parenthesis_expression = function() {
return this.getTypedRuleContext(Csharp_parenthesis_expressionContext,0);
};
Csharp_primary_expressionContext.prototype.csharp_identifier_expression = function() {
return this.getTypedRuleContext(Csharp_identifier_expressionContext,0);
};
Csharp_primary_expressionContext.prototype.csharp_literal_expression = function() {
return this.getTypedRuleContext(Csharp_literal_expressionContext,0);
};
Csharp_primary_expressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterCsharp_primary_expression(this);
}
};
Csharp_primary_expressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitCsharp_primary_expression(this);
}
};
EParser.Csharp_primary_expressionContext = Csharp_primary_expressionContext;
EParser.prototype.csharp_primary_expression = function() {
var localctx = new Csharp_primary_expressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 424, EParser.RULE_csharp_primary_expression);
try {
this.state = 2565;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,217,this._ctx);
switch(la_) {
case 1:
this.enterOuterAlt(localctx, 1);
this.state = 2560;
this.csharp_this_expression();
break;
case 2:
this.enterOuterAlt(localctx, 2);
this.state = 2561;
this.csharp_new_expression();
break;
case 3:
this.enterOuterAlt(localctx, 3);
this.state = 2562;
this.csharp_parenthesis_expression();
break;
case 4:
this.enterOuterAlt(localctx, 4);
this.state = 2563;
this.csharp_identifier_expression(0);
break;
case 5:
this.enterOuterAlt(localctx, 5);
this.state = 2564;
this.csharp_literal_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 Csharp_this_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 = EParser.RULE_csharp_this_expression;
return this;
}
Csharp_this_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Csharp_this_expressionContext.prototype.constructor = Csharp_this_expressionContext;
Csharp_this_expressionContext.prototype.this_expression = function() {
return this.getTypedRuleContext(This_expressionContext,0);
};
Csharp_this_expressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterCsharp_this_expression(this);
}
};
Csharp_this_expressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitCsharp_this_expression(this);
}
};
EParser.Csharp_this_expressionContext = Csharp_this_expressionContext;
EParser.prototype.csharp_this_expression = function() {
var localctx = new Csharp_this_expressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 426, EParser.RULE_csharp_this_expression);
try {
this.enterOuterAlt(localctx, 1);
this.state = 2567;
this.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 Csharp_new_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 = EParser.RULE_csharp_new_expression;
return this;
}
Csharp_new_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Csharp_new_expressionContext.prototype.constructor = Csharp_new_expressionContext;
Csharp_new_expressionContext.prototype.new_token = function() {
return this.getTypedRuleContext(New_tokenContext,0);
};
Csharp_new_expressionContext.prototype.csharp_method_expression = function() {
return this.getTypedRuleContext(Csharp_method_expressionContext,0);
};
Csharp_new_expressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterCsharp_new_expression(this);
}
};
Csharp_new_expressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitCsharp_new_expression(this);
}
};
EParser.Csharp_new_expressionContext = Csharp_new_expressionContext;
EParser.prototype.csharp_new_expression = function() {
var localctx = new Csharp_new_expressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 428, EParser.RULE_csharp_new_expression);
try {
this.enterOuterAlt(localctx, 1);
this.state = 2569;
this.new_token();
this.state = 2570;
this.csharp_method_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 Csharp_selector_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 = EParser.RULE_csharp_selector_expression;
return this;
}
Csharp_selector_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Csharp_selector_expressionContext.prototype.constructor = Csharp_selector_expressionContext;
Csharp_selector_expressionContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function CSharpMethodExpressionContext(parser, ctx) {
Csharp_selector_expressionContext.call(this, parser);
this.exp = null; // Csharp_method_expressionContext;
Csharp_selector_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
CSharpMethodExpressionContext.prototype = Object.create(Csharp_selector_expressionContext.prototype);
CSharpMethodExpressionContext.prototype.constructor = CSharpMethodExpressionContext;
EParser.CSharpMethodExpressionContext = CSharpMethodExpressionContext;
CSharpMethodExpressionContext.prototype.DOT = function() {
return this.getToken(EParser.DOT, 0);
};
CSharpMethodExpressionContext.prototype.csharp_method_expression = function() {
return this.getTypedRuleContext(Csharp_method_expressionContext,0);
};
CSharpMethodExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterCSharpMethodExpression(this);
}
};
CSharpMethodExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitCSharpMethodExpression(this);
}
};
function CSharpItemExpressionContext(parser, ctx) {
Csharp_selector_expressionContext.call(this, parser);
this.exp = null; // Csharp_item_expressionContext;
Csharp_selector_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
CSharpItemExpressionContext.prototype = Object.create(Csharp_selector_expressionContext.prototype);
CSharpItemExpressionContext.prototype.constructor = CSharpItemExpressionContext;
EParser.CSharpItemExpressionContext = CSharpItemExpressionContext;
CSharpItemExpressionContext.prototype.csharp_item_expression = function() {
return this.getTypedRuleContext(Csharp_item_expressionContext,0);
};
CSharpItemExpressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterCSharpItemExpression(this);
}
};
CSharpItemExpressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitCSharpItemExpression(this);
}
};
EParser.Csharp_selector_expressionContext = Csharp_selector_expressionContext;
EParser.prototype.csharp_selector_expression = function() {
var localctx = new Csharp_selector_expressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 430, EParser.RULE_csharp_selector_expression);
try {
this.state = 2575;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case EParser.DOT:
localctx = new CSharpMethodExpressionContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 2572;
this.match(EParser.DOT);
this.state = 2573;
localctx.exp = this.csharp_method_expression();
break;
case EParser.LBRAK:
localctx = new CSharpItemExpressionContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 2574;
localctx.exp = this.csharp_item_expression();
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 Csharp_method_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 = EParser.RULE_csharp_method_expression;
this.name = null; // Csharp_identifierContext
this.args = null; // Csharp_argumentsContext
return this;
}
Csharp_method_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Csharp_method_expressionContext.prototype.constructor = Csharp_method_expressionContext;
Csharp_method_expressionContext.prototype.LPAR = function() {
return this.getToken(EParser.LPAR, 0);
};
Csharp_method_expressionContext.prototype.RPAR = function() {
return this.getToken(EParser.RPAR, 0);
};
Csharp_method_expressionContext.prototype.csharp_identifier = function() {
return this.getTypedRuleContext(Csharp_identifierContext,0);
};
Csharp_method_expressionContext.prototype.csharp_arguments = function() {
return this.getTypedRuleContext(Csharp_argumentsContext,0);
};
Csharp_method_expressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterCsharp_method_expression(this);
}
};
Csharp_method_expressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitCsharp_method_expression(this);
}
};
EParser.Csharp_method_expressionContext = Csharp_method_expressionContext;
EParser.prototype.csharp_method_expression = function() {
var localctx = new Csharp_method_expressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 432, EParser.RULE_csharp_method_expression);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 2577;
localctx.name = this.csharp_identifier();
this.state = 2578;
this.match(EParser.LPAR);
this.state = 2580;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.LPAR || ((((_la - 51)) & ~0x1f) == 0 && ((1 << (_la - 51)) & ((1 << (EParser.BOOLEAN - 51)) | (1 << (EParser.CHARACTER - 51)) | (1 << (EParser.TEXT - 51)) | (1 << (EParser.INTEGER - 51)) | (1 << (EParser.DECIMAL - 51)) | (1 << (EParser.DATE - 51)) | (1 << (EParser.TIME - 51)) | (1 << (EParser.DATETIME - 51)) | (1 << (EParser.PERIOD - 51)) | (1 << (EParser.VERSION - 51)) | (1 << (EParser.UUID - 51)) | (1 << (EParser.HTML - 51)))) !== 0) || ((((_la - 123)) & ~0x1f) == 0 && ((1 << (_la - 123)) & ((1 << (EParser.NONE - 123)) | (1 << (EParser.NULL - 123)) | (1 << (EParser.READ - 123)) | (1 << (EParser.SELF - 123)) | (1 << (EParser.TEST - 123)) | (1 << (EParser.THIS - 123)))) !== 0) || ((((_la - 161)) & ~0x1f) == 0 && ((1 << (_la - 161)) & ((1 << (EParser.WRITE - 161)) | (1 << (EParser.BOOLEAN_LITERAL - 161)) | (1 << (EParser.CHAR_LITERAL - 161)) | (1 << (EParser.SYMBOL_IDENTIFIER - 161)) | (1 << (EParser.TYPE_IDENTIFIER - 161)) | (1 << (EParser.VARIABLE_IDENTIFIER - 161)) | (1 << (EParser.DOLLAR_IDENTIFIER - 161)) | (1 << (EParser.TEXT_LITERAL - 161)) | (1 << (EParser.INTEGER_LITERAL - 161)) | (1 << (EParser.DECIMAL_LITERAL - 161)))) !== 0)) {
this.state = 2579;
localctx.args = this.csharp_arguments(0);
}
this.state = 2582;
this.match(EParser.RPAR);
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Csharp_argumentsContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_csharp_arguments;
return this;
}
Csharp_argumentsContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Csharp_argumentsContext.prototype.constructor = Csharp_argumentsContext;
Csharp_argumentsContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function CSharpArgumentListContext(parser, ctx) {
Csharp_argumentsContext.call(this, parser);
this.item = null; // Csharp_expressionContext;
Csharp_argumentsContext.prototype.copyFrom.call(this, ctx);
return this;
}
CSharpArgumentListContext.prototype = Object.create(Csharp_argumentsContext.prototype);
CSharpArgumentListContext.prototype.constructor = CSharpArgumentListContext;
EParser.CSharpArgumentListContext = CSharpArgumentListContext;
CSharpArgumentListContext.prototype.csharp_expression = function() {
return this.getTypedRuleContext(Csharp_expressionContext,0);
};
CSharpArgumentListContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterCSharpArgumentList(this);
}
};
CSharpArgumentListContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitCSharpArgumentList(this);
}
};
function CSharpArgumentListItemContext(parser, ctx) {
Csharp_argumentsContext.call(this, parser);
this.items = null; // Csharp_argumentsContext;
this.item = null; // Csharp_expressionContext;
Csharp_argumentsContext.prototype.copyFrom.call(this, ctx);
return this;
}
CSharpArgumentListItemContext.prototype = Object.create(Csharp_argumentsContext.prototype);
CSharpArgumentListItemContext.prototype.constructor = CSharpArgumentListItemContext;
EParser.CSharpArgumentListItemContext = CSharpArgumentListItemContext;
CSharpArgumentListItemContext.prototype.COMMA = function() {
return this.getToken(EParser.COMMA, 0);
};
CSharpArgumentListItemContext.prototype.csharp_arguments = function() {
return this.getTypedRuleContext(Csharp_argumentsContext,0);
};
CSharpArgumentListItemContext.prototype.csharp_expression = function() {
return this.getTypedRuleContext(Csharp_expressionContext,0);
};
CSharpArgumentListItemContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterCSharpArgumentListItem(this);
}
};
CSharpArgumentListItemContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitCSharpArgumentListItem(this);
}
};
EParser.prototype.csharp_arguments = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new Csharp_argumentsContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 434;
this.enterRecursionRule(localctx, 434, EParser.RULE_csharp_arguments, _p);
try {
this.enterOuterAlt(localctx, 1);
localctx = new CSharpArgumentListContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 2585;
localctx.item = this.csharp_expression(0);
this._ctx.stop = this._input.LT(-1);
this.state = 2592;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,220,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 CSharpArgumentListItemContext(this, new Csharp_argumentsContext(this, _parentctx, _parentState));
localctx.items = _prevctx;
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_csharp_arguments);
this.state = 2587;
if (!( this.precpred(this._ctx, 1))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
}
this.state = 2588;
this.match(EParser.COMMA);
this.state = 2589;
localctx.item = this.csharp_expression(0);
}
this.state = 2594;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,220,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 Csharp_item_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 = EParser.RULE_csharp_item_expression;
this.exp = null; // Csharp_expressionContext
return this;
}
Csharp_item_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Csharp_item_expressionContext.prototype.constructor = Csharp_item_expressionContext;
Csharp_item_expressionContext.prototype.LBRAK = function() {
return this.getToken(EParser.LBRAK, 0);
};
Csharp_item_expressionContext.prototype.RBRAK = function() {
return this.getToken(EParser.RBRAK, 0);
};
Csharp_item_expressionContext.prototype.csharp_expression = function() {
return this.getTypedRuleContext(Csharp_expressionContext,0);
};
Csharp_item_expressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterCsharp_item_expression(this);
}
};
Csharp_item_expressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitCsharp_item_expression(this);
}
};
EParser.Csharp_item_expressionContext = Csharp_item_expressionContext;
EParser.prototype.csharp_item_expression = function() {
var localctx = new Csharp_item_expressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 436, EParser.RULE_csharp_item_expression);
try {
this.enterOuterAlt(localctx, 1);
this.state = 2595;
this.match(EParser.LBRAK);
this.state = 2596;
localctx.exp = this.csharp_expression(0);
this.state = 2597;
this.match(EParser.RBRAK);
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Csharp_parenthesis_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 = EParser.RULE_csharp_parenthesis_expression;
this.exp = null; // Csharp_expressionContext
return this;
}
Csharp_parenthesis_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Csharp_parenthesis_expressionContext.prototype.constructor = Csharp_parenthesis_expressionContext;
Csharp_parenthesis_expressionContext.prototype.LPAR = function() {
return this.getToken(EParser.LPAR, 0);
};
Csharp_parenthesis_expressionContext.prototype.RPAR = function() {
return this.getToken(EParser.RPAR, 0);
};
Csharp_parenthesis_expressionContext.prototype.csharp_expression = function() {
return this.getTypedRuleContext(Csharp_expressionContext,0);
};
Csharp_parenthesis_expressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterCsharp_parenthesis_expression(this);
}
};
Csharp_parenthesis_expressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitCsharp_parenthesis_expression(this);
}
};
EParser.Csharp_parenthesis_expressionContext = Csharp_parenthesis_expressionContext;
EParser.prototype.csharp_parenthesis_expression = function() {
var localctx = new Csharp_parenthesis_expressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 438, EParser.RULE_csharp_parenthesis_expression);
try {
this.enterOuterAlt(localctx, 1);
this.state = 2599;
this.match(EParser.LPAR);
this.state = 2600;
localctx.exp = this.csharp_expression(0);
this.state = 2601;
this.match(EParser.RPAR);
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Csharp_identifier_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 = EParser.RULE_csharp_identifier_expression;
return this;
}
Csharp_identifier_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Csharp_identifier_expressionContext.prototype.constructor = Csharp_identifier_expressionContext;
Csharp_identifier_expressionContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function CSharpIdentifierContext(parser, ctx) {
Csharp_identifier_expressionContext.call(this, parser);
this.name = null; // Csharp_identifierContext;
Csharp_identifier_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
CSharpIdentifierContext.prototype = Object.create(Csharp_identifier_expressionContext.prototype);
CSharpIdentifierContext.prototype.constructor = CSharpIdentifierContext;
EParser.CSharpIdentifierContext = CSharpIdentifierContext;
CSharpIdentifierContext.prototype.csharp_identifier = function() {
return this.getTypedRuleContext(Csharp_identifierContext,0);
};
CSharpIdentifierContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterCSharpIdentifier(this);
}
};
CSharpIdentifierContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitCSharpIdentifier(this);
}
};
function CSharpChildIdentifierContext(parser, ctx) {
Csharp_identifier_expressionContext.call(this, parser);
this.parent = null; // Csharp_identifier_expressionContext;
this.name = null; // Csharp_identifierContext;
Csharp_identifier_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
CSharpChildIdentifierContext.prototype = Object.create(Csharp_identifier_expressionContext.prototype);
CSharpChildIdentifierContext.prototype.constructor = CSharpChildIdentifierContext;
EParser.CSharpChildIdentifierContext = CSharpChildIdentifierContext;
CSharpChildIdentifierContext.prototype.DOT = function() {
return this.getToken(EParser.DOT, 0);
};
CSharpChildIdentifierContext.prototype.csharp_identifier_expression = function() {
return this.getTypedRuleContext(Csharp_identifier_expressionContext,0);
};
CSharpChildIdentifierContext.prototype.csharp_identifier = function() {
return this.getTypedRuleContext(Csharp_identifierContext,0);
};
CSharpChildIdentifierContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterCSharpChildIdentifier(this);
}
};
CSharpChildIdentifierContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitCSharpChildIdentifier(this);
}
};
function CSharpPromptoIdentifierContext(parser, ctx) {
Csharp_identifier_expressionContext.call(this, parser);
Csharp_identifier_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
CSharpPromptoIdentifierContext.prototype = Object.create(Csharp_identifier_expressionContext.prototype);
CSharpPromptoIdentifierContext.prototype.constructor = CSharpPromptoIdentifierContext;
EParser.CSharpPromptoIdentifierContext = CSharpPromptoIdentifierContext;
CSharpPromptoIdentifierContext.prototype.DOLLAR_IDENTIFIER = function() {
return this.getToken(EParser.DOLLAR_IDENTIFIER, 0);
};
CSharpPromptoIdentifierContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterCSharpPromptoIdentifier(this);
}
};
CSharpPromptoIdentifierContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitCSharpPromptoIdentifier(this);
}
};
EParser.prototype.csharp_identifier_expression = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new Csharp_identifier_expressionContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 440;
this.enterRecursionRule(localctx, 440, EParser.RULE_csharp_identifier_expression, _p);
try {
this.enterOuterAlt(localctx, 1);
this.state = 2606;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case EParser.DOLLAR_IDENTIFIER:
localctx = new CSharpPromptoIdentifierContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 2604;
this.match(EParser.DOLLAR_IDENTIFIER);
break;
case EParser.BOOLEAN:
case EParser.CHARACTER:
case EParser.TEXT:
case EParser.INTEGER:
case EParser.DECIMAL:
case EParser.DATE:
case EParser.TIME:
case EParser.DATETIME:
case EParser.PERIOD:
case EParser.VERSION:
case EParser.UUID:
case EParser.HTML:
case EParser.NONE:
case EParser.NULL:
case EParser.READ:
case EParser.SELF:
case EParser.TEST:
case EParser.WRITE:
case EParser.SYMBOL_IDENTIFIER:
case EParser.TYPE_IDENTIFIER:
case EParser.VARIABLE_IDENTIFIER:
localctx = new CSharpIdentifierContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 2605;
localctx.name = this.csharp_identifier();
break;
default:
throw new antlr4.error.NoViableAltException(this);
}
this._ctx.stop = this._input.LT(-1);
this.state = 2613;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,222,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 CSharpChildIdentifierContext(this, new Csharp_identifier_expressionContext(this, _parentctx, _parentState));
localctx.parent = _prevctx;
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_csharp_identifier_expression);
this.state = 2608;
if (!( this.precpred(this._ctx, 1))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
}
this.state = 2609;
this.match(EParser.DOT);
this.state = 2610;
localctx.name = this.csharp_identifier();
}
this.state = 2615;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,222,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 Csharp_literal_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 = EParser.RULE_csharp_literal_expression;
return this;
}
Csharp_literal_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Csharp_literal_expressionContext.prototype.constructor = Csharp_literal_expressionContext;
Csharp_literal_expressionContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function CSharpBooleanLiteralContext(parser, ctx) {
Csharp_literal_expressionContext.call(this, parser);
Csharp_literal_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
CSharpBooleanLiteralContext.prototype = Object.create(Csharp_literal_expressionContext.prototype);
CSharpBooleanLiteralContext.prototype.constructor = CSharpBooleanLiteralContext;
EParser.CSharpBooleanLiteralContext = CSharpBooleanLiteralContext;
CSharpBooleanLiteralContext.prototype.BOOLEAN_LITERAL = function() {
return this.getToken(EParser.BOOLEAN_LITERAL, 0);
};
CSharpBooleanLiteralContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterCSharpBooleanLiteral(this);
}
};
CSharpBooleanLiteralContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitCSharpBooleanLiteral(this);
}
};
function CSharpIntegerLiteralContext(parser, ctx) {
Csharp_literal_expressionContext.call(this, parser);
Csharp_literal_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
CSharpIntegerLiteralContext.prototype = Object.create(Csharp_literal_expressionContext.prototype);
CSharpIntegerLiteralContext.prototype.constructor = CSharpIntegerLiteralContext;
EParser.CSharpIntegerLiteralContext = CSharpIntegerLiteralContext;
CSharpIntegerLiteralContext.prototype.INTEGER_LITERAL = function() {
return this.getToken(EParser.INTEGER_LITERAL, 0);
};
CSharpIntegerLiteralContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterCSharpIntegerLiteral(this);
}
};
CSharpIntegerLiteralContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitCSharpIntegerLiteral(this);
}
};
function CSharpDecimalLiteralContext(parser, ctx) {
Csharp_literal_expressionContext.call(this, parser);
Csharp_literal_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
CSharpDecimalLiteralContext.prototype = Object.create(Csharp_literal_expressionContext.prototype);
CSharpDecimalLiteralContext.prototype.constructor = CSharpDecimalLiteralContext;
EParser.CSharpDecimalLiteralContext = CSharpDecimalLiteralContext;
CSharpDecimalLiteralContext.prototype.DECIMAL_LITERAL = function() {
return this.getToken(EParser.DECIMAL_LITERAL, 0);
};
CSharpDecimalLiteralContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterCSharpDecimalLiteral(this);
}
};
CSharpDecimalLiteralContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitCSharpDecimalLiteral(this);
}
};
function CSharpCharacterLiteralContext(parser, ctx) {
Csharp_literal_expressionContext.call(this, parser);
Csharp_literal_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
CSharpCharacterLiteralContext.prototype = Object.create(Csharp_literal_expressionContext.prototype);
CSharpCharacterLiteralContext.prototype.constructor = CSharpCharacterLiteralContext;
EParser.CSharpCharacterLiteralContext = CSharpCharacterLiteralContext;
CSharpCharacterLiteralContext.prototype.CHAR_LITERAL = function() {
return this.getToken(EParser.CHAR_LITERAL, 0);
};
CSharpCharacterLiteralContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterCSharpCharacterLiteral(this);
}
};
CSharpCharacterLiteralContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitCSharpCharacterLiteral(this);
}
};
function CSharpTextLiteralContext(parser, ctx) {
Csharp_literal_expressionContext.call(this, parser);
Csharp_literal_expressionContext.prototype.copyFrom.call(this, ctx);
return this;
}
CSharpTextLiteralContext.prototype = Object.create(Csharp_literal_expressionContext.prototype);
CSharpTextLiteralContext.prototype.constructor = CSharpTextLiteralContext;
EParser.CSharpTextLiteralContext = CSharpTextLiteralContext;
CSharpTextLiteralContext.prototype.TEXT_LITERAL = function() {
return this.getToken(EParser.TEXT_LITERAL, 0);
};
CSharpTextLiteralContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterCSharpTextLiteral(this);
}
};
CSharpTextLiteralContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitCSharpTextLiteral(this);
}
};
EParser.Csharp_literal_expressionContext = Csharp_literal_expressionContext;
EParser.prototype.csharp_literal_expression = function() {
var localctx = new Csharp_literal_expressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 442, EParser.RULE_csharp_literal_expression);
try {
this.state = 2621;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case EParser.INTEGER_LITERAL:
localctx = new CSharpIntegerLiteralContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 2616;
this.match(EParser.INTEGER_LITERAL);
break;
case EParser.DECIMAL_LITERAL:
localctx = new CSharpDecimalLiteralContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 2617;
this.match(EParser.DECIMAL_LITERAL);
break;
case EParser.TEXT_LITERAL:
localctx = new CSharpTextLiteralContext(this, localctx);
this.enterOuterAlt(localctx, 3);
this.state = 2618;
this.match(EParser.TEXT_LITERAL);
break;
case EParser.BOOLEAN_LITERAL:
localctx = new CSharpBooleanLiteralContext(this, localctx);
this.enterOuterAlt(localctx, 4);
this.state = 2619;
this.match(EParser.BOOLEAN_LITERAL);
break;
case EParser.CHAR_LITERAL:
localctx = new CSharpCharacterLiteralContext(this, localctx);
this.enterOuterAlt(localctx, 5);
this.state = 2620;
this.match(EParser.CHAR_LITERAL);
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 Csharp_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 = EParser.RULE_csharp_identifier;
return this;
}
Csharp_identifierContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Csharp_identifierContext.prototype.constructor = Csharp_identifierContext;
Csharp_identifierContext.prototype.VARIABLE_IDENTIFIER = function() {
return this.getToken(EParser.VARIABLE_IDENTIFIER, 0);
};
Csharp_identifierContext.prototype.SYMBOL_IDENTIFIER = function() {
return this.getToken(EParser.SYMBOL_IDENTIFIER, 0);
};
Csharp_identifierContext.prototype.TYPE_IDENTIFIER = function() {
return this.getToken(EParser.TYPE_IDENTIFIER, 0);
};
Csharp_identifierContext.prototype.BOOLEAN = function() {
return this.getToken(EParser.BOOLEAN, 0);
};
Csharp_identifierContext.prototype.CHARACTER = function() {
return this.getToken(EParser.CHARACTER, 0);
};
Csharp_identifierContext.prototype.TEXT = function() {
return this.getToken(EParser.TEXT, 0);
};
Csharp_identifierContext.prototype.INTEGER = function() {
return this.getToken(EParser.INTEGER, 0);
};
Csharp_identifierContext.prototype.DECIMAL = function() {
return this.getToken(EParser.DECIMAL, 0);
};
Csharp_identifierContext.prototype.DATE = function() {
return this.getToken(EParser.DATE, 0);
};
Csharp_identifierContext.prototype.TIME = function() {
return this.getToken(EParser.TIME, 0);
};
Csharp_identifierContext.prototype.DATETIME = function() {
return this.getToken(EParser.DATETIME, 0);
};
Csharp_identifierContext.prototype.PERIOD = function() {
return this.getToken(EParser.PERIOD, 0);
};
Csharp_identifierContext.prototype.VERSION = function() {
return this.getToken(EParser.VERSION, 0);
};
Csharp_identifierContext.prototype.UUID = function() {
return this.getToken(EParser.UUID, 0);
};
Csharp_identifierContext.prototype.HTML = function() {
return this.getToken(EParser.HTML, 0);
};
Csharp_identifierContext.prototype.READ = function() {
return this.getToken(EParser.READ, 0);
};
Csharp_identifierContext.prototype.WRITE = function() {
return this.getToken(EParser.WRITE, 0);
};
Csharp_identifierContext.prototype.TEST = function() {
return this.getToken(EParser.TEST, 0);
};
Csharp_identifierContext.prototype.SELF = function() {
return this.getToken(EParser.SELF, 0);
};
Csharp_identifierContext.prototype.NONE = function() {
return this.getToken(EParser.NONE, 0);
};
Csharp_identifierContext.prototype.NULL = function() {
return this.getToken(EParser.NULL, 0);
};
Csharp_identifierContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterCsharp_identifier(this);
}
};
Csharp_identifierContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitCsharp_identifier(this);
}
};
EParser.Csharp_identifierContext = Csharp_identifierContext;
EParser.prototype.csharp_identifier = function() {
var localctx = new Csharp_identifierContext(this, this._ctx, this.state);
this.enterRule(localctx, 444, EParser.RULE_csharp_identifier);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 2623;
_la = this._input.LA(1);
if(!(((((_la - 51)) & ~0x1f) == 0 && ((1 << (_la - 51)) & ((1 << (EParser.BOOLEAN - 51)) | (1 << (EParser.CHARACTER - 51)) | (1 << (EParser.TEXT - 51)) | (1 << (EParser.INTEGER - 51)) | (1 << (EParser.DECIMAL - 51)) | (1 << (EParser.DATE - 51)) | (1 << (EParser.TIME - 51)) | (1 << (EParser.DATETIME - 51)) | (1 << (EParser.PERIOD - 51)) | (1 << (EParser.VERSION - 51)) | (1 << (EParser.UUID - 51)) | (1 << (EParser.HTML - 51)))) !== 0) || ((((_la - 123)) & ~0x1f) == 0 && ((1 << (_la - 123)) & ((1 << (EParser.NONE - 123)) | (1 << (EParser.NULL - 123)) | (1 << (EParser.READ - 123)) | (1 << (EParser.SELF - 123)) | (1 << (EParser.TEST - 123)))) !== 0) || ((((_la - 161)) & ~0x1f) == 0 && ((1 << (_la - 161)) & ((1 << (EParser.WRITE - 161)) | (1 << (EParser.SYMBOL_IDENTIFIER - 161)) | (1 << (EParser.TYPE_IDENTIFIER - 161)) | (1 << (EParser.VARIABLE_IDENTIFIER - 161)))) !== 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 Jsx_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 = EParser.RULE_jsx_expression;
return this;
}
Jsx_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Jsx_expressionContext.prototype.constructor = Jsx_expressionContext;
Jsx_expressionContext.prototype.jsx_element = function() {
return this.getTypedRuleContext(Jsx_elementContext,0);
};
Jsx_expressionContext.prototype.jsx_fragment = function() {
return this.getTypedRuleContext(Jsx_fragmentContext,0);
};
Jsx_expressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJsx_expression(this);
}
};
Jsx_expressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJsx_expression(this);
}
};
EParser.Jsx_expressionContext = Jsx_expressionContext;
EParser.prototype.jsx_expression = function() {
var localctx = new Jsx_expressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 446, EParser.RULE_jsx_expression);
try {
this.state = 2627;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,224,this._ctx);
switch(la_) {
case 1:
this.enterOuterAlt(localctx, 1);
this.state = 2625;
this.jsx_element();
break;
case 2:
this.enterOuterAlt(localctx, 2);
this.state = 2626;
this.jsx_fragment();
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 Jsx_elementContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_jsx_element;
return this;
}
Jsx_elementContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Jsx_elementContext.prototype.constructor = Jsx_elementContext;
Jsx_elementContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function JsxSelfClosingContext(parser, ctx) {
Jsx_elementContext.call(this, parser);
this.jsx = null; // Jsx_self_closingContext;
Jsx_elementContext.prototype.copyFrom.call(this, ctx);
return this;
}
JsxSelfClosingContext.prototype = Object.create(Jsx_elementContext.prototype);
JsxSelfClosingContext.prototype.constructor = JsxSelfClosingContext;
EParser.JsxSelfClosingContext = JsxSelfClosingContext;
JsxSelfClosingContext.prototype.jsx_self_closing = function() {
return this.getTypedRuleContext(Jsx_self_closingContext,0);
};
JsxSelfClosingContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJsxSelfClosing(this);
}
};
JsxSelfClosingContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJsxSelfClosing(this);
}
};
function JsxElementContext(parser, ctx) {
Jsx_elementContext.call(this, parser);
this.opening = null; // Jsx_openingContext;
this.children_ = null; // Jsx_childrenContext;
this.closing = null; // Jsx_closingContext;
Jsx_elementContext.prototype.copyFrom.call(this, ctx);
return this;
}
JsxElementContext.prototype = Object.create(Jsx_elementContext.prototype);
JsxElementContext.prototype.constructor = JsxElementContext;
EParser.JsxElementContext = JsxElementContext;
JsxElementContext.prototype.jsx_opening = function() {
return this.getTypedRuleContext(Jsx_openingContext,0);
};
JsxElementContext.prototype.jsx_closing = function() {
return this.getTypedRuleContext(Jsx_closingContext,0);
};
JsxElementContext.prototype.jsx_children = function() {
return this.getTypedRuleContext(Jsx_childrenContext,0);
};
JsxElementContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJsxElement(this);
}
};
JsxElementContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJsxElement(this);
}
};
EParser.Jsx_elementContext = Jsx_elementContext;
EParser.prototype.jsx_element = function() {
var localctx = new Jsx_elementContext(this, this._ctx, this.state);
this.enterRule(localctx, 448, EParser.RULE_jsx_element);
try {
this.state = 2636;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,226,this._ctx);
switch(la_) {
case 1:
localctx = new JsxSelfClosingContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 2629;
localctx.jsx = this.jsx_self_closing();
break;
case 2:
localctx = new JsxElementContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 2630;
localctx.opening = this.jsx_opening();
this.state = 2632;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,225,this._ctx);
if(la_===1) {
this.state = 2631;
localctx.children_ = this.jsx_children();
}
this.state = 2634;
localctx.closing = this.jsx_closing();
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 Jsx_fragmentContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_jsx_fragment;
this.children_ = null; // Jsx_childrenContext
return this;
}
Jsx_fragmentContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Jsx_fragmentContext.prototype.constructor = Jsx_fragmentContext;
Jsx_fragmentContext.prototype.jsx_fragment_start = function() {
return this.getTypedRuleContext(Jsx_fragment_startContext,0);
};
Jsx_fragmentContext.prototype.jsx_fragment_end = function() {
return this.getTypedRuleContext(Jsx_fragment_endContext,0);
};
Jsx_fragmentContext.prototype.jsx_children = function() {
return this.getTypedRuleContext(Jsx_childrenContext,0);
};
Jsx_fragmentContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJsx_fragment(this);
}
};
Jsx_fragmentContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJsx_fragment(this);
}
};
EParser.Jsx_fragmentContext = Jsx_fragmentContext;
EParser.prototype.jsx_fragment = function() {
var localctx = new Jsx_fragmentContext(this, this._ctx, this.state);
this.enterRule(localctx, 450, EParser.RULE_jsx_fragment);
try {
this.enterOuterAlt(localctx, 1);
this.state = 2638;
this.jsx_fragment_start();
this.state = 2640;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,227,this._ctx);
if(la_===1) {
this.state = 2639;
localctx.children_ = this.jsx_children();
}
this.state = 2642;
this.jsx_fragment_end();
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Jsx_fragment_startContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_jsx_fragment_start;
return this;
}
Jsx_fragment_startContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Jsx_fragment_startContext.prototype.constructor = Jsx_fragment_startContext;
Jsx_fragment_startContext.prototype.LT = function() {
return this.getToken(EParser.LT, 0);
};
Jsx_fragment_startContext.prototype.GT = function() {
return this.getToken(EParser.GT, 0);
};
Jsx_fragment_startContext.prototype.LTGT = function() {
return this.getToken(EParser.LTGT, 0);
};
Jsx_fragment_startContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJsx_fragment_start(this);
}
};
Jsx_fragment_startContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJsx_fragment_start(this);
}
};
EParser.Jsx_fragment_startContext = Jsx_fragment_startContext;
EParser.prototype.jsx_fragment_start = function() {
var localctx = new Jsx_fragment_startContext(this, this._ctx, this.state);
this.enterRule(localctx, 452, EParser.RULE_jsx_fragment_start);
try {
this.state = 2647;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case EParser.LT:
this.enterOuterAlt(localctx, 1);
this.state = 2644;
this.match(EParser.LT);
this.state = 2645;
this.match(EParser.GT);
break;
case EParser.LTGT:
this.enterOuterAlt(localctx, 2);
this.state = 2646;
this.match(EParser.LTGT);
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 Jsx_fragment_endContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_jsx_fragment_end;
return this;
}
Jsx_fragment_endContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Jsx_fragment_endContext.prototype.constructor = Jsx_fragment_endContext;
Jsx_fragment_endContext.prototype.LT = function() {
return this.getToken(EParser.LT, 0);
};
Jsx_fragment_endContext.prototype.SLASH = function() {
return this.getToken(EParser.SLASH, 0);
};
Jsx_fragment_endContext.prototype.GT = function() {
return this.getToken(EParser.GT, 0);
};
Jsx_fragment_endContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJsx_fragment_end(this);
}
};
Jsx_fragment_endContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJsx_fragment_end(this);
}
};
EParser.Jsx_fragment_endContext = Jsx_fragment_endContext;
EParser.prototype.jsx_fragment_end = function() {
var localctx = new Jsx_fragment_endContext(this, this._ctx, this.state);
this.enterRule(localctx, 454, EParser.RULE_jsx_fragment_end);
try {
this.enterOuterAlt(localctx, 1);
this.state = 2649;
this.match(EParser.LT);
this.state = 2650;
this.match(EParser.SLASH);
this.state = 2651;
this.match(EParser.GT);
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Jsx_self_closingContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_jsx_self_closing;
this.name = null; // Jsx_element_nameContext
this.attributes = null; // Jsx_attributeContext
return this;
}
Jsx_self_closingContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Jsx_self_closingContext.prototype.constructor = Jsx_self_closingContext;
Jsx_self_closingContext.prototype.LT = function() {
return this.getToken(EParser.LT, 0);
};
Jsx_self_closingContext.prototype.jsx_ws = function() {
return this.getTypedRuleContext(Jsx_wsContext,0);
};
Jsx_self_closingContext.prototype.SLASH = function() {
return this.getToken(EParser.SLASH, 0);
};
Jsx_self_closingContext.prototype.GT = function() {
return this.getToken(EParser.GT, 0);
};
Jsx_self_closingContext.prototype.jsx_element_name = function() {
return this.getTypedRuleContext(Jsx_element_nameContext,0);
};
Jsx_self_closingContext.prototype.jsx_attribute = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(Jsx_attributeContext);
} else {
return this.getTypedRuleContext(Jsx_attributeContext,i);
}
};
Jsx_self_closingContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJsx_self_closing(this);
}
};
Jsx_self_closingContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJsx_self_closing(this);
}
};
EParser.Jsx_self_closingContext = Jsx_self_closingContext;
EParser.prototype.jsx_self_closing = function() {
var localctx = new Jsx_self_closingContext(this, this._ctx, this.state);
this.enterRule(localctx, 456, EParser.RULE_jsx_self_closing);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 2653;
this.match(EParser.LT);
this.state = 2654;
localctx.name = this.jsx_element_name();
this.state = 2655;
this.jsx_ws();
this.state = 2659;
this._errHandler.sync(this);
_la = this._input.LA(1);
while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << EParser.JAVA) | (1 << EParser.CSHARP) | (1 << EParser.PYTHON2) | (1 << EParser.PYTHON3) | (1 << EParser.JAVASCRIPT) | (1 << EParser.SWIFT))) !== 0) || ((((_la - 51)) & ~0x1f) == 0 && ((1 << (_la - 51)) & ((1 << (EParser.BOOLEAN - 51)) | (1 << (EParser.CHARACTER - 51)) | (1 << (EParser.TEXT - 51)) | (1 << (EParser.INTEGER - 51)) | (1 << (EParser.DECIMAL - 51)) | (1 << (EParser.DATE - 51)) | (1 << (EParser.TIME - 51)) | (1 << (EParser.DATETIME - 51)) | (1 << (EParser.PERIOD - 51)) | (1 << (EParser.VERSION - 51)) | (1 << (EParser.METHOD_T - 51)) | (1 << (EParser.CODE - 51)) | (1 << (EParser.DOCUMENT - 51)) | (1 << (EParser.BLOB - 51)) | (1 << (EParser.IMAGE - 51)) | (1 << (EParser.UUID - 51)) | (1 << (EParser.ITERATOR - 51)) | (1 << (EParser.CURSOR - 51)) | (1 << (EParser.HTML - 51)) | (1 << (EParser.ABSTRACT - 51)) | (1 << (EParser.ALL - 51)) | (1 << (EParser.ALWAYS - 51)) | (1 << (EParser.AND - 51)) | (1 << (EParser.ANY - 51)) | (1 << (EParser.AS - 51)) | (1 << (EParser.ASC - 51)) | (1 << (EParser.ATTR - 51)) | (1 << (EParser.ATTRIBUTE - 51)) | (1 << (EParser.ATTRIBUTES - 51)) | (1 << (EParser.BINDINGS - 51)) | (1 << (EParser.BREAK - 51)) | (1 << (EParser.BY - 51)))) !== 0) || ((((_la - 83)) & ~0x1f) == 0 && ((1 << (_la - 83)) & ((1 << (EParser.CASE - 83)) | (1 << (EParser.CATCH - 83)) | (1 << (EParser.CATEGORY - 83)) | (1 << (EParser.CLASS - 83)) | (1 << (EParser.CLOSE - 83)) | (1 << (EParser.CONTAINS - 83)) | (1 << (EParser.DEF - 83)) | (1 << (EParser.DEFAULT - 83)) | (1 << (EParser.DEFINE - 83)) | (1 << (EParser.DELETE - 83)) | (1 << (EParser.DESC - 83)) | (1 << (EParser.DO - 83)) | (1 << (EParser.DOING - 83)) | (1 << (EParser.EACH - 83)) | (1 << (EParser.ELSE - 83)) | (1 << (EParser.ENUM - 83)) | (1 << (EParser.ENUMERATED - 83)) | (1 << (EParser.EXCEPT - 83)) | (1 << (EParser.EXECUTE - 83)) | (1 << (EParser.EXPECTING - 83)) | (1 << (EParser.EXTENDS - 83)) | (1 << (EParser.FETCH - 83)) | (1 << (EParser.FILTERED - 83)) | (1 << (EParser.FINALLY - 83)) | (1 << (EParser.FLUSH - 83)) | (1 << (EParser.FOR - 83)) | (1 << (EParser.FROM - 83)) | (1 << (EParser.GETTER - 83)) | (1 << (EParser.HAS - 83)) | (1 << (EParser.IF - 83)) | (1 << (EParser.IN - 83)) | (1 << (EParser.INDEX - 83)))) !== 0) || ((((_la - 115)) & ~0x1f) == 0 && ((1 << (_la - 115)) & ((1 << (EParser.INVOKE - 115)) | (1 << (EParser.IS - 115)) | (1 << (EParser.MATCHING - 115)) | (1 << (EParser.METHOD - 115)) | (1 << (EParser.METHODS - 115)) | (1 << (EParser.MODULO - 115)) | (1 << (EParser.MUTABLE - 115)) | (1 << (EParser.NATIVE - 115)) | (1 << (EParser.NONE - 115)) | (1 << (EParser.NOT - 115)) | (1 << (EParser.NOTHING - 115)) | (1 << (EParser.NULL - 115)) | (1 << (EParser.ON - 115)) | (1 << (EParser.ONE - 115)) | (1 << (EParser.OPEN - 115)) | (1 << (EParser.OPERATOR - 115)) | (1 << (EParser.OR - 115)) | (1 << (EParser.ORDER - 115)) | (1 << (EParser.OTHERWISE - 115)) | (1 << (EParser.PASS - 115)) | (1 << (EParser.RAISE - 115)) | (1 << (EParser.READ - 115)) | (1 << (EParser.RECEIVING - 115)) | (1 << (EParser.RESOURCE - 115)) | (1 << (EParser.RETURN - 115)) | (1 << (EParser.RETURNING - 115)) | (1 << (EParser.ROWS - 115)) | (1 << (EParser.SELF - 115)) | (1 << (EParser.SETTER - 115)) | (1 << (EParser.SINGLETON - 115)) | (1 << (EParser.SORTED - 115)) | (1 << (EParser.STORABLE - 115)))) !== 0) || ((((_la - 147)) & ~0x1f) == 0 && ((1 << (_la - 147)) & ((1 << (EParser.STORE - 147)) | (1 << (EParser.SWITCH - 147)) | (1 << (EParser.TEST - 147)) | (1 << (EParser.THIS - 147)) | (1 << (EParser.THROW - 147)) | (1 << (EParser.TO - 147)) | (1 << (EParser.TRY - 147)) | (1 << (EParser.VERIFYING - 147)) | (1 << (EParser.WIDGET - 147)) | (1 << (EParser.WITH - 147)) | (1 << (EParser.WHEN - 147)) | (1 << (EParser.WHERE - 147)) | (1 << (EParser.WHILE - 147)) | (1 << (EParser.WRITE - 147)) | (1 << (EParser.SYMBOL_IDENTIFIER - 147)) | (1 << (EParser.TYPE_IDENTIFIER - 147)) | (1 << (EParser.VARIABLE_IDENTIFIER - 147)))) !== 0)) {
this.state = 2656;
localctx.attributes = this.jsx_attribute();
this.state = 2661;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
this.state = 2662;
this.match(EParser.SLASH);
this.state = 2663;
this.match(EParser.GT);
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Jsx_openingContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_jsx_opening;
this.name = null; // Jsx_element_nameContext
this.attributes = null; // Jsx_attributeContext
return this;
}
Jsx_openingContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Jsx_openingContext.prototype.constructor = Jsx_openingContext;
Jsx_openingContext.prototype.LT = function() {
return this.getToken(EParser.LT, 0);
};
Jsx_openingContext.prototype.jsx_ws = function() {
return this.getTypedRuleContext(Jsx_wsContext,0);
};
Jsx_openingContext.prototype.GT = function() {
return this.getToken(EParser.GT, 0);
};
Jsx_openingContext.prototype.jsx_element_name = function() {
return this.getTypedRuleContext(Jsx_element_nameContext,0);
};
Jsx_openingContext.prototype.jsx_attribute = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(Jsx_attributeContext);
} else {
return this.getTypedRuleContext(Jsx_attributeContext,i);
}
};
Jsx_openingContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJsx_opening(this);
}
};
Jsx_openingContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJsx_opening(this);
}
};
EParser.Jsx_openingContext = Jsx_openingContext;
EParser.prototype.jsx_opening = function() {
var localctx = new Jsx_openingContext(this, this._ctx, this.state);
this.enterRule(localctx, 458, EParser.RULE_jsx_opening);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 2665;
this.match(EParser.LT);
this.state = 2666;
localctx.name = this.jsx_element_name();
this.state = 2667;
this.jsx_ws();
this.state = 2671;
this._errHandler.sync(this);
_la = this._input.LA(1);
while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << EParser.JAVA) | (1 << EParser.CSHARP) | (1 << EParser.PYTHON2) | (1 << EParser.PYTHON3) | (1 << EParser.JAVASCRIPT) | (1 << EParser.SWIFT))) !== 0) || ((((_la - 51)) & ~0x1f) == 0 && ((1 << (_la - 51)) & ((1 << (EParser.BOOLEAN - 51)) | (1 << (EParser.CHARACTER - 51)) | (1 << (EParser.TEXT - 51)) | (1 << (EParser.INTEGER - 51)) | (1 << (EParser.DECIMAL - 51)) | (1 << (EParser.DATE - 51)) | (1 << (EParser.TIME - 51)) | (1 << (EParser.DATETIME - 51)) | (1 << (EParser.PERIOD - 51)) | (1 << (EParser.VERSION - 51)) | (1 << (EParser.METHOD_T - 51)) | (1 << (EParser.CODE - 51)) | (1 << (EParser.DOCUMENT - 51)) | (1 << (EParser.BLOB - 51)) | (1 << (EParser.IMAGE - 51)) | (1 << (EParser.UUID - 51)) | (1 << (EParser.ITERATOR - 51)) | (1 << (EParser.CURSOR - 51)) | (1 << (EParser.HTML - 51)) | (1 << (EParser.ABSTRACT - 51)) | (1 << (EParser.ALL - 51)) | (1 << (EParser.ALWAYS - 51)) | (1 << (EParser.AND - 51)) | (1 << (EParser.ANY - 51)) | (1 << (EParser.AS - 51)) | (1 << (EParser.ASC - 51)) | (1 << (EParser.ATTR - 51)) | (1 << (EParser.ATTRIBUTE - 51)) | (1 << (EParser.ATTRIBUTES - 51)) | (1 << (EParser.BINDINGS - 51)) | (1 << (EParser.BREAK - 51)) | (1 << (EParser.BY - 51)))) !== 0) || ((((_la - 83)) & ~0x1f) == 0 && ((1 << (_la - 83)) & ((1 << (EParser.CASE - 83)) | (1 << (EParser.CATCH - 83)) | (1 << (EParser.CATEGORY - 83)) | (1 << (EParser.CLASS - 83)) | (1 << (EParser.CLOSE - 83)) | (1 << (EParser.CONTAINS - 83)) | (1 << (EParser.DEF - 83)) | (1 << (EParser.DEFAULT - 83)) | (1 << (EParser.DEFINE - 83)) | (1 << (EParser.DELETE - 83)) | (1 << (EParser.DESC - 83)) | (1 << (EParser.DO - 83)) | (1 << (EParser.DOING - 83)) | (1 << (EParser.EACH - 83)) | (1 << (EParser.ELSE - 83)) | (1 << (EParser.ENUM - 83)) | (1 << (EParser.ENUMERATED - 83)) | (1 << (EParser.EXCEPT - 83)) | (1 << (EParser.EXECUTE - 83)) | (1 << (EParser.EXPECTING - 83)) | (1 << (EParser.EXTENDS - 83)) | (1 << (EParser.FETCH - 83)) | (1 << (EParser.FILTERED - 83)) | (1 << (EParser.FINALLY - 83)) | (1 << (EParser.FLUSH - 83)) | (1 << (EParser.FOR - 83)) | (1 << (EParser.FROM - 83)) | (1 << (EParser.GETTER - 83)) | (1 << (EParser.HAS - 83)) | (1 << (EParser.IF - 83)) | (1 << (EParser.IN - 83)) | (1 << (EParser.INDEX - 83)))) !== 0) || ((((_la - 115)) & ~0x1f) == 0 && ((1 << (_la - 115)) & ((1 << (EParser.INVOKE - 115)) | (1 << (EParser.IS - 115)) | (1 << (EParser.MATCHING - 115)) | (1 << (EParser.METHOD - 115)) | (1 << (EParser.METHODS - 115)) | (1 << (EParser.MODULO - 115)) | (1 << (EParser.MUTABLE - 115)) | (1 << (EParser.NATIVE - 115)) | (1 << (EParser.NONE - 115)) | (1 << (EParser.NOT - 115)) | (1 << (EParser.NOTHING - 115)) | (1 << (EParser.NULL - 115)) | (1 << (EParser.ON - 115)) | (1 << (EParser.ONE - 115)) | (1 << (EParser.OPEN - 115)) | (1 << (EParser.OPERATOR - 115)) | (1 << (EParser.OR - 115)) | (1 << (EParser.ORDER - 115)) | (1 << (EParser.OTHERWISE - 115)) | (1 << (EParser.PASS - 115)) | (1 << (EParser.RAISE - 115)) | (1 << (EParser.READ - 115)) | (1 << (EParser.RECEIVING - 115)) | (1 << (EParser.RESOURCE - 115)) | (1 << (EParser.RETURN - 115)) | (1 << (EParser.RETURNING - 115)) | (1 << (EParser.ROWS - 115)) | (1 << (EParser.SELF - 115)) | (1 << (EParser.SETTER - 115)) | (1 << (EParser.SINGLETON - 115)) | (1 << (EParser.SORTED - 115)) | (1 << (EParser.STORABLE - 115)))) !== 0) || ((((_la - 147)) & ~0x1f) == 0 && ((1 << (_la - 147)) & ((1 << (EParser.STORE - 147)) | (1 << (EParser.SWITCH - 147)) | (1 << (EParser.TEST - 147)) | (1 << (EParser.THIS - 147)) | (1 << (EParser.THROW - 147)) | (1 << (EParser.TO - 147)) | (1 << (EParser.TRY - 147)) | (1 << (EParser.VERIFYING - 147)) | (1 << (EParser.WIDGET - 147)) | (1 << (EParser.WITH - 147)) | (1 << (EParser.WHEN - 147)) | (1 << (EParser.WHERE - 147)) | (1 << (EParser.WHILE - 147)) | (1 << (EParser.WRITE - 147)) | (1 << (EParser.SYMBOL_IDENTIFIER - 147)) | (1 << (EParser.TYPE_IDENTIFIER - 147)) | (1 << (EParser.VARIABLE_IDENTIFIER - 147)))) !== 0)) {
this.state = 2668;
localctx.attributes = this.jsx_attribute();
this.state = 2673;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
this.state = 2674;
this.match(EParser.GT);
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Jsx_closingContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_jsx_closing;
this.name = null; // Jsx_element_nameContext
return this;
}
Jsx_closingContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Jsx_closingContext.prototype.constructor = Jsx_closingContext;
Jsx_closingContext.prototype.LT = function() {
return this.getToken(EParser.LT, 0);
};
Jsx_closingContext.prototype.SLASH = function() {
return this.getToken(EParser.SLASH, 0);
};
Jsx_closingContext.prototype.GT = function() {
return this.getToken(EParser.GT, 0);
};
Jsx_closingContext.prototype.jsx_element_name = function() {
return this.getTypedRuleContext(Jsx_element_nameContext,0);
};
Jsx_closingContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJsx_closing(this);
}
};
Jsx_closingContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJsx_closing(this);
}
};
EParser.Jsx_closingContext = Jsx_closingContext;
EParser.prototype.jsx_closing = function() {
var localctx = new Jsx_closingContext(this, this._ctx, this.state);
this.enterRule(localctx, 460, EParser.RULE_jsx_closing);
try {
this.enterOuterAlt(localctx, 1);
this.state = 2676;
this.match(EParser.LT);
this.state = 2677;
this.match(EParser.SLASH);
this.state = 2678;
localctx.name = this.jsx_element_name();
this.state = 2679;
this.match(EParser.GT);
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Jsx_element_nameContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_jsx_element_name;
return this;
}
Jsx_element_nameContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Jsx_element_nameContext.prototype.constructor = Jsx_element_nameContext;
Jsx_element_nameContext.prototype.jsx_identifier = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(Jsx_identifierContext);
} else {
return this.getTypedRuleContext(Jsx_identifierContext,i);
}
};
Jsx_element_nameContext.prototype.DOT = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(EParser.DOT);
} else {
return this.getToken(EParser.DOT, i);
}
};
Jsx_element_nameContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJsx_element_name(this);
}
};
Jsx_element_nameContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJsx_element_name(this);
}
};
EParser.Jsx_element_nameContext = Jsx_element_nameContext;
EParser.prototype.jsx_element_name = function() {
var localctx = new Jsx_element_nameContext(this, this._ctx, this.state);
this.enterRule(localctx, 462, EParser.RULE_jsx_element_name);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 2681;
this.jsx_identifier();
this.state = 2686;
this._errHandler.sync(this);
_la = this._input.LA(1);
while(_la===EParser.DOT) {
this.state = 2682;
this.match(EParser.DOT);
this.state = 2683;
this.jsx_identifier();
this.state = 2688;
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 Jsx_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 = EParser.RULE_jsx_identifier;
return this;
}
Jsx_identifierContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Jsx_identifierContext.prototype.constructor = Jsx_identifierContext;
Jsx_identifierContext.prototype.identifier_or_keyword = function() {
return this.getTypedRuleContext(Identifier_or_keywordContext,0);
};
Jsx_identifierContext.prototype.nospace_hyphen_identifier_or_keyword = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(Nospace_hyphen_identifier_or_keywordContext);
} else {
return this.getTypedRuleContext(Nospace_hyphen_identifier_or_keywordContext,i);
}
};
Jsx_identifierContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJsx_identifier(this);
}
};
Jsx_identifierContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJsx_identifier(this);
}
};
EParser.Jsx_identifierContext = Jsx_identifierContext;
EParser.prototype.jsx_identifier = function() {
var localctx = new Jsx_identifierContext(this, this._ctx, this.state);
this.enterRule(localctx, 464, EParser.RULE_jsx_identifier);
try {
this.enterOuterAlt(localctx, 1);
this.state = 2689;
this.identifier_or_keyword();
this.state = 2693;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,232,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
this.state = 2690;
this.nospace_hyphen_identifier_or_keyword();
}
this.state = 2695;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,232,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 Jsx_attributeContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_jsx_attribute;
this.name = null; // Jsx_identifierContext
this.value = null; // Jsx_attribute_valueContext
return this;
}
Jsx_attributeContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Jsx_attributeContext.prototype.constructor = Jsx_attributeContext;
Jsx_attributeContext.prototype.jsx_ws = function() {
return this.getTypedRuleContext(Jsx_wsContext,0);
};
Jsx_attributeContext.prototype.jsx_identifier = function() {
return this.getTypedRuleContext(Jsx_identifierContext,0);
};
Jsx_attributeContext.prototype.EQ = function() {
return this.getToken(EParser.EQ, 0);
};
Jsx_attributeContext.prototype.jsx_attribute_value = function() {
return this.getTypedRuleContext(Jsx_attribute_valueContext,0);
};
Jsx_attributeContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJsx_attribute(this);
}
};
Jsx_attributeContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJsx_attribute(this);
}
};
EParser.Jsx_attributeContext = Jsx_attributeContext;
EParser.prototype.jsx_attribute = function() {
var localctx = new Jsx_attributeContext(this, this._ctx, this.state);
this.enterRule(localctx, 466, EParser.RULE_jsx_attribute);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 2696;
localctx.name = this.jsx_identifier();
this.state = 2699;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===EParser.EQ) {
this.state = 2697;
this.match(EParser.EQ);
this.state = 2698;
localctx.value = this.jsx_attribute_value();
}
this.state = 2701;
this.jsx_ws();
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Jsx_attribute_valueContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_jsx_attribute_value;
return this;
}
Jsx_attribute_valueContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Jsx_attribute_valueContext.prototype.constructor = Jsx_attribute_valueContext;
Jsx_attribute_valueContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function JsxValueContext(parser, ctx) {
Jsx_attribute_valueContext.call(this, parser);
this.exp = null; // ExpressionContext;
Jsx_attribute_valueContext.prototype.copyFrom.call(this, ctx);
return this;
}
JsxValueContext.prototype = Object.create(Jsx_attribute_valueContext.prototype);
JsxValueContext.prototype.constructor = JsxValueContext;
EParser.JsxValueContext = JsxValueContext;
JsxValueContext.prototype.LCURL = function() {
return this.getToken(EParser.LCURL, 0);
};
JsxValueContext.prototype.RCURL = function() {
return this.getToken(EParser.RCURL, 0);
};
JsxValueContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
JsxValueContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJsxValue(this);
}
};
JsxValueContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJsxValue(this);
}
};
function JsxLiteralContext(parser, ctx) {
Jsx_attribute_valueContext.call(this, parser);
Jsx_attribute_valueContext.prototype.copyFrom.call(this, ctx);
return this;
}
JsxLiteralContext.prototype = Object.create(Jsx_attribute_valueContext.prototype);
JsxLiteralContext.prototype.constructor = JsxLiteralContext;
EParser.JsxLiteralContext = JsxLiteralContext;
JsxLiteralContext.prototype.TEXT_LITERAL = function() {
return this.getToken(EParser.TEXT_LITERAL, 0);
};
JsxLiteralContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJsxLiteral(this);
}
};
JsxLiteralContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJsxLiteral(this);
}
};
EParser.Jsx_attribute_valueContext = Jsx_attribute_valueContext;
EParser.prototype.jsx_attribute_value = function() {
var localctx = new Jsx_attribute_valueContext(this, this._ctx, this.state);
this.enterRule(localctx, 468, EParser.RULE_jsx_attribute_value);
try {
this.state = 2708;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case EParser.TEXT_LITERAL:
localctx = new JsxLiteralContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 2703;
this.match(EParser.TEXT_LITERAL);
break;
case EParser.LCURL:
localctx = new JsxValueContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 2704;
this.match(EParser.LCURL);
this.state = 2705;
localctx.exp = this.expression(0);
this.state = 2706;
this.match(EParser.RCURL);
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 Jsx_childrenContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_jsx_children;
return this;
}
Jsx_childrenContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Jsx_childrenContext.prototype.constructor = Jsx_childrenContext;
Jsx_childrenContext.prototype.jsx_child = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(Jsx_childContext);
} else {
return this.getTypedRuleContext(Jsx_childContext,i);
}
};
Jsx_childrenContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJsx_children(this);
}
};
Jsx_childrenContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJsx_children(this);
}
};
EParser.Jsx_childrenContext = Jsx_childrenContext;
EParser.prototype.jsx_children = function() {
var localctx = new Jsx_childrenContext(this, this._ctx, this.state);
this.enterRule(localctx, 470, EParser.RULE_jsx_children);
try {
this.enterOuterAlt(localctx, 1);
this.state = 2711;
this._errHandler.sync(this);
var _alt = 1;
do {
switch (_alt) {
case 1:
this.state = 2710;
this.jsx_child();
break;
default:
throw new antlr4.error.NoViableAltException(this);
}
this.state = 2713;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,235, this._ctx);
} while ( _alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER );
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Jsx_childContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_jsx_child;
return this;
}
Jsx_childContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Jsx_childContext.prototype.constructor = Jsx_childContext;
Jsx_childContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function JsxTextContext(parser, ctx) {
Jsx_childContext.call(this, parser);
this.text = null; // Jsx_textContext;
Jsx_childContext.prototype.copyFrom.call(this, ctx);
return this;
}
JsxTextContext.prototype = Object.create(Jsx_childContext.prototype);
JsxTextContext.prototype.constructor = JsxTextContext;
EParser.JsxTextContext = JsxTextContext;
JsxTextContext.prototype.jsx_text = function() {
return this.getTypedRuleContext(Jsx_textContext,0);
};
JsxTextContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJsxText(this);
}
};
JsxTextContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJsxText(this);
}
};
function JsxChildContext(parser, ctx) {
Jsx_childContext.call(this, parser);
this.jsx = null; // Jsx_elementContext;
Jsx_childContext.prototype.copyFrom.call(this, ctx);
return this;
}
JsxChildContext.prototype = Object.create(Jsx_childContext.prototype);
JsxChildContext.prototype.constructor = JsxChildContext;
EParser.JsxChildContext = JsxChildContext;
JsxChildContext.prototype.jsx_element = function() {
return this.getTypedRuleContext(Jsx_elementContext,0);
};
JsxChildContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJsxChild(this);
}
};
JsxChildContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJsxChild(this);
}
};
function JsxCodeContext(parser, ctx) {
Jsx_childContext.call(this, parser);
this.exp = null; // ExpressionContext;
Jsx_childContext.prototype.copyFrom.call(this, ctx);
return this;
}
JsxCodeContext.prototype = Object.create(Jsx_childContext.prototype);
JsxCodeContext.prototype.constructor = JsxCodeContext;
EParser.JsxCodeContext = JsxCodeContext;
JsxCodeContext.prototype.LCURL = function() {
return this.getToken(EParser.LCURL, 0);
};
JsxCodeContext.prototype.RCURL = function() {
return this.getToken(EParser.RCURL, 0);
};
JsxCodeContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
JsxCodeContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJsxCode(this);
}
};
JsxCodeContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJsxCode(this);
}
};
EParser.Jsx_childContext = Jsx_childContext;
EParser.prototype.jsx_child = function() {
var localctx = new Jsx_childContext(this, this._ctx, this.state);
this.enterRule(localctx, 472, EParser.RULE_jsx_child);
var _la = 0; // Token type
try {
this.state = 2722;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case EParser.INDENT:
case EParser.DEDENT:
case EParser.LF_TAB:
case EParser.LF_MORE:
case EParser.LF:
case EParser.TAB:
case EParser.WS:
case EParser.COMMENT:
case EParser.JAVA:
case EParser.CSHARP:
case EParser.PYTHON2:
case EParser.PYTHON3:
case EParser.JAVASCRIPT:
case EParser.SWIFT:
case EParser.COLON:
case EParser.SEMI:
case EParser.COMMA:
case EParser.RANGE:
case EParser.DOT:
case EParser.LPAR:
case EParser.RPAR:
case EParser.LBRAK:
case EParser.RBRAK:
case EParser.QMARK:
case EParser.XMARK:
case EParser.AMP:
case EParser.AMP2:
case EParser.PIPE:
case EParser.PIPE2:
case EParser.PLUS:
case EParser.MINUS:
case EParser.STAR:
case EParser.SLASH:
case EParser.BSLASH:
case EParser.PERCENT:
case EParser.GTE:
case EParser.LTE:
case EParser.LTGT:
case EParser.LTCOLONGT:
case EParser.EQ:
case EParser.XEQ:
case EParser.EQ2:
case EParser.TEQ:
case EParser.TILDE:
case EParser.LARROW:
case EParser.RARROW:
case EParser.BOOLEAN:
case EParser.CHARACTER:
case EParser.TEXT:
case EParser.INTEGER:
case EParser.DECIMAL:
case EParser.DATE:
case EParser.TIME:
case EParser.DATETIME:
case EParser.PERIOD:
case EParser.VERSION:
case EParser.METHOD_T:
case EParser.CODE:
case EParser.DOCUMENT:
case EParser.BLOB:
case EParser.IMAGE:
case EParser.UUID:
case EParser.ITERATOR:
case EParser.CURSOR:
case EParser.HTML:
case EParser.ABSTRACT:
case EParser.ALL:
case EParser.ALWAYS:
case EParser.AND:
case EParser.ANY:
case EParser.AS:
case EParser.ASC:
case EParser.ATTR:
case EParser.ATTRIBUTE:
case EParser.ATTRIBUTES:
case EParser.BINDINGS:
case EParser.BREAK:
case EParser.BY:
case EParser.CASE:
case EParser.CATCH:
case EParser.CATEGORY:
case EParser.CLASS:
case EParser.CLOSE:
case EParser.CONTAINS:
case EParser.DEF:
case EParser.DEFAULT:
case EParser.DEFINE:
case EParser.DELETE:
case EParser.DESC:
case EParser.DO:
case EParser.DOING:
case EParser.EACH:
case EParser.ELSE:
case EParser.ENUM:
case EParser.ENUMERATED:
case EParser.EXCEPT:
case EParser.EXECUTE:
case EParser.EXPECTING:
case EParser.EXTENDS:
case EParser.FETCH:
case EParser.FILTERED:
case EParser.FINALLY:
case EParser.FLUSH:
case EParser.FOR:
case EParser.FROM:
case EParser.GETTER:
case EParser.HAS:
case EParser.IF:
case EParser.IN:
case EParser.INDEX:
case EParser.INVOKE:
case EParser.IS:
case EParser.MATCHING:
case EParser.METHOD:
case EParser.METHODS:
case EParser.MODULO:
case EParser.MUTABLE:
case EParser.NATIVE:
case EParser.NONE:
case EParser.NOT:
case EParser.NOTHING:
case EParser.NULL:
case EParser.ON:
case EParser.ONE:
case EParser.OPEN:
case EParser.OPERATOR:
case EParser.OR:
case EParser.ORDER:
case EParser.OTHERWISE:
case EParser.PASS:
case EParser.RAISE:
case EParser.READ:
case EParser.RECEIVING:
case EParser.RESOURCE:
case EParser.RETURN:
case EParser.RETURNING:
case EParser.ROWS:
case EParser.SELF:
case EParser.SETTER:
case EParser.SINGLETON:
case EParser.SORTED:
case EParser.STORABLE:
case EParser.STORE:
case EParser.SWITCH:
case EParser.TEST:
case EParser.THEN:
case EParser.THIS:
case EParser.THROW:
case EParser.TO:
case EParser.TRY:
case EParser.VERIFYING:
case EParser.WIDGET:
case EParser.WITH:
case EParser.WHEN:
case EParser.WHERE:
case EParser.WHILE:
case EParser.WRITE:
case EParser.BOOLEAN_LITERAL:
case EParser.CHAR_LITERAL:
case EParser.MIN_INTEGER:
case EParser.MAX_INTEGER:
case EParser.SYMBOL_IDENTIFIER:
case EParser.TYPE_IDENTIFIER:
case EParser.VARIABLE_IDENTIFIER:
case EParser.NATIVE_IDENTIFIER:
case EParser.DOLLAR_IDENTIFIER:
case EParser.ARONDBASE_IDENTIFIER:
case EParser.TEXT_LITERAL:
case EParser.UUID_LITERAL:
case EParser.INTEGER_LITERAL:
case EParser.HEXA_LITERAL:
case EParser.DECIMAL_LITERAL:
case EParser.DATETIME_LITERAL:
case EParser.TIME_LITERAL:
case EParser.DATE_LITERAL:
case EParser.PERIOD_LITERAL:
case EParser.VERSION_LITERAL:
localctx = new JsxTextContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 2715;
localctx.text = this.jsx_text();
break;
case EParser.LT:
localctx = new JsxChildContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 2716;
localctx.jsx = this.jsx_element();
break;
case EParser.LCURL:
localctx = new JsxCodeContext(this, localctx);
this.enterOuterAlt(localctx, 3);
this.state = 2717;
this.match(EParser.LCURL);
this.state = 2719;
this._errHandler.sync(this);
_la = this._input.LA(1);
if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << EParser.LPAR) | (1 << EParser.LBRAK) | (1 << EParser.LCURL))) !== 0) || ((((_la - 33)) & ~0x1f) == 0 && ((1 << (_la - 33)) & ((1 << (EParser.MINUS - 33)) | (1 << (EParser.LT - 33)) | (1 << (EParser.LTGT - 33)) | (1 << (EParser.LTCOLONGT - 33)) | (1 << (EParser.METHOD_T - 33)) | (1 << (EParser.CODE - 33)) | (1 << (EParser.DOCUMENT - 33)) | (1 << (EParser.BLOB - 33)))) !== 0) || ((((_la - 101)) & ~0x1f) == 0 && ((1 << (_la - 101)) & ((1 << (EParser.EXECUTE - 101)) | (1 << (EParser.FETCH - 101)) | (1 << (EParser.INVOKE - 101)) | (1 << (EParser.MUTABLE - 101)) | (1 << (EParser.NOT - 101)) | (1 << (EParser.NOTHING - 101)))) !== 0) || ((((_la - 136)) & ~0x1f) == 0 && ((1 << (_la - 136)) & ((1 << (EParser.READ - 136)) | (1 << (EParser.SELF - 136)) | (1 << (EParser.SORTED - 136)) | (1 << (EParser.THIS - 136)) | (1 << (EParser.BOOLEAN_LITERAL - 136)) | (1 << (EParser.CHAR_LITERAL - 136)) | (1 << (EParser.MIN_INTEGER - 136)) | (1 << (EParser.MAX_INTEGER - 136)) | (1 << (EParser.SYMBOL_IDENTIFIER - 136)) | (1 << (EParser.TYPE_IDENTIFIER - 136)))) !== 0) || ((((_la - 168)) & ~0x1f) == 0 && ((1 << (_la - 168)) & ((1 << (EParser.VARIABLE_IDENTIFIER - 168)) | (1 << (EParser.TEXT_LITERAL - 168)) | (1 << (EParser.UUID_LITERAL - 168)) | (1 << (EParser.INTEGER_LITERAL - 168)) | (1 << (EParser.HEXA_LITERAL - 168)) | (1 << (EParser.DECIMAL_LITERAL - 168)) | (1 << (EParser.DATETIME_LITERAL - 168)) | (1 << (EParser.TIME_LITERAL - 168)) | (1 << (EParser.DATE_LITERAL - 168)) | (1 << (EParser.PERIOD_LITERAL - 168)) | (1 << (EParser.VERSION_LITERAL - 168)))) !== 0)) {
this.state = 2718;
localctx.exp = this.expression(0);
}
this.state = 2721;
this.match(EParser.RCURL);
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 Jsx_textContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_jsx_text;
return this;
}
Jsx_textContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Jsx_textContext.prototype.constructor = Jsx_textContext;
Jsx_textContext.prototype.LCURL = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(EParser.LCURL);
} else {
return this.getToken(EParser.LCURL, i);
}
};
Jsx_textContext.prototype.RCURL = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(EParser.RCURL);
} else {
return this.getToken(EParser.RCURL, i);
}
};
Jsx_textContext.prototype.LT = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(EParser.LT);
} else {
return this.getToken(EParser.LT, i);
}
};
Jsx_textContext.prototype.GT = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(EParser.GT);
} else {
return this.getToken(EParser.GT, i);
}
};
Jsx_textContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterJsx_text(this);
}
};
Jsx_textContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitJsx_text(this);
}
};
EParser.Jsx_textContext = Jsx_textContext;
EParser.prototype.jsx_text = function() {
var localctx = new Jsx_textContext(this, this._ctx, this.state);
this.enterRule(localctx, 474, EParser.RULE_jsx_text);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 2725;
this._errHandler.sync(this);
var _alt = 1;
do {
switch (_alt) {
case 1:
this.state = 2724;
_la = this._input.LA(1);
if(_la<=0 || ((((_la - 24)) & ~0x1f) == 0 && ((1 << (_la - 24)) & ((1 << (EParser.LCURL - 24)) | (1 << (EParser.RCURL - 24)) | (1 << (EParser.GT - 24)) | (1 << (EParser.LT - 24)))) !== 0)) {
this._errHandler.recoverInline(this);
}
else {
this._errHandler.reportMatch(this);
this.consume();
}
break;
default:
throw new antlr4.error.NoViableAltException(this);
}
this.state = 2727;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,238, this._ctx);
} while ( _alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER );
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Css_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 = EParser.RULE_css_expression;
this.field = null; // Css_fieldContext
return this;
}
Css_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Css_expressionContext.prototype.constructor = Css_expressionContext;
Css_expressionContext.prototype.LCURL = function() {
return this.getToken(EParser.LCURL, 0);
};
Css_expressionContext.prototype.RCURL = function() {
return this.getToken(EParser.RCURL, 0);
};
Css_expressionContext.prototype.css_field = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(Css_fieldContext);
} else {
return this.getTypedRuleContext(Css_fieldContext,i);
}
};
Css_expressionContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterCss_expression(this);
}
};
Css_expressionContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitCss_expression(this);
}
};
EParser.Css_expressionContext = Css_expressionContext;
EParser.prototype.css_expression = function() {
var localctx = new Css_expressionContext(this, this._ctx, this.state);
this.enterRule(localctx, 476, EParser.RULE_css_expression);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 2729;
this.match(EParser.LCURL);
this.state = 2731;
this._errHandler.sync(this);
_la = this._input.LA(1);
do {
this.state = 2730;
localctx.field = this.css_field();
this.state = 2733;
this._errHandler.sync(this);
_la = this._input.LA(1);
} while(((((_la - 9)) & ~0x1f) == 0 && ((1 << (_la - 9)) & ((1 << (EParser.JAVA - 9)) | (1 << (EParser.CSHARP - 9)) | (1 << (EParser.PYTHON2 - 9)) | (1 << (EParser.PYTHON3 - 9)) | (1 << (EParser.JAVASCRIPT - 9)) | (1 << (EParser.SWIFT - 9)) | (1 << (EParser.MINUS - 9)))) !== 0) || ((((_la - 51)) & ~0x1f) == 0 && ((1 << (_la - 51)) & ((1 << (EParser.BOOLEAN - 51)) | (1 << (EParser.CHARACTER - 51)) | (1 << (EParser.TEXT - 51)) | (1 << (EParser.INTEGER - 51)) | (1 << (EParser.DECIMAL - 51)) | (1 << (EParser.DATE - 51)) | (1 << (EParser.TIME - 51)) | (1 << (EParser.DATETIME - 51)) | (1 << (EParser.PERIOD - 51)) | (1 << (EParser.VERSION - 51)) | (1 << (EParser.METHOD_T - 51)) | (1 << (EParser.CODE - 51)) | (1 << (EParser.DOCUMENT - 51)) | (1 << (EParser.BLOB - 51)) | (1 << (EParser.IMAGE - 51)) | (1 << (EParser.UUID - 51)) | (1 << (EParser.ITERATOR - 51)) | (1 << (EParser.CURSOR - 51)) | (1 << (EParser.HTML - 51)) | (1 << (EParser.ABSTRACT - 51)) | (1 << (EParser.ALL - 51)) | (1 << (EParser.ALWAYS - 51)) | (1 << (EParser.AND - 51)) | (1 << (EParser.ANY - 51)) | (1 << (EParser.AS - 51)) | (1 << (EParser.ASC - 51)) | (1 << (EParser.ATTR - 51)) | (1 << (EParser.ATTRIBUTE - 51)) | (1 << (EParser.ATTRIBUTES - 51)) | (1 << (EParser.BINDINGS - 51)) | (1 << (EParser.BREAK - 51)) | (1 << (EParser.BY - 51)))) !== 0) || ((((_la - 83)) & ~0x1f) == 0 && ((1 << (_la - 83)) & ((1 << (EParser.CASE - 83)) | (1 << (EParser.CATCH - 83)) | (1 << (EParser.CATEGORY - 83)) | (1 << (EParser.CLASS - 83)) | (1 << (EParser.CLOSE - 83)) | (1 << (EParser.CONTAINS - 83)) | (1 << (EParser.DEF - 83)) | (1 << (EParser.DEFAULT - 83)) | (1 << (EParser.DEFINE - 83)) | (1 << (EParser.DELETE - 83)) | (1 << (EParser.DESC - 83)) | (1 << (EParser.DO - 83)) | (1 << (EParser.DOING - 83)) | (1 << (EParser.EACH - 83)) | (1 << (EParser.ELSE - 83)) | (1 << (EParser.ENUM - 83)) | (1 << (EParser.ENUMERATED - 83)) | (1 << (EParser.EXCEPT - 83)) | (1 << (EParser.EXECUTE - 83)) | (1 << (EParser.EXPECTING - 83)) | (1 << (EParser.EXTENDS - 83)) | (1 << (EParser.FETCH - 83)) | (1 << (EParser.FILTERED - 83)) | (1 << (EParser.FINALLY - 83)) | (1 << (EParser.FLUSH - 83)) | (1 << (EParser.FOR - 83)) | (1 << (EParser.FROM - 83)) | (1 << (EParser.GETTER - 83)) | (1 << (EParser.HAS - 83)) | (1 << (EParser.IF - 83)) | (1 << (EParser.IN - 83)) | (1 << (EParser.INDEX - 83)))) !== 0) || ((((_la - 115)) & ~0x1f) == 0 && ((1 << (_la - 115)) & ((1 << (EParser.INVOKE - 115)) | (1 << (EParser.IS - 115)) | (1 << (EParser.MATCHING - 115)) | (1 << (EParser.METHOD - 115)) | (1 << (EParser.METHODS - 115)) | (1 << (EParser.MODULO - 115)) | (1 << (EParser.MUTABLE - 115)) | (1 << (EParser.NATIVE - 115)) | (1 << (EParser.NONE - 115)) | (1 << (EParser.NOT - 115)) | (1 << (EParser.NOTHING - 115)) | (1 << (EParser.NULL - 115)) | (1 << (EParser.ON - 115)) | (1 << (EParser.ONE - 115)) | (1 << (EParser.OPEN - 115)) | (1 << (EParser.OPERATOR - 115)) | (1 << (EParser.OR - 115)) | (1 << (EParser.ORDER - 115)) | (1 << (EParser.OTHERWISE - 115)) | (1 << (EParser.PASS - 115)) | (1 << (EParser.RAISE - 115)) | (1 << (EParser.READ - 115)) | (1 << (EParser.RECEIVING - 115)) | (1 << (EParser.RESOURCE - 115)) | (1 << (EParser.RETURN - 115)) | (1 << (EParser.RETURNING - 115)) | (1 << (EParser.ROWS - 115)) | (1 << (EParser.SELF - 115)) | (1 << (EParser.SETTER - 115)) | (1 << (EParser.SINGLETON - 115)) | (1 << (EParser.SORTED - 115)) | (1 << (EParser.STORABLE - 115)))) !== 0) || ((((_la - 147)) & ~0x1f) == 0 && ((1 << (_la - 147)) & ((1 << (EParser.STORE - 147)) | (1 << (EParser.SWITCH - 147)) | (1 << (EParser.TEST - 147)) | (1 << (EParser.THIS - 147)) | (1 << (EParser.THROW - 147)) | (1 << (EParser.TO - 147)) | (1 << (EParser.TRY - 147)) | (1 << (EParser.VERIFYING - 147)) | (1 << (EParser.WIDGET - 147)) | (1 << (EParser.WITH - 147)) | (1 << (EParser.WHEN - 147)) | (1 << (EParser.WHERE - 147)) | (1 << (EParser.WHILE - 147)) | (1 << (EParser.WRITE - 147)) | (1 << (EParser.SYMBOL_IDENTIFIER - 147)) | (1 << (EParser.TYPE_IDENTIFIER - 147)) | (1 << (EParser.VARIABLE_IDENTIFIER - 147)))) !== 0));
this.state = 2735;
this.match(EParser.RCURL);
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Css_fieldContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_css_field;
this.name = null; // Css_identifierContext
this.value = null; // Css_valueContext
return this;
}
Css_fieldContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Css_fieldContext.prototype.constructor = Css_fieldContext;
Css_fieldContext.prototype.COLON = function() {
return this.getToken(EParser.COLON, 0);
};
Css_fieldContext.prototype.SEMI = function() {
return this.getToken(EParser.SEMI, 0);
};
Css_fieldContext.prototype.css_identifier = function() {
return this.getTypedRuleContext(Css_identifierContext,0);
};
Css_fieldContext.prototype.css_value = function() {
return this.getTypedRuleContext(Css_valueContext,0);
};
Css_fieldContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterCss_field(this);
}
};
Css_fieldContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitCss_field(this);
}
};
EParser.Css_fieldContext = Css_fieldContext;
EParser.prototype.css_field = function() {
var localctx = new Css_fieldContext(this, this._ctx, this.state);
this.enterRule(localctx, 478, EParser.RULE_css_field);
try {
this.enterOuterAlt(localctx, 1);
this.state = 2737;
localctx.name = this.css_identifier(0);
this.state = 2738;
this.match(EParser.COLON);
this.state = 2739;
localctx.value = this.css_value();
this.state = 2740;
this.match(EParser.SEMI);
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
};
function Css_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 = EParser.RULE_css_identifier;
return this;
}
Css_identifierContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Css_identifierContext.prototype.constructor = Css_identifierContext;
Css_identifierContext.prototype.identifier_or_keyword = function() {
return this.getTypedRuleContext(Identifier_or_keywordContext,0);
};
Css_identifierContext.prototype.MINUS = function() {
return this.getToken(EParser.MINUS, 0);
};
Css_identifierContext.prototype.nospace_identifier_or_keyword = function() {
return this.getTypedRuleContext(Nospace_identifier_or_keywordContext,0);
};
Css_identifierContext.prototype.css_identifier = function() {
return this.getTypedRuleContext(Css_identifierContext,0);
};
Css_identifierContext.prototype.nospace_hyphen_identifier_or_keyword = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTypedRuleContexts(Nospace_hyphen_identifier_or_keywordContext);
} else {
return this.getTypedRuleContext(Nospace_hyphen_identifier_or_keywordContext,i);
}
};
Css_identifierContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterCss_identifier(this);
}
};
Css_identifierContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitCss_identifier(this);
}
};
EParser.prototype.css_identifier = function(_p) {
if(_p===undefined) {
_p = 0;
}
var _parentctx = this._ctx;
var _parentState = this.state;
var localctx = new Css_identifierContext(this, this._ctx, _parentState);
var _prevctx = localctx;
var _startState = 480;
this.enterRecursionRule(localctx, 480, EParser.RULE_css_identifier, _p);
try {
this.enterOuterAlt(localctx, 1);
this.state = 2746;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case EParser.JAVA:
case EParser.CSHARP:
case EParser.PYTHON2:
case EParser.PYTHON3:
case EParser.JAVASCRIPT:
case EParser.SWIFT:
case EParser.BOOLEAN:
case EParser.CHARACTER:
case EParser.TEXT:
case EParser.INTEGER:
case EParser.DECIMAL:
case EParser.DATE:
case EParser.TIME:
case EParser.DATETIME:
case EParser.PERIOD:
case EParser.VERSION:
case EParser.METHOD_T:
case EParser.CODE:
case EParser.DOCUMENT:
case EParser.BLOB:
case EParser.IMAGE:
case EParser.UUID:
case EParser.ITERATOR:
case EParser.CURSOR:
case EParser.HTML:
case EParser.ABSTRACT:
case EParser.ALL:
case EParser.ALWAYS:
case EParser.AND:
case EParser.ANY:
case EParser.AS:
case EParser.ASC:
case EParser.ATTR:
case EParser.ATTRIBUTE:
case EParser.ATTRIBUTES:
case EParser.BINDINGS:
case EParser.BREAK:
case EParser.BY:
case EParser.CASE:
case EParser.CATCH:
case EParser.CATEGORY:
case EParser.CLASS:
case EParser.CLOSE:
case EParser.CONTAINS:
case EParser.DEF:
case EParser.DEFAULT:
case EParser.DEFINE:
case EParser.DELETE:
case EParser.DESC:
case EParser.DO:
case EParser.DOING:
case EParser.EACH:
case EParser.ELSE:
case EParser.ENUM:
case EParser.ENUMERATED:
case EParser.EXCEPT:
case EParser.EXECUTE:
case EParser.EXPECTING:
case EParser.EXTENDS:
case EParser.FETCH:
case EParser.FILTERED:
case EParser.FINALLY:
case EParser.FLUSH:
case EParser.FOR:
case EParser.FROM:
case EParser.GETTER:
case EParser.HAS:
case EParser.IF:
case EParser.IN:
case EParser.INDEX:
case EParser.INVOKE:
case EParser.IS:
case EParser.MATCHING:
case EParser.METHOD:
case EParser.METHODS:
case EParser.MODULO:
case EParser.MUTABLE:
case EParser.NATIVE:
case EParser.NONE:
case EParser.NOT:
case EParser.NOTHING:
case EParser.NULL:
case EParser.ON:
case EParser.ONE:
case EParser.OPEN:
case EParser.OPERATOR:
case EParser.OR:
case EParser.ORDER:
case EParser.OTHERWISE:
case EParser.PASS:
case EParser.RAISE:
case EParser.READ:
case EParser.RECEIVING:
case EParser.RESOURCE:
case EParser.RETURN:
case EParser.RETURNING:
case EParser.ROWS:
case EParser.SELF:
case EParser.SETTER:
case EParser.SINGLETON:
case EParser.SORTED:
case EParser.STORABLE:
case EParser.STORE:
case EParser.SWITCH:
case EParser.TEST:
case EParser.THIS:
case EParser.THROW:
case EParser.TO:
case EParser.TRY:
case EParser.VERIFYING:
case EParser.WIDGET:
case EParser.WITH:
case EParser.WHEN:
case EParser.WHERE:
case EParser.WHILE:
case EParser.WRITE:
case EParser.SYMBOL_IDENTIFIER:
case EParser.TYPE_IDENTIFIER:
case EParser.VARIABLE_IDENTIFIER:
this.state = 2743;
this.identifier_or_keyword();
break;
case EParser.MINUS:
this.state = 2744;
this.match(EParser.MINUS);
this.state = 2745;
this.nospace_identifier_or_keyword();
break;
default:
throw new antlr4.error.NoViableAltException(this);
}
this._ctx.stop = this._input.LT(-1);
this.state = 2756;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,242,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 Css_identifierContext(this, _parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, EParser.RULE_css_identifier);
this.state = 2748;
if (!( this.precpred(this._ctx, 1))) {
throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
}
this.state = 2750;
this._errHandler.sync(this);
var _alt = 1;
do {
switch (_alt) {
case 1:
this.state = 2749;
this.nospace_hyphen_identifier_or_keyword();
break;
default:
throw new antlr4.error.NoViableAltException(this);
}
this.state = 2752;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,241, this._ctx);
} while ( _alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER );
}
this.state = 2758;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,242,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 Css_valueContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_css_value;
return this;
}
Css_valueContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Css_valueContext.prototype.constructor = Css_valueContext;
Css_valueContext.prototype.copyFrom = function(ctx) {
antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
};
function CssTextContext(parser, ctx) {
Css_valueContext.call(this, parser);
this.text = null; // Css_textContext;
Css_valueContext.prototype.copyFrom.call(this, ctx);
return this;
}
CssTextContext.prototype = Object.create(Css_valueContext.prototype);
CssTextContext.prototype.constructor = CssTextContext;
EParser.CssTextContext = CssTextContext;
CssTextContext.prototype.css_text = function() {
return this.getTypedRuleContext(Css_textContext,0);
};
CssTextContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterCssText(this);
}
};
CssTextContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitCssText(this);
}
};
function CssValueContext(parser, ctx) {
Css_valueContext.call(this, parser);
this.exp = null; // ExpressionContext;
Css_valueContext.prototype.copyFrom.call(this, ctx);
return this;
}
CssValueContext.prototype = Object.create(Css_valueContext.prototype);
CssValueContext.prototype.constructor = CssValueContext;
EParser.CssValueContext = CssValueContext;
CssValueContext.prototype.LCURL = function() {
return this.getToken(EParser.LCURL, 0);
};
CssValueContext.prototype.RCURL = function() {
return this.getToken(EParser.RCURL, 0);
};
CssValueContext.prototype.expression = function() {
return this.getTypedRuleContext(ExpressionContext,0);
};
CssValueContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterCssValue(this);
}
};
CssValueContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitCssValue(this);
}
};
EParser.Css_valueContext = Css_valueContext;
EParser.prototype.css_value = function() {
var localctx = new Css_valueContext(this, this._ctx, this.state);
this.enterRule(localctx, 482, EParser.RULE_css_value);
try {
this.state = 2764;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case EParser.LCURL:
localctx = new CssValueContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 2759;
this.match(EParser.LCURL);
this.state = 2760;
localctx.exp = this.expression(0);
this.state = 2761;
this.match(EParser.RCURL);
break;
case EParser.INDENT:
case EParser.DEDENT:
case EParser.LF_TAB:
case EParser.LF_MORE:
case EParser.LF:
case EParser.TAB:
case EParser.COMMENT:
case EParser.JAVA:
case EParser.CSHARP:
case EParser.PYTHON2:
case EParser.PYTHON3:
case EParser.JAVASCRIPT:
case EParser.SWIFT:
case EParser.COMMA:
case EParser.RANGE:
case EParser.DOT:
case EParser.LPAR:
case EParser.RPAR:
case EParser.LBRAK:
case EParser.RBRAK:
case EParser.QMARK:
case EParser.XMARK:
case EParser.AMP:
case EParser.AMP2:
case EParser.PIPE:
case EParser.PIPE2:
case EParser.PLUS:
case EParser.MINUS:
case EParser.STAR:
case EParser.SLASH:
case EParser.BSLASH:
case EParser.PERCENT:
case EParser.GT:
case EParser.GTE:
case EParser.LT:
case EParser.LTE:
case EParser.LTGT:
case EParser.LTCOLONGT:
case EParser.EQ:
case EParser.XEQ:
case EParser.EQ2:
case EParser.TEQ:
case EParser.TILDE:
case EParser.LARROW:
case EParser.RARROW:
case EParser.BOOLEAN:
case EParser.CHARACTER:
case EParser.TEXT:
case EParser.INTEGER:
case EParser.DECIMAL:
case EParser.DATE:
case EParser.TIME:
case EParser.DATETIME:
case EParser.PERIOD:
case EParser.VERSION:
case EParser.METHOD_T:
case EParser.CODE:
case EParser.DOCUMENT:
case EParser.BLOB:
case EParser.IMAGE:
case EParser.UUID:
case EParser.ITERATOR:
case EParser.CURSOR:
case EParser.HTML:
case EParser.ABSTRACT:
case EParser.ALL:
case EParser.ALWAYS:
case EParser.AND:
case EParser.ANY:
case EParser.AS:
case EParser.ASC:
case EParser.ATTR:
case EParser.ATTRIBUTE:
case EParser.ATTRIBUTES:
case EParser.BINDINGS:
case EParser.BREAK:
case EParser.BY:
case EParser.CASE:
case EParser.CATCH:
case EParser.CATEGORY:
case EParser.CLASS:
case EParser.CLOSE:
case EParser.CONTAINS:
case EParser.DEF:
case EParser.DEFAULT:
case EParser.DEFINE:
case EParser.DELETE:
case EParser.DESC:
case EParser.DO:
case EParser.DOING:
case EParser.EACH:
case EParser.ELSE:
case EParser.ENUM:
case EParser.ENUMERATED:
case EParser.EXCEPT:
case EParser.EXECUTE:
case EParser.EXPECTING:
case EParser.EXTENDS:
case EParser.FETCH:
case EParser.FILTERED:
case EParser.FINALLY:
case EParser.FLUSH:
case EParser.FOR:
case EParser.FROM:
case EParser.GETTER:
case EParser.HAS:
case EParser.IF:
case EParser.IN:
case EParser.INDEX:
case EParser.INVOKE:
case EParser.IS:
case EParser.MATCHING:
case EParser.METHOD:
case EParser.METHODS:
case EParser.MODULO:
case EParser.MUTABLE:
case EParser.NATIVE:
case EParser.NONE:
case EParser.NOT:
case EParser.NOTHING:
case EParser.NULL:
case EParser.ON:
case EParser.ONE:
case EParser.OPEN:
case EParser.OPERATOR:
case EParser.OR:
case EParser.ORDER:
case EParser.OTHERWISE:
case EParser.PASS:
case EParser.RAISE:
case EParser.READ:
case EParser.RECEIVING:
case EParser.RESOURCE:
case EParser.RETURN:
case EParser.RETURNING:
case EParser.ROWS:
case EParser.SELF:
case EParser.SETTER:
case EParser.SINGLETON:
case EParser.SORTED:
case EParser.STORABLE:
case EParser.STORE:
case EParser.SWITCH:
case EParser.TEST:
case EParser.THEN:
case EParser.THIS:
case EParser.THROW:
case EParser.TO:
case EParser.TRY:
case EParser.VERIFYING:
case EParser.WIDGET:
case EParser.WITH:
case EParser.WHEN:
case EParser.WHERE:
case EParser.WHILE:
case EParser.WRITE:
case EParser.BOOLEAN_LITERAL:
case EParser.CHAR_LITERAL:
case EParser.MIN_INTEGER:
case EParser.MAX_INTEGER:
case EParser.SYMBOL_IDENTIFIER:
case EParser.TYPE_IDENTIFIER:
case EParser.VARIABLE_IDENTIFIER:
case EParser.NATIVE_IDENTIFIER:
case EParser.DOLLAR_IDENTIFIER:
case EParser.ARONDBASE_IDENTIFIER:
case EParser.TEXT_LITERAL:
case EParser.UUID_LITERAL:
case EParser.INTEGER_LITERAL:
case EParser.HEXA_LITERAL:
case EParser.DECIMAL_LITERAL:
case EParser.DATETIME_LITERAL:
case EParser.TIME_LITERAL:
case EParser.DATE_LITERAL:
case EParser.PERIOD_LITERAL:
case EParser.VERSION_LITERAL:
localctx = new CssTextContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 2763;
localctx.text = this.css_text();
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 Css_textContext(parser, parent, invokingState) {
if(parent===undefined) {
parent = null;
}
if(invokingState===undefined || invokingState===null) {
invokingState = -1;
}
antlr4.ParserRuleContext.call(this, parent, invokingState);
this.parser = parser;
this.ruleIndex = EParser.RULE_css_text;
return this;
}
Css_textContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Css_textContext.prototype.constructor = Css_textContext;
Css_textContext.prototype.LCURL = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(EParser.LCURL);
} else {
return this.getToken(EParser.LCURL, i);
}
};
Css_textContext.prototype.RCURL = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(EParser.RCURL);
} else {
return this.getToken(EParser.RCURL, i);
}
};
Css_textContext.prototype.COLON = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(EParser.COLON);
} else {
return this.getToken(EParser.COLON, i);
}
};
Css_textContext.prototype.SEMI = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(EParser.SEMI);
} else {
return this.getToken(EParser.SEMI, i);
}
};
Css_textContext.prototype.WS = function(i) {
if(i===undefined) {
i = null;
}
if(i===null) {
return this.getTokens(EParser.WS);
} else {
return this.getToken(EParser.WS, i);
}
};
Css_textContext.prototype.enterRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.enterCss_text(this);
}
};
Css_textContext.prototype.exitRule = function(listener) {
if(listener instanceof EParserListener ) {
listener.exitCss_text(this);
}
};
EParser.Css_textContext = Css_textContext;
EParser.prototype.css_text = function() {
var localctx = new Css_textContext(this, this._ctx, this.state);
this.enterRule(localctx, 484, EParser.RULE_css_text);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 2767;
this._errHandler.sync(this);
_la = this._input.LA(1);
do {
this.state = 2766;
_la = this._input.LA(1);
if(_la<=0 || (((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << EParser.WS) | (1 << EParser.COLON) | (1 << EParser.SEMI) | (1 << EParser.LCURL) | (1 << EParser.RCURL))) !== 0)) {
this._errHandler.recoverInline(this);
}
else {
this._errHandler.reportMatch(this);
this.consume();
}
this.state = 2769;
this._errHandler.sync(this);
_la = this._input.LA(1);
} while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << EParser.INDENT) | (1 << EParser.DEDENT) | (1 << EParser.LF_TAB) | (1 << EParser.LF_MORE) | (1 << EParser.LF) | (1 << EParser.TAB) | (1 << EParser.COMMENT) | (1 << EParser.JAVA) | (1 << EParser.CSHARP) | (1 << EParser.PYTHON2) | (1 << EParser.PYTHON3) | (1 << EParser.JAVASCRIPT) | (1 << EParser.SWIFT) | (1 << EParser.COMMA) | (1 << EParser.RANGE) | (1 << EParser.DOT) | (1 << EParser.LPAR) | (1 << EParser.RPAR) | (1 << EParser.LBRAK) | (1 << EParser.RBRAK) | (1 << EParser.QMARK) | (1 << EParser.XMARK) | (1 << EParser.AMP) | (1 << EParser.AMP2) | (1 << EParser.PIPE) | (1 << EParser.PIPE2))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (EParser.PLUS - 32)) | (1 << (EParser.MINUS - 32)) | (1 << (EParser.STAR - 32)) | (1 << (EParser.SLASH - 32)) | (1 << (EParser.BSLASH - 32)) | (1 << (EParser.PERCENT - 32)) | (1 << (EParser.GT - 32)) | (1 << (EParser.GTE - 32)) | (1 << (EParser.LT - 32)) | (1 << (EParser.LTE - 32)) | (1 << (EParser.LTGT - 32)) | (1 << (EParser.LTCOLONGT - 32)) | (1 << (EParser.EQ - 32)) | (1 << (EParser.XEQ - 32)) | (1 << (EParser.EQ2 - 32)) | (1 << (EParser.TEQ - 32)) | (1 << (EParser.TILDE - 32)) | (1 << (EParser.LARROW - 32)) | (1 << (EParser.RARROW - 32)) | (1 << (EParser.BOOLEAN - 32)) | (1 << (EParser.CHARACTER - 32)) | (1 << (EParser.TEXT - 32)) | (1 << (EParser.INTEGER - 32)) | (1 << (EParser.DECIMAL - 32)) | (1 << (EParser.DATE - 32)) | (1 << (EParser.TIME - 32)) | (1 << (EParser.DATETIME - 32)) | (1 << (EParser.PERIOD - 32)) | (1 << (EParser.VERSION - 32)) | (1 << (EParser.METHOD_T - 32)) | (1 << (EParser.CODE - 32)) | (1 << (EParser.DOCUMENT - 32)))) !== 0) || ((((_la - 64)) & ~0x1f) == 0 && ((1 << (_la - 64)) & ((1 << (EParser.BLOB - 64)) | (1 << (EParser.IMAGE - 64)) | (1 << (EParser.UUID - 64)) | (1 << (EParser.ITERATOR - 64)) | (1 << (EParser.CURSOR - 64)) | (1 << (EParser.HTML - 64)) | (1 << (EParser.ABSTRACT - 64)) | (1 << (EParser.ALL - 64)) | (1 << (EParser.ALWAYS - 64)) | (1 << (EParser.AND - 64)) | (1 << (EParser.ANY - 64)) | (1 << (EParser.AS - 64)) | (1 << (EParser.ASC - 64)) | (1 << (EParser.ATTR - 64)) | (1 << (EParser.ATTRIBUTE - 64)) | (1 << (EParser.ATTRIBUTES - 64)) | (1 << (EParser.BINDINGS - 64)) | (1 << (EParser.BREAK - 64)) | (1 << (EParser.BY - 64)) | (1 << (EParser.CASE - 64)) | (1 << (EParser.CATCH - 64)) | (1 << (EParser.CATEGORY - 64)) | (1 << (EParser.CLASS - 64)) | (1 << (EParser.CLOSE - 64)) | (1 << (EParser.CONTAINS - 64)) | (1 << (EParser.DEF - 64)) | (1 << (EParser.DEFAULT - 64)) | (1 << (EParser.DEFINE - 64)) | (1 << (EParser.DELETE - 64)) | (1 << (EParser.DESC - 64)) | (1 << (EParser.DO - 64)) | (1 << (EParser.DOING - 64)))) !== 0) || ((((_la - 96)) & ~0x1f) == 0 && ((1 << (_la - 96)) & ((1 << (EParser.EACH - 96)) | (1 << (EParser.ELSE - 96)) | (1 << (EParser.ENUM - 96)) | (1 << (EParser.ENUMERATED - 96)) | (1 << (EParser.EXCEPT - 96)) | (1 << (EParser.EXECUTE - 96)) | (1 << (EParser.EXPECTING - 96)) | (1 << (EParser.EXTENDS - 96)) | (1 << (EParser.FETCH - 96)) | (1 << (EParser.FILTERED - 96)) | (1 << (EParser.FINALLY - 96)) | (1 << (EParser.FLUSH - 96)) | (1 << (EParser.FOR - 96)) | (1 << (EParser.FROM - 96)) | (1 << (EParser.GETTER - 96)) | (1 << (EParser.HAS - 96)) | (1 << (EParser.IF - 96)) | (1 << (EParser.IN - 96)) | (1 << (EParser.INDEX - 96)) | (1 << (EParser.INVOKE - 96)) | (1 << (EParser.IS - 96)) | (1 << (EParser.MATCHING - 96)) | (1 << (EParser.METHOD - 96)) | (1 << (EParser.METHODS - 96)) | (1 << (EParser.MODULO - 96)) | (1 << (EParser.MUTABLE - 96)) | (1 << (EParser.NATIVE - 96)) | (1 << (EParser.NONE - 96)) | (1 << (EParser.NOT - 96)) | (1 << (EParser.NOTHING - 96)) | (1 << (EParser.NULL - 96)) | (1 << (EParser.ON - 96)))) !== 0) || ((((_la - 128)) & ~0x1f) == 0 && ((1 << (_la - 128)) & ((1 << (EParser.ONE - 128)) | (1 << (EParser.OPEN - 128)) | (1 << (EParser.OPERATOR - 128)) | (1 << (EParser.OR - 128)) | (1 << (EParser.ORDER - 128)) | (1 << (EParser.OTHERWISE - 128)) | (1 << (EParser.PASS - 128)) | (1 << (EParser.RAISE - 128)) | (1 << (EParser.READ - 128)) | (1 << (EParser.RECEIVING - 128)) | (1 << (EParser.RESOURCE - 128)) | (1 << (EParser.RETURN - 128)) | (1 << (EParser.RETURNING - 128)) | (1 << (EParser.ROWS - 128)) | (1 << (EParser.SELF - 128)) | (1 << (EParser.SETTER - 128)) | (1 << (EParser.SINGLETON - 128)) | (1 << (EParser.SORTED - 128)) | (1 << (EParser.STORABLE - 128)) | (1 << (EParser.STORE - 128)) | (1 << (EParser.SWITCH - 128)) | (1 << (EParser.TEST - 128)) | (1 << (EParser.THEN - 128)) | (1 << (EParser.THIS - 128)) | (1 << (EParser.THROW - 128)) | (1 << (EParser.TO - 128)) | (1 << (EParser.TRY - 128)) | (1 << (EParser.VERIFYING - 128)) | (1 << (EParser.WIDGET - 128)) | (1 << (EParser.WITH - 128)) | (1 << (EParser.WHEN - 128)) | (1 << (EParser.WHERE - 128)))) !== 0) || ((((_la - 160)) & ~0x1f) == 0 && ((1 << (_la - 160)) & ((1 << (EParser.WHILE - 160)) | (1 << (EParser.WRITE - 160)) | (1 << (EParser.BOOLEAN_LITERAL - 160)) | (1 << (EParser.CHAR_LITERAL - 160)) | (1 << (EParser.MIN_INTEGER - 160)) | (1 << (EParser.MAX_INTEGER - 160)) | (1 << (EParser.SYMBOL_IDENTIFIER - 160)) | (1 << (EParser.TYPE_IDENTIFIER - 160)) | (1 << (EParser.VARIABLE_IDENTIFIER - 160)) | (1 << (EParser.NATIVE_IDENTIFIER - 160)) | (1 << (EParser.DOLLAR_IDENTIFIER - 160)) | (1 << (EParser.ARONDBASE_IDENTIFIER - 160)) | (1 << (EParser.TEXT_LITERAL - 160)) | (1 << (EParser.UUID_LITERAL - 160)) | (1 << (EParser.INTEGER_LITERAL - 160)) | (1 << (EParser.HEXA_LITERAL - 160)) | (1 << (EParser.DECIMAL_LITERAL - 160)) | (1 << (EParser.DATETIME_LITERAL - 160)) | (1 << (EParser.TIME_LITERAL - 160)) | (1 << (EParser.DATE_LITERAL - 160)) | (1 << (EParser.PERIOD_LITERAL - 160)) | (1 << (EParser.VERSION_LITERAL - 160)))) !== 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;
};
EParser.prototype.sempred = function(localctx, ruleIndex, predIndex) {
switch(ruleIndex) {
case 18:
return this.native_category_binding_list_sempred(localctx, predIndex);
case 39:
return this.else_if_statement_list_sempred(localctx, predIndex);
case 45:
return this.expression_sempred(localctx, predIndex);
case 46:
return this.unresolved_expression_sempred(localctx, predIndex);
case 47:
return this.unresolved_selector_sempred(localctx, predIndex);
case 49:
return this.invocation_trailer_sempred(localctx, predIndex);
case 51:
return this.instance_expression_sempred(localctx, predIndex);
case 52:
return this.instance_selector_sempred(localctx, predIndex);
case 62:
return this.argument_assignment_list_sempred(localctx, predIndex);
case 63:
return this.with_argument_assignment_list_sempred(localctx, predIndex);
case 66:
return this.child_instance_sempred(localctx, predIndex);
case 89:
return this.typedef_sempred(localctx, predIndex);
case 100:
return this.nospace_hyphen_identifier_or_keyword_sempred(localctx, predIndex);
case 101:
return this.nospace_identifier_or_keyword_sempred(localctx, predIndex);
case 114:
return this.any_type_sempred(localctx, predIndex);
case 152:
return this.assignable_instance_sempred(localctx, predIndex);
case 153:
return this.is_expression_sempred(localctx, predIndex);
case 160:
return this.new_token_sempred(localctx, predIndex);
case 161:
return this.key_token_sempred(localctx, predIndex);
case 162:
return this.module_token_sempred(localctx, predIndex);
case 163:
return this.value_token_sempred(localctx, predIndex);
case 164:
return this.symbols_token_sempred(localctx, predIndex);
case 171:
return this.javascript_expression_sempred(localctx, predIndex);
case 177:
return this.javascript_arguments_sempred(localctx, predIndex);
case 184:
return this.python_expression_sempred(localctx, predIndex);
case 190:
return this.python_ordinal_argument_list_sempred(localctx, predIndex);
case 191:
return this.python_named_argument_list_sempred(localctx, predIndex);
case 193:
return this.python_identifier_expression_sempred(localctx, predIndex);
case 197:
return this.java_expression_sempred(localctx, predIndex);
case 203:
return this.java_arguments_sempred(localctx, predIndex);
case 206:
return this.java_identifier_expression_sempred(localctx, predIndex);
case 207:
return this.java_class_identifier_expression_sempred(localctx, predIndex);
case 211:
return this.csharp_expression_sempred(localctx, predIndex);
case 217:
return this.csharp_arguments_sempred(localctx, predIndex);
case 220:
return this.csharp_identifier_expression_sempred(localctx, predIndex);
case 240:
return this.css_identifier_sempred(localctx, predIndex);
default:
throw "No predicate with index:" + ruleIndex;
}
};
EParser.prototype.native_category_binding_list_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 0:
return this.precpred(this._ctx, 1);
default:
throw "No predicate with index:" + predIndex;
}
};
EParser.prototype.else_if_statement_list_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 1:
return this.precpred(this._ctx, 1);
default:
throw "No predicate with index:" + predIndex;
}
};
EParser.prototype.expression_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 2:
return this.precpred(this._ctx, 42);
case 3:
return this.precpred(this._ctx, 41);
case 4:
return this.precpred(this._ctx, 40);
case 5:
return this.precpred(this._ctx, 39);
case 6:
return this.precpred(this._ctx, 38);
case 7:
return this.precpred(this._ctx, 36);
case 8:
return this.precpred(this._ctx, 35);
case 9:
return this.precpred(this._ctx, 34);
case 10:
return this.precpred(this._ctx, 33);
case 11:
return this.precpred(this._ctx, 30);
case 12:
return this.precpred(this._ctx, 29);
case 13:
return this.precpred(this._ctx, 28);
case 14:
return this.precpred(this._ctx, 27);
case 15:
return this.precpred(this._ctx, 26);
case 16:
return this.precpred(this._ctx, 25);
case 17:
return this.precpred(this._ctx, 24);
case 18:
return this.precpred(this._ctx, 23);
case 19:
return this.precpred(this._ctx, 22);
case 20:
return this.precpred(this._ctx, 21);
case 21:
return this.precpred(this._ctx, 20);
case 22:
return this.precpred(this._ctx, 19);
case 23:
return this.precpred(this._ctx, 18);
case 24:
return this.precpred(this._ctx, 17);
case 25:
return this.precpred(this._ctx, 16);
case 26:
return this.precpred(this._ctx, 15);
case 27:
return this.precpred(this._ctx, 1);
case 28:
return this.precpred(this._ctx, 37);
case 29:
return this.precpred(this._ctx, 32);
case 30:
return this.precpred(this._ctx, 31);
case 31:
return this.precpred(this._ctx, 8);
default:
throw "No predicate with index:" + predIndex;
}
};
EParser.prototype.unresolved_expression_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 32:
return this.precpred(this._ctx, 1);
default:
throw "No predicate with index:" + predIndex;
}
};
EParser.prototype.unresolved_selector_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 33:
return this.wasNot(EParser.WS);
default:
throw "No predicate with index:" + predIndex;
}
};
EParser.prototype.invocation_trailer_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 34:
return this.willBe(EParser.LF);
default:
throw "No predicate with index:" + predIndex;
}
};
EParser.prototype.instance_expression_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 35:
return this.precpred(this._ctx, 1);
default:
throw "No predicate with index:" + predIndex;
}
};
EParser.prototype.instance_selector_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 36:
return this.wasNot(EParser.WS);
case 37:
return this.wasNot(EParser.WS);
case 38:
return this.wasNot(EParser.WS);
default:
throw "No predicate with index:" + predIndex;
}
};
EParser.prototype.argument_assignment_list_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 39:
return this.was(EParser.WS);
default:
throw "No predicate with index:" + predIndex;
}
};
EParser.prototype.with_argument_assignment_list_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 40:
return this.precpred(this._ctx, 1);
default:
throw "No predicate with index:" + predIndex;
}
};
EParser.prototype.child_instance_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 41:
return this.wasNot(EParser.WS);
case 42:
return this.wasNot(EParser.WS);
default:
throw "No predicate with index:" + predIndex;
}
};
EParser.prototype.typedef_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 43:
return this.precpred(this._ctx, 5);
case 44:
return this.precpred(this._ctx, 4);
case 45:
return this.precpred(this._ctx, 3);
default:
throw "No predicate with index:" + predIndex;
}
};
EParser.prototype.nospace_hyphen_identifier_or_keyword_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 46:
return this.wasNotWhiteSpace();
default:
throw "No predicate with index:" + predIndex;
}
};
EParser.prototype.nospace_identifier_or_keyword_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 47:
return this.wasNotWhiteSpace();
default:
throw "No predicate with index:" + predIndex;
}
};
EParser.prototype.any_type_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 48:
return this.precpred(this._ctx, 2);
case 49:
return this.precpred(this._ctx, 1);
default:
throw "No predicate with index:" + predIndex;
}
};
EParser.prototype.assignable_instance_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 50:
return this.precpred(this._ctx, 1);
default:
throw "No predicate with index:" + predIndex;
}
};
EParser.prototype.is_expression_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 51:
return this.willBeAOrAn();
default:
throw "No predicate with index:" + predIndex;
}
};
EParser.prototype.new_token_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 52:
return this.isText(localctx.i1,"new");
default:
throw "No predicate with index:" + predIndex;
}
};
EParser.prototype.key_token_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 53:
return this.isText(localctx.i1,"key");
default:
throw "No predicate with index:" + predIndex;
}
};
EParser.prototype.module_token_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 54:
return this.isText(localctx.i1,"module");
default:
throw "No predicate with index:" + predIndex;
}
};
EParser.prototype.value_token_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 55:
return this.isText(localctx.i1,"value");
default:
throw "No predicate with index:" + predIndex;
}
};
EParser.prototype.symbols_token_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 56:
return this.isText(localctx.i1,"symbols");
default:
throw "No predicate with index:" + predIndex;
}
};
EParser.prototype.javascript_expression_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 57:
return this.precpred(this._ctx, 1);
default:
throw "No predicate with index:" + predIndex;
}
};
EParser.prototype.javascript_arguments_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 58:
return this.precpred(this._ctx, 1);
default:
throw "No predicate with index:" + predIndex;
}
};
EParser.prototype.python_expression_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 59:
return this.precpred(this._ctx, 1);
default:
throw "No predicate with index:" + predIndex;
}
};
EParser.prototype.python_ordinal_argument_list_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 60:
return this.precpred(this._ctx, 1);
default:
throw "No predicate with index:" + predIndex;
}
};
EParser.prototype.python_named_argument_list_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 61:
return this.precpred(this._ctx, 1);
default:
throw "No predicate with index:" + predIndex;
}
};
EParser.prototype.python_identifier_expression_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 62:
return this.precpred(this._ctx, 1);
default:
throw "No predicate with index:" + predIndex;
}
};
EParser.prototype.java_expression_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 63:
return this.precpred(this._ctx, 1);
default:
throw "No predicate with index:" + predIndex;
}
};
EParser.prototype.java_arguments_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 64:
return this.precpred(this._ctx, 1);
default:
throw "No predicate with index:" + predIndex;
}
};
EParser.prototype.java_identifier_expression_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 65:
return this.precpred(this._ctx, 1);
default:
throw "No predicate with index:" + predIndex;
}
};
EParser.prototype.java_class_identifier_expression_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 66:
return this.precpred(this._ctx, 1);
default:
throw "No predicate with index:" + predIndex;
}
};
EParser.prototype.csharp_expression_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 67:
return this.precpred(this._ctx, 1);
default:
throw "No predicate with index:" + predIndex;
}
};
EParser.prototype.csharp_arguments_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 68:
return this.precpred(this._ctx, 1);
default:
throw "No predicate with index:" + predIndex;
}
};
EParser.prototype.csharp_identifier_expression_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 69:
return this.precpred(this._ctx, 1);
default:
throw "No predicate with index:" + predIndex;
}
};
EParser.prototype.css_identifier_sempred = function(localctx, predIndex) {
switch(predIndex) {
case 70:
return this.precpred(this._ctx, 1);
default:
throw "No predicate with index:" + predIndex;
}
};
exports.EParser = EParser;
/***/ }),
/* 116 */
/***/ (function(module, exports, __webpack_require__) {
// Generated from EParser.g4 by ANTLR 4.7.1
// jshint ignore: start
var antlr4 = __webpack_require__(1);
// This class defines a complete listener for a parse tree produced by EParser.
function EParserListener() {
antlr4.tree.ParseTreeListener.call(this);
return this;
}
EParserListener.prototype = Object.create(antlr4.tree.ParseTreeListener.prototype);
EParserListener.prototype.constructor = EParserListener;
// Enter a parse tree produced by EParser#enum_category_declaration.
EParserListener.prototype.enterEnum_category_declaration = function(ctx) {
};
// Exit a parse tree produced by EParser#enum_category_declaration.
EParserListener.prototype.exitEnum_category_declaration = function(ctx) {
};
// Enter a parse tree produced by EParser#enum_native_declaration.
EParserListener.prototype.enterEnum_native_declaration = function(ctx) {
};
// Exit a parse tree produced by EParser#enum_native_declaration.
EParserListener.prototype.exitEnum_native_declaration = function(ctx) {
};
// Enter a parse tree produced by EParser#native_symbol.
EParserListener.prototype.enterNative_symbol = function(ctx) {
};
// Exit a parse tree produced by EParser#native_symbol.
EParserListener.prototype.exitNative_symbol = function(ctx) {
};
// Enter a parse tree produced by EParser#category_symbol.
EParserListener.prototype.enterCategory_symbol = function(ctx) {
};
// Exit a parse tree produced by EParser#category_symbol.
EParserListener.prototype.exitCategory_symbol = function(ctx) {
};
// Enter a parse tree produced by EParser#attribute_declaration.
EParserListener.prototype.enterAttribute_declaration = function(ctx) {
};
// Exit a parse tree produced by EParser#attribute_declaration.
EParserListener.prototype.exitAttribute_declaration = function(ctx) {
};
// Enter a parse tree produced by EParser#concrete_widget_declaration.
EParserListener.prototype.enterConcrete_widget_declaration = function(ctx) {
};
// Exit a parse tree produced by EParser#concrete_widget_declaration.
EParserListener.prototype.exitConcrete_widget_declaration = function(ctx) {
};
// Enter a parse tree produced by EParser#native_widget_declaration.
EParserListener.prototype.enterNative_widget_declaration = function(ctx) {
};
// Exit a parse tree produced by EParser#native_widget_declaration.
EParserListener.prototype.exitNative_widget_declaration = function(ctx) {
};
// Enter a parse tree produced by EParser#concrete_category_declaration.
EParserListener.prototype.enterConcrete_category_declaration = function(ctx) {
};
// Exit a parse tree produced by EParser#concrete_category_declaration.
EParserListener.prototype.exitConcrete_category_declaration = function(ctx) {
};
// Enter a parse tree produced by EParser#singleton_category_declaration.
EParserListener.prototype.enterSingleton_category_declaration = function(ctx) {
};
// Exit a parse tree produced by EParser#singleton_category_declaration.
EParserListener.prototype.exitSingleton_category_declaration = function(ctx) {
};
// Enter a parse tree produced by EParser#DerivedList.
EParserListener.prototype.enterDerivedList = function(ctx) {
};
// Exit a parse tree produced by EParser#DerivedList.
EParserListener.prototype.exitDerivedList = function(ctx) {
};
// Enter a parse tree produced by EParser#DerivedListItem.
EParserListener.prototype.enterDerivedListItem = function(ctx) {
};
// Exit a parse tree produced by EParser#DerivedListItem.
EParserListener.prototype.exitDerivedListItem = function(ctx) {
};
// Enter a parse tree produced by EParser#operator_method_declaration.
EParserListener.prototype.enterOperator_method_declaration = function(ctx) {
};
// Exit a parse tree produced by EParser#operator_method_declaration.
EParserListener.prototype.exitOperator_method_declaration = function(ctx) {
};
// Enter a parse tree produced by EParser#setter_method_declaration.
EParserListener.prototype.enterSetter_method_declaration = function(ctx) {
};
// Exit a parse tree produced by EParser#setter_method_declaration.
EParserListener.prototype.exitSetter_method_declaration = function(ctx) {
};
// Enter a parse tree produced by EParser#native_setter_declaration.
EParserListener.prototype.enterNative_setter_declaration = function(ctx) {
};
// Exit a parse tree produced by EParser#native_setter_declaration.
EParserListener.prototype.exitNative_setter_declaration = function(ctx) {
};
// Enter a parse tree produced by EParser#getter_method_declaration.
EParserListener.prototype.enterGetter_method_declaration = function(ctx) {
};
// Exit a parse tree produced by EParser#getter_method_declaration.
EParserListener.prototype.exitGetter_method_declaration = function(ctx) {
};
// Enter a parse tree produced by EParser#native_getter_declaration.
EParserListener.prototype.enterNative_getter_declaration = function(ctx) {
};
// Exit a parse tree produced by EParser#native_getter_declaration.
EParserListener.prototype.exitNative_getter_declaration = function(ctx) {
};
// Enter a parse tree produced by EParser#native_category_declaration.
EParserListener.prototype.enterNative_category_declaration = function(ctx) {
};
// Exit a parse tree produced by EParser#native_category_declaration.
EParserListener.prototype.exitNative_category_declaration = function(ctx) {
};
// Enter a parse tree produced by EParser#native_resource_declaration.
EParserListener.prototype.enterNative_resource_declaration = function(ctx) {
};
// Exit a parse tree produced by EParser#native_resource_declaration.
EParserListener.prototype.exitNative_resource_declaration = function(ctx) {
};
// Enter a parse tree produced by EParser#native_category_bindings.
EParserListener.prototype.enterNative_category_bindings = function(ctx) {
};
// Exit a parse tree produced by EParser#native_category_bindings.
EParserListener.prototype.exitNative_category_bindings = function(ctx) {
};
// Enter a parse tree produced by EParser#NativeCategoryBindingListItem.
EParserListener.prototype.enterNativeCategoryBindingListItem = function(ctx) {
};
// Exit a parse tree produced by EParser#NativeCategoryBindingListItem.
EParserListener.prototype.exitNativeCategoryBindingListItem = function(ctx) {
};
// Enter a parse tree produced by EParser#NativeCategoryBindingList.
EParserListener.prototype.enterNativeCategoryBindingList = function(ctx) {
};
// Exit a parse tree produced by EParser#NativeCategoryBindingList.
EParserListener.prototype.exitNativeCategoryBindingList = function(ctx) {
};
// Enter a parse tree produced by EParser#AttributeList.
EParserListener.prototype.enterAttributeList = function(ctx) {
};
// Exit a parse tree produced by EParser#AttributeList.
EParserListener.prototype.exitAttributeList = function(ctx) {
};
// Enter a parse tree produced by EParser#AttributeListItem.
EParserListener.prototype.enterAttributeListItem = function(ctx) {
};
// Exit a parse tree produced by EParser#AttributeListItem.
EParserListener.prototype.exitAttributeListItem = function(ctx) {
};
// Enter a parse tree produced by EParser#abstract_method_declaration.
EParserListener.prototype.enterAbstract_method_declaration = function(ctx) {
};
// Exit a parse tree produced by EParser#abstract_method_declaration.
EParserListener.prototype.exitAbstract_method_declaration = function(ctx) {
};
// Enter a parse tree produced by EParser#concrete_method_declaration.
EParserListener.prototype.enterConcrete_method_declaration = function(ctx) {
};
// Exit a parse tree produced by EParser#concrete_method_declaration.
EParserListener.prototype.exitConcrete_method_declaration = function(ctx) {
};
// Enter a parse tree produced by EParser#native_method_declaration.
EParserListener.prototype.enterNative_method_declaration = function(ctx) {
};
// Exit a parse tree produced by EParser#native_method_declaration.
EParserListener.prototype.exitNative_method_declaration = function(ctx) {
};
// Enter a parse tree produced by EParser#test_method_declaration.
EParserListener.prototype.enterTest_method_declaration = function(ctx) {
};
// Exit a parse tree produced by EParser#test_method_declaration.
EParserListener.prototype.exitTest_method_declaration = function(ctx) {
};
// Enter a parse tree produced by EParser#assertion.
EParserListener.prototype.enterAssertion = function(ctx) {
};
// Exit a parse tree produced by EParser#assertion.
EParserListener.prototype.exitAssertion = function(ctx) {
};
// Enter a parse tree produced by EParser#full_argument_list.
EParserListener.prototype.enterFull_argument_list = function(ctx) {
};
// Exit a parse tree produced by EParser#full_argument_list.
EParserListener.prototype.exitFull_argument_list = function(ctx) {
};
// Enter a parse tree produced by EParser#typed_argument.
EParserListener.prototype.enterTyped_argument = function(ctx) {
};
// Exit a parse tree produced by EParser#typed_argument.
EParserListener.prototype.exitTyped_argument = function(ctx) {
};
// Enter a parse tree produced by EParser#AssignInstanceStatement.
EParserListener.prototype.enterAssignInstanceStatement = function(ctx) {
};
// Exit a parse tree produced by EParser#AssignInstanceStatement.
EParserListener.prototype.exitAssignInstanceStatement = function(ctx) {
};
// Enter a parse tree produced by EParser#MethodCallStatement.
EParserListener.prototype.enterMethodCallStatement = function(ctx) {
};
// Exit a parse tree produced by EParser#MethodCallStatement.
EParserListener.prototype.exitMethodCallStatement = function(ctx) {
};
// Enter a parse tree produced by EParser#AssignTupleStatement.
EParserListener.prototype.enterAssignTupleStatement = function(ctx) {
};
// Exit a parse tree produced by EParser#AssignTupleStatement.
EParserListener.prototype.exitAssignTupleStatement = function(ctx) {
};
// Enter a parse tree produced by EParser#StoreStatement.
EParserListener.prototype.enterStoreStatement = function(ctx) {
};
// Exit a parse tree produced by EParser#StoreStatement.
EParserListener.prototype.exitStoreStatement = function(ctx) {
};
// Enter a parse tree produced by EParser#FetchStatement.
EParserListener.prototype.enterFetchStatement = function(ctx) {
};
// Exit a parse tree produced by EParser#FetchStatement.
EParserListener.prototype.exitFetchStatement = function(ctx) {
};
// Enter a parse tree produced by EParser#FlushStatement.
EParserListener.prototype.enterFlushStatement = function(ctx) {
};
// Exit a parse tree produced by EParser#FlushStatement.
EParserListener.prototype.exitFlushStatement = function(ctx) {
};
// Enter a parse tree produced by EParser#BreakStatement.
EParserListener.prototype.enterBreakStatement = function(ctx) {
};
// Exit a parse tree produced by EParser#BreakStatement.
EParserListener.prototype.exitBreakStatement = function(ctx) {
};
// Enter a parse tree produced by EParser#ReturnStatement.
EParserListener.prototype.enterReturnStatement = function(ctx) {
};
// Exit a parse tree produced by EParser#ReturnStatement.
EParserListener.prototype.exitReturnStatement = function(ctx) {
};
// Enter a parse tree produced by EParser#IfStatement.
EParserListener.prototype.enterIfStatement = function(ctx) {
};
// Exit a parse tree produced by EParser#IfStatement.
EParserListener.prototype.exitIfStatement = function(ctx) {
};
// Enter a parse tree produced by EParser#SwitchStatement.
EParserListener.prototype.enterSwitchStatement = function(ctx) {
};
// Exit a parse tree produced by EParser#SwitchStatement.
EParserListener.prototype.exitSwitchStatement = function(ctx) {
};
// Enter a parse tree produced by EParser#ForEachStatement.
EParserListener.prototype.enterForEachStatement = function(ctx) {
};
// Exit a parse tree produced by EParser#ForEachStatement.
EParserListener.prototype.exitForEachStatement = function(ctx) {
};
// Enter a parse tree produced by EParser#WhileStatement.
EParserListener.prototype.enterWhileStatement = function(ctx) {
};
// Exit a parse tree produced by EParser#WhileStatement.
EParserListener.prototype.exitWhileStatement = function(ctx) {
};
// Enter a parse tree produced by EParser#DoWhileStatement.
EParserListener.prototype.enterDoWhileStatement = function(ctx) {
};
// Exit a parse tree produced by EParser#DoWhileStatement.
EParserListener.prototype.exitDoWhileStatement = function(ctx) {
};
// Enter a parse tree produced by EParser#RaiseStatement.
EParserListener.prototype.enterRaiseStatement = function(ctx) {
};
// Exit a parse tree produced by EParser#RaiseStatement.
EParserListener.prototype.exitRaiseStatement = function(ctx) {
};
// Enter a parse tree produced by EParser#TryStatement.
EParserListener.prototype.enterTryStatement = function(ctx) {
};
// Exit a parse tree produced by EParser#TryStatement.
EParserListener.prototype.exitTryStatement = function(ctx) {
};
// Enter a parse tree produced by EParser#WriteStatement.
EParserListener.prototype.enterWriteStatement = function(ctx) {
};
// Exit a parse tree produced by EParser#WriteStatement.
EParserListener.prototype.exitWriteStatement = function(ctx) {
};
// Enter a parse tree produced by EParser#WithResourceStatement.
EParserListener.prototype.enterWithResourceStatement = function(ctx) {
};
// Exit a parse tree produced by EParser#WithResourceStatement.
EParserListener.prototype.exitWithResourceStatement = function(ctx) {
};
// Enter a parse tree produced by EParser#WithSingletonStatement.
EParserListener.prototype.enterWithSingletonStatement = function(ctx) {
};
// Exit a parse tree produced by EParser#WithSingletonStatement.
EParserListener.prototype.exitWithSingletonStatement = function(ctx) {
};
// Enter a parse tree produced by EParser#ClosureStatement.
EParserListener.prototype.enterClosureStatement = function(ctx) {
};
// Exit a parse tree produced by EParser#ClosureStatement.
EParserListener.prototype.exitClosureStatement = function(ctx) {
};
// Enter a parse tree produced by EParser#CommentStatement.
EParserListener.prototype.enterCommentStatement = function(ctx) {
};
// Exit a parse tree produced by EParser#CommentStatement.
EParserListener.prototype.exitCommentStatement = function(ctx) {
};
// Enter a parse tree produced by EParser#flush_statement.
EParserListener.prototype.enterFlush_statement = function(ctx) {
};
// Exit a parse tree produced by EParser#flush_statement.
EParserListener.prototype.exitFlush_statement = function(ctx) {
};
// Enter a parse tree produced by EParser#store_statement.
EParserListener.prototype.enterStore_statement = function(ctx) {
};
// Exit a parse tree produced by EParser#store_statement.
EParserListener.prototype.exitStore_statement = function(ctx) {
};
// Enter a parse tree produced by EParser#UnresolvedWithArgsStatement.
EParserListener.prototype.enterUnresolvedWithArgsStatement = function(ctx) {
};
// Exit a parse tree produced by EParser#UnresolvedWithArgsStatement.
EParserListener.prototype.exitUnresolvedWithArgsStatement = function(ctx) {
};
// Enter a parse tree produced by EParser#InvokeStatement.
EParserListener.prototype.enterInvokeStatement = function(ctx) {
};
// Exit a parse tree produced by EParser#InvokeStatement.
EParserListener.prototype.exitInvokeStatement = function(ctx) {
};
// Enter a parse tree produced by EParser#with_resource_statement.
EParserListener.prototype.enterWith_resource_statement = function(ctx) {
};
// Exit a parse tree produced by EParser#with_resource_statement.
EParserListener.prototype.exitWith_resource_statement = function(ctx) {
};
// Enter a parse tree produced by EParser#with_singleton_statement.
EParserListener.prototype.enterWith_singleton_statement = function(ctx) {
};
// Exit a parse tree produced by EParser#with_singleton_statement.
EParserListener.prototype.exitWith_singleton_statement = function(ctx) {
};
// Enter a parse tree produced by EParser#switch_statement.
EParserListener.prototype.enterSwitch_statement = function(ctx) {
};
// Exit a parse tree produced by EParser#switch_statement.
EParserListener.prototype.exitSwitch_statement = function(ctx) {
};
// Enter a parse tree produced by EParser#AtomicSwitchCase.
EParserListener.prototype.enterAtomicSwitchCase = function(ctx) {
};
// Exit a parse tree produced by EParser#AtomicSwitchCase.
EParserListener.prototype.exitAtomicSwitchCase = function(ctx) {
};
// Enter a parse tree produced by EParser#CollectionSwitchCase.
EParserListener.prototype.enterCollectionSwitchCase = function(ctx) {
};
// Exit a parse tree produced by EParser#CollectionSwitchCase.
EParserListener.prototype.exitCollectionSwitchCase = function(ctx) {
};
// Enter a parse tree produced by EParser#for_each_statement.
EParserListener.prototype.enterFor_each_statement = function(ctx) {
};
// Exit a parse tree produced by EParser#for_each_statement.
EParserListener.prototype.exitFor_each_statement = function(ctx) {
};
// Enter a parse tree produced by EParser#do_while_statement.
EParserListener.prototype.enterDo_while_statement = function(ctx) {
};
// Exit a parse tree produced by EParser#do_while_statement.
EParserListener.prototype.exitDo_while_statement = function(ctx) {
};
// Enter a parse tree produced by EParser#while_statement.
EParserListener.prototype.enterWhile_statement = function(ctx) {
};
// Exit a parse tree produced by EParser#while_statement.
EParserListener.prototype.exitWhile_statement = function(ctx) {
};
// Enter a parse tree produced by EParser#if_statement.
EParserListener.prototype.enterIf_statement = function(ctx) {
};
// Exit a parse tree produced by EParser#if_statement.
EParserListener.prototype.exitIf_statement = function(ctx) {
};
// Enter a parse tree produced by EParser#ElseIfStatementList.
EParserListener.prototype.enterElseIfStatementList = function(ctx) {
};
// Exit a parse tree produced by EParser#ElseIfStatementList.
EParserListener.prototype.exitElseIfStatementList = function(ctx) {
};
// Enter a parse tree produced by EParser#ElseIfStatementListItem.
EParserListener.prototype.enterElseIfStatementListItem = function(ctx) {
};
// Exit a parse tree produced by EParser#ElseIfStatementListItem.
EParserListener.prototype.exitElseIfStatementListItem = function(ctx) {
};
// Enter a parse tree produced by EParser#raise_statement.
EParserListener.prototype.enterRaise_statement = function(ctx) {
};
// Exit a parse tree produced by EParser#raise_statement.
EParserListener.prototype.exitRaise_statement = function(ctx) {
};
// Enter a parse tree produced by EParser#try_statement.
EParserListener.prototype.enterTry_statement = function(ctx) {
};
// Exit a parse tree produced by EParser#try_statement.
EParserListener.prototype.exitTry_statement = function(ctx) {
};
// Enter a parse tree produced by EParser#CatchAtomicStatement.
EParserListener.prototype.enterCatchAtomicStatement = function(ctx) {
};
// Exit a parse tree produced by EParser#CatchAtomicStatement.
EParserListener.prototype.exitCatchAtomicStatement = function(ctx) {
};
// Enter a parse tree produced by EParser#CatchCollectionStatement.
EParserListener.prototype.enterCatchCollectionStatement = function(ctx) {
};
// Exit a parse tree produced by EParser#CatchCollectionStatement.
EParserListener.prototype.exitCatchCollectionStatement = function(ctx) {
};
// Enter a parse tree produced by EParser#break_statement.
EParserListener.prototype.enterBreak_statement = function(ctx) {
};
// Exit a parse tree produced by EParser#break_statement.
EParserListener.prototype.exitBreak_statement = function(ctx) {
};
// Enter a parse tree produced by EParser#return_statement.
EParserListener.prototype.enterReturn_statement = function(ctx) {
};
// Exit a parse tree produced by EParser#return_statement.
EParserListener.prototype.exitReturn_statement = function(ctx) {
};
// Enter a parse tree produced by EParser#IntDivideExpression.
EParserListener.prototype.enterIntDivideExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#IntDivideExpression.
EParserListener.prototype.exitIntDivideExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#HasAnyExpression.
EParserListener.prototype.enterHasAnyExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#HasAnyExpression.
EParserListener.prototype.exitHasAnyExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#HasExpression.
EParserListener.prototype.enterHasExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#HasExpression.
EParserListener.prototype.exitHasExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#InExpression.
EParserListener.prototype.enterInExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#InExpression.
EParserListener.prototype.exitInExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#JsxExpression.
EParserListener.prototype.enterJsxExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#JsxExpression.
EParserListener.prototype.exitJsxExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#GreaterThanExpression.
EParserListener.prototype.enterGreaterThanExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#GreaterThanExpression.
EParserListener.prototype.exitGreaterThanExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#OrExpression.
EParserListener.prototype.enterOrExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#OrExpression.
EParserListener.prototype.exitOrExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#ReadOneExpression.
EParserListener.prototype.enterReadOneExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#ReadOneExpression.
EParserListener.prototype.exitReadOneExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#NotHasAnyExpression.
EParserListener.prototype.enterNotHasAnyExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#NotHasAnyExpression.
EParserListener.prototype.exitNotHasAnyExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#AndExpression.
EParserListener.prototype.enterAndExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#AndExpression.
EParserListener.prototype.exitAndExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#MethodCallExpression.
EParserListener.prototype.enterMethodCallExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#MethodCallExpression.
EParserListener.prototype.exitMethodCallExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#FetchExpression.
EParserListener.prototype.enterFetchExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#FetchExpression.
EParserListener.prototype.exitFetchExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#NotHasExpression.
EParserListener.prototype.enterNotHasExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#NotHasExpression.
EParserListener.prototype.exitNotHasExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#SortedExpression.
EParserListener.prototype.enterSortedExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#SortedExpression.
EParserListener.prototype.exitSortedExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#NotHasAllExpression.
EParserListener.prototype.enterNotHasAllExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#NotHasAllExpression.
EParserListener.prototype.exitNotHasAllExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#ContainsExpression.
EParserListener.prototype.enterContainsExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#ContainsExpression.
EParserListener.prototype.exitContainsExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#NotContainsExpression.
EParserListener.prototype.enterNotContainsExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#NotContainsExpression.
EParserListener.prototype.exitNotContainsExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#RoughlyEqualsExpression.
EParserListener.prototype.enterRoughlyEqualsExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#RoughlyEqualsExpression.
EParserListener.prototype.exitRoughlyEqualsExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#ExecuteExpression.
EParserListener.prototype.enterExecuteExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#ExecuteExpression.
EParserListener.prototype.exitExecuteExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#GreaterThanOrEqualExpression.
EParserListener.prototype.enterGreaterThanOrEqualExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#GreaterThanOrEqualExpression.
EParserListener.prototype.exitGreaterThanOrEqualExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#IteratorExpression.
EParserListener.prototype.enterIteratorExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#IteratorExpression.
EParserListener.prototype.exitIteratorExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#IsNotExpression.
EParserListener.prototype.enterIsNotExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#IsNotExpression.
EParserListener.prototype.exitIsNotExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#DivideExpression.
EParserListener.prototype.enterDivideExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#DivideExpression.
EParserListener.prototype.exitDivideExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#IsExpression.
EParserListener.prototype.enterIsExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#IsExpression.
EParserListener.prototype.exitIsExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#AddExpression.
EParserListener.prototype.enterAddExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#AddExpression.
EParserListener.prototype.exitAddExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#InstanceExpression.
EParserListener.prototype.enterInstanceExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#InstanceExpression.
EParserListener.prototype.exitInstanceExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#ReadAllExpression.
EParserListener.prototype.enterReadAllExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#ReadAllExpression.
EParserListener.prototype.exitReadAllExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#CastExpression.
EParserListener.prototype.enterCastExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#CastExpression.
EParserListener.prototype.exitCastExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#ModuloExpression.
EParserListener.prototype.enterModuloExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#ModuloExpression.
EParserListener.prototype.exitModuloExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#TernaryExpression.
EParserListener.prototype.enterTernaryExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#TernaryExpression.
EParserListener.prototype.exitTernaryExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#NotEqualsExpression.
EParserListener.prototype.enterNotEqualsExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#NotEqualsExpression.
EParserListener.prototype.exitNotEqualsExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#DocumentExpression.
EParserListener.prototype.enterDocumentExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#DocumentExpression.
EParserListener.prototype.exitDocumentExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#NotExpression.
EParserListener.prototype.enterNotExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#NotExpression.
EParserListener.prototype.exitNotExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#InvocationExpression.
EParserListener.prototype.enterInvocationExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#InvocationExpression.
EParserListener.prototype.exitInvocationExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#CodeExpression.
EParserListener.prototype.enterCodeExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#CodeExpression.
EParserListener.prototype.exitCodeExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#AmbiguousExpression.
EParserListener.prototype.enterAmbiguousExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#AmbiguousExpression.
EParserListener.prototype.exitAmbiguousExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#LessThanOrEqualExpression.
EParserListener.prototype.enterLessThanOrEqualExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#LessThanOrEqualExpression.
EParserListener.prototype.exitLessThanOrEqualExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#ClosureExpression.
EParserListener.prototype.enterClosureExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#ClosureExpression.
EParserListener.prototype.exitClosureExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#BlobExpression.
EParserListener.prototype.enterBlobExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#BlobExpression.
EParserListener.prototype.exitBlobExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#FilteredListExpression.
EParserListener.prototype.enterFilteredListExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#FilteredListExpression.
EParserListener.prototype.exitFilteredListExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#ConstructorExpression.
EParserListener.prototype.enterConstructorExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#ConstructorExpression.
EParserListener.prototype.exitConstructorExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#MultiplyExpression.
EParserListener.prototype.enterMultiplyExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#MultiplyExpression.
EParserListener.prototype.exitMultiplyExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#NotInExpression.
EParserListener.prototype.enterNotInExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#NotInExpression.
EParserListener.prototype.exitNotInExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#UnresolvedExpression.
EParserListener.prototype.enterUnresolvedExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#UnresolvedExpression.
EParserListener.prototype.exitUnresolvedExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#MinusExpression.
EParserListener.prototype.enterMinusExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#MinusExpression.
EParserListener.prototype.exitMinusExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#HasAllExpression.
EParserListener.prototype.enterHasAllExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#HasAllExpression.
EParserListener.prototype.exitHasAllExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#CssExpression.
EParserListener.prototype.enterCssExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#CssExpression.
EParserListener.prototype.exitCssExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#LessThanExpression.
EParserListener.prototype.enterLessThanExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#LessThanExpression.
EParserListener.prototype.exitLessThanExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#EqualsExpression.
EParserListener.prototype.enterEqualsExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#EqualsExpression.
EParserListener.prototype.exitEqualsExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#UnresolvedSelector.
EParserListener.prototype.enterUnresolvedSelector = function(ctx) {
};
// Exit a parse tree produced by EParser#UnresolvedSelector.
EParserListener.prototype.exitUnresolvedSelector = function(ctx) {
};
// Enter a parse tree produced by EParser#UnresolvedIdentifier.
EParserListener.prototype.enterUnresolvedIdentifier = function(ctx) {
};
// Exit a parse tree produced by EParser#UnresolvedIdentifier.
EParserListener.prototype.exitUnresolvedIdentifier = function(ctx) {
};
// Enter a parse tree produced by EParser#unresolved_selector.
EParserListener.prototype.enterUnresolved_selector = function(ctx) {
};
// Exit a parse tree produced by EParser#unresolved_selector.
EParserListener.prototype.exitUnresolved_selector = function(ctx) {
};
// Enter a parse tree produced by EParser#invocation_expression.
EParserListener.prototype.enterInvocation_expression = function(ctx) {
};
// Exit a parse tree produced by EParser#invocation_expression.
EParserListener.prototype.exitInvocation_expression = function(ctx) {
};
// Enter a parse tree produced by EParser#invocation_trailer.
EParserListener.prototype.enterInvocation_trailer = function(ctx) {
};
// Exit a parse tree produced by EParser#invocation_trailer.
EParserListener.prototype.exitInvocation_trailer = function(ctx) {
};
// Enter a parse tree produced by EParser#ParenthesisExpression.
EParserListener.prototype.enterParenthesisExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#ParenthesisExpression.
EParserListener.prototype.exitParenthesisExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#LiteralExpression.
EParserListener.prototype.enterLiteralExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#LiteralExpression.
EParserListener.prototype.exitLiteralExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#IdentifierExpression.
EParserListener.prototype.enterIdentifierExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#IdentifierExpression.
EParserListener.prototype.exitIdentifierExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#ThisExpression.
EParserListener.prototype.enterThisExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#ThisExpression.
EParserListener.prototype.exitThisExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#SelectorExpression.
EParserListener.prototype.enterSelectorExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#SelectorExpression.
EParserListener.prototype.exitSelectorExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#SelectableExpression.
EParserListener.prototype.enterSelectableExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#SelectableExpression.
EParserListener.prototype.exitSelectableExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#MemberSelector.
EParserListener.prototype.enterMemberSelector = function(ctx) {
};
// Exit a parse tree produced by EParser#MemberSelector.
EParserListener.prototype.exitMemberSelector = function(ctx) {
};
// Enter a parse tree produced by EParser#SliceSelector.
EParserListener.prototype.enterSliceSelector = function(ctx) {
};
// Exit a parse tree produced by EParser#SliceSelector.
EParserListener.prototype.exitSliceSelector = function(ctx) {
};
// Enter a parse tree produced by EParser#ItemSelector.
EParserListener.prototype.enterItemSelector = function(ctx) {
};
// Exit a parse tree produced by EParser#ItemSelector.
EParserListener.prototype.exitItemSelector = function(ctx) {
};
// Enter a parse tree produced by EParser#document_expression.
EParserListener.prototype.enterDocument_expression = function(ctx) {
};
// Exit a parse tree produced by EParser#document_expression.
EParserListener.prototype.exitDocument_expression = function(ctx) {
};
// Enter a parse tree produced by EParser#blob_expression.
EParserListener.prototype.enterBlob_expression = function(ctx) {
};
// Exit a parse tree produced by EParser#blob_expression.
EParserListener.prototype.exitBlob_expression = function(ctx) {
};
// Enter a parse tree produced by EParser#ConstructorFrom.
EParserListener.prototype.enterConstructorFrom = function(ctx) {
};
// Exit a parse tree produced by EParser#ConstructorFrom.
EParserListener.prototype.exitConstructorFrom = function(ctx) {
};
// Enter a parse tree produced by EParser#ConstructorNoFrom.
EParserListener.prototype.enterConstructorNoFrom = function(ctx) {
};
// Exit a parse tree produced by EParser#ConstructorNoFrom.
EParserListener.prototype.exitConstructorNoFrom = function(ctx) {
};
// Enter a parse tree produced by EParser#write_statement.
EParserListener.prototype.enterWrite_statement = function(ctx) {
};
// Exit a parse tree produced by EParser#write_statement.
EParserListener.prototype.exitWrite_statement = function(ctx) {
};
// Enter a parse tree produced by EParser#ambiguous_expression.
EParserListener.prototype.enterAmbiguous_expression = function(ctx) {
};
// Exit a parse tree produced by EParser#ambiguous_expression.
EParserListener.prototype.exitAmbiguous_expression = function(ctx) {
};
// Enter a parse tree produced by EParser#filtered_list_suffix.
EParserListener.prototype.enterFiltered_list_suffix = function(ctx) {
};
// Exit a parse tree produced by EParser#filtered_list_suffix.
EParserListener.prototype.exitFiltered_list_suffix = function(ctx) {
};
// Enter a parse tree produced by EParser#FetchOne.
EParserListener.prototype.enterFetchOne = function(ctx) {
};
// Exit a parse tree produced by EParser#FetchOne.
EParserListener.prototype.exitFetchOne = function(ctx) {
};
// Enter a parse tree produced by EParser#FetchMany.
EParserListener.prototype.enterFetchMany = function(ctx) {
};
// Exit a parse tree produced by EParser#FetchMany.
EParserListener.prototype.exitFetchMany = function(ctx) {
};
// Enter a parse tree produced by EParser#FetchOneAsync.
EParserListener.prototype.enterFetchOneAsync = function(ctx) {
};
// Exit a parse tree produced by EParser#FetchOneAsync.
EParserListener.prototype.exitFetchOneAsync = function(ctx) {
};
// Enter a parse tree produced by EParser#FetchManyAsync.
EParserListener.prototype.enterFetchManyAsync = function(ctx) {
};
// Exit a parse tree produced by EParser#FetchManyAsync.
EParserListener.prototype.exitFetchManyAsync = function(ctx) {
};
// Enter a parse tree produced by EParser#sorted_expression.
EParserListener.prototype.enterSorted_expression = function(ctx) {
};
// Exit a parse tree produced by EParser#sorted_expression.
EParserListener.prototype.exitSorted_expression = function(ctx) {
};
// Enter a parse tree produced by EParser#ArgumentAssignmentListExpression.
EParserListener.prototype.enterArgumentAssignmentListExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#ArgumentAssignmentListExpression.
EParserListener.prototype.exitArgumentAssignmentListExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#ArgumentAssignmentListNoExpression.
EParserListener.prototype.enterArgumentAssignmentListNoExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#ArgumentAssignmentListNoExpression.
EParserListener.prototype.exitArgumentAssignmentListNoExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#ArgumentAssignmentList.
EParserListener.prototype.enterArgumentAssignmentList = function(ctx) {
};
// Exit a parse tree produced by EParser#ArgumentAssignmentList.
EParserListener.prototype.exitArgumentAssignmentList = function(ctx) {
};
// Enter a parse tree produced by EParser#ArgumentAssignmentListItem.
EParserListener.prototype.enterArgumentAssignmentListItem = function(ctx) {
};
// Exit a parse tree produced by EParser#ArgumentAssignmentListItem.
EParserListener.prototype.exitArgumentAssignmentListItem = function(ctx) {
};
// Enter a parse tree produced by EParser#argument_assignment.
EParserListener.prototype.enterArgument_assignment = function(ctx) {
};
// Exit a parse tree produced by EParser#argument_assignment.
EParserListener.prototype.exitArgument_assignment = function(ctx) {
};
// Enter a parse tree produced by EParser#assign_instance_statement.
EParserListener.prototype.enterAssign_instance_statement = function(ctx) {
};
// Exit a parse tree produced by EParser#assign_instance_statement.
EParserListener.prototype.exitAssign_instance_statement = function(ctx) {
};
// Enter a parse tree produced by EParser#MemberInstance.
EParserListener.prototype.enterMemberInstance = function(ctx) {
};
// Exit a parse tree produced by EParser#MemberInstance.
EParserListener.prototype.exitMemberInstance = function(ctx) {
};
// Enter a parse tree produced by EParser#ItemInstance.
EParserListener.prototype.enterItemInstance = function(ctx) {
};
// Exit a parse tree produced by EParser#ItemInstance.
EParserListener.prototype.exitItemInstance = function(ctx) {
};
// Enter a parse tree produced by EParser#assign_tuple_statement.
EParserListener.prototype.enterAssign_tuple_statement = function(ctx) {
};
// Exit a parse tree produced by EParser#assign_tuple_statement.
EParserListener.prototype.exitAssign_tuple_statement = function(ctx) {
};
// Enter a parse tree produced by EParser#lfs.
EParserListener.prototype.enterLfs = function(ctx) {
};
// Exit a parse tree produced by EParser#lfs.
EParserListener.prototype.exitLfs = function(ctx) {
};
// Enter a parse tree produced by EParser#lfp.
EParserListener.prototype.enterLfp = function(ctx) {
};
// Exit a parse tree produced by EParser#lfp.
EParserListener.prototype.exitLfp = function(ctx) {
};
// Enter a parse tree produced by EParser#jsx_ws.
EParserListener.prototype.enterJsx_ws = function(ctx) {
};
// Exit a parse tree produced by EParser#jsx_ws.
EParserListener.prototype.exitJsx_ws = function(ctx) {
};
// Enter a parse tree produced by EParser#indent.
EParserListener.prototype.enterIndent = function(ctx) {
};
// Exit a parse tree produced by EParser#indent.
EParserListener.prototype.exitIndent = function(ctx) {
};
// Enter a parse tree produced by EParser#dedent.
EParserListener.prototype.enterDedent = function(ctx) {
};
// Exit a parse tree produced by EParser#dedent.
EParserListener.prototype.exitDedent = function(ctx) {
};
// Enter a parse tree produced by EParser#null_literal.
EParserListener.prototype.enterNull_literal = function(ctx) {
};
// Exit a parse tree produced by EParser#null_literal.
EParserListener.prototype.exitNull_literal = function(ctx) {
};
// Enter a parse tree produced by EParser#FullDeclarationList.
EParserListener.prototype.enterFullDeclarationList = function(ctx) {
};
// Exit a parse tree produced by EParser#FullDeclarationList.
EParserListener.prototype.exitFullDeclarationList = function(ctx) {
};
// Enter a parse tree produced by EParser#declarations.
EParserListener.prototype.enterDeclarations = function(ctx) {
};
// Exit a parse tree produced by EParser#declarations.
EParserListener.prototype.exitDeclarations = function(ctx) {
};
// Enter a parse tree produced by EParser#declaration.
EParserListener.prototype.enterDeclaration = function(ctx) {
};
// Exit a parse tree produced by EParser#declaration.
EParserListener.prototype.exitDeclaration = function(ctx) {
};
// Enter a parse tree produced by EParser#annotation_constructor.
EParserListener.prototype.enterAnnotation_constructor = function(ctx) {
};
// Exit a parse tree produced by EParser#annotation_constructor.
EParserListener.prototype.exitAnnotation_constructor = function(ctx) {
};
// Enter a parse tree produced by EParser#annotation_identifier.
EParserListener.prototype.enterAnnotation_identifier = function(ctx) {
};
// Exit a parse tree produced by EParser#annotation_identifier.
EParserListener.prototype.exitAnnotation_identifier = function(ctx) {
};
// Enter a parse tree produced by EParser#resource_declaration.
EParserListener.prototype.enterResource_declaration = function(ctx) {
};
// Exit a parse tree produced by EParser#resource_declaration.
EParserListener.prototype.exitResource_declaration = function(ctx) {
};
// Enter a parse tree produced by EParser#enum_declaration.
EParserListener.prototype.enterEnum_declaration = function(ctx) {
};
// Exit a parse tree produced by EParser#enum_declaration.
EParserListener.prototype.exitEnum_declaration = function(ctx) {
};
// Enter a parse tree produced by EParser#native_symbol_list.
EParserListener.prototype.enterNative_symbol_list = function(ctx) {
};
// Exit a parse tree produced by EParser#native_symbol_list.
EParserListener.prototype.exitNative_symbol_list = function(ctx) {
};
// Enter a parse tree produced by EParser#category_symbol_list.
EParserListener.prototype.enterCategory_symbol_list = function(ctx) {
};
// Exit a parse tree produced by EParser#category_symbol_list.
EParserListener.prototype.exitCategory_symbol_list = function(ctx) {
};
// Enter a parse tree produced by EParser#symbol_list.
EParserListener.prototype.enterSymbol_list = function(ctx) {
};
// Exit a parse tree produced by EParser#symbol_list.
EParserListener.prototype.exitSymbol_list = function(ctx) {
};
// Enter a parse tree produced by EParser#MatchingList.
EParserListener.prototype.enterMatchingList = function(ctx) {
};
// Exit a parse tree produced by EParser#MatchingList.
EParserListener.prototype.exitMatchingList = function(ctx) {
};
// Enter a parse tree produced by EParser#MatchingSet.
EParserListener.prototype.enterMatchingSet = function(ctx) {
};
// Exit a parse tree produced by EParser#MatchingSet.
EParserListener.prototype.exitMatchingSet = function(ctx) {
};
// Enter a parse tree produced by EParser#MatchingRange.
EParserListener.prototype.enterMatchingRange = function(ctx) {
};
// Exit a parse tree produced by EParser#MatchingRange.
EParserListener.prototype.exitMatchingRange = function(ctx) {
};
// Enter a parse tree produced by EParser#MatchingPattern.
EParserListener.prototype.enterMatchingPattern = function(ctx) {
};
// Exit a parse tree produced by EParser#MatchingPattern.
EParserListener.prototype.exitMatchingPattern = function(ctx) {
};
// Enter a parse tree produced by EParser#MatchingExpression.
EParserListener.prototype.enterMatchingExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#MatchingExpression.
EParserListener.prototype.exitMatchingExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#list_literal.
EParserListener.prototype.enterList_literal = function(ctx) {
};
// Exit a parse tree produced by EParser#list_literal.
EParserListener.prototype.exitList_literal = function(ctx) {
};
// Enter a parse tree produced by EParser#set_literal.
EParserListener.prototype.enterSet_literal = function(ctx) {
};
// Exit a parse tree produced by EParser#set_literal.
EParserListener.prototype.exitSet_literal = function(ctx) {
};
// Enter a parse tree produced by EParser#expression_list.
EParserListener.prototype.enterExpression_list = function(ctx) {
};
// Exit a parse tree produced by EParser#expression_list.
EParserListener.prototype.exitExpression_list = function(ctx) {
};
// Enter a parse tree produced by EParser#range_literal.
EParserListener.prototype.enterRange_literal = function(ctx) {
};
// Exit a parse tree produced by EParser#range_literal.
EParserListener.prototype.exitRange_literal = function(ctx) {
};
// Enter a parse tree produced by EParser#IteratorType.
EParserListener.prototype.enterIteratorType = function(ctx) {
};
// Exit a parse tree produced by EParser#IteratorType.
EParserListener.prototype.exitIteratorType = function(ctx) {
};
// Enter a parse tree produced by EParser#SetType.
EParserListener.prototype.enterSetType = function(ctx) {
};
// Exit a parse tree produced by EParser#SetType.
EParserListener.prototype.exitSetType = function(ctx) {
};
// Enter a parse tree produced by EParser#ListType.
EParserListener.prototype.enterListType = function(ctx) {
};
// Exit a parse tree produced by EParser#ListType.
EParserListener.prototype.exitListType = function(ctx) {
};
// Enter a parse tree produced by EParser#DictType.
EParserListener.prototype.enterDictType = function(ctx) {
};
// Exit a parse tree produced by EParser#DictType.
EParserListener.prototype.exitDictType = function(ctx) {
};
// Enter a parse tree produced by EParser#CursorType.
EParserListener.prototype.enterCursorType = function(ctx) {
};
// Exit a parse tree produced by EParser#CursorType.
EParserListener.prototype.exitCursorType = function(ctx) {
};
// Enter a parse tree produced by EParser#PrimaryType.
EParserListener.prototype.enterPrimaryType = function(ctx) {
};
// Exit a parse tree produced by EParser#PrimaryType.
EParserListener.prototype.exitPrimaryType = function(ctx) {
};
// Enter a parse tree produced by EParser#NativeType.
EParserListener.prototype.enterNativeType = function(ctx) {
};
// Exit a parse tree produced by EParser#NativeType.
EParserListener.prototype.exitNativeType = function(ctx) {
};
// Enter a parse tree produced by EParser#CategoryType.
EParserListener.prototype.enterCategoryType = function(ctx) {
};
// Exit a parse tree produced by EParser#CategoryType.
EParserListener.prototype.exitCategoryType = function(ctx) {
};
// Enter a parse tree produced by EParser#BooleanType.
EParserListener.prototype.enterBooleanType = function(ctx) {
};
// Exit a parse tree produced by EParser#BooleanType.
EParserListener.prototype.exitBooleanType = function(ctx) {
};
// Enter a parse tree produced by EParser#CharacterType.
EParserListener.prototype.enterCharacterType = function(ctx) {
};
// Exit a parse tree produced by EParser#CharacterType.
EParserListener.prototype.exitCharacterType = function(ctx) {
};
// Enter a parse tree produced by EParser#TextType.
EParserListener.prototype.enterTextType = function(ctx) {
};
// Exit a parse tree produced by EParser#TextType.
EParserListener.prototype.exitTextType = function(ctx) {
};
// Enter a parse tree produced by EParser#ImageType.
EParserListener.prototype.enterImageType = function(ctx) {
};
// Exit a parse tree produced by EParser#ImageType.
EParserListener.prototype.exitImageType = function(ctx) {
};
// Enter a parse tree produced by EParser#IntegerType.
EParserListener.prototype.enterIntegerType = function(ctx) {
};
// Exit a parse tree produced by EParser#IntegerType.
EParserListener.prototype.exitIntegerType = function(ctx) {
};
// Enter a parse tree produced by EParser#DecimalType.
EParserListener.prototype.enterDecimalType = function(ctx) {
};
// Exit a parse tree produced by EParser#DecimalType.
EParserListener.prototype.exitDecimalType = function(ctx) {
};
// Enter a parse tree produced by EParser#DocumentType.
EParserListener.prototype.enterDocumentType = function(ctx) {
};
// Exit a parse tree produced by EParser#DocumentType.
EParserListener.prototype.exitDocumentType = function(ctx) {
};
// Enter a parse tree produced by EParser#DateType.
EParserListener.prototype.enterDateType = function(ctx) {
};
// Exit a parse tree produced by EParser#DateType.
EParserListener.prototype.exitDateType = function(ctx) {
};
// Enter a parse tree produced by EParser#DateTimeType.
EParserListener.prototype.enterDateTimeType = function(ctx) {
};
// Exit a parse tree produced by EParser#DateTimeType.
EParserListener.prototype.exitDateTimeType = function(ctx) {
};
// Enter a parse tree produced by EParser#TimeType.
EParserListener.prototype.enterTimeType = function(ctx) {
};
// Exit a parse tree produced by EParser#TimeType.
EParserListener.prototype.exitTimeType = function(ctx) {
};
// Enter a parse tree produced by EParser#PeriodType.
EParserListener.prototype.enterPeriodType = function(ctx) {
};
// Exit a parse tree produced by EParser#PeriodType.
EParserListener.prototype.exitPeriodType = function(ctx) {
};
// Enter a parse tree produced by EParser#VersionType.
EParserListener.prototype.enterVersionType = function(ctx) {
};
// Exit a parse tree produced by EParser#VersionType.
EParserListener.prototype.exitVersionType = function(ctx) {
};
// Enter a parse tree produced by EParser#CodeType.
EParserListener.prototype.enterCodeType = function(ctx) {
};
// Exit a parse tree produced by EParser#CodeType.
EParserListener.prototype.exitCodeType = function(ctx) {
};
// Enter a parse tree produced by EParser#BlobType.
EParserListener.prototype.enterBlobType = function(ctx) {
};
// Exit a parse tree produced by EParser#BlobType.
EParserListener.prototype.exitBlobType = function(ctx) {
};
// Enter a parse tree produced by EParser#UUIDType.
EParserListener.prototype.enterUUIDType = function(ctx) {
};
// Exit a parse tree produced by EParser#UUIDType.
EParserListener.prototype.exitUUIDType = function(ctx) {
};
// Enter a parse tree produced by EParser#HtmlType.
EParserListener.prototype.enterHtmlType = function(ctx) {
};
// Exit a parse tree produced by EParser#HtmlType.
EParserListener.prototype.exitHtmlType = function(ctx) {
};
// Enter a parse tree produced by EParser#category_type.
EParserListener.prototype.enterCategory_type = function(ctx) {
};
// Exit a parse tree produced by EParser#category_type.
EParserListener.prototype.exitCategory_type = function(ctx) {
};
// Enter a parse tree produced by EParser#mutable_category_type.
EParserListener.prototype.enterMutable_category_type = function(ctx) {
};
// Exit a parse tree produced by EParser#mutable_category_type.
EParserListener.prototype.exitMutable_category_type = function(ctx) {
};
// Enter a parse tree produced by EParser#code_type.
EParserListener.prototype.enterCode_type = function(ctx) {
};
// Exit a parse tree produced by EParser#code_type.
EParserListener.prototype.exitCode_type = function(ctx) {
};
// Enter a parse tree produced by EParser#ConcreteCategoryDeclaration.
EParserListener.prototype.enterConcreteCategoryDeclaration = function(ctx) {
};
// Exit a parse tree produced by EParser#ConcreteCategoryDeclaration.
EParserListener.prototype.exitConcreteCategoryDeclaration = function(ctx) {
};
// Enter a parse tree produced by EParser#NativeCategoryDeclaration.
EParserListener.prototype.enterNativeCategoryDeclaration = function(ctx) {
};
// Exit a parse tree produced by EParser#NativeCategoryDeclaration.
EParserListener.prototype.exitNativeCategoryDeclaration = function(ctx) {
};
// Enter a parse tree produced by EParser#SingletonCategoryDeclaration.
EParserListener.prototype.enterSingletonCategoryDeclaration = function(ctx) {
};
// Exit a parse tree produced by EParser#SingletonCategoryDeclaration.
EParserListener.prototype.exitSingletonCategoryDeclaration = function(ctx) {
};
// Enter a parse tree produced by EParser#ConcreteWidgetDeclaration.
EParserListener.prototype.enterConcreteWidgetDeclaration = function(ctx) {
};
// Exit a parse tree produced by EParser#ConcreteWidgetDeclaration.
EParserListener.prototype.exitConcreteWidgetDeclaration = function(ctx) {
};
// Enter a parse tree produced by EParser#NativeWidgetDeclaration.
EParserListener.prototype.enterNativeWidgetDeclaration = function(ctx) {
};
// Exit a parse tree produced by EParser#NativeWidgetDeclaration.
EParserListener.prototype.exitNativeWidgetDeclaration = function(ctx) {
};
// Enter a parse tree produced by EParser#type_identifier_list.
EParserListener.prototype.enterType_identifier_list = function(ctx) {
};
// Exit a parse tree produced by EParser#type_identifier_list.
EParserListener.prototype.exitType_identifier_list = function(ctx) {
};
// Enter a parse tree produced by EParser#method_identifier.
EParserListener.prototype.enterMethod_identifier = function(ctx) {
};
// Exit a parse tree produced by EParser#method_identifier.
EParserListener.prototype.exitMethod_identifier = function(ctx) {
};
// Enter a parse tree produced by EParser#identifier_or_keyword.
EParserListener.prototype.enterIdentifier_or_keyword = function(ctx) {
};
// Exit a parse tree produced by EParser#identifier_or_keyword.
EParserListener.prototype.exitIdentifier_or_keyword = function(ctx) {
};
// Enter a parse tree produced by EParser#nospace_hyphen_identifier_or_keyword.
EParserListener.prototype.enterNospace_hyphen_identifier_or_keyword = function(ctx) {
};
// Exit a parse tree produced by EParser#nospace_hyphen_identifier_or_keyword.
EParserListener.prototype.exitNospace_hyphen_identifier_or_keyword = function(ctx) {
};
// Enter a parse tree produced by EParser#nospace_identifier_or_keyword.
EParserListener.prototype.enterNospace_identifier_or_keyword = function(ctx) {
};
// Exit a parse tree produced by EParser#nospace_identifier_or_keyword.
EParserListener.prototype.exitNospace_identifier_or_keyword = function(ctx) {
};
// Enter a parse tree produced by EParser#VariableIdentifier.
EParserListener.prototype.enterVariableIdentifier = function(ctx) {
};
// Exit a parse tree produced by EParser#VariableIdentifier.
EParserListener.prototype.exitVariableIdentifier = function(ctx) {
};
// Enter a parse tree produced by EParser#TypeIdentifier.
EParserListener.prototype.enterTypeIdentifier = function(ctx) {
};
// Exit a parse tree produced by EParser#TypeIdentifier.
EParserListener.prototype.exitTypeIdentifier = function(ctx) {
};
// Enter a parse tree produced by EParser#SymbolIdentifier.
EParserListener.prototype.enterSymbolIdentifier = function(ctx) {
};
// Exit a parse tree produced by EParser#SymbolIdentifier.
EParserListener.prototype.exitSymbolIdentifier = function(ctx) {
};
// Enter a parse tree produced by EParser#variable_identifier.
EParserListener.prototype.enterVariable_identifier = function(ctx) {
};
// Exit a parse tree produced by EParser#variable_identifier.
EParserListener.prototype.exitVariable_identifier = function(ctx) {
};
// Enter a parse tree produced by EParser#attribute_identifier.
EParserListener.prototype.enterAttribute_identifier = function(ctx) {
};
// Exit a parse tree produced by EParser#attribute_identifier.
EParserListener.prototype.exitAttribute_identifier = function(ctx) {
};
// Enter a parse tree produced by EParser#type_identifier.
EParserListener.prototype.enterType_identifier = function(ctx) {
};
// Exit a parse tree produced by EParser#type_identifier.
EParserListener.prototype.exitType_identifier = function(ctx) {
};
// Enter a parse tree produced by EParser#symbol_identifier.
EParserListener.prototype.enterSymbol_identifier = function(ctx) {
};
// Exit a parse tree produced by EParser#symbol_identifier.
EParserListener.prototype.exitSymbol_identifier = function(ctx) {
};
// Enter a parse tree produced by EParser#any_identifier.
EParserListener.prototype.enterAny_identifier = function(ctx) {
};
// Exit a parse tree produced by EParser#any_identifier.
EParserListener.prototype.exitAny_identifier = function(ctx) {
};
// Enter a parse tree produced by EParser#argument_list.
EParserListener.prototype.enterArgument_list = function(ctx) {
};
// Exit a parse tree produced by EParser#argument_list.
EParserListener.prototype.exitArgument_list = function(ctx) {
};
// Enter a parse tree produced by EParser#CodeArgument.
EParserListener.prototype.enterCodeArgument = function(ctx) {
};
// Exit a parse tree produced by EParser#CodeArgument.
EParserListener.prototype.exitCodeArgument = function(ctx) {
};
// Enter a parse tree produced by EParser#OperatorArgument.
EParserListener.prototype.enterOperatorArgument = function(ctx) {
};
// Exit a parse tree produced by EParser#OperatorArgument.
EParserListener.prototype.exitOperatorArgument = function(ctx) {
};
// Enter a parse tree produced by EParser#operator_argument.
EParserListener.prototype.enterOperator_argument = function(ctx) {
};
// Exit a parse tree produced by EParser#operator_argument.
EParserListener.prototype.exitOperator_argument = function(ctx) {
};
// Enter a parse tree produced by EParser#named_argument.
EParserListener.prototype.enterNamed_argument = function(ctx) {
};
// Exit a parse tree produced by EParser#named_argument.
EParserListener.prototype.exitNamed_argument = function(ctx) {
};
// Enter a parse tree produced by EParser#code_argument.
EParserListener.prototype.enterCode_argument = function(ctx) {
};
// Exit a parse tree produced by EParser#code_argument.
EParserListener.prototype.exitCode_argument = function(ctx) {
};
// Enter a parse tree produced by EParser#category_or_any_type.
EParserListener.prototype.enterCategory_or_any_type = function(ctx) {
};
// Exit a parse tree produced by EParser#category_or_any_type.
EParserListener.prototype.exitCategory_or_any_type = function(ctx) {
};
// Enter a parse tree produced by EParser#AnyListType.
EParserListener.prototype.enterAnyListType = function(ctx) {
};
// Exit a parse tree produced by EParser#AnyListType.
EParserListener.prototype.exitAnyListType = function(ctx) {
};
// Enter a parse tree produced by EParser#AnyType.
EParserListener.prototype.enterAnyType = function(ctx) {
};
// Exit a parse tree produced by EParser#AnyType.
EParserListener.prototype.exitAnyType = function(ctx) {
};
// Enter a parse tree produced by EParser#AnyDictType.
EParserListener.prototype.enterAnyDictType = function(ctx) {
};
// Exit a parse tree produced by EParser#AnyDictType.
EParserListener.prototype.exitAnyDictType = function(ctx) {
};
// Enter a parse tree produced by EParser#member_method_declaration_list.
EParserListener.prototype.enterMember_method_declaration_list = function(ctx) {
};
// Exit a parse tree produced by EParser#member_method_declaration_list.
EParserListener.prototype.exitMember_method_declaration_list = function(ctx) {
};
// Enter a parse tree produced by EParser#member_method_declaration.
EParserListener.prototype.enterMember_method_declaration = function(ctx) {
};
// Exit a parse tree produced by EParser#member_method_declaration.
EParserListener.prototype.exitMember_method_declaration = function(ctx) {
};
// Enter a parse tree produced by EParser#native_member_method_declaration_list.
EParserListener.prototype.enterNative_member_method_declaration_list = function(ctx) {
};
// Exit a parse tree produced by EParser#native_member_method_declaration_list.
EParserListener.prototype.exitNative_member_method_declaration_list = function(ctx) {
};
// Enter a parse tree produced by EParser#native_member_method_declaration.
EParserListener.prototype.enterNative_member_method_declaration = function(ctx) {
};
// Exit a parse tree produced by EParser#native_member_method_declaration.
EParserListener.prototype.exitNative_member_method_declaration = function(ctx) {
};
// Enter a parse tree produced by EParser#JavaCategoryBinding.
EParserListener.prototype.enterJavaCategoryBinding = function(ctx) {
};
// Exit a parse tree produced by EParser#JavaCategoryBinding.
EParserListener.prototype.exitJavaCategoryBinding = function(ctx) {
};
// Enter a parse tree produced by EParser#CSharpCategoryBinding.
EParserListener.prototype.enterCSharpCategoryBinding = function(ctx) {
};
// Exit a parse tree produced by EParser#CSharpCategoryBinding.
EParserListener.prototype.exitCSharpCategoryBinding = function(ctx) {
};
// Enter a parse tree produced by EParser#Python2CategoryBinding.
EParserListener.prototype.enterPython2CategoryBinding = function(ctx) {
};
// Exit a parse tree produced by EParser#Python2CategoryBinding.
EParserListener.prototype.exitPython2CategoryBinding = function(ctx) {
};
// Enter a parse tree produced by EParser#Python3CategoryBinding.
EParserListener.prototype.enterPython3CategoryBinding = function(ctx) {
};
// Exit a parse tree produced by EParser#Python3CategoryBinding.
EParserListener.prototype.exitPython3CategoryBinding = function(ctx) {
};
// Enter a parse tree produced by EParser#JavaScriptCategoryBinding.
EParserListener.prototype.enterJavaScriptCategoryBinding = function(ctx) {
};
// Exit a parse tree produced by EParser#JavaScriptCategoryBinding.
EParserListener.prototype.exitJavaScriptCategoryBinding = function(ctx) {
};
// Enter a parse tree produced by EParser#python_category_binding.
EParserListener.prototype.enterPython_category_binding = function(ctx) {
};
// Exit a parse tree produced by EParser#python_category_binding.
EParserListener.prototype.exitPython_category_binding = function(ctx) {
};
// Enter a parse tree produced by EParser#python_module.
EParserListener.prototype.enterPython_module = function(ctx) {
};
// Exit a parse tree produced by EParser#python_module.
EParserListener.prototype.exitPython_module = function(ctx) {
};
// Enter a parse tree produced by EParser#javascript_category_binding.
EParserListener.prototype.enterJavascript_category_binding = function(ctx) {
};
// Exit a parse tree produced by EParser#javascript_category_binding.
EParserListener.prototype.exitJavascript_category_binding = function(ctx) {
};
// Enter a parse tree produced by EParser#javascript_module.
EParserListener.prototype.enterJavascript_module = function(ctx) {
};
// Exit a parse tree produced by EParser#javascript_module.
EParserListener.prototype.exitJavascript_module = function(ctx) {
};
// Enter a parse tree produced by EParser#variable_identifier_list.
EParserListener.prototype.enterVariable_identifier_list = function(ctx) {
};
// Exit a parse tree produced by EParser#variable_identifier_list.
EParserListener.prototype.exitVariable_identifier_list = function(ctx) {
};
// Enter a parse tree produced by EParser#attribute_identifier_list.
EParserListener.prototype.enterAttribute_identifier_list = function(ctx) {
};
// Exit a parse tree produced by EParser#attribute_identifier_list.
EParserListener.prototype.exitAttribute_identifier_list = function(ctx) {
};
// Enter a parse tree produced by EParser#method_declaration.
EParserListener.prototype.enterMethod_declaration = function(ctx) {
};
// Exit a parse tree produced by EParser#method_declaration.
EParserListener.prototype.exitMethod_declaration = function(ctx) {
};
// Enter a parse tree produced by EParser#comment_statement.
EParserListener.prototype.enterComment_statement = function(ctx) {
};
// Exit a parse tree produced by EParser#comment_statement.
EParserListener.prototype.exitComment_statement = function(ctx) {
};
// Enter a parse tree produced by EParser#native_statement_list.
EParserListener.prototype.enterNative_statement_list = function(ctx) {
};
// Exit a parse tree produced by EParser#native_statement_list.
EParserListener.prototype.exitNative_statement_list = function(ctx) {
};
// Enter a parse tree produced by EParser#JavaNativeStatement.
EParserListener.prototype.enterJavaNativeStatement = function(ctx) {
};
// Exit a parse tree produced by EParser#JavaNativeStatement.
EParserListener.prototype.exitJavaNativeStatement = function(ctx) {
};
// Enter a parse tree produced by EParser#CSharpNativeStatement.
EParserListener.prototype.enterCSharpNativeStatement = function(ctx) {
};
// Exit a parse tree produced by EParser#CSharpNativeStatement.
EParserListener.prototype.exitCSharpNativeStatement = function(ctx) {
};
// Enter a parse tree produced by EParser#Python2NativeStatement.
EParserListener.prototype.enterPython2NativeStatement = function(ctx) {
};
// Exit a parse tree produced by EParser#Python2NativeStatement.
EParserListener.prototype.exitPython2NativeStatement = function(ctx) {
};
// Enter a parse tree produced by EParser#Python3NativeStatement.
EParserListener.prototype.enterPython3NativeStatement = function(ctx) {
};
// Exit a parse tree produced by EParser#Python3NativeStatement.
EParserListener.prototype.exitPython3NativeStatement = function(ctx) {
};
// Enter a parse tree produced by EParser#JavaScriptNativeStatement.
EParserListener.prototype.enterJavaScriptNativeStatement = function(ctx) {
};
// Exit a parse tree produced by EParser#JavaScriptNativeStatement.
EParserListener.prototype.exitJavaScriptNativeStatement = function(ctx) {
};
// Enter a parse tree produced by EParser#python_native_statement.
EParserListener.prototype.enterPython_native_statement = function(ctx) {
};
// Exit a parse tree produced by EParser#python_native_statement.
EParserListener.prototype.exitPython_native_statement = function(ctx) {
};
// Enter a parse tree produced by EParser#javascript_native_statement.
EParserListener.prototype.enterJavascript_native_statement = function(ctx) {
};
// Exit a parse tree produced by EParser#javascript_native_statement.
EParserListener.prototype.exitJavascript_native_statement = function(ctx) {
};
// Enter a parse tree produced by EParser#statement_list.
EParserListener.prototype.enterStatement_list = function(ctx) {
};
// Exit a parse tree produced by EParser#statement_list.
EParserListener.prototype.exitStatement_list = function(ctx) {
};
// Enter a parse tree produced by EParser#assertion_list.
EParserListener.prototype.enterAssertion_list = function(ctx) {
};
// Exit a parse tree produced by EParser#assertion_list.
EParserListener.prototype.exitAssertion_list = function(ctx) {
};
// Enter a parse tree produced by EParser#switch_case_statement_list.
EParserListener.prototype.enterSwitch_case_statement_list = function(ctx) {
};
// Exit a parse tree produced by EParser#switch_case_statement_list.
EParserListener.prototype.exitSwitch_case_statement_list = function(ctx) {
};
// Enter a parse tree produced by EParser#catch_statement_list.
EParserListener.prototype.enterCatch_statement_list = function(ctx) {
};
// Exit a parse tree produced by EParser#catch_statement_list.
EParserListener.prototype.exitCatch_statement_list = function(ctx) {
};
// Enter a parse tree produced by EParser#LiteralRangeLiteral.
EParserListener.prototype.enterLiteralRangeLiteral = function(ctx) {
};
// Exit a parse tree produced by EParser#LiteralRangeLiteral.
EParserListener.prototype.exitLiteralRangeLiteral = function(ctx) {
};
// Enter a parse tree produced by EParser#LiteralListLiteral.
EParserListener.prototype.enterLiteralListLiteral = function(ctx) {
};
// Exit a parse tree produced by EParser#LiteralListLiteral.
EParserListener.prototype.exitLiteralListLiteral = function(ctx) {
};
// Enter a parse tree produced by EParser#LiteralSetLiteral.
EParserListener.prototype.enterLiteralSetLiteral = function(ctx) {
};
// Exit a parse tree produced by EParser#LiteralSetLiteral.
EParserListener.prototype.exitLiteralSetLiteral = function(ctx) {
};
// Enter a parse tree produced by EParser#MinIntegerLiteral.
EParserListener.prototype.enterMinIntegerLiteral = function(ctx) {
};
// Exit a parse tree produced by EParser#MinIntegerLiteral.
EParserListener.prototype.exitMinIntegerLiteral = function(ctx) {
};
// Enter a parse tree produced by EParser#MaxIntegerLiteral.
EParserListener.prototype.enterMaxIntegerLiteral = function(ctx) {
};
// Exit a parse tree produced by EParser#MaxIntegerLiteral.
EParserListener.prototype.exitMaxIntegerLiteral = function(ctx) {
};
// Enter a parse tree produced by EParser#IntegerLiteral.
EParserListener.prototype.enterIntegerLiteral = function(ctx) {
};
// Exit a parse tree produced by EParser#IntegerLiteral.
EParserListener.prototype.exitIntegerLiteral = function(ctx) {
};
// Enter a parse tree produced by EParser#HexadecimalLiteral.
EParserListener.prototype.enterHexadecimalLiteral = function(ctx) {
};
// Exit a parse tree produced by EParser#HexadecimalLiteral.
EParserListener.prototype.exitHexadecimalLiteral = function(ctx) {
};
// Enter a parse tree produced by EParser#CharacterLiteral.
EParserListener.prototype.enterCharacterLiteral = function(ctx) {
};
// Exit a parse tree produced by EParser#CharacterLiteral.
EParserListener.prototype.exitCharacterLiteral = function(ctx) {
};
// Enter a parse tree produced by EParser#DateLiteral.
EParserListener.prototype.enterDateLiteral = function(ctx) {
};
// Exit a parse tree produced by EParser#DateLiteral.
EParserListener.prototype.exitDateLiteral = function(ctx) {
};
// Enter a parse tree produced by EParser#TimeLiteral.
EParserListener.prototype.enterTimeLiteral = function(ctx) {
};
// Exit a parse tree produced by EParser#TimeLiteral.
EParserListener.prototype.exitTimeLiteral = function(ctx) {
};
// Enter a parse tree produced by EParser#TextLiteral.
EParserListener.prototype.enterTextLiteral = function(ctx) {
};
// Exit a parse tree produced by EParser#TextLiteral.
EParserListener.prototype.exitTextLiteral = function(ctx) {
};
// Enter a parse tree produced by EParser#DecimalLiteral.
EParserListener.prototype.enterDecimalLiteral = function(ctx) {
};
// Exit a parse tree produced by EParser#DecimalLiteral.
EParserListener.prototype.exitDecimalLiteral = function(ctx) {
};
// Enter a parse tree produced by EParser#DateTimeLiteral.
EParserListener.prototype.enterDateTimeLiteral = function(ctx) {
};
// Exit a parse tree produced by EParser#DateTimeLiteral.
EParserListener.prototype.exitDateTimeLiteral = function(ctx) {
};
// Enter a parse tree produced by EParser#BooleanLiteral.
EParserListener.prototype.enterBooleanLiteral = function(ctx) {
};
// Exit a parse tree produced by EParser#BooleanLiteral.
EParserListener.prototype.exitBooleanLiteral = function(ctx) {
};
// Enter a parse tree produced by EParser#PeriodLiteral.
EParserListener.prototype.enterPeriodLiteral = function(ctx) {
};
// Exit a parse tree produced by EParser#PeriodLiteral.
EParserListener.prototype.exitPeriodLiteral = function(ctx) {
};
// Enter a parse tree produced by EParser#VersionLiteral.
EParserListener.prototype.enterVersionLiteral = function(ctx) {
};
// Exit a parse tree produced by EParser#VersionLiteral.
EParserListener.prototype.exitVersionLiteral = function(ctx) {
};
// Enter a parse tree produced by EParser#UUIDLiteral.
EParserListener.prototype.enterUUIDLiteral = function(ctx) {
};
// Exit a parse tree produced by EParser#UUIDLiteral.
EParserListener.prototype.exitUUIDLiteral = function(ctx) {
};
// Enter a parse tree produced by EParser#NullLiteral.
EParserListener.prototype.enterNullLiteral = function(ctx) {
};
// Exit a parse tree produced by EParser#NullLiteral.
EParserListener.prototype.exitNullLiteral = function(ctx) {
};
// Enter a parse tree produced by EParser#literal_list_literal.
EParserListener.prototype.enterLiteral_list_literal = function(ctx) {
};
// Exit a parse tree produced by EParser#literal_list_literal.
EParserListener.prototype.exitLiteral_list_literal = function(ctx) {
};
// Enter a parse tree produced by EParser#this_expression.
EParserListener.prototype.enterThis_expression = function(ctx) {
};
// Exit a parse tree produced by EParser#this_expression.
EParserListener.prototype.exitThis_expression = function(ctx) {
};
// Enter a parse tree produced by EParser#parenthesis_expression.
EParserListener.prototype.enterParenthesis_expression = function(ctx) {
};
// Exit a parse tree produced by EParser#parenthesis_expression.
EParserListener.prototype.exitParenthesis_expression = function(ctx) {
};
// Enter a parse tree produced by EParser#literal_expression.
EParserListener.prototype.enterLiteral_expression = function(ctx) {
};
// Exit a parse tree produced by EParser#literal_expression.
EParserListener.prototype.exitLiteral_expression = function(ctx) {
};
// Enter a parse tree produced by EParser#collection_literal.
EParserListener.prototype.enterCollection_literal = function(ctx) {
};
// Exit a parse tree produced by EParser#collection_literal.
EParserListener.prototype.exitCollection_literal = function(ctx) {
};
// Enter a parse tree produced by EParser#tuple_literal.
EParserListener.prototype.enterTuple_literal = function(ctx) {
};
// Exit a parse tree produced by EParser#tuple_literal.
EParserListener.prototype.exitTuple_literal = function(ctx) {
};
// Enter a parse tree produced by EParser#dict_literal.
EParserListener.prototype.enterDict_literal = function(ctx) {
};
// Exit a parse tree produced by EParser#dict_literal.
EParserListener.prototype.exitDict_literal = function(ctx) {
};
// Enter a parse tree produced by EParser#document_literal.
EParserListener.prototype.enterDocument_literal = function(ctx) {
};
// Exit a parse tree produced by EParser#document_literal.
EParserListener.prototype.exitDocument_literal = function(ctx) {
};
// Enter a parse tree produced by EParser#expression_tuple.
EParserListener.prototype.enterExpression_tuple = function(ctx) {
};
// Exit a parse tree produced by EParser#expression_tuple.
EParserListener.prototype.exitExpression_tuple = function(ctx) {
};
// Enter a parse tree produced by EParser#dict_entry_list.
EParserListener.prototype.enterDict_entry_list = function(ctx) {
};
// Exit a parse tree produced by EParser#dict_entry_list.
EParserListener.prototype.exitDict_entry_list = function(ctx) {
};
// Enter a parse tree produced by EParser#dict_entry.
EParserListener.prototype.enterDict_entry = function(ctx) {
};
// Exit a parse tree produced by EParser#dict_entry.
EParserListener.prototype.exitDict_entry = function(ctx) {
};
// Enter a parse tree produced by EParser#DictKeyIdentifier.
EParserListener.prototype.enterDictKeyIdentifier = function(ctx) {
};
// Exit a parse tree produced by EParser#DictKeyIdentifier.
EParserListener.prototype.exitDictKeyIdentifier = function(ctx) {
};
// Enter a parse tree produced by EParser#DictKeyText.
EParserListener.prototype.enterDictKeyText = function(ctx) {
};
// Exit a parse tree produced by EParser#DictKeyText.
EParserListener.prototype.exitDictKeyText = function(ctx) {
};
// Enter a parse tree produced by EParser#SliceFirstAndLast.
EParserListener.prototype.enterSliceFirstAndLast = function(ctx) {
};
// Exit a parse tree produced by EParser#SliceFirstAndLast.
EParserListener.prototype.exitSliceFirstAndLast = function(ctx) {
};
// Enter a parse tree produced by EParser#SliceFirstOnly.
EParserListener.prototype.enterSliceFirstOnly = function(ctx) {
};
// Exit a parse tree produced by EParser#SliceFirstOnly.
EParserListener.prototype.exitSliceFirstOnly = function(ctx) {
};
// Enter a parse tree produced by EParser#SliceLastOnly.
EParserListener.prototype.enterSliceLastOnly = function(ctx) {
};
// Exit a parse tree produced by EParser#SliceLastOnly.
EParserListener.prototype.exitSliceLastOnly = function(ctx) {
};
// Enter a parse tree produced by EParser#assign_variable_statement.
EParserListener.prototype.enterAssign_variable_statement = function(ctx) {
};
// Exit a parse tree produced by EParser#assign_variable_statement.
EParserListener.prototype.exitAssign_variable_statement = function(ctx) {
};
// Enter a parse tree produced by EParser#ChildInstance.
EParserListener.prototype.enterChildInstance = function(ctx) {
};
// Exit a parse tree produced by EParser#ChildInstance.
EParserListener.prototype.exitChildInstance = function(ctx) {
};
// Enter a parse tree produced by EParser#RootInstance.
EParserListener.prototype.enterRootInstance = function(ctx) {
};
// Exit a parse tree produced by EParser#RootInstance.
EParserListener.prototype.exitRootInstance = function(ctx) {
};
// Enter a parse tree produced by EParser#IsATypeExpression.
EParserListener.prototype.enterIsATypeExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#IsATypeExpression.
EParserListener.prototype.exitIsATypeExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#IsOtherExpression.
EParserListener.prototype.enterIsOtherExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#IsOtherExpression.
EParserListener.prototype.exitIsOtherExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#read_all_expression.
EParserListener.prototype.enterRead_all_expression = function(ctx) {
};
// Exit a parse tree produced by EParser#read_all_expression.
EParserListener.prototype.exitRead_all_expression = function(ctx) {
};
// Enter a parse tree produced by EParser#read_one_expression.
EParserListener.prototype.enterRead_one_expression = function(ctx) {
};
// Exit a parse tree produced by EParser#read_one_expression.
EParserListener.prototype.exitRead_one_expression = function(ctx) {
};
// Enter a parse tree produced by EParser#order_by_list.
EParserListener.prototype.enterOrder_by_list = function(ctx) {
};
// Exit a parse tree produced by EParser#order_by_list.
EParserListener.prototype.exitOrder_by_list = function(ctx) {
};
// Enter a parse tree produced by EParser#order_by.
EParserListener.prototype.enterOrder_by = function(ctx) {
};
// Exit a parse tree produced by EParser#order_by.
EParserListener.prototype.exitOrder_by = function(ctx) {
};
// Enter a parse tree produced by EParser#OperatorPlus.
EParserListener.prototype.enterOperatorPlus = function(ctx) {
};
// Exit a parse tree produced by EParser#OperatorPlus.
EParserListener.prototype.exitOperatorPlus = function(ctx) {
};
// Enter a parse tree produced by EParser#OperatorMinus.
EParserListener.prototype.enterOperatorMinus = function(ctx) {
};
// Exit a parse tree produced by EParser#OperatorMinus.
EParserListener.prototype.exitOperatorMinus = function(ctx) {
};
// Enter a parse tree produced by EParser#OperatorMultiply.
EParserListener.prototype.enterOperatorMultiply = function(ctx) {
};
// Exit a parse tree produced by EParser#OperatorMultiply.
EParserListener.prototype.exitOperatorMultiply = function(ctx) {
};
// Enter a parse tree produced by EParser#OperatorDivide.
EParserListener.prototype.enterOperatorDivide = function(ctx) {
};
// Exit a parse tree produced by EParser#OperatorDivide.
EParserListener.prototype.exitOperatorDivide = function(ctx) {
};
// Enter a parse tree produced by EParser#OperatorIDivide.
EParserListener.prototype.enterOperatorIDivide = function(ctx) {
};
// Exit a parse tree produced by EParser#OperatorIDivide.
EParserListener.prototype.exitOperatorIDivide = function(ctx) {
};
// Enter a parse tree produced by EParser#OperatorModulo.
EParserListener.prototype.enterOperatorModulo = function(ctx) {
};
// Exit a parse tree produced by EParser#OperatorModulo.
EParserListener.prototype.exitOperatorModulo = function(ctx) {
};
// Enter a parse tree produced by EParser#keyword.
EParserListener.prototype.enterKeyword = function(ctx) {
};
// Exit a parse tree produced by EParser#keyword.
EParserListener.prototype.exitKeyword = function(ctx) {
};
// Enter a parse tree produced by EParser#new_token.
EParserListener.prototype.enterNew_token = function(ctx) {
};
// Exit a parse tree produced by EParser#new_token.
EParserListener.prototype.exitNew_token = function(ctx) {
};
// Enter a parse tree produced by EParser#key_token.
EParserListener.prototype.enterKey_token = function(ctx) {
};
// Exit a parse tree produced by EParser#key_token.
EParserListener.prototype.exitKey_token = function(ctx) {
};
// Enter a parse tree produced by EParser#module_token.
EParserListener.prototype.enterModule_token = function(ctx) {
};
// Exit a parse tree produced by EParser#module_token.
EParserListener.prototype.exitModule_token = function(ctx) {
};
// Enter a parse tree produced by EParser#value_token.
EParserListener.prototype.enterValue_token = function(ctx) {
};
// Exit a parse tree produced by EParser#value_token.
EParserListener.prototype.exitValue_token = function(ctx) {
};
// Enter a parse tree produced by EParser#symbols_token.
EParserListener.prototype.enterSymbols_token = function(ctx) {
};
// Exit a parse tree produced by EParser#symbols_token.
EParserListener.prototype.exitSymbols_token = function(ctx) {
};
// Enter a parse tree produced by EParser#assign.
EParserListener.prototype.enterAssign = function(ctx) {
};
// Exit a parse tree produced by EParser#assign.
EParserListener.prototype.exitAssign = function(ctx) {
};
// Enter a parse tree produced by EParser#multiply.
EParserListener.prototype.enterMultiply = function(ctx) {
};
// Exit a parse tree produced by EParser#multiply.
EParserListener.prototype.exitMultiply = function(ctx) {
};
// Enter a parse tree produced by EParser#divide.
EParserListener.prototype.enterDivide = function(ctx) {
};
// Exit a parse tree produced by EParser#divide.
EParserListener.prototype.exitDivide = function(ctx) {
};
// Enter a parse tree produced by EParser#idivide.
EParserListener.prototype.enterIdivide = function(ctx) {
};
// Exit a parse tree produced by EParser#idivide.
EParserListener.prototype.exitIdivide = function(ctx) {
};
// Enter a parse tree produced by EParser#modulo.
EParserListener.prototype.enterModulo = function(ctx) {
};
// Exit a parse tree produced by EParser#modulo.
EParserListener.prototype.exitModulo = function(ctx) {
};
// Enter a parse tree produced by EParser#JavascriptReturnStatement.
EParserListener.prototype.enterJavascriptReturnStatement = function(ctx) {
};
// Exit a parse tree produced by EParser#JavascriptReturnStatement.
EParserListener.prototype.exitJavascriptReturnStatement = function(ctx) {
};
// Enter a parse tree produced by EParser#JavascriptStatement.
EParserListener.prototype.enterJavascriptStatement = function(ctx) {
};
// Exit a parse tree produced by EParser#JavascriptStatement.
EParserListener.prototype.exitJavascriptStatement = function(ctx) {
};
// Enter a parse tree produced by EParser#JavascriptSelectorExpression.
EParserListener.prototype.enterJavascriptSelectorExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#JavascriptSelectorExpression.
EParserListener.prototype.exitJavascriptSelectorExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#JavascriptPrimaryExpression.
EParserListener.prototype.enterJavascriptPrimaryExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#JavascriptPrimaryExpression.
EParserListener.prototype.exitJavascriptPrimaryExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#javascript_primary_expression.
EParserListener.prototype.enterJavascript_primary_expression = function(ctx) {
};
// Exit a parse tree produced by EParser#javascript_primary_expression.
EParserListener.prototype.exitJavascript_primary_expression = function(ctx) {
};
// Enter a parse tree produced by EParser#javascript_this_expression.
EParserListener.prototype.enterJavascript_this_expression = function(ctx) {
};
// Exit a parse tree produced by EParser#javascript_this_expression.
EParserListener.prototype.exitJavascript_this_expression = function(ctx) {
};
// Enter a parse tree produced by EParser#javascript_new_expression.
EParserListener.prototype.enterJavascript_new_expression = function(ctx) {
};
// Exit a parse tree produced by EParser#javascript_new_expression.
EParserListener.prototype.exitJavascript_new_expression = function(ctx) {
};
// Enter a parse tree produced by EParser#JavaScriptMethodExpression.
EParserListener.prototype.enterJavaScriptMethodExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#JavaScriptMethodExpression.
EParserListener.prototype.exitJavaScriptMethodExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#JavaScriptMemberExpression.
EParserListener.prototype.enterJavaScriptMemberExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#JavaScriptMemberExpression.
EParserListener.prototype.exitJavaScriptMemberExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#JavaScriptItemExpression.
EParserListener.prototype.enterJavaScriptItemExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#JavaScriptItemExpression.
EParserListener.prototype.exitJavaScriptItemExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#javascript_method_expression.
EParserListener.prototype.enterJavascript_method_expression = function(ctx) {
};
// Exit a parse tree produced by EParser#javascript_method_expression.
EParserListener.prototype.exitJavascript_method_expression = function(ctx) {
};
// Enter a parse tree produced by EParser#JavascriptArgumentList.
EParserListener.prototype.enterJavascriptArgumentList = function(ctx) {
};
// Exit a parse tree produced by EParser#JavascriptArgumentList.
EParserListener.prototype.exitJavascriptArgumentList = function(ctx) {
};
// Enter a parse tree produced by EParser#JavascriptArgumentListItem.
EParserListener.prototype.enterJavascriptArgumentListItem = function(ctx) {
};
// Exit a parse tree produced by EParser#JavascriptArgumentListItem.
EParserListener.prototype.exitJavascriptArgumentListItem = function(ctx) {
};
// Enter a parse tree produced by EParser#javascript_item_expression.
EParserListener.prototype.enterJavascript_item_expression = function(ctx) {
};
// Exit a parse tree produced by EParser#javascript_item_expression.
EParserListener.prototype.exitJavascript_item_expression = function(ctx) {
};
// Enter a parse tree produced by EParser#javascript_parenthesis_expression.
EParserListener.prototype.enterJavascript_parenthesis_expression = function(ctx) {
};
// Exit a parse tree produced by EParser#javascript_parenthesis_expression.
EParserListener.prototype.exitJavascript_parenthesis_expression = function(ctx) {
};
// Enter a parse tree produced by EParser#javascript_identifier_expression.
EParserListener.prototype.enterJavascript_identifier_expression = function(ctx) {
};
// Exit a parse tree produced by EParser#javascript_identifier_expression.
EParserListener.prototype.exitJavascript_identifier_expression = function(ctx) {
};
// Enter a parse tree produced by EParser#JavascriptIntegerLiteral.
EParserListener.prototype.enterJavascriptIntegerLiteral = function(ctx) {
};
// Exit a parse tree produced by EParser#JavascriptIntegerLiteral.
EParserListener.prototype.exitJavascriptIntegerLiteral = function(ctx) {
};
// Enter a parse tree produced by EParser#JavascriptDecimalLiteral.
EParserListener.prototype.enterJavascriptDecimalLiteral = function(ctx) {
};
// Exit a parse tree produced by EParser#JavascriptDecimalLiteral.
EParserListener.prototype.exitJavascriptDecimalLiteral = function(ctx) {
};
// Enter a parse tree produced by EParser#JavascriptTextLiteral.
EParserListener.prototype.enterJavascriptTextLiteral = function(ctx) {
};
// Exit a parse tree produced by EParser#JavascriptTextLiteral.
EParserListener.prototype.exitJavascriptTextLiteral = function(ctx) {
};
// Enter a parse tree produced by EParser#JavascriptBooleanLiteral.
EParserListener.prototype.enterJavascriptBooleanLiteral = function(ctx) {
};
// Exit a parse tree produced by EParser#JavascriptBooleanLiteral.
EParserListener.prototype.exitJavascriptBooleanLiteral = function(ctx) {
};
// Enter a parse tree produced by EParser#JavascriptCharacterLiteral.
EParserListener.prototype.enterJavascriptCharacterLiteral = function(ctx) {
};
// Exit a parse tree produced by EParser#JavascriptCharacterLiteral.
EParserListener.prototype.exitJavascriptCharacterLiteral = function(ctx) {
};
// Enter a parse tree produced by EParser#javascript_identifier.
EParserListener.prototype.enterJavascript_identifier = function(ctx) {
};
// Exit a parse tree produced by EParser#javascript_identifier.
EParserListener.prototype.exitJavascript_identifier = function(ctx) {
};
// Enter a parse tree produced by EParser#PythonReturnStatement.
EParserListener.prototype.enterPythonReturnStatement = function(ctx) {
};
// Exit a parse tree produced by EParser#PythonReturnStatement.
EParserListener.prototype.exitPythonReturnStatement = function(ctx) {
};
// Enter a parse tree produced by EParser#PythonStatement.
EParserListener.prototype.enterPythonStatement = function(ctx) {
};
// Exit a parse tree produced by EParser#PythonStatement.
EParserListener.prototype.exitPythonStatement = function(ctx) {
};
// Enter a parse tree produced by EParser#PythonSelectorExpression.
EParserListener.prototype.enterPythonSelectorExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#PythonSelectorExpression.
EParserListener.prototype.exitPythonSelectorExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#PythonPrimaryExpression.
EParserListener.prototype.enterPythonPrimaryExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#PythonPrimaryExpression.
EParserListener.prototype.exitPythonPrimaryExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#PythonSelfExpression.
EParserListener.prototype.enterPythonSelfExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#PythonSelfExpression.
EParserListener.prototype.exitPythonSelfExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#PythonParenthesisExpression.
EParserListener.prototype.enterPythonParenthesisExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#PythonParenthesisExpression.
EParserListener.prototype.exitPythonParenthesisExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#PythonIdentifierExpression.
EParserListener.prototype.enterPythonIdentifierExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#PythonIdentifierExpression.
EParserListener.prototype.exitPythonIdentifierExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#PythonLiteralExpression.
EParserListener.prototype.enterPythonLiteralExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#PythonLiteralExpression.
EParserListener.prototype.exitPythonLiteralExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#PythonGlobalMethodExpression.
EParserListener.prototype.enterPythonGlobalMethodExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#PythonGlobalMethodExpression.
EParserListener.prototype.exitPythonGlobalMethodExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#python_self_expression.
EParserListener.prototype.enterPython_self_expression = function(ctx) {
};
// Exit a parse tree produced by EParser#python_self_expression.
EParserListener.prototype.exitPython_self_expression = function(ctx) {
};
// Enter a parse tree produced by EParser#PythonMethodExpression.
EParserListener.prototype.enterPythonMethodExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#PythonMethodExpression.
EParserListener.prototype.exitPythonMethodExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#PythonItemExpression.
EParserListener.prototype.enterPythonItemExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#PythonItemExpression.
EParserListener.prototype.exitPythonItemExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#python_method_expression.
EParserListener.prototype.enterPython_method_expression = function(ctx) {
};
// Exit a parse tree produced by EParser#python_method_expression.
EParserListener.prototype.exitPython_method_expression = function(ctx) {
};
// Enter a parse tree produced by EParser#PythonOrdinalOnlyArgumentList.
EParserListener.prototype.enterPythonOrdinalOnlyArgumentList = function(ctx) {
};
// Exit a parse tree produced by EParser#PythonOrdinalOnlyArgumentList.
EParserListener.prototype.exitPythonOrdinalOnlyArgumentList = function(ctx) {
};
// Enter a parse tree produced by EParser#PythonNamedOnlyArgumentList.
EParserListener.prototype.enterPythonNamedOnlyArgumentList = function(ctx) {
};
// Exit a parse tree produced by EParser#PythonNamedOnlyArgumentList.
EParserListener.prototype.exitPythonNamedOnlyArgumentList = function(ctx) {
};
// Enter a parse tree produced by EParser#PythonArgumentList.
EParserListener.prototype.enterPythonArgumentList = function(ctx) {
};
// Exit a parse tree produced by EParser#PythonArgumentList.
EParserListener.prototype.exitPythonArgumentList = function(ctx) {
};
// Enter a parse tree produced by EParser#PythonOrdinalArgumentList.
EParserListener.prototype.enterPythonOrdinalArgumentList = function(ctx) {
};
// Exit a parse tree produced by EParser#PythonOrdinalArgumentList.
EParserListener.prototype.exitPythonOrdinalArgumentList = function(ctx) {
};
// Enter a parse tree produced by EParser#PythonOrdinalArgumentListItem.
EParserListener.prototype.enterPythonOrdinalArgumentListItem = function(ctx) {
};
// Exit a parse tree produced by EParser#PythonOrdinalArgumentListItem.
EParserListener.prototype.exitPythonOrdinalArgumentListItem = function(ctx) {
};
// Enter a parse tree produced by EParser#PythonNamedArgumentList.
EParserListener.prototype.enterPythonNamedArgumentList = function(ctx) {
};
// Exit a parse tree produced by EParser#PythonNamedArgumentList.
EParserListener.prototype.exitPythonNamedArgumentList = function(ctx) {
};
// Enter a parse tree produced by EParser#PythonNamedArgumentListItem.
EParserListener.prototype.enterPythonNamedArgumentListItem = function(ctx) {
};
// Exit a parse tree produced by EParser#PythonNamedArgumentListItem.
EParserListener.prototype.exitPythonNamedArgumentListItem = function(ctx) {
};
// Enter a parse tree produced by EParser#python_parenthesis_expression.
EParserListener.prototype.enterPython_parenthesis_expression = function(ctx) {
};
// Exit a parse tree produced by EParser#python_parenthesis_expression.
EParserListener.prototype.exitPython_parenthesis_expression = function(ctx) {
};
// Enter a parse tree produced by EParser#PythonChildIdentifier.
EParserListener.prototype.enterPythonChildIdentifier = function(ctx) {
};
// Exit a parse tree produced by EParser#PythonChildIdentifier.
EParserListener.prototype.exitPythonChildIdentifier = function(ctx) {
};
// Enter a parse tree produced by EParser#PythonPromptoIdentifier.
EParserListener.prototype.enterPythonPromptoIdentifier = function(ctx) {
};
// Exit a parse tree produced by EParser#PythonPromptoIdentifier.
EParserListener.prototype.exitPythonPromptoIdentifier = function(ctx) {
};
// Enter a parse tree produced by EParser#PythonIdentifier.
EParserListener.prototype.enterPythonIdentifier = function(ctx) {
};
// Exit a parse tree produced by EParser#PythonIdentifier.
EParserListener.prototype.exitPythonIdentifier = function(ctx) {
};
// Enter a parse tree produced by EParser#PythonIntegerLiteral.
EParserListener.prototype.enterPythonIntegerLiteral = function(ctx) {
};
// Exit a parse tree produced by EParser#PythonIntegerLiteral.
EParserListener.prototype.exitPythonIntegerLiteral = function(ctx) {
};
// Enter a parse tree produced by EParser#PythonDecimalLiteral.
EParserListener.prototype.enterPythonDecimalLiteral = function(ctx) {
};
// Exit a parse tree produced by EParser#PythonDecimalLiteral.
EParserListener.prototype.exitPythonDecimalLiteral = function(ctx) {
};
// Enter a parse tree produced by EParser#PythonTextLiteral.
EParserListener.prototype.enterPythonTextLiteral = function(ctx) {
};
// Exit a parse tree produced by EParser#PythonTextLiteral.
EParserListener.prototype.exitPythonTextLiteral = function(ctx) {
};
// Enter a parse tree produced by EParser#PythonBooleanLiteral.
EParserListener.prototype.enterPythonBooleanLiteral = function(ctx) {
};
// Exit a parse tree produced by EParser#PythonBooleanLiteral.
EParserListener.prototype.exitPythonBooleanLiteral = function(ctx) {
};
// Enter a parse tree produced by EParser#PythonCharacterLiteral.
EParserListener.prototype.enterPythonCharacterLiteral = function(ctx) {
};
// Exit a parse tree produced by EParser#PythonCharacterLiteral.
EParserListener.prototype.exitPythonCharacterLiteral = function(ctx) {
};
// Enter a parse tree produced by EParser#python_identifier.
EParserListener.prototype.enterPython_identifier = function(ctx) {
};
// Exit a parse tree produced by EParser#python_identifier.
EParserListener.prototype.exitPython_identifier = function(ctx) {
};
// Enter a parse tree produced by EParser#JavaReturnStatement.
EParserListener.prototype.enterJavaReturnStatement = function(ctx) {
};
// Exit a parse tree produced by EParser#JavaReturnStatement.
EParserListener.prototype.exitJavaReturnStatement = function(ctx) {
};
// Enter a parse tree produced by EParser#JavaStatement.
EParserListener.prototype.enterJavaStatement = function(ctx) {
};
// Exit a parse tree produced by EParser#JavaStatement.
EParserListener.prototype.exitJavaStatement = function(ctx) {
};
// Enter a parse tree produced by EParser#JavaSelectorExpression.
EParserListener.prototype.enterJavaSelectorExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#JavaSelectorExpression.
EParserListener.prototype.exitJavaSelectorExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#JavaPrimaryExpression.
EParserListener.prototype.enterJavaPrimaryExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#JavaPrimaryExpression.
EParserListener.prototype.exitJavaPrimaryExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#java_primary_expression.
EParserListener.prototype.enterJava_primary_expression = function(ctx) {
};
// Exit a parse tree produced by EParser#java_primary_expression.
EParserListener.prototype.exitJava_primary_expression = function(ctx) {
};
// Enter a parse tree produced by EParser#java_this_expression.
EParserListener.prototype.enterJava_this_expression = function(ctx) {
};
// Exit a parse tree produced by EParser#java_this_expression.
EParserListener.prototype.exitJava_this_expression = function(ctx) {
};
// Enter a parse tree produced by EParser#java_new_expression.
EParserListener.prototype.enterJava_new_expression = function(ctx) {
};
// Exit a parse tree produced by EParser#java_new_expression.
EParserListener.prototype.exitJava_new_expression = function(ctx) {
};
// Enter a parse tree produced by EParser#JavaMethodExpression.
EParserListener.prototype.enterJavaMethodExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#JavaMethodExpression.
EParserListener.prototype.exitJavaMethodExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#JavaItemExpression.
EParserListener.prototype.enterJavaItemExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#JavaItemExpression.
EParserListener.prototype.exitJavaItemExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#java_method_expression.
EParserListener.prototype.enterJava_method_expression = function(ctx) {
};
// Exit a parse tree produced by EParser#java_method_expression.
EParserListener.prototype.exitJava_method_expression = function(ctx) {
};
// Enter a parse tree produced by EParser#JavaArgumentListItem.
EParserListener.prototype.enterJavaArgumentListItem = function(ctx) {
};
// Exit a parse tree produced by EParser#JavaArgumentListItem.
EParserListener.prototype.exitJavaArgumentListItem = function(ctx) {
};
// Enter a parse tree produced by EParser#JavaArgumentList.
EParserListener.prototype.enterJavaArgumentList = function(ctx) {
};
// Exit a parse tree produced by EParser#JavaArgumentList.
EParserListener.prototype.exitJavaArgumentList = function(ctx) {
};
// Enter a parse tree produced by EParser#java_item_expression.
EParserListener.prototype.enterJava_item_expression = function(ctx) {
};
// Exit a parse tree produced by EParser#java_item_expression.
EParserListener.prototype.exitJava_item_expression = function(ctx) {
};
// Enter a parse tree produced by EParser#java_parenthesis_expression.
EParserListener.prototype.enterJava_parenthesis_expression = function(ctx) {
};
// Exit a parse tree produced by EParser#java_parenthesis_expression.
EParserListener.prototype.exitJava_parenthesis_expression = function(ctx) {
};
// Enter a parse tree produced by EParser#JavaIdentifier.
EParserListener.prototype.enterJavaIdentifier = function(ctx) {
};
// Exit a parse tree produced by EParser#JavaIdentifier.
EParserListener.prototype.exitJavaIdentifier = function(ctx) {
};
// Enter a parse tree produced by EParser#JavaChildIdentifier.
EParserListener.prototype.enterJavaChildIdentifier = function(ctx) {
};
// Exit a parse tree produced by EParser#JavaChildIdentifier.
EParserListener.prototype.exitJavaChildIdentifier = function(ctx) {
};
// Enter a parse tree produced by EParser#JavaClassIdentifier.
EParserListener.prototype.enterJavaClassIdentifier = function(ctx) {
};
// Exit a parse tree produced by EParser#JavaClassIdentifier.
EParserListener.prototype.exitJavaClassIdentifier = function(ctx) {
};
// Enter a parse tree produced by EParser#JavaChildClassIdentifier.
EParserListener.prototype.enterJavaChildClassIdentifier = function(ctx) {
};
// Exit a parse tree produced by EParser#JavaChildClassIdentifier.
EParserListener.prototype.exitJavaChildClassIdentifier = function(ctx) {
};
// Enter a parse tree produced by EParser#JavaIntegerLiteral.
EParserListener.prototype.enterJavaIntegerLiteral = function(ctx) {
};
// Exit a parse tree produced by EParser#JavaIntegerLiteral.
EParserListener.prototype.exitJavaIntegerLiteral = function(ctx) {
};
// Enter a parse tree produced by EParser#JavaDecimalLiteral.
EParserListener.prototype.enterJavaDecimalLiteral = function(ctx) {
};
// Exit a parse tree produced by EParser#JavaDecimalLiteral.
EParserListener.prototype.exitJavaDecimalLiteral = function(ctx) {
};
// Enter a parse tree produced by EParser#JavaTextLiteral.
EParserListener.prototype.enterJavaTextLiteral = function(ctx) {
};
// Exit a parse tree produced by EParser#JavaTextLiteral.
EParserListener.prototype.exitJavaTextLiteral = function(ctx) {
};
// Enter a parse tree produced by EParser#JavaBooleanLiteral.
EParserListener.prototype.enterJavaBooleanLiteral = function(ctx) {
};
// Exit a parse tree produced by EParser#JavaBooleanLiteral.
EParserListener.prototype.exitJavaBooleanLiteral = function(ctx) {
};
// Enter a parse tree produced by EParser#JavaCharacterLiteral.
EParserListener.prototype.enterJavaCharacterLiteral = function(ctx) {
};
// Exit a parse tree produced by EParser#JavaCharacterLiteral.
EParserListener.prototype.exitJavaCharacterLiteral = function(ctx) {
};
// Enter a parse tree produced by EParser#java_identifier.
EParserListener.prototype.enterJava_identifier = function(ctx) {
};
// Exit a parse tree produced by EParser#java_identifier.
EParserListener.prototype.exitJava_identifier = function(ctx) {
};
// Enter a parse tree produced by EParser#CSharpReturnStatement.
EParserListener.prototype.enterCSharpReturnStatement = function(ctx) {
};
// Exit a parse tree produced by EParser#CSharpReturnStatement.
EParserListener.prototype.exitCSharpReturnStatement = function(ctx) {
};
// Enter a parse tree produced by EParser#CSharpStatement.
EParserListener.prototype.enterCSharpStatement = function(ctx) {
};
// Exit a parse tree produced by EParser#CSharpStatement.
EParserListener.prototype.exitCSharpStatement = function(ctx) {
};
// Enter a parse tree produced by EParser#CSharpSelectorExpression.
EParserListener.prototype.enterCSharpSelectorExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#CSharpSelectorExpression.
EParserListener.prototype.exitCSharpSelectorExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#CSharpPrimaryExpression.
EParserListener.prototype.enterCSharpPrimaryExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#CSharpPrimaryExpression.
EParserListener.prototype.exitCSharpPrimaryExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#csharp_primary_expression.
EParserListener.prototype.enterCsharp_primary_expression = function(ctx) {
};
// Exit a parse tree produced by EParser#csharp_primary_expression.
EParserListener.prototype.exitCsharp_primary_expression = function(ctx) {
};
// Enter a parse tree produced by EParser#csharp_this_expression.
EParserListener.prototype.enterCsharp_this_expression = function(ctx) {
};
// Exit a parse tree produced by EParser#csharp_this_expression.
EParserListener.prototype.exitCsharp_this_expression = function(ctx) {
};
// Enter a parse tree produced by EParser#csharp_new_expression.
EParserListener.prototype.enterCsharp_new_expression = function(ctx) {
};
// Exit a parse tree produced by EParser#csharp_new_expression.
EParserListener.prototype.exitCsharp_new_expression = function(ctx) {
};
// Enter a parse tree produced by EParser#CSharpMethodExpression.
EParserListener.prototype.enterCSharpMethodExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#CSharpMethodExpression.
EParserListener.prototype.exitCSharpMethodExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#CSharpItemExpression.
EParserListener.prototype.enterCSharpItemExpression = function(ctx) {
};
// Exit a parse tree produced by EParser#CSharpItemExpression.
EParserListener.prototype.exitCSharpItemExpression = function(ctx) {
};
// Enter a parse tree produced by EParser#csharp_method_expression.
EParserListener.prototype.enterCsharp_method_expression = function(ctx) {
};
// Exit a parse tree produced by EParser#csharp_method_expression.
EParserListener.prototype.exitCsharp_method_expression = function(ctx) {
};
// Enter a parse tree produced by EParser#CSharpArgumentList.
EParserListener.prototype.enterCSharpArgumentList = function(ctx) {
};
// Exit a parse tree produced by EParser#CSharpArgumentList.
EParserListener.prototype.exitCSharpArgumentList = function(ctx) {
};
// Enter a parse tree produced by EParser#CSharpArgumentListItem.
EParserListener.prototype.enterCSharpArgumentListItem = function(ctx) {
};
// Exit a parse tree produced by EParser#CSharpArgumentListItem.
EParserListener.prototype.exitCSharpArgumentListItem = function(ctx) {
};
// Enter a parse tree produced by EParser#csharp_item_expression.
EParserListener.prototype.enterCsharp_item_expression = function(ctx) {
};
// Exit a parse tree produced by EParser#csharp_item_expression.
EParserListener.prototype.exitCsharp_item_expression = function(ctx) {
};
// Enter a parse tree produced by EParser#csharp_parenthesis_expression.
EParserListener.prototype.enterCsharp_parenthesis_expression = function(ctx) {
};
// Exit a parse tree produced by EParser#csharp_parenthesis_expression.
EParserListener.prototype.exitCsharp_parenthesis_expression = function(ctx) {
};
// Enter a parse tree produced by EParser#CSharpIdentifier.
EParserListener.prototype.enterCSharpIdentifier = function(ctx) {
};
// Exit a parse tree produced by EParser#CSharpIdentifier.
EParserListener.prototype.exitCSharpIdentifier = function(ctx) {
};
// Enter a parse tree produced by EParser#CSharpChildIdentifier.
EParserListener.prototype.enterCSharpChildIdentifier = function(ctx) {
};
// Exit a parse tree produced by EParser#CSharpChildIdentifier.
EParserListener.prototype.exitCSharpChildIdentifier = function(ctx) {
};
// Enter a parse tree produced by EParser#CSharpPromptoIdentifier.
EParserListener.prototype.enterCSharpPromptoIdentifier = function(ctx) {
};
// Exit a parse tree produced by EParser#CSharpPromptoIdentifier.
EParserListener.prototype.exitCSharpPromptoIdentifier = function(ctx) {
};
// Enter a parse tree produced by EParser#CSharpIntegerLiteral.
EParserListener.prototype.enterCSharpIntegerLiteral = function(ctx) {
};
// Exit a parse tree produced by EParser#CSharpIntegerLiteral.
EParserListener.prototype.exitCSharpIntegerLiteral = function(ctx) {
};
// Enter a parse tree produced by EParser#CSharpDecimalLiteral.
EParserListener.prototype.enterCSharpDecimalLiteral = function(ctx) {
};
// Exit a parse tree produced by EParser#CSharpDecimalLiteral.
EParserListener.prototype.exitCSharpDecimalLiteral = function(ctx) {
};
// Enter a parse tree produced by EParser#CSharpTextLiteral.
EParserListener.prototype.enterCSharpTextLiteral = function(ctx) {
};
// Exit a parse tree produced by EParser#CSharpTextLiteral.
EParserListener.prototype.exitCSharpTextLiteral = function(ctx) {
};
// Enter a parse tree produced by EParser#CSharpBooleanLiteral.
EParserListener.prototype.enterCSharpBooleanLiteral = function(ctx) {
};
// Exit a parse tree produced by EParser#CSharpBooleanLiteral.
EParserListener.prototype.exitCSharpBooleanLiteral = function(ctx) {
};
// Enter a parse tree produced by EParser#CSharpCharacterLiteral.
EParserListener.prototype.enterCSharpCharacterLiteral = function(ctx) {
};
// Exit a parse tree produced by EParser#CSharpCharacterLiteral.
EParserListener.prototype.exitCSharpCharacterLiteral = function(ctx) {
};
// Enter a parse tree produced by EParser#csharp_identifier.
EParserListener.prototype.enterCsharp_identifier = function(ctx) {
};
// Exit a parse tree produced by EParser#csharp_identifier.
EParserListener.prototype.exitCsharp_identifier = function(ctx) {
};
// Enter a parse tree produced by EParser#jsx_expression.
EParserListener.prototype.enterJsx_expression = function(ctx) {
};
// Exit a parse tree produced by EParser#jsx_expression.
EParserListener.prototype.exitJsx_expression = function(ctx) {
};
// Enter a parse tree produced by EParser#JsxSelfClosing.
EParserListener.prototype.enterJsxSelfClosing = function(ctx) {
};
// Exit a parse tree produced by EParser#JsxSelfClosing.
EParserListener.prototype.exitJsxSelfClosing = function(ctx) {
};
// Enter a parse tree produced by EParser#JsxElement.
EParserListener.prototype.enterJsxElement = function(ctx) {
};
// Exit a parse tree produced by EParser#JsxElement.
EParserListener.prototype.exitJsxElement = function(ctx) {
};
// Enter a parse tree produced by EParser#jsx_fragment.
EParserListener.prototype.enterJsx_fragment = function(ctx) {
};
// Exit a parse tree produced by EParser#jsx_fragment.
EParserListener.prototype.exitJsx_fragment = function(ctx) {
};
// Enter a parse tree produced by EParser#jsx_fragment_start.
EParserListener.prototype.enterJsx_fragment_start = function(ctx) {
};
// Exit a parse tree produced by EParser#jsx_fragment_start.
EParserListener.prototype.exitJsx_fragment_start = function(ctx) {
};
// Enter a parse tree produced by EParser#jsx_fragment_end.
EParserListener.prototype.enterJsx_fragment_end = function(ctx) {
};
// Exit a parse tree produced by EParser#jsx_fragment_end.
EParserListener.prototype.exitJsx_fragment_end = function(ctx) {
};
// Enter a parse tree produced by EParser#jsx_self_closing.
EParserListener.prototype.enterJsx_self_closing = function(ctx) {
};
// Exit a parse tree produced by EParser#jsx_self_closing.
EParserListener.prototype.exitJsx_self_closing = function(ctx) {
};
// Enter a parse tree produced by EParser#jsx_opening.
EParserListener.prototype.enterJsx_opening = function(ctx) {
};
// Exit a parse tree produced by EParser#jsx_opening.
EParserListener.prototype.exitJsx_opening = function(ctx) {
};
// Enter a parse tree produced by EParser#jsx_closing.
EParserListener.prototype.enterJsx_closing = function(ctx) {
};
// Exit a parse tree produced by EParser#jsx_closing.
EParserListener.prototype.exitJsx_closing = function(ctx) {
};
// Enter a parse tree produced by EParser#jsx_element_name.
EParserListener.prototype.enterJsx_element_name = function(ctx) {
};
// Exit a parse tree produced by EParser#jsx_element_name.
EParserListener.prototype.exitJsx_element_name = function(ctx) {
};
// Enter a parse tree produced by EParser#jsx_identifier.
EParserListener.prototype.enterJsx_identifier = function(ctx) {
};
// Exit a parse tree produced by EParser#jsx_identifier.
EParserListener.prototype.exitJsx_identifier = function(ctx) {
};
// Enter a parse tree produced by EParser#jsx_attribute.
EParserListener.prototype.enterJsx_attribute = function(ctx) {
};
// Exit a parse tree produced by EParser#jsx_attribute.
EParserListener.prototype.exitJsx_attribute = function(ctx) {
};
// Enter a parse tree produced by EParser#JsxLiteral.
EParserListener.prototype.enterJsxLiteral = function(ctx) {
};
// Exit a parse tree produced by EParser#JsxLiteral.
EParserListener.prototype.exitJsxLiteral = function(ctx) {
};
// Enter a parse tree produced by EParser#JsxValue.
EParserListener.prototype.enterJsxValue = function(ctx) {
};
// Exit a parse tree produced by EParser#JsxValue.
EParserListener.prototype.exitJsxValue = function(ctx) {
};
// Enter a parse tree produced by EParser#jsx_children.
EParserListener.prototype.enterJsx_children = function(ctx) {
};
// Exit a parse tree produced by EParser#jsx_children.
EParserListener.prototype.exitJsx_children = function(ctx) {
};
// Enter a parse tree produced by EParser#JsxText.
EParserListener.prototype.enterJsxText = function(ctx) {
};
// Exit a parse tree produced by EParser#JsxText.
EParserListener.prototype.exitJsxText = function(ctx) {
};
// Enter a parse tree produced by EParser#JsxChild.
EParserListener.prototype.enterJsxChild = function(ctx) {
};
// Exit a parse tree produced by EParser#JsxChild.
EParserListener.prototype.exitJsxChild = function(ctx) {
};
// Enter a parse tree produced by EParser#JsxCode.
EParserListener.prototype.enterJsxCode = function(ctx) {
};
// Exit a parse tree produced by EParser#JsxCode.
EParserListener.prototype.exitJsxCode = function(ctx) {
};
// Enter a parse tree produced by EParser#jsx_text.
EParserListener.prototype.enterJsx_text = function(ctx) {
};
// Exit a parse tree produced by EParser#jsx_text.
EParserListener.prototype.exitJsx_text = function(ctx) {
};
// Enter a parse tree produced by EParser#css_expression.
EParserListener.prototype.enterCss_expression = function(ctx) {
};
// Exit a parse tree produced by EParser#css_expression.
EParserListener.prototype.exitCss_expression = function(ctx) {
};
// Enter a parse tree produced by EParser#css_field.
EParserListener.prototype.enterCss_field = function(ctx) {
};
// Exit a parse tree produced by EParser#css_field.
EParserListener.prototype.exitCss_field = function(ctx) {
};
// Enter a parse tree produced by EParser#css_identifier.
EParserListener.prototype.enterCss_identifier = function(ctx) {
};
// Exit a parse tree produced by EParser#css_identifier.
EParserListener.prototype.exitCss_identifier = function(ctx) {
};
// Enter a parse tree produced by EParser#CssValue.
EParserListener.prototype.enterCssValue = function(ctx) {
};
// Exit a parse tree produced by EParser#CssValue.
EParserListener.prototype.exitCssValue = function(ctx) {
};
// Enter a parse tree produced by EParser#CssText.
EParserListener.prototype.enterCssText = function(ctx) {
};
// Exit a parse tree produced by EParser#CssText.
EParserListener.prototype.exitCssText = function(ctx) {
};
// Enter a parse tree produced by EParser#css_text.
EParserListener.prototype.enterCss_text = function(ctx) {
};
// Exit a parse tree produced by EParser#css_text.
EParserListener.prototype.exitCss_text = function(ctx) {
};
exports.EParserListener = EParserListener;
/***/ }),
/* 117 */
/***/ (function(module, exports, __webpack_require__) {
var Parser = __webpack_require__(1).Parser;
function AbstractParser(input) {
Parser.call(this, input);
return this;
}
AbstractParser.prototype = Object.create(Parser.prototype);
AbstractParser.prototype.constructor = AbstractParser;
AbstractParser.prototype.isText = function(token, text) {
return text === token.text;
};
AbstractParser.prototype.was = function(type) {
return this.lastHiddenTokenType()===type;
};
AbstractParser.prototype.wasNot = function(type) {
return this.lastHiddenTokenType()!==type;
};
AbstractParser.prototype.wasNotWhiteSpace = function() {
return this.lastHiddenTokenType()!==this["WS"];
};
AbstractParser.prototype.willBe = function(type) {
return this.getTokenStream().LA(1)===type;
};
AbstractParser.prototype.willNotBe = function(type) {
return this.getTokenStream().LA(1)!==type;
};
AbstractParser.prototype.nextHiddenTokenType = function() {
var bts = this.getTokenStream();
var hidden = bts.getHiddenTokensToRight(bts.index-1);
if(hidden===null || hidden.length===0) {
return 0;
} else {
return hidden[0].type;
}
};
AbstractParser.prototype.willBeAOrAn = function() {
return this.willBeText("a") || this.willBeText("an");
};
AbstractParser.prototype.willBeText = function(text) {
return text===this.getTokenStream().LT(1).text;
};
AbstractParser.prototype.lastHiddenTokenType = function() {
var bts = this.getTokenStream();
var hidden = bts.getHiddenTokensToLeft(bts.index);
if(hidden===null || hidden.length===0) {
return 0;
} else {
return hidden[hidden.length-1].type;
}
};
AbstractParser.prototype.removeErrorListeners = function() {
Parser.prototype.removeErrorListeners.call(this);
this._input.tokenSource.removeErrorListeners(); // lexer
};
AbstractParser.prototype.addErrorListener = function(listener) {
Parser.prototype.addErrorListener.call(this, listener);
this._input.tokenSource.addErrorListener(listener); // lexer
};
exports.AbstractParser = AbstractParser;
/***/ }),
/* 118 */
/***/ (function(module, exports, __webpack_require__) {
var argument = __webpack_require__(119);
var constraint = __webpack_require__(130);
var instance = __webpack_require__(160);
var declaration = __webpack_require__(170);
var expression = __webpack_require__(331);
var javascript = __webpack_require__(386);
var statement = __webpack_require__(428);
var literal = __webpack_require__(459);
var grammar = __webpack_require__(484);
var value = __webpack_require__(494);
var utils = __webpack_require__(50);
var parser = __webpack_require__(499);
var type = __webpack_require__(389);
var jsx = __webpack_require__(508);
var css = __webpack_require__(519);
var java = __webpack_require__(525);
var csharp = __webpack_require__(542);
var python = __webpack_require__(558);
var antlr4 = __webpack_require__(1);
function EPromptoBuilder(eparser) {
parser.EParserListener.call(this);
this.input = eparser.getTokenStream();
this.path = eparser.path;
this.nodeValues = {};
this.nextNodeId = 0;
return this;
}
EPromptoBuilder.prototype = Object.create(parser.EParserListener.prototype);
EPromptoBuilder.prototype.constructor = EPromptoBuilder;
EPromptoBuilder.prototype.setNodeValue = function(node, value) {
if(node["%id"]===undefined)
node["%id"] = this.nextNodeId++;
this.nodeValues[node["%id"]] = value;
if(value instanceof parser.Section) {
this.buildSection(node, value);
}
};
EPromptoBuilder.prototype.getNodeValue = function(node) {
if(node==null || node===undefined || node["%id"]===null || node["%id"]===undefined)
return null;
else
return this.nodeValues[node["%id"]];
};
EPromptoBuilder.prototype.getHiddenTokensBefore = function(token) {
var hidden = this.input.getHiddenTokensToLeft(token.tokenIndex);
return this.getHiddenTokensText(hidden);
};
EPromptoBuilder.prototype.getHiddenTokensAfter = function(token) {
if(token.tokenIndex<0)
return null;
var hidden = this.input.getHiddenTokensToRight(token.tokenIndex);
return this.getHiddenTokensText(hidden);
};
EPromptoBuilder.prototype.getHiddenTokensText = function(hidden) {
if(hidden==null || hidden.length===0)
return null;
else
return hidden.map(function(token) { return token.text; }).join("");
};
EPromptoBuilder.prototype.getJsxWhiteSpace = function(ctx) {
var within = ctx.children==null ? null : ctx.children
.filter(function(child) { return this.isNotIndent(child); } , this)
.map(function(child) { return child.getText(); }, this)
.join("");
if(within==null || within.length===0)
return null;
var before = this.getHiddenTokensBefore(ctx.start);
if(before!=null)
within = before + within;
var after = this.getHiddenTokensAfter(ctx.stop);
if(after!=null)
within = within + after;
return within;
};
EPromptoBuilder.prototype.isNotIndent = function(tree) {
return !tree.symbol || tree.symbol.type!=parser.EParser.INDENT;
}
EPromptoBuilder.prototype.readAnnotations = function(ctxs) {
var annotations = ctxs.map(function (csc) {
return this.getNodeValue(csc);
}, this);
return (annotations.length == 0) ? null : annotations;
};
EPromptoBuilder.prototype.readComments = function(ctxs) {
var comments = ctxs.map(function (csc) {
return this.getNodeValue(csc);
}, this);
return (comments.length == 0) ? null : comments;
};
EPromptoBuilder.prototype.exitIdentifierExpression = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
this.setNodeValue(ctx, new expression.UnresolvedIdentifier(exp));
};
EPromptoBuilder.prototype.exitTypeIdentifier = function(ctx) {
var name = this.getNodeValue(ctx.type_identifier());
this.setNodeValue(ctx, name);
};
EPromptoBuilder.prototype.exitMethodCallExpression = function(ctx) {
var exp = this.getNodeValue(ctx.exp1 || ctx.exp2);
var args = this.getNodeValue(ctx.args);
var call = new statement.UnresolvedCall(exp, args);
this.setNodeValue(ctx, call);
};
EPromptoBuilder.prototype.exitUnresolvedExpression = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
this.setNodeValue(ctx, exp);
};
EPromptoBuilder.prototype.exitUnresolvedIdentifier = function(ctx) {
var name = this.getNodeValue(ctx.name);
this.setNodeValue(ctx, new expression.UnresolvedIdentifier(name));
};
EPromptoBuilder.prototype.exitUnresolvedSelector = function(ctx) {
var parent = this.getNodeValue(ctx.parent);
var selector = this.getNodeValue(ctx.selector);
selector.parent = parent;
this.setNodeValue(ctx, selector);
};
EPromptoBuilder.prototype.exitUnresolved_selector = function(ctx) {
var name = this.getNodeValue(ctx.name);
this.setNodeValue(ctx, new expression.MemberSelector(null, name));
};
EPromptoBuilder.prototype.exitUUIDLiteral = function(ctx) {
this.setNodeValue(ctx, new literal.UUIDLiteral(ctx.t.text));
};
EPromptoBuilder.prototype.exitUUIDType = function(ctx) {
this.setNodeValue(ctx, type.UUIDType.instance);
};
EPromptoBuilder.prototype.exitCommentStatement = function(ctx) {
this.setNodeValue(ctx, this.getNodeValue(ctx.comment_statement()));
};
EPromptoBuilder.prototype.exitComment_statement = function(ctx) {
this.setNodeValue(ctx, new statement.CommentStatement(ctx.getText()));
};
EPromptoBuilder.prototype.exitBlob_expression = function(ctx) {
var exp = this.getNodeValue(ctx.expression());
this.setNodeValue(ctx, new expression.BlobExpression(exp));
};
EPromptoBuilder.prototype.exitBlobExpression = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
this.setNodeValue(ctx, exp);
};
EPromptoBuilder.prototype.exitBlobType = function(ctx) {
this.setNodeValue(ctx, type.BlobType.instance);
};
EPromptoBuilder.prototype.exitBooleanLiteral = function(ctx) {
this.setNodeValue(ctx, new literal.BooleanLiteral(ctx.t.text));
};
EPromptoBuilder.prototype.exitBreakStatement = function(ctx) {
this.setNodeValue(ctx, new statement.BreakStatement());
};
EPromptoBuilder.prototype.exitMinIntegerLiteral = function(ctx) {
this.setNodeValue(ctx, new literal.MinIntegerLiteral());
};
EPromptoBuilder.prototype.exitMaxIntegerLiteral = function(ctx) {
this.setNodeValue(ctx, new literal.MaxIntegerLiteral());
};
EPromptoBuilder.prototype.exitIntegerLiteral = function(ctx) {
this.setNodeValue(ctx, new literal.IntegerLiteral(ctx.t.text, ctx.t.text));
};
EPromptoBuilder.prototype.exitDecimalLiteral = function(ctx) {
this.setNodeValue(ctx, new literal.DecimalLiteral(ctx.t.text));
};
EPromptoBuilder.prototype.exitHexadecimalLiteral = function(ctx) {
this.setNodeValue(ctx, new literal.HexaLiteral(ctx.t.text));
};
EPromptoBuilder.prototype.exitCharacterLiteral = function(ctx) {
this.setNodeValue(ctx, new literal.CharacterLiteral(ctx.t.text));
};
EPromptoBuilder.prototype.exitDateLiteral = function(ctx) {
this.setNodeValue(ctx, new literal.DateLiteral(ctx.t.text));
};
EPromptoBuilder.prototype.exitDateTimeLiteral = function(ctx) {
this.setNodeValue(ctx, new literal.DateTimeLiteral(ctx.t.text));
};
EPromptoBuilder.prototype.exitTernaryExpression = function(ctx) {
var condition = this.getNodeValue(ctx.test);
var ifTrue = this.getNodeValue(ctx.ifTrue);
var ifFalse = this.getNodeValue(ctx.ifFalse);
var exp = new expression.TernaryExpression(condition, ifTrue, ifFalse);
this.setNodeValue(ctx, exp);
};
EPromptoBuilder.prototype.exitTest_method_declaration = function(ctx) {
var name = new grammar.Identifier(ctx.name.text);
name.setSectionFrom(this.path, ctx.name, ctx.name, parser.Dialect.E);
var stmts = this.getNodeValue(ctx.stmts);
var exps = this.getNodeValue(ctx.exps);
var errorName = this.getNodeValue(ctx.error);
var error = errorName==null ? null : new expression.SymbolExpression(errorName);
this.setNodeValue(ctx, new declaration.TestMethodDeclaration(name, stmts, exps, error));
};
EPromptoBuilder.prototype.exitTextLiteral = function(ctx) {
this.setNodeValue(ctx, new literal.TextLiteral(ctx.t.text));
};
EPromptoBuilder.prototype.exitTimeLiteral = function(ctx) {
this.setNodeValue(ctx, new literal.TimeLiteral(ctx.t.text));
};
EPromptoBuilder.prototype.exitPeriodLiteral = function(ctx) {
this.setNodeValue(ctx, new literal.PeriodLiteral(ctx.t.text));
};
EPromptoBuilder.prototype.exitPeriodType = function(ctx) {
this.setNodeValue(ctx, type.PeriodType.instance);
};
EPromptoBuilder.prototype.exitVersionLiteral = function(ctx) {
this.setNodeValue(ctx, new literal.VersionLiteral(ctx.t.text));
};
EPromptoBuilder.prototype.exitVersionType = function(ctx) {
this.setNodeValue(ctx, type.VersionType.instance);
};
EPromptoBuilder.prototype.exitAttribute_identifier = function(ctx) {
var name = new grammar.Identifier(ctx.getText());
this.setNodeValue(ctx, name);
};
EPromptoBuilder.prototype.exitVariable_identifier = function(ctx) {
var name = new grammar.Identifier(ctx.getText());
this.setNodeValue(ctx, name);
};
EPromptoBuilder.prototype.exitList_literal = function(ctx) {
var mutable = ctx.MUTABLE() !== null;
var items = this.getNodeValue(ctx.expression_list()) || null;
var value = new literal.ListLiteral(mutable, items);
this.setNodeValue(ctx, value);
};
EPromptoBuilder.prototype.exitDict_literal = function(ctx) {
var mutable = ctx.MUTABLE() !== null;
var items = this.getNodeValue(ctx.dict_entry_list()) || null;
var value = new literal.DictLiteral(mutable, items);
this.setNodeValue(ctx, value);
};
EPromptoBuilder.prototype.exitTuple_literal = function(ctx) {
var mutable = ctx.MUTABLE() !== null;
var items = this.getNodeValue(ctx.expression_tuple()) || null;
var value = new literal.TupleLiteral(mutable, items);
this.setNodeValue(ctx, value);
};
EPromptoBuilder.prototype.exitRange_literal = function(ctx) {
var low = this.getNodeValue(ctx.low);
var high = this.getNodeValue(ctx.high);
this.setNodeValue(ctx, new literal.RangeLiteral(low, high));
};
EPromptoBuilder.prototype.exitDict_entry_list = function(ctx) {
var self = this;
var items = new literal.DictEntryList(null, null);
ctx.dict_entry().forEach(function(r) {
var item = self.getNodeValue(r);
items.add(item);
})
this.setNodeValue(ctx, items);
};
EPromptoBuilder.prototype.exitDict_entry = function(ctx) {
var key = this.getNodeValue(ctx.key);
var value = this.getNodeValue(ctx.value);
var entry = new literal.DictEntry(key, value);
this.setNodeValue(ctx, entry);
};
EPromptoBuilder.prototype.exitLiteral_expression = function(ctx) {
var exp = this.getNodeValue(ctx.getChild(0));
this.setNodeValue(ctx, exp);
};
EPromptoBuilder.prototype.exitLiteralExpression = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
this.setNodeValue(ctx, exp);
};
EPromptoBuilder.prototype.exitVariableIdentifier = function(ctx) {
var name = this.getNodeValue(ctx.variable_identifier());
this.setNodeValue(ctx, name);
};
EPromptoBuilder.prototype.exitSymbol_identifier = function(ctx) {
var name = new grammar.Identifier(ctx.getText());
this.setNodeValue(ctx, name);
};
EPromptoBuilder.prototype.exitNative_symbol = function(ctx) {
var name = this.getNodeValue(ctx.name);
var exp = this.getNodeValue(ctx.exp);
this.setNodeValue(ctx, new expression.NativeSymbol(name, exp));
};
EPromptoBuilder.prototype.exitSymbolIdentifier = function(ctx) {
var name = this.getNodeValue(ctx.symbol_identifier());
this.setNodeValue(ctx, name);
};
EPromptoBuilder.prototype.exitBlobType = function(ctx) {
this.setNodeValue(ctx, type.BlobType.instance);
};
EPromptoBuilder.prototype.exitBooleanType = function(ctx) {
this.setNodeValue(ctx, type.BooleanType.instance);
};
EPromptoBuilder.prototype.exitCharacterType = function(ctx) {
this.setNodeValue(ctx, type.CharacterType.instance);
};
EPromptoBuilder.prototype.exitImageType = function(ctx) {
this.setNodeValue(ctx, type.ImageType.instance);
};
EPromptoBuilder.prototype.exitTextType = function(ctx) {
this.setNodeValue(ctx, type.TextType.instance);
};
EPromptoBuilder.prototype.exitHtmlType = function(ctx) {
this.setNodeValue(ctx, type.HtmlType.instance);
};
EPromptoBuilder.prototype.exitThisExpression = function(ctx) {
this.setNodeValue(ctx, new expression.ThisExpression());
};
EPromptoBuilder.prototype.exitIntegerType = function(ctx) {
this.setNodeValue(ctx, type.IntegerType.instance);
};
EPromptoBuilder.prototype.exitDecimalType = function(ctx) {
this.setNodeValue(ctx, type.DecimalType.instance);
};
EPromptoBuilder.prototype.exitDateType = function(ctx) {
this.setNodeValue(ctx, type.DateType.instance);
};
EPromptoBuilder.prototype.exitDateTimeType = function(ctx) {
this.setNodeValue(ctx, type.DateTimeType.instance);
};
EPromptoBuilder.prototype.exitTimeType = function(ctx) {
this.setNodeValue(ctx, type.TimeType.instance);
};
EPromptoBuilder.prototype.exitCodeType = function(ctx) {
this.setNodeValue(ctx, type.CodeType.instance);
};
EPromptoBuilder.prototype.exitPrimaryType = function(ctx) {
var type = this.getNodeValue(ctx.p);
this.setNodeValue(ctx, type);
};
EPromptoBuilder.prototype.exitAttribute_declaration = function(ctx) {
var id = this.getNodeValue(ctx.name);
var type = this.getNodeValue(ctx.typ);
var match = this.getNodeValue(ctx.match);
var indices = null;
if (ctx.indices !=null)
indices = indices = this.getNodeValue(ctx.indices);
else if(ctx.INDEX()!=null)
indices = new grammar.IdentifierList();
if (ctx.index !=null)
indices.push(this.getNodeValue(ctx.index))
var decl = new declaration.AttributeDeclaration(id, type, match, indices);
decl.storable = ctx.STORABLE()!=null;
this.setNodeValue(ctx, decl);
};
EPromptoBuilder.prototype.exitNativeType = function(ctx) {
var type = this.getNodeValue(ctx.n);
this.setNodeValue(ctx, type);
};
EPromptoBuilder.prototype.exitCategoryType = function(ctx) {
var type = this.getNodeValue(ctx.c);
this.setNodeValue(ctx, type);
};
EPromptoBuilder.prototype.exitCategory_type = function(ctx) {
var name = new grammar.Identifier(ctx.getText());
this.buildSection(ctx, name);
this.setNodeValue(ctx, new type.CategoryType(name));
};
EPromptoBuilder.prototype.exitListType = function(ctx) {
var typ = this.getNodeValue(ctx.l);
this.setNodeValue(ctx, new type.ListType(typ));
};
EPromptoBuilder.prototype.exitDictKeyIdentifier = function(ctx) {
var text = ctx.name.getText();
this.setNodeValue(ctx, new literal.DictIdentifierKey(new grammar.Identifier(text)));
};
EPromptoBuilder.prototype.exitDictKeyText = function(ctx) {
var text = ctx.name.text;
this.setNodeValue(ctx, new literal.DictTextKey(text));
};
EPromptoBuilder.prototype.exitDictType = function(ctx) {
var typ = this.getNodeValue(ctx.d);
this.setNodeValue(ctx, new type.DictionaryType(typ));
};
EPromptoBuilder.prototype.exitAttributeList = function(ctx) {
var item = this.getNodeValue(ctx.item);
this.setNodeValue(ctx, new grammar.IdentifierList(item));
};
EPromptoBuilder.prototype.exitAttributeListItem = function(ctx) {
var items = this.getNodeValue(ctx.items);
var item = this.getNodeValue(ctx.item);
items.add(item);
this.setNodeValue(ctx, items);
};
EPromptoBuilder.prototype.exitAttribute_identifier_list = function(ctx) {
var list = new grammar.IdentifierList();
var rules = ctx.attribute_identifier();
rules.forEach(function(rule) {
var item = this.getNodeValue(rule);
list.add(item);
}, this);
this.setNodeValue(ctx, list);
};
EPromptoBuilder.prototype.exitVariable_identifier_list = function(ctx) {
var list = new grammar.IdentifierList();
var rules = ctx.variable_identifier();
rules.forEach(function(rule) {
var item = this.getNodeValue(rule);
list.add(item);
}, this);
this.setNodeValue(ctx, list);
};
EPromptoBuilder.prototype.exitConcrete_category_declaration = function(ctx) {
var name = this.getNodeValue(ctx.name);
var attrs = this.getNodeValue(ctx.attrs) || null;
var derived = this.getNodeValue(ctx.derived) || null;
var methods = this.getNodeValue(ctx.methods) || null;
var decl = new declaration.ConcreteCategoryDeclaration(name, attrs, derived, methods);
decl.storable = ctx.STORABLE()!=null;
this.setNodeValue(ctx, decl);
};
EPromptoBuilder.prototype.exitConcrete_widget_declaration = function(ctx) {
var name = this.getNodeValue(ctx.name);
var derived = this.getNodeValue(ctx.derived);
var methods = this.getNodeValue(ctx.methods);
var decl = new declaration.ConcreteWidgetDeclaration(name, derived, methods);
this.setNodeValue(ctx, decl);
};
EPromptoBuilder.prototype.exitConcreteCategoryDeclaration = function(ctx) {
var decl = this.getNodeValue(ctx.decl);
this.setNodeValue(ctx, decl);
};
EPromptoBuilder.prototype.exitConcreteWidgetDeclaration = function(ctx) {
var decl = this.getNodeValue(ctx.decl);
this.setNodeValue(ctx, decl);
};
EPromptoBuilder.prototype.exitNativeWidgetDeclaration = function(ctx) {
var decl = this.getNodeValue(ctx.decl);
this.setNodeValue(ctx, decl);
};
EPromptoBuilder.prototype.exitDerivedList = function(ctx) {
var items = this.getNodeValue(ctx.items);
this.setNodeValue(ctx, items);
};
EPromptoBuilder.prototype.exitDerivedListItem = function(ctx) {
var items = this.getNodeValue(ctx.items);
var item = this.getNodeValue(ctx.item);
items.add(item);
this.setNodeValue(ctx, items);
};
EPromptoBuilder.prototype.exitType_identifier = function(ctx) {
var name = new grammar.Identifier(ctx.getText());
this.setNodeValue(ctx, name);
};
EPromptoBuilder.prototype.exitType_identifier_list = function(ctx) {
var self = this;
var items = new grammar.IdentifierList();
ctx.type_identifier().forEach(function(r) {
var item = self.getNodeValue(r);
items.add(item);
});
this.setNodeValue(ctx, items);
};
EPromptoBuilder.prototype.exitInstanceExpression = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
this.setNodeValue(ctx, exp);
};
EPromptoBuilder.prototype.exitSelectableExpression = function(ctx) {
var parent = this.getNodeValue(ctx.parent);
this.setNodeValue(ctx, parent);
};
EPromptoBuilder.prototype.exitSelectorExpression = function(ctx) {
var parent = this.getNodeValue(ctx.parent);
var selector = this.getNodeValue(ctx.selector);
selector.parent = parent;
this.setNodeValue(ctx, selector);
};
EPromptoBuilder.prototype.exitSet_literal = function(ctx) {
var items = this.getNodeValue(ctx.expression_list());
var set_ = new literal.SetLiteral(items);
this.setNodeValue(ctx, set_);
};
EPromptoBuilder.prototype.exitStoreStatement = function(ctx) {
this.setNodeValue(ctx, this.getNodeValue(ctx.stmt));
};
EPromptoBuilder.prototype.exitStore_statement = function(ctx) {
var del = this.getNodeValue(ctx.to_del);
var add = this.getNodeValue(ctx.to_add);
var stmts = this.getNodeValue(ctx.stmts);
var stmt = new statement.StoreStatement(del, add, stmts);
this.setNodeValue(ctx, stmt);
};
EPromptoBuilder.prototype.exitMemberSelector = function(ctx) {
var name = this.getNodeValue(ctx.name);
this.setNodeValue(ctx, new expression.UnresolvedSelector(null, name));
};
EPromptoBuilder.prototype.exitItemSelector = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
this.setNodeValue(ctx, new expression.ItemSelector(null, exp));
};
EPromptoBuilder.prototype.exitSliceSelector = function(ctx) {
var slice = this.getNodeValue(ctx.xslice);
this.setNodeValue(ctx, slice);
};
EPromptoBuilder.prototype.exitTyped_argument = function(ctx) {
var typ = this.getNodeValue(ctx.typ);
var name = this.getNodeValue(ctx.name);
var attrs = this.getNodeValue(ctx.attrs);
var arg = attrs ?
new argument.ExtendedArgument(typ, name, attrs) :
new argument.CategoryArgument(typ, name);
var exp = this.getNodeValue(ctx.value);
arg.defaultExpression = exp || null;
this.setNodeValue(ctx, arg);
};
EPromptoBuilder.prototype.exitCodeArgument = function(ctx) {
var arg = this.getNodeValue(ctx.arg);
this.setNodeValue(ctx, arg);
};
EPromptoBuilder.prototype.exitArgument_list = function(ctx) {
var self = this;
var items = new grammar.ArgumentList();
ctx.argument().forEach(function(r) {
var item = self.getNodeValue(r);
items.add(item);
});
this.setNodeValue(ctx, items);
};
EPromptoBuilder.prototype.exitFlush_statement = function(ctx) {
this.setNodeValue(ctx, new statement.FlushStatement());
};
EPromptoBuilder.prototype.exitFlushStatement = function(ctx) {
this.setNodeValue(ctx, this.getNodeValue(ctx.stmt));
};
EPromptoBuilder.prototype.exitFull_argument_list = function(ctx) {
var items = this.getNodeValue(ctx.items);
var item = this.getNodeValue(ctx.item) || null;
if(item!==null) {
items.add(item);
}
this.setNodeValue(ctx, items);
};
EPromptoBuilder.prototype.exitArgument_assignment = function(ctx) {
var name = this.getNodeValue(ctx.name);
var exp = this.getNodeValue(ctx.exp);
var arg = new argument.UnresolvedArgument(name);
this.setNodeValue(ctx, new grammar.ArgumentAssignment(arg, exp));
};
EPromptoBuilder.prototype.exitArgumentAssignmentListExpression = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
var items = this.getNodeValue(ctx.items) || null;
if(items===null) {
items = new grammar.ArgumentAssignmentList();
}
items.insert(0, new grammar.ArgumentAssignment(null, exp));
var item = this.getNodeValue(ctx.item) || null;
if(item!==null) {
items.add(item);
} else {
items.checkLastAnd();
}
this.setNodeValue(ctx, items);
};
EPromptoBuilder.prototype.exitArgumentAssignmentListNoExpression = function(ctx) {
var items = this.getNodeValue(ctx.items);
var item = this.getNodeValue(ctx.item) || null;
if(item!==null) {
items.add(item);
} else {
items.checkLastAnd();
}
this.setNodeValue(ctx, items);
};
EPromptoBuilder.prototype.exitArgumentAssignmentList = function(ctx) {
var item = this.getNodeValue(ctx.item);
var items = new grammar.ArgumentAssignmentList([item]);
this.setNodeValue(ctx, items);
};
EPromptoBuilder.prototype.exitArgumentAssignmentListItem = function(ctx) {
var item = this.getNodeValue(ctx.item);
var items = this.getNodeValue(ctx.items);
items.add(item);
this.setNodeValue(ctx, items);
};
EPromptoBuilder.prototype.exitUnresolvedWithArgsStatement = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
var args = this.getNodeValue(ctx.args);
var name = this.getNodeValue(ctx.name);
var stmts = this.getNodeValue(ctx.stmts);
if (name!=null || stmts!=null)
this.setNodeValue(ctx, new statement.RemoteCall(exp, args, name, stmts));
else
this.setNodeValue(ctx, new statement.UnresolvedCall(exp, args));
};
EPromptoBuilder.prototype.exitAddExpression = function(ctx) {
var left = this.getNodeValue(ctx.left);
var right = this.getNodeValue(ctx.right);
var exp = ctx.op.type===parser.EParser.PLUS ? new expression.PlusExpression(left, right) : new expression.SubtractExpression(left, right);
this.setNodeValue(ctx, exp);
};
EPromptoBuilder.prototype.exitMember_method_declaration_list = function(ctx) {
var self = this;
var items = new grammar.MethodDeclarationList();
ctx.member_method_declaration().forEach(function(r) {
var item = self.getNodeValue(r);
items.add(item);
});
this.setNodeValue(ctx, items);
};
EPromptoBuilder.prototype.exitNative_member_method_declaration_list = function(ctx) {
var self = this;
var items = new grammar.MethodDeclarationList();
ctx.native_member_method_declaration().forEach(function(r) {
var item = self.getNodeValue(r);
items.add(item);
});
this.setNodeValue(ctx, items);
};
EPromptoBuilder.prototype.exitGetter_method_declaration = function(ctx) {
var name = this.getNodeValue(ctx.name);
var stmts = this.getNodeValue(ctx.stmts);
this.setNodeValue(ctx, new declaration.GetterMethodDeclaration(name, stmts));
};
EPromptoBuilder.prototype.exitNative_setter_declaration = function(ctx) {
var name = this.getNodeValue(ctx.name);
var stmts = this.getNodeValue(ctx.stmts);
this.setNodeValue(ctx, new declaration.NativeSetterMethodDeclaration(name, stmts));
};
EPromptoBuilder.prototype.exitNative_getter_declaration = function(ctx) {
var name = this.getNodeValue(ctx.name);
var stmts = this.getNodeValue(ctx.stmts);
this.setNodeValue(ctx, new declaration.NativeGetterMethodDeclaration(name, stmts));
};
EPromptoBuilder.prototype.exitSetter_method_declaration = function(ctx) {
var name = this.getNodeValue(ctx.name);
var stmts = this.getNodeValue(ctx.stmts);
this.setNodeValue(ctx, new declaration.SetterMethodDeclaration(name, stmts));
};
EPromptoBuilder.prototype.exitMember_method_declaration = function(ctx) {
var comments = this.readComments(ctx.comment_statement());
var annotations = this.readAnnotations(ctx.annotation_constructor());
var ctx_ = ctx.children[ctx.getChildCount()-1];
var decl = this.getNodeValue(ctx_);
if(decl!=null) {
decl.comments = comments;
decl.annotations = annotations;
this.setNodeValue(ctx, decl);
}
};
EPromptoBuilder.prototype.exitStatement_list = function(ctx) {
var self = this;
var items = new statement.StatementList();
ctx.statement().forEach(function(r) {
var item = self.getNodeValue(r);
items.add(item);
});
this.setNodeValue(ctx, items);
};
EPromptoBuilder.prototype.exitAbstract_method_declaration = function(ctx) {
var type = this.getNodeValue(ctx.typ);
var name = this.getNodeValue(ctx.name);
var args = this.getNodeValue(ctx.args);
this.setNodeValue(ctx, new declaration.AbstractMethodDeclaration(name, args, type));
};
EPromptoBuilder.prototype.exitConcrete_method_declaration = function(ctx) {
var type = this.getNodeValue(ctx.typ);
var name = this.getNodeValue(ctx.name);
var args = this.getNodeValue(ctx.args);
var stmts = this.getNodeValue(ctx.stmts);
this.setNodeValue(ctx, new declaration.ConcreteMethodDeclaration(name, args, type, stmts));
};
EPromptoBuilder.prototype.exitMethod_declaration = function(ctx) {
var value = this.getNodeValue(ctx.getChild(0));
this.setNodeValue(ctx, value);
};
EPromptoBuilder.prototype.exitMethodCallStatement = function(ctx) {
var stmt = this.getNodeValue(ctx.stmt);
this.setNodeValue(ctx, stmt);
};
EPromptoBuilder.prototype.exitMethod_identifier = function(ctx) {
var value = this.getNodeValue(ctx.getChild(0));
this.setNodeValue(ctx, value);
};
EPromptoBuilder.prototype.exitConstructorFrom = function(ctx) {
var type = this.getNodeValue(ctx.typ);
var copyFrom = this.getNodeValue(ctx.copyExp) || null;
var args = this.getNodeValue(ctx.args) || null;
var arg = this.getNodeValue(ctx.arg) || null;
if(arg!==null) {
if(args===null) {
args = new grammar.ArgumentAssignmentList();
}
args.add(arg);
}
this.setNodeValue(ctx, new expression.ConstructorExpression(type, copyFrom, args, true));
};
EPromptoBuilder.prototype.exitConstructorNoFrom = function(ctx) {
var type = this.getNodeValue(ctx.typ);
var args = this.getNodeValue(ctx.args) || null;
var arg = this.getNodeValue(ctx.arg) || null;
if(arg!==null) {
if(args===null) {
args = new grammar.ArgumentAssignmentList();
}
args.add(arg);
}
this.setNodeValue(ctx, new expression.ConstructorExpression(type, null, args, true));
};
EPromptoBuilder.prototype.exitAssertion = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
this.setNodeValue(ctx, new parser.Assertion(exp));
};
EPromptoBuilder.prototype.exitAssertion_list = function(ctx) {
var self = this;
var items = new utils.ExpressionList();
ctx.assertion().forEach(function(r) {
var item = self.getNodeValue(r);
items.add(item);
});
this.setNodeValue(ctx, items);
};
EPromptoBuilder.prototype.exitAssignInstanceStatement = function(ctx) {
var stmt = this.getNodeValue(ctx.stmt);
this.setNodeValue(ctx, stmt);
};
EPromptoBuilder.prototype.exitAssign_instance_statement = function(ctx) {
var inst = this.getNodeValue(ctx.inst);
var exp = this.getNodeValue(ctx.exp);
this.setNodeValue(ctx, new statement.AssignInstanceStatement(inst, exp));
};
EPromptoBuilder.prototype.exitAssign_variable_statement = function(ctx) {
var name = this.getNodeValue(ctx.variable_identifier());
var exp = this.getNodeValue(ctx.expression());
this.setNodeValue(ctx, new statement.AssignVariableStatement(name, exp));
};
EPromptoBuilder.prototype.exitAssign_tuple_statement = function(ctx) {
var items = this.getNodeValue(ctx.items);
var exp = this.getNodeValue(ctx.exp);
this.setNodeValue(ctx, new statement.AssignTupleStatement(items, exp));
};
EPromptoBuilder.prototype.exitRootInstance = function(ctx) {
var name = this.getNodeValue(ctx.variable_identifier());
this.setNodeValue(ctx, new instance.VariableInstance(name));
};
EPromptoBuilder.prototype.exitRoughlyEqualsExpression = function(ctx) {
var left = this.getNodeValue(ctx.left);
var right = this.getNodeValue(ctx.right);
this.setNodeValue(ctx, new expression.EqualsExpression(left, grammar.EqOp.ROUGHLY, right));
};
EPromptoBuilder.prototype.exitChildInstance = function(ctx) {
var parent = this.getNodeValue(ctx.assignable_instance());
var child = this.getNodeValue(ctx.child_instance());
child.parent = parent;
this.setNodeValue(ctx, child);
};
EPromptoBuilder.prototype.exitMemberInstance = function(ctx) {
var name = this.getNodeValue(ctx.name);
this.setNodeValue(ctx, new instance.MemberInstance(name));
};
EPromptoBuilder.prototype.exitIsATypeExpression = function(ctx) {
var type = this.getNodeValue(ctx.category_or_any_type());
var exp = new expression.TypeExpression(type);
this.setNodeValue(ctx, exp);
};
EPromptoBuilder.prototype.exitIsOtherExpression = function(ctx) {
var exp = this.getNodeValue(ctx.expression());
this.setNodeValue(ctx, exp);
};
EPromptoBuilder.prototype.exitIsExpression = function(ctx) {
var left = this.getNodeValue(ctx.left);
var right = this.getNodeValue(ctx.right);
var op = right instanceof expression.TypeExpression ? grammar.EqOp.IS_A : grammar.EqOp.IS;
this.setNodeValue(ctx, new expression.EqualsExpression(left, op, right));
};
EPromptoBuilder.prototype.exitIsNotExpression = function(ctx) {
var left = this.getNodeValue(ctx.left);
var right = this.getNodeValue(ctx.right);
var op = right instanceof expression.TypeExpression ? grammar.EqOp.IS_NOT_A : grammar.EqOp.IS_NOT;
this.setNodeValue(ctx, new expression.EqualsExpression(left, op, right));
};
EPromptoBuilder.prototype.exitItemInstance = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
this.setNodeValue(ctx, new instance.ItemInstance(exp));
};
EPromptoBuilder.prototype.exitConstructorExpression = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
this.setNodeValue(ctx, exp);
};
EPromptoBuilder.prototype.exitNative_statement_list = function(ctx) {
var self = this;
var items = new statement.StatementList();
ctx.native_statement().forEach(function (r) {
var item = self.getNodeValue(r);
items.add(item);
});
this.setNodeValue(ctx, items);
};
EPromptoBuilder.prototype.exitJava_identifier = function(ctx) {
this.setNodeValue(ctx, ctx.getText());
};
EPromptoBuilder.prototype.exitJavascript_identifier = function(ctx) {
var id = new grammar.Identifier(ctx.getText());
this.setNodeValue(ctx, id);
};
EPromptoBuilder.prototype.exitJavascript_member_expression = function(ctx) {
var name = ctx.name.getText ();
this.setNodeValue (ctx, new javascript.JavaScriptMemberExpression(name));
};
EPromptoBuilder.prototype.exitJavascript_new_expression = function(ctx) {
var method = this.getNodeValue(ctx.javascript_method_expression());
this.setNodeValue (ctx, new javascript.JavaScriptNewExpression(method));
};
EPromptoBuilder.prototype.exitJavascript_primary_expression = function(ctx) {
var exp = this.getNodeValue (ctx.getChild(0));
this.setNodeValue (ctx, exp);
};
EPromptoBuilder.prototype.exitJavascript_this_expression = function(ctx) {
this.setNodeValue (ctx, new javascript.JavaScriptThisExpression ());
};
EPromptoBuilder.prototype.exitJavaIdentifier = function(ctx) {
var name = this.getNodeValue(ctx.name);
this.setNodeValue(ctx, new java.JavaIdentifierExpression(null, name));
};
EPromptoBuilder.prototype.exitJavaIdentifierExpression = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
this.setNodeValue(ctx, exp);
};
EPromptoBuilder.prototype.exitJavaChildIdentifier = function(ctx) {
var parent = this.getNodeValue(ctx.parent);
var name = this.getNodeValue(ctx.name);
var child = new java.JavaIdentifierExpression(parent, name);
this.setNodeValue(ctx, child);
};
EPromptoBuilder.prototype.exitJavaClassIdentifier = function(ctx) {
var klass = this.getNodeValue(ctx.klass);
this.setNodeValue(ctx, klass);
};
EPromptoBuilder.prototype.exitJavaChildClassIdentifier = function(ctx) {
var parent = this.getNodeValue(ctx.parent);
var child = new java.JavaIdentifierExpression(parent, ctx.name.text);
this.setNodeValue(ctx, child);
};
EPromptoBuilder.prototype.exitJavaPrimaryExpression = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
this.setNodeValue(ctx, exp);
};
EPromptoBuilder.prototype.exitJavascriptBooleanLiteral = function(ctx) {
this.setNodeValue(ctx, new javascript.JavaScriptBooleanLiteral(ctx.getText()));
};
EPromptoBuilder.prototype.exitJavascriptCharacterLiteral = function(ctx) {
this.setNodeValue(ctx, new javascript.JavaScriptCharacterLiteral(ctx.getText()));
};
EPromptoBuilder.prototype.exitJavascriptTextLiteral = function(ctx) {
this.setNodeValue(ctx, new javascript.JavaScriptTextLiteral(ctx.getText()));
};
EPromptoBuilder.prototype.exitJavascriptIntegerLiteral = function(ctx) {
this.setNodeValue(ctx, new javascript.JavaScriptIntegerLiteral(ctx.getText()));
};
EPromptoBuilder.prototype.exitJavascriptDecimalLiteral = function(ctx) {
this.setNodeValue(ctx, new javascript.JavaScriptDecimalLiteral(ctx.getText()));
};
EPromptoBuilder.prototype.exitJavascriptPrimaryExpression = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
this.setNodeValue(ctx, exp);
};
EPromptoBuilder.prototype.exitJavascript_identifier_expression = function(ctx) {
var id = this.getNodeValue(ctx.name);
this.setNodeValue(ctx, new javascript.JavaScriptIdentifierExpression(id));
};
EPromptoBuilder.prototype.exitJavaSelectorExpression = function(ctx) {
var parent = this.getNodeValue(ctx.parent);
var child = this.getNodeValue(ctx.child);
child.parent = parent;
this.setNodeValue(ctx, child);
};
EPromptoBuilder.prototype.exitJavascriptSelectorExpression = function(ctx) {
var parent = this.getNodeValue(ctx.parent);
var child = this.getNodeValue(ctx.child);
child.parent = parent;
this.setNodeValue(ctx, child);
};
EPromptoBuilder.prototype.exitJavaScriptMemberExpression = function(ctx) {
var id = this.getNodeValue(ctx.name);
this.setNodeValue(ctx, new javascript.JavaScriptMemberExpression(id));
};
EPromptoBuilder.prototype.exitJava_primary_expression = function(ctx) {
var exp = this.getNodeValue(ctx.getChild(0));
this.setNodeValue(ctx, exp);
};
EPromptoBuilder.prototype.exitJava_item_expression = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
this.setNodeValue(ctx, new java.JavaItemExpression(exp));
};
EPromptoBuilder.prototype.exitJavascript_item_expression = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
this.setNodeValue(ctx, new javascript.JavaScriptItemExpression(exp));
};
EPromptoBuilder.prototype.exitJavaItemExpression = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
this.setNodeValue(ctx, exp);
};
EPromptoBuilder.prototype.exitJavascriptItemExpression = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
this.setNodeValue(ctx, exp);
};
EPromptoBuilder.prototype.exitJavaStatement = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
var stmt = new java.JavaStatement(exp,false);
this.setNodeValue(ctx, stmt);
};
EPromptoBuilder.prototype.exitJavascriptStatement = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
var stmt = new javascript.JavaScriptStatement(exp,false);
this.setNodeValue(ctx, stmt);
};
EPromptoBuilder.prototype.exitJavaReturnStatement = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
this.setNodeValue(ctx, new java.JavaStatement(exp,true));
};
EPromptoBuilder.prototype.exitJavascriptReturnStatement = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
this.setNodeValue(ctx, new javascript.JavaScriptStatement(exp,true));
};
EPromptoBuilder.prototype.exitJavaNativeStatement = function(ctx) {
var stmt = this.getNodeValue(ctx.java_statement());
var call = new java.JavaNativeCall(stmt);
this.setNodeValue(ctx, call);
};
EPromptoBuilder.prototype.exitJavaScriptNativeStatement = function(ctx) {
var stmt = this.getNodeValue(ctx.javascript_native_statement());
this.setNodeValue(ctx, stmt);
};
EPromptoBuilder.prototype.exitJavascript_native_statement = function(ctx) {
var stmt = this.getNodeValue(ctx.javascript_statement());
var module = this.getNodeValue(ctx.javascript_module());
stmt.module = module || null;
this.setNodeValue(ctx, new javascript.JavaScriptNativeCall(stmt));
};
EPromptoBuilder.prototype.exitNative_method_declaration = function(ctx) {
var type = this.getNodeValue(ctx.typ);
var name = this.getNodeValue(ctx.name);
var args = this.getNodeValue(ctx.args);
var stmts = this.getNodeValue(ctx.stmts);
var decl = new declaration.NativeMethodDeclaration(name, args, type, stmts);
this.setNodeValue(ctx, decl);
};
EPromptoBuilder.prototype.exitJavaArgumentList = function(ctx) {
var item = this.getNodeValue(ctx.item);
this.setNodeValue(ctx, new java.JavaExpressionList(item));
};
EPromptoBuilder.prototype.exitJavascriptArgumentList = function(ctx) {
var item = this.getNodeValue(ctx.item);
this.setNodeValue(ctx, new javascript.JavaScriptExpressionList(item));
};
EPromptoBuilder.prototype.exitJavaArgumentListItem = function(ctx) {
var item = this.getNodeValue(ctx.item);
var items = this.getNodeValue(ctx.items);
items.add(item);
this.setNodeValue(ctx, items);
};
EPromptoBuilder.prototype.exitJavascriptArgumentListItem = function(ctx) {
var item = this.getNodeValue(ctx.item);
var items = this.getNodeValue(ctx.items);
items.add(item);
this.setNodeValue(ctx, items);
};
EPromptoBuilder.prototype.exitJava_method_expression = function(ctx) {
var name = this.getNodeValue(ctx.name);
var args = this.getNodeValue(ctx.args);
this.setNodeValue(ctx, new java.JavaMethodExpression(name, args));
};
EPromptoBuilder.prototype.exitJava_this_expression = function(ctx) {
this.setNodeValue(ctx, new java.JavaThisExpression());
};
EPromptoBuilder.prototype.exitJavaScriptMethodExpression = function(ctx) {
var method = this.getNodeValue(ctx.method);
this.setNodeValue(ctx, method);
};
EPromptoBuilder.prototype.exitJavascript_method_expression = function(ctx) {
var id = this.getNodeValue(ctx.name);
var args = this.getNodeValue(ctx.args);
this.setNodeValue(ctx, new javascript.JavaScriptMethodExpression(id, args));
};
EPromptoBuilder.prototype.exitJavaMethodExpression = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
this.setNodeValue(ctx, exp);
};
EPromptoBuilder.prototype.exitFullDeclarationList = function(ctx) {
var items = this.getNodeValue(ctx.declarations()) || new declaration.DeclarationList();
this.setNodeValue(ctx, items);
};
EPromptoBuilder.prototype.exitDeclaration = function(ctx) {
var comments = this.readComments(ctx.comment_statement());
var annotations = this.readAnnotations(ctx.annotation_constructor());
var ctx_ = ctx.children[ctx.getChildCount()-1];
var decl = this.getNodeValue(ctx_);
if(decl!=null) {
decl.comments = comments;
decl.annotations = annotations;
this.setNodeValue(ctx, decl);
}
};
EPromptoBuilder.prototype.exitDeclarations = function(ctx) {
var self = this;
var items = new declaration.DeclarationList();
ctx.declaration().forEach(function(r) {
var item = self.getNodeValue(r);
items.add(item);
});
this.setNodeValue(ctx, items);
};
EPromptoBuilder.prototype.exitIteratorExpression = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
var name = this.getNodeValue(ctx.name);
var source = this.getNodeValue(ctx.source);
this.setNodeValue(ctx, new expression.IteratorExpression(name, source, exp));
};
EPromptoBuilder.prototype.exitIteratorType = function(ctx) {
var typ = this.getNodeValue(ctx.i);
this.setNodeValue(ctx, new type.IteratorType(typ));
};
EPromptoBuilder.prototype.exitJavaBooleanLiteral = function(ctx) {
this.setNodeValue(ctx, new java.JavaBooleanLiteral(ctx.getText()));
};
EPromptoBuilder.prototype.exitJavaIntegerLiteral = function(ctx) {
this.setNodeValue(ctx, new java.JavaIntegerLiteral(ctx.getText()));
};
EPromptoBuilder.prototype.exitJavaDecimalLiteral = function(ctx) {
this.setNodeValue(ctx, new java.JavaDecimalLiteral(ctx.getText()));
};
EPromptoBuilder.prototype.exitJavaCharacterLiteral = function(ctx) {
this.setNodeValue(ctx, new java.JavaCharacterLiteral(ctx.getText()));
};
EPromptoBuilder.prototype.exitJavaTextLiteral = function(ctx) {
this.setNodeValue(ctx, new java.JavaTextLiteral(ctx.getText()));
};
EPromptoBuilder.prototype.exitJavaCategoryBinding = function(ctx) {
var map = this.getNodeValue(ctx.binding);
this.setNodeValue(ctx, new java.JavaNativeCategoryBinding(map));
};
EPromptoBuilder.prototype.exitJavaScriptCategoryBinding = function(ctx) {
this.setNodeValue(ctx, this.getNodeValue(ctx.binding));
};
EPromptoBuilder.prototype.exitJavascript_category_binding = function(ctx) {
var identifier = ctx.javascript_identifier().map(function(cx) { return cx.getText(); }).join(".");
var module = this.getNodeValue(ctx.javascript_module()) || null;
var map = new javascript.JavaScriptNativeCategoryBinding(identifier, module);
this.setNodeValue(ctx, map);
};
EPromptoBuilder.prototype.exitJavascript_module = function(ctx) {
var ids = ctx.javascript_identifier().map(function(rule) {
return rule.getText();
});
var module = new javascript.JavaScriptModule(ids);
this.setNodeValue(ctx, module);
};
EPromptoBuilder.prototype.exitNativeCategoryBindingList = function(ctx) {
var item = this.getNodeValue(ctx.item);
var items = new grammar.NativeCategoryBindingList(item);
this.setNodeValue(ctx, items);
};
EPromptoBuilder.prototype.exitNativeCategoryBindingListItem = function(ctx) {
var item = this.getNodeValue(ctx.item);
var items = this.getNodeValue(ctx.items);
items.add(item);
this.setNodeValue(ctx, items);
};
EPromptoBuilder.prototype.exitNative_category_bindings = function(ctx) {
var items = this.getNodeValue(ctx.items);
this.setNodeValue(ctx, items);
};
EPromptoBuilder.prototype.exitNative_category_declaration = function(ctx) {
var name = this.getNodeValue(ctx.name);
var attrs = this.getNodeValue(ctx.attrs);
var bindings = this.getNodeValue(ctx.bindings);
var methods = this.getNodeValue(ctx.methods);
var decl = new declaration.NativeCategoryDeclaration(name, attrs, bindings, null, methods);
decl.storable = ctx.STORABLE()!=null;
this.setNodeValue(ctx, decl);
};
EPromptoBuilder.prototype.exitNative_widget_declaration = function(ctx) {
var name = this.getNodeValue(ctx.name);
var bindings = this.getNodeValue(ctx.bindings);
var methods = this.getNodeValue(ctx.methods);
var decl = new declaration.NativeWidgetDeclaration(name, bindings, methods);
this.setNodeValue(ctx, decl);
};
EPromptoBuilder.prototype.exitNativeCategoryDeclaration = function(ctx) {
var decl = this.getNodeValue(ctx.decl);
this.setNodeValue(ctx, decl);
};
EPromptoBuilder.prototype.exitNative_resource_declaration = function(ctx) {
var name = this.getNodeValue(ctx.name);
var attrs = this.getNodeValue(ctx.attrs);
var bindings = this.getNodeValue(ctx.bindings);
var methods = this.getNodeValue(ctx.methods);
var decl = new declaration.NativeResourceDeclaration(name, attrs, bindings, null, methods);
decl.storable = ctx.STORABLE()!=null;
this.setNodeValue(ctx, decl);
};
EPromptoBuilder.prototype.exitResource_declaration = function(ctx) {
var decl = this.getNodeValue(ctx.native_resource_declaration());
this.setNodeValue(ctx, decl);
};
EPromptoBuilder.prototype.exitParenthesis_expression = function(ctx) {
var exp = this.getNodeValue(ctx.expression());
this.setNodeValue(ctx, new expression.ParenthesisExpression(exp));
};
EPromptoBuilder.prototype.exitParenthesisExpression = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
this.setNodeValue(ctx, exp);
};
EPromptoBuilder.prototype.exitNative_symbol_list = function(ctx) {
var self = this;
var items = new grammar.NativeSymbolList();
ctx.native_symbol().forEach(function(r) {
var item = self.getNodeValue(r);
items.add(item);
});
this.setNodeValue(ctx, items);
};
EPromptoBuilder.prototype.exitEnum_native_declaration = function(ctx) {
var name = this.getNodeValue(ctx.name);
var type = this.getNodeValue(ctx.typ);
var symbols = this.getNodeValue(ctx.symbols);
this.setNodeValue(ctx, new declaration.EnumeratedNativeDeclaration(name, type, symbols));
};
EPromptoBuilder.prototype.exitFor_each_statement = function(ctx) {
var name1 = this.getNodeValue(ctx.name1);
var name2 = this.getNodeValue(ctx.name2);
var source = this.getNodeValue(ctx.source);
var stmts = this.getNodeValue(ctx.stmts);
this.setNodeValue(ctx, new statement.ForEachStatement(name1, name2, source, stmts));
};
EPromptoBuilder.prototype.exitForEachStatement = function(ctx) {
var stmt = this.getNodeValue(ctx.stmt);
this.setNodeValue(ctx, stmt);
};
EPromptoBuilder.prototype.exitSymbols_token = function(ctx) {
this.setNodeValue(ctx, ctx.getText());
};
EPromptoBuilder.prototype.exitKey_token = function(ctx) {
this.setNodeValue(ctx, ctx.getText());
};
EPromptoBuilder.prototype.exitValue_token = function(ctx) {
this.setNodeValue(ctx, ctx.getText());
};
EPromptoBuilder.prototype.exitNamed_argument = function(ctx) {
var name = this.getNodeValue(ctx.variable_identifier());
var arg = new argument.UnresolvedArgument(name);
var exp = this.getNodeValue(ctx.literal_expression());
arg.defaultExpression = exp || null;
this.setNodeValue(ctx, arg);
};
EPromptoBuilder.prototype.exitClosureStatement = function(ctx) {
var decl = this.getNodeValue(ctx.decl);
this.setNodeValue(ctx, new statement.DeclarationStatement(decl));
};
EPromptoBuilder.prototype.exitReturn_statement = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
this.setNodeValue(ctx, new statement.ReturnStatement(exp));
};
EPromptoBuilder.prototype.exitReturnStatement = function(ctx) {
var stmt = this.getNodeValue(ctx.stmt);
this.setNodeValue(ctx, stmt);
};
EPromptoBuilder.prototype.exitClosureExpression = function(ctx) {
var name = this.getNodeValue(ctx.name);
this.setNodeValue(ctx, new expression.MethodExpression(name));
};
EPromptoBuilder.prototype.exitIf_statement = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
var stmts = this.getNodeValue(ctx.stmts);
var elseIfs = this.getNodeValue(ctx.elseIfs);
var elseStmts = this.getNodeValue(ctx.elseStmts);
this.setNodeValue(ctx, new statement.IfStatement(exp, stmts, elseIfs, elseStmts));
};
EPromptoBuilder.prototype.exitElseIfStatementList = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
var stmts = this.getNodeValue(ctx.stmts);
var elem = new statement.IfElement(exp, stmts);
this.setNodeValue(ctx, new statement.IfElementList(elem));
};
EPromptoBuilder.prototype.exitElseIfStatementListItem = function(ctx) {
var items = this.getNodeValue(ctx.items);
var exp = this.getNodeValue(ctx.exp);
var stmts = this.getNodeValue(ctx.stmts);
var elem = new statement.IfElement(exp, stmts);
items.add(elem);
this.setNodeValue(ctx, items);
};
EPromptoBuilder.prototype.exitIfStatement = function(ctx) {
var stmt = this.getNodeValue(ctx.stmt);
this.setNodeValue(ctx, stmt);
};
EPromptoBuilder.prototype.exitSwitchStatement = function(ctx) {
var stmt = this.getNodeValue(ctx.stmt);
this.setNodeValue(ctx, stmt);
};
EPromptoBuilder.prototype.exitAssignTupleStatement = function(ctx) {
var stmt = this.getNodeValue(ctx.stmt);
this.setNodeValue(ctx, stmt);
};
EPromptoBuilder.prototype.exitRaiseStatement = function(ctx) {
var stmt = this.getNodeValue(ctx.stmt);
this.setNodeValue(ctx, stmt);
};
EPromptoBuilder.prototype.exitWriteStatement = function(ctx) {
var stmt = this.getNodeValue(ctx.stmt);
this.setNodeValue(ctx, stmt);
};
EPromptoBuilder.prototype.exitWithResourceStatement = function(ctx) {
var stmt = this.getNodeValue(ctx.stmt);
this.setNodeValue(ctx, stmt);
};
EPromptoBuilder.prototype.exitWhileStatement = function(ctx) {
var stmt = this.getNodeValue(ctx.stmt);
this.setNodeValue(ctx, stmt);
};
EPromptoBuilder.prototype.exitDoWhileStatement = function(ctx) {
var stmt = this.getNodeValue(ctx.stmt);
this.setNodeValue(ctx, stmt);
};
EPromptoBuilder.prototype.exitTryStatement = function(ctx) {
var stmt = this.getNodeValue(ctx.stmt);
this.setNodeValue(ctx, stmt);
};
EPromptoBuilder.prototype.exitEqualsExpression = function(ctx) {
var left = this.getNodeValue(ctx.left);
var right = this.getNodeValue(ctx.right);
this.setNodeValue(ctx, new expression.EqualsExpression(left, grammar.EqOp.EQUALS, right));
};
EPromptoBuilder.prototype.exitNotEqualsExpression = function(ctx) {
var left = this.getNodeValue(ctx.left);
var right = this.getNodeValue(ctx.right);
this.setNodeValue(ctx, new expression.EqualsExpression(left, grammar.EqOp.NOT_EQUALS, right));
};
EPromptoBuilder.prototype.exitGreaterThanExpression = function(ctx) {
var left = this.getNodeValue(ctx.left);
var right = this.getNodeValue(ctx.right);
this.setNodeValue(ctx, new expression.CompareExpression(left, grammar.CmpOp.GT, right));
};
EPromptoBuilder.prototype.exitGreaterThanOrEqualExpression = function(ctx) {
var left = this.getNodeValue(ctx.left);
var right = this.getNodeValue(ctx.right);
this.setNodeValue(ctx, new expression.CompareExpression(left, grammar.CmpOp.GTE, right));
};
EPromptoBuilder.prototype.exitLessThanExpression = function(ctx) {
var left = this.getNodeValue(ctx.left);
var right = this.getNodeValue(ctx.right);
this.setNodeValue(ctx, new expression.CompareExpression(left, grammar.CmpOp.LT, right));
};
EPromptoBuilder.prototype.exitLessThanOrEqualExpression = function(ctx) {
var left = this.getNodeValue(ctx.left);
var right = this.getNodeValue(ctx.right);
this.setNodeValue(ctx, new expression.CompareExpression(left, grammar.CmpOp.LTE, right));
};
EPromptoBuilder.prototype.exitAtomicSwitchCase = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
var stmts = this.getNodeValue(ctx.stmts);
this.setNodeValue(ctx, new statement.AtomicSwitchCase(exp, stmts));
};
EPromptoBuilder.prototype.exitCollection_literal = function(ctx) {
var value = this.getNodeValue(ctx.getChild(0));
this.setNodeValue(ctx, value);
};
EPromptoBuilder.prototype.exitCollectionSwitchCase = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
var stmts = this.getNodeValue(ctx.stmts);
this.setNodeValue(ctx, new statement.CollectionSwitchCase(exp, stmts));
};
EPromptoBuilder.prototype.exitSwitch_case_statement_list = function(ctx) {
var self = this;
var items = new statement.SwitchCaseList();
ctx.switch_case_statement().forEach(function(r) {
var item = self.getNodeValue(r);
items.add(item);
});
this.setNodeValue(ctx, items);
};
EPromptoBuilder.prototype.exitSwitch_statement = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
var cases = this.getNodeValue(ctx.cases);
var stmts = this.getNodeValue(ctx.stmts);
var stmt = new statement.SwitchStatement(exp, cases, stmts);
this.setNodeValue(ctx, stmt);
};
EPromptoBuilder.prototype.exitLiteralRangeLiteral = function(ctx) {
var low = this.getNodeValue(ctx.low);
var high = this.getNodeValue(ctx.high);
this.setNodeValue(ctx, new literal.RangeLiteral(low, high));
};
EPromptoBuilder.prototype.exitLiteralListLiteral = function(ctx) {
var exp = this.getNodeValue(ctx.literal_list_literal());
this.setNodeValue(ctx, new literal.ListLiteral(false, exp));
};
EPromptoBuilder.prototype.exitLiteral_list_literal = function(ctx) {
var self = this;
var items = new utils.ExpressionList();
ctx.atomic_literal().forEach(function(r) {
var item = self.getNodeValue(r);
items.add(item);
});
this.setNodeValue(ctx, items);
};
EPromptoBuilder.prototype.exitInExpression = function(ctx) {
var left = this.getNodeValue(ctx.left);
var right = this.getNodeValue(ctx.right);
this.setNodeValue(ctx, new expression.ContainsExpression(left, grammar.ContOp.IN, right));
};
EPromptoBuilder.prototype.exitNotInExpression = function(ctx) {
var left = this.getNodeValue(ctx.left);
var right = this.getNodeValue(ctx.right);
this.setNodeValue(ctx, new expression.ContainsExpression(left, grammar.ContOp.NOT_IN, right));
};
EPromptoBuilder.prototype.exitHasExpression = function(ctx) {
var left = this.getNodeValue(ctx.left);
var right = this.getNodeValue(ctx.right);
this.setNodeValue(ctx, new expression.ContainsExpression(left, grammar.ContOp.HAS, right));
};
EPromptoBuilder.prototype.exitNotHasExpression = function(ctx) {
var left = this.getNodeValue(ctx.left);
var right = this.getNodeValue(ctx.right);
this.setNodeValue(ctx, new expression.ContainsExpression(left, grammar.ContOp.NOT_HAS, right));
};
EPromptoBuilder.prototype.exitHasAllExpression = function(ctx) {
var left = this.getNodeValue(ctx.left);
var right = this.getNodeValue(ctx.right);
this.setNodeValue(ctx, new expression.ContainsExpression(left, grammar.ContOp.HAS_ALL, right));
};
EPromptoBuilder.prototype.exitNotHasAllExpression = function(ctx) {
var left = this.getNodeValue(ctx.left);
var right = this.getNodeValue(ctx.right);
this.setNodeValue(ctx, new expression.ContainsExpression(left, grammar.ContOp.NOT_HAS_ALL, right));
};
EPromptoBuilder.prototype.exitHasAnyExpression = function(ctx) {
var left = this.getNodeValue(ctx.left);
var right = this.getNodeValue(ctx.right);
this.setNodeValue(ctx, new expression.ContainsExpression(left, grammar.ContOp.HAS_ANY, right));
};
EPromptoBuilder.prototype.exitNotHasAnyExpression = function(ctx) {
var left = this.getNodeValue(ctx.left);
var right = this.getNodeValue(ctx.right);
this.setNodeValue(ctx, new expression.ContainsExpression(left, grammar.ContOp.NOT_HAS_ANY, right));
};
EPromptoBuilder.prototype.exitContainsExpression = function(ctx) {
var left = this.getNodeValue(ctx.left);
var right = this.getNodeValue(ctx.right);
this.setNodeValue(ctx, new expression.EqualsExpression(left, grammar.EqOp.CONTAINS, right));
};
EPromptoBuilder.prototype.exitNotContainsExpression = function(ctx) {
var left = this.getNodeValue(ctx.left);
var right = this.getNodeValue(ctx.right);
this.setNodeValue(ctx, new expression.EqualsExpression(left, grammar.EqOp.NOT_CONTAINS, right));
};
EPromptoBuilder.prototype.exitDivideExpression = function(ctx) {
var left = this.getNodeValue(ctx.left);
var right = this.getNodeValue(ctx.right);
this.setNodeValue(ctx, new expression.DivideExpression(left, right));
};
EPromptoBuilder.prototype.exitIntDivideExpression = function(ctx) {
var left = this.getNodeValue(ctx.left);
var right = this.getNodeValue(ctx.right);
this.setNodeValue(ctx, new expression.IntDivideExpression(left, right));
};
EPromptoBuilder.prototype.exitModuloExpression = function(ctx) {
var left = this.getNodeValue(ctx.left);
var right = this.getNodeValue(ctx.right);
this.setNodeValue(ctx, new expression.ModuloExpression(left, right));
};
EPromptoBuilder.prototype.exitAnnotation_constructor = function(ctx) {
var name = this.getNodeValue(ctx.name);
var exp = this.getNodeValue(ctx.exp);
this.setNodeValue(ctx, new grammar.Annotation(name, exp));
};
EPromptoBuilder.prototype.exitAnnotation_identifier = function(ctx) {
var name = ctx.getText();
this.setNodeValue(ctx, new grammar.Identifier(name));
};
EPromptoBuilder.prototype.exitAndExpression = function(ctx) {
var left = this.getNodeValue(ctx.left);
var right = this.getNodeValue(ctx.right);
this.setNodeValue(ctx, new expression.AndExpression(left, right));
};
EPromptoBuilder.prototype.exitNullLiteral = function(ctx) {
this.setNodeValue(ctx, literal.NullLiteral.instance);
};
EPromptoBuilder.prototype.exitOperator_argument = function(ctx) {
var value = this.getNodeValue (ctx.getChild (0));
this.setNodeValue (ctx, value);
};
EPromptoBuilder.prototype.exitOperatorArgument = function(ctx) {
var arg = this.getNodeValue(ctx.arg);
arg.mutable = ctx.MUTABLE()!=null;
this.setNodeValue(ctx, arg);
};
EPromptoBuilder.prototype.exitOperatorPlus = function(ctx) {
this.setNodeValue(ctx, grammar.Operator.PLUS);
};
EPromptoBuilder.prototype.exitOperatorMinus = function(ctx) {
this.setNodeValue(ctx, grammar.Operator.MINUS);
};
EPromptoBuilder.prototype.exitOperatorMultiply = function(ctx) {
this.setNodeValue(ctx, grammar.Operator.MULTIPLY);
};
EPromptoBuilder.prototype.exitOperatorDivide = function(ctx) {
this.setNodeValue(ctx, grammar.Operator.DIVIDE);
};
EPromptoBuilder.prototype.exitOperatorIDivide = function(ctx) {
this.setNodeValue(ctx, grammar.Operator.IDIVIDE);
};
EPromptoBuilder.prototype.exitOperatorModulo = function(ctx) {
this.setNodeValue(ctx, grammar.Operator.MODULO);
};
EPromptoBuilder.prototype.exitNative_member_method_declaration = function(ctx) {
var value = this.getNodeValue (ctx.getChild (0));
this.setNodeValue (ctx, value);
};
EPromptoBuilder.prototype.exitOperator_method_declaration= function(ctx) {
var op = this.getNodeValue(ctx.op);
var arg = this.getNodeValue(ctx.arg);
var typ = this.getNodeValue(ctx.typ);
var stmts = this.getNodeValue(ctx.stmts);
var decl = new declaration.OperatorMethodDeclaration(op, arg, typ, stmts);
this.setNodeValue(ctx, decl);
};
EPromptoBuilder.prototype.exitOrder_by = function(ctx) {
var self = this;
var names = new grammar.IdentifierList();
ctx.variable_identifier().map( function(ctx_) {
names.push(self.getNodeValue(ctx_));
});
var clause = new grammar.OrderByClause(names, ctx.DESC()!=null);
this.setNodeValue(ctx, clause);
};
EPromptoBuilder.prototype.exitOrder_by_list = function(ctx) {
var self = this;
var list = new grammar.OrderByClauseList();
ctx.order_by().map( function(ctx_) {
list.add(self.getNodeValue(ctx_));
});
this.setNodeValue(ctx, list);
};
EPromptoBuilder.prototype.exitOrExpression = function(ctx) {
var left = this.getNodeValue(ctx.left);
var right = this.getNodeValue(ctx.right);
this.setNodeValue(ctx, new expression.OrExpression(left, right));
};
EPromptoBuilder.prototype.exitMultiplyExpression = function(ctx) {
var left = this.getNodeValue(ctx.left);
var right = this.getNodeValue(ctx.right);
this.setNodeValue(ctx, new expression.MultiplyExpression(left, right));
};
EPromptoBuilder.prototype.exitMutable_category_type = function(ctx) {
var typ = this.getNodeValue (ctx.category_type());
typ.mutable = ctx.MUTABLE()!=null;
this.setNodeValue(ctx, typ);
};
EPromptoBuilder.prototype.exitMinusExpression = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
this.setNodeValue(ctx, new expression.MinusExpression(exp));
};
EPromptoBuilder.prototype.exitNotExpression = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
this.setNodeValue(ctx, new expression.NotExpression(exp));
};
EPromptoBuilder.prototype.exitWhile_statement = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
var stmts = this.getNodeValue(ctx.stmts);
this.setNodeValue(ctx, new statement.WhileStatement(exp, stmts));
};
EPromptoBuilder.prototype.exitDo_while_statement = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
var stmts = this.getNodeValue(ctx.stmts);
this.setNodeValue(ctx, new statement.DoWhileStatement(exp, stmts));
};
EPromptoBuilder.prototype.exitSingleton_category_declaration = function(ctx) {
var name = this.getNodeValue(ctx.name);
var attrs = this.getNodeValue(ctx.attrs);
var methods = this.getNodeValue(ctx.methods);
this.setNodeValue(ctx, new declaration.SingletonCategoryDeclaration(name, attrs, methods));
};
EPromptoBuilder.prototype.exitSingletonCategoryDeclaration = function(ctx) {
var decl = this.getNodeValue(ctx.decl);
this.setNodeValue(ctx, decl);
};
EPromptoBuilder.prototype.exitSliceFirstAndLast = function(ctx) {
var first = this.getNodeValue(ctx.first);
var last = this.getNodeValue(ctx.last);
this.setNodeValue(ctx, new expression.SliceSelector(null, first, last));
};
EPromptoBuilder.prototype.exitSliceFirstOnly = function(ctx) {
var first = this.getNodeValue(ctx.first);
this.setNodeValue(ctx, new expression.SliceSelector(null, first, null));
};
EPromptoBuilder.prototype.exitSliceLastOnly = function(ctx) {
var last = this.getNodeValue(ctx.last);
this.setNodeValue(ctx, new expression.SliceSelector(null, null, last));
};
EPromptoBuilder.prototype.exitSorted_expression = function(ctx) {
var source = this.getNodeValue(ctx.source);
var desc = ctx.DESC()!=null;
var key = this.getNodeValue(ctx.key);
this.setNodeValue(ctx, new expression.SortedExpression(source, desc, key));
};
EPromptoBuilder.prototype.exitSortedExpression = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
this.setNodeValue(ctx, exp);
};
EPromptoBuilder.prototype.exitDocumentExpression = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
this.setNodeValue(ctx, exp);
};
EPromptoBuilder.prototype.exitDocument_expression = function(ctx) {
var exp = this.getNodeValue(ctx.expression());
this.setNodeValue(ctx, new expression.DocumentExpression(exp));
};
EPromptoBuilder.prototype.exitDocumentType = function(ctx) {
this.setNodeValue(ctx, type.DocumentType.instance);
};
EPromptoBuilder.prototype.exitDocument_literal = function(ctx) {
var entries = this.getNodeValue(ctx.dict_entry_list());
var items = entries ? new literal.DocEntryList(entries.items) : null;
this.setNodeValue(ctx, new literal.DocumentLiteral(items));
};
EPromptoBuilder.prototype.exitFetchExpression = function(ctx) {
this.setNodeValue(ctx, this.getNodeValue(ctx.exp));
};
EPromptoBuilder.prototype.exitFetchStatement = function(ctx) {
this.setNodeValue(ctx, this.getNodeValue(ctx.stmt));
};
EPromptoBuilder.prototype.exitFetchMany = function(ctx) {
var category = this.getNodeValue(ctx.typ);
var predicate = this.getNodeValue(ctx.predicate);
var start = this.getNodeValue(ctx.xstart);
var stop = this.getNodeValue(ctx.xstop);
var orderBy = this.getNodeValue(ctx.orderby);
this.setNodeValue(ctx, new expression.FetchManyExpression(category, start, stop, predicate, orderBy));
};
EPromptoBuilder.prototype.exitFetchManyAsync = function(ctx) {
var category = this.getNodeValue(ctx.typ);
var predicate = this.getNodeValue(ctx.predicate);
var start = this.getNodeValue(ctx.xstart);
var stop = this.getNodeValue(ctx.xstop);
var orderBy = this.getNodeValue(ctx.orderby);
var name = this.getNodeValue(ctx.name);
var stmts = this.getNodeValue(ctx.stmts);
this.setNodeValue(ctx, new statement.FetchManyStatement(category, start, stop, predicate, orderBy, name, stmts));
};
EPromptoBuilder.prototype.exitFetchOne = function(ctx) {
var category = this.getNodeValue(ctx.typ);
var predicate = this.getNodeValue(ctx.predicate);
this.setNodeValue(ctx, new expression.FetchOneExpression(category, predicate));
};
EPromptoBuilder.prototype.exitFetchOneAsync = function(ctx) {
var category = this.getNodeValue(ctx.typ);
var predicate = this.getNodeValue(ctx.predicate);
var name = this.getNodeValue(ctx.name);
var stmts = this.getNodeValue(ctx.stmts);
this.setNodeValue(ctx, new statement.FetchOneStatement(category, predicate, name, stmts));
};
EPromptoBuilder.prototype.exitFilteredListExpression = function(ctx) {
var filtered = this.getNodeValue(ctx.filtered_list_suffix());
var source = this.getNodeValue(ctx.src);
filtered.source = source;
this.setNodeValue(ctx, filtered);
};
EPromptoBuilder.prototype.exitFiltered_list_suffix = function(ctx) {
var itemName = this.getNodeValue(ctx.name);
var predicate = this.getNodeValue(ctx.predicate);
this.setNodeValue(ctx, new expression.FilteredExpression(itemName, null, predicate));
};
EPromptoBuilder.prototype.exitCode_type = function(ctx) {
this.setNodeValue(ctx, type.CodeType.instance);
};
EPromptoBuilder.prototype.exitExecuteExpression = function(ctx) {
var name = this.getNodeValue(ctx.name);
this.setNodeValue(ctx, new expression.ExecuteExpression(name));
};
EPromptoBuilder.prototype.exitExpression_list = function(ctx) {
var self = this;
var items = new utils.ExpressionList();
ctx.expression().forEach(function(r) {
var item = self.getNodeValue(r);
items.add(item);
});
this.setNodeValue(ctx, items);
};
EPromptoBuilder.prototype.exitExpression_tuple = function(ctx) {
var self = this;
var items = new utils.ExpressionList();
ctx.expression().forEach(function(r) {
var item = self.getNodeValue(r);
items.add(item);
});
this.setNodeValue(ctx, items);
};
EPromptoBuilder.prototype.exitCodeExpression = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
this.setNodeValue(ctx, new expression.CodeExpression(exp));
};
EPromptoBuilder.prototype.exitCode_argument = function(ctx) {
var name = this.getNodeValue(ctx.name);
this.setNodeValue(ctx, new argument.CodeArgument(name));
};
EPromptoBuilder.prototype.exitCategory_or_any_type = function(ctx) {
var exp = this.getNodeValue(ctx.getChild(0));
this.setNodeValue(ctx, exp);
};
EPromptoBuilder.prototype.exitCategory_symbol = function(ctx) {
var name = this.getNodeValue(ctx.name);
var args = this.getNodeValue(ctx.args);
var arg = this.getNodeValue(ctx.arg) || null;
if(arg!==null) {
args.add(arg);
}
this.setNodeValue(ctx, new expression.CategorySymbol(name, args));
};
EPromptoBuilder.prototype.exitCategory_symbol_list = function(ctx) {
var self = this;
var items = new grammar.CategorySymbolList();
ctx.category_symbol().forEach(function(r) {
var item = self.getNodeValue(r);
items.add(item);
});
this.setNodeValue(ctx, items);
};
EPromptoBuilder.prototype.exitEnum_category_declaration = function(ctx) {
var name = this.getNodeValue(ctx.name);
var attrs = this.getNodeValue(ctx.attrs);
var parent = this.getNodeValue(ctx.derived);
var derived = parent==null ? null : new grammar.IdentifierList(parent);
var symbols = this.getNodeValue(ctx.symbols);
this.setNodeValue(ctx, new declaration.EnumeratedCategoryDeclaration(name, attrs, derived, symbols));
};
EPromptoBuilder.prototype.exitEnum_declaration = function(ctx) {
var value = this.getNodeValue(ctx.getChild(0));
this.setNodeValue(ctx, value);
};
EPromptoBuilder.prototype.exitRead_all_expression = function(ctx) {
var source = this.getNodeValue(ctx.source);
this.setNodeValue(ctx, new expression.ReadAllExpression(source));
};
EPromptoBuilder.prototype.exitRead_one_expression = function(ctx) {
var source = this.getNodeValue(ctx.source);
this.setNodeValue(ctx, new expression.ReadOneExpression(source));
};
EPromptoBuilder.prototype.exitReadAllExpression = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
this.setNodeValue(ctx, exp);
};
EPromptoBuilder.prototype.exitReadOneExpression = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
this.setNodeValue(ctx, exp);
};
EPromptoBuilder.prototype.exitWith_singleton_statement = function(ctx) {
var name = this.getNodeValue(ctx.typ);
var typ = new type.CategoryType(name);
var stmts = this.getNodeValue(ctx.stmts);
this.setNodeValue(ctx, new statement.WithSingletonStatement(typ, stmts));
};
EPromptoBuilder.prototype.exitWithSingletonStatement = function(ctx) {
var stmt = this.getNodeValue(ctx.stmt);
this.setNodeValue(ctx, stmt);
};
EPromptoBuilder.prototype.exitWrite_statement = function(ctx) {
var what = this.getNodeValue(ctx.what);
var target = this.getNodeValue(ctx.target);
this.setNodeValue(ctx, new statement.WriteStatement(what, target));
};
EPromptoBuilder.prototype.exitWith_resource_statement = function(ctx) {
var stmt = this.getNodeValue(ctx.stmt);
var stmts = this.getNodeValue(ctx.stmts);
this.setNodeValue(ctx, new statement.WithResourceStatement(stmt, stmts));
};
EPromptoBuilder.prototype.exitAnyType = function(ctx) {
this.setNodeValue(ctx, type.AnyType.instance);
};
EPromptoBuilder.prototype.exitAnyListType = function(ctx) {
var typ = this.getNodeValue(ctx.any_type());
this.setNodeValue(ctx, new type.ListType(typ));
};
EPromptoBuilder.prototype.exitAnyDictType = function(ctx) {
var typ = this.getNodeValue(ctx.typ);
this.setNodeValue(ctx, new type.DictType(typ));
};
EPromptoBuilder.prototype.exitCastExpression = function(ctx) {
var left = this.getNodeValue(ctx.left);
var type = this.getNodeValue(ctx.right);
this.setNodeValue(ctx, new expression.CastExpression(left, type));
}
EPromptoBuilder.prototype.exitCatchAtomicStatement = function(ctx) {
var name = this.getNodeValue(ctx.name);
var stmts = this.getNodeValue(ctx.stmts);
this.setNodeValue(ctx, new statement.AtomicSwitchCase(new expression.SymbolExpression(name), stmts));
};
EPromptoBuilder.prototype.exitCatchCollectionStatement = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
var stmts = this.getNodeValue(ctx.stmts);
this.setNodeValue(ctx, new statement.CollectionSwitchCase(exp, stmts));
};
EPromptoBuilder.prototype.exitCatch_statement_list = function(ctx) {
var self = this;
var items = new statement.SwitchCaseList();
ctx.catch_statement().forEach(function(r) {
var item = self.getNodeValue(r);
items.add(item);
});
this.setNodeValue(ctx, items);
};
EPromptoBuilder.prototype.exitTry_statement = function(ctx) {
var name = this.getNodeValue(ctx.name);
var stmts = this.getNodeValue(ctx.stmts);
var handlers = this.getNodeValue(ctx.handlers);
var anyStmts = this.getNodeValue(ctx.anyStmts);
var finalStmts = this.getNodeValue(ctx.finalStmts);
var stmt = new statement.SwitchErrorStatement(name, stmts, handlers, anyStmts, finalStmts);
this.setNodeValue(ctx, stmt);
};
EPromptoBuilder.prototype.exitRaise_statement = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
this.setNodeValue(ctx, new statement.RaiseStatement(exp));
};
EPromptoBuilder.prototype.exitMatchingList = function(ctx) {
var exp = this.getNodeValue(ctx.source);
this.setNodeValue(ctx, new constraint.MatchingCollectionConstraint(exp));
};
EPromptoBuilder.prototype.exitMatchingRange = function(ctx) {
var exp = this.getNodeValue(ctx.source);
this.setNodeValue(ctx, new constraint.MatchingCollectionConstraint(exp));
};
EPromptoBuilder.prototype.exitMatchingExpression = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
this.setNodeValue(ctx, new constraint.MatchingExpressionConstraint(exp));
};
EPromptoBuilder.prototype.exitMatchingPattern = function(ctx) {
this.setNodeValue(ctx, new constraint.MatchingPatternConstraint(new literal.TextLiteral(ctx.text.text)));
};
EPromptoBuilder.prototype.exitLiteralSetLiteral = function(ctx) {
var items = this.getNodeValue(ctx.literal_list_literal());
this.setNodeValue(ctx, new literal.SetLiteral(items));
};
EPromptoBuilder.prototype.exitInvocation_expression = function(ctx) {
var name = this.getNodeValue(ctx.name);
var select = new expression.MethodSelector(null, name);
this.setNodeValue(ctx, new statement.MethodCall(select));
};
EPromptoBuilder.prototype.exitInvocationExpression = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
this.setNodeValue(ctx, exp);
};
EPromptoBuilder.prototype.exitInvokeStatement = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
this.setNodeValue(ctx, exp);
};
EPromptoBuilder.prototype.exitCsharp_identifier = function(ctx) {
this.setNodeValue(ctx, ctx.getText());
};
EPromptoBuilder.prototype.exitCSharpIdentifier = function(ctx) {
var name = this.getNodeValue(ctx.name);
this.setNodeValue(ctx, new csharp.CSharpIdentifierExpression(null, name));
};
EPromptoBuilder.prototype.exitCSharpChildIdentifier = function(ctx) {
var parent = this.getNodeValue(ctx.parent);
var name = this.getNodeValue(ctx.name);
var child = new csharp.CSharpIdentifierExpression(parent, name);
this.setNodeValue(ctx, child);
};
EPromptoBuilder.prototype.exitCSharpBooleanLiteral = function(ctx) {
this.setNodeValue(ctx, new csharp.CSharpBooleanLiteral(ctx.getText()));
};
EPromptoBuilder.prototype.exitCSharpIntegerLiteral = function(ctx) {
this.setNodeValue(ctx, new csharp.CSharpIntegerLiteral(ctx.getText()));
};
EPromptoBuilder.prototype.exitCSharpDecimalLiteral = function(ctx) {
this.setNodeValue(ctx, new csharp.CSharpDecimalLiteral(ctx.getText()));
};
EPromptoBuilder.prototype.exitCSharpCharacterLiteral = function(ctx) {
this.setNodeValue(ctx, new csharp.CSharpCharacterLiteral(ctx.getText()));
};
EPromptoBuilder.prototype.exitCSharpTextLiteral = function(ctx) {
this.setNodeValue(ctx, new csharp.CSharpTextLiteral(ctx.getText()));
};
EPromptoBuilder.prototype.exitCSharpCategoryBinding = function(ctx) {
var binding = this.getNodeValue(ctx.binding);
this.setNodeValue(ctx, new csharp.CSharpNativeCategoryBinding(binding));
};
EPromptoBuilder.prototype.exitCsharp_primary_expression = function(ctx) {
var value = this.getNodeValue(ctx.getChild(0));
this.setNodeValue(ctx, value);
};
EPromptoBuilder.prototype.exitCsharp_this_expression = function(ctx) {
this.setNodeValue(ctx, new csharp.CSharpThisExpression());
};
EPromptoBuilder.prototype.exitCsharp_method_expression = function(ctx) {
var name = this.getNodeValue(ctx.name);
var args = this.getNodeValue(ctx.args);
this.setNodeValue(ctx, new csharp.CSharpMethodExpression(name, args));
};
EPromptoBuilder.prototype.exitCSharpMethodExpression = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
this.setNodeValue(ctx, exp);
};
EPromptoBuilder.prototype.exitCSharpArgumentList = function(ctx) {
var item = this.getNodeValue(ctx.item);
this.setNodeValue(ctx, new csharp.CSharpExpressionList(item));
};
EPromptoBuilder.prototype.exitCSharpArgumentListItem = function(ctx) {
var item = this.getNodeValue(ctx.item);
var items = this.getNodeValue(ctx.items);
items.add(item);
this.setNodeValue(ctx, items);
};
EPromptoBuilder.prototype.exitCSharpNativeStatement = function(ctx) {
var stmt = this.getNodeValue(ctx.csharp_statement());
var call = new csharp.CSharpNativeCall(stmt);
this.setNodeValue(ctx, call);
};
EPromptoBuilder.prototype.exitCSharpPromptoIdentifier = function(ctx) {
var name = ctx.DOLLAR_IDENTIFIER().getText();
this.setNodeValue(ctx, new csharp.CSharpIdentifierExpression(null, name));
};
EPromptoBuilder.prototype.exitCSharpPrimaryExpression = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
this.setNodeValue(ctx, exp);
};
EPromptoBuilder.prototype.exitCSharpSelectorExpression = function(ctx) {
var parent = this.getNodeValue(ctx.parent);
var child = this.getNodeValue(ctx.child);
child.parent = parent;
this.setNodeValue(ctx, child);
};
EPromptoBuilder.prototype.exitCSharpStatement = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
var stmt = new csharp.CSharpStatement(exp,false);
this.setNodeValue(ctx, stmt);
};
EPromptoBuilder.prototype.exitCSharpReturnStatement = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
this.setNodeValue(ctx, new csharp.CSharpStatement(exp,true));
};
EPromptoBuilder.prototype.exitPythonStatement = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
this.setNodeValue(ctx, new python.PythonStatement(exp,false));
};
EPromptoBuilder.prototype.exitPythonReturnStatement = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
this.setNodeValue(ctx, new python.PythonStatement(exp,true));
};
EPromptoBuilder.prototype.exitPython2CategoryBinding = function(ctx) {
var map = this.getNodeValue(ctx.binding);
this.setNodeValue(ctx, new python.Python2NativeCategoryBinding(map));
};
EPromptoBuilder.prototype.exitPython3CategoryBinding = function(ctx) {
var map = this.getNodeValue(ctx.binding);
this.setNodeValue(ctx, new python.Python3NativeCategoryBinding(map));
};
EPromptoBuilder.prototype.exitPython_category_binding = function(ctx) {
var identifier = ctx.identifier().getText();
var module = this.getNodeValue(ctx.python_module()) || null;
var map = new python.PythonNativeCategoryBinding(identifier, module);
this.setNodeValue(ctx, map);
};
EPromptoBuilder.prototype.exitPython_method_expression = function(ctx) {
var name = this.getNodeValue(ctx.name);
var args = this.getNodeValue(ctx.args);
var method = new python.PythonMethodExpression(name, args);
this.setNodeValue(ctx, method);
};
EPromptoBuilder.prototype.exitPythonGlobalMethodExpression = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
this.setNodeValue(ctx, exp);
};
EPromptoBuilder.prototype.exitPythonMethodExpression = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
this.setNodeValue(ctx, exp);
};
EPromptoBuilder.prototype.exitPython_module = function(ctx) {
var ids = ctx.python_identifier().map(function(rule) {
return rule.getText();
});
var module = new python.PythonModule(ids);
this.setNodeValue(ctx, module);
};
EPromptoBuilder.prototype.exitPython2NativeStatement = function(ctx) {
var stmt = this.getNodeValue(ctx.python_native_statement());
this.setNodeValue(ctx, new python.Python2NativeCall(stmt));
};
EPromptoBuilder.prototype.exitPython3NativeStatement = function(ctx) {
var stmt = this.getNodeValue(ctx.python_native_statement());
this.setNodeValue(ctx, new python.Python3NativeCall(stmt));
};
EPromptoBuilder.prototype.exitPython_native_statement = function(ctx) {
var stmt = this.getNodeValue(ctx.python_statement());
var module = this.getNodeValue(ctx.python_module());
stmt.module = module || null;
this.setNodeValue(ctx, new python.PythonNativeCall(stmt));
}
EPromptoBuilder.prototype.exitPython_identifier = function(ctx) {
this.setNodeValue(ctx, ctx.getText());
};
EPromptoBuilder.prototype.exitPythonIdentifier = function(ctx) {
var name = this.getNodeValue(ctx.name);
this.setNodeValue(ctx, new python.PythonIdentifierExpression(null, name));
};
EPromptoBuilder.prototype.exitPythonIdentifierExpression = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
this.setNodeValue(ctx, exp);
};
EPromptoBuilder.prototype.exitPythonChildIdentifier = function(ctx) {
var parent = this.getNodeValue(ctx.parent);
var name = this.getNodeValue(ctx.name);
var child = new python.PythonIdentifierExpression(parent, name);
this.setNodeValue(ctx, child);
};
EPromptoBuilder.prototype.exitPythonBooleanLiteral = function(ctx) {
this.setNodeValue(ctx, new python.PythonBooleanLiteral(ctx.getText()));
};
EPromptoBuilder.prototype.exitPythonIntegerLiteral = function(ctx) {
this.setNodeValue(ctx, new python.PythonIntegerLiteral(ctx.getText()));
};
EPromptoBuilder.prototype.exitPythonDecimalLiteral = function(ctx) {
this.setNodeValue(ctx, new python.PythonDecimalLiteral(ctx.getText()));
};
EPromptoBuilder.prototype.exitPythonCharacterLiteral = function(ctx) {
this.setNodeValue(ctx, new python.PythonCharacterLiteral(ctx.getText()));
};
EPromptoBuilder.prototype.exitPythonTextLiteral = function(ctx) {
this.setNodeValue(ctx, new python.PythonTextLiteral(ctx.getText()));
};
EPromptoBuilder.prototype.exitPythonLiteralExpression = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
this.setNodeValue(ctx, exp);
};
EPromptoBuilder.prototype.exitPythonPromptoIdentifier = function(ctx) {
var name = ctx.DOLLAR_IDENTIFIER().getText();
this.setNodeValue(ctx, new python.PythonIdentifierExpression(null, name));
};
EPromptoBuilder.prototype.exitPythonPrimaryExpression = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
this.setNodeValue(ctx, exp);
};
EPromptoBuilder.prototype.exitPythonArgumentList = function(ctx) {
var ordinal = this.getNodeValue(ctx.ordinal);
var named = this.getNodeValue(ctx.named);
ordinal.addAll(named);
this.setNodeValue(ctx, ordinal);
};
EPromptoBuilder.prototype.exitPythonNamedOnlyArgumentList = function(ctx) {
var named = this.getNodeValue(ctx.named);
this.setNodeValue(ctx, named);
};
EPromptoBuilder.prototype.exitPythonNamedArgumentList = function(ctx) {
var name = this.getNodeValue(ctx.name);
var exp = this.getNodeValue(ctx.exp);
var arg = new python.PythonNamedArgument(name, exp);
this.setNodeValue(ctx, new python.PythonArgumentList(arg));
};
EPromptoBuilder.prototype.exitPythonNamedArgumentListItem = function(ctx) {
var name = this.getNodeValue(ctx.name);
var exp = this.getNodeValue(ctx.exp);
var arg = new python.PythonNamedArgument(name, exp);
var items = this.getNodeValue(ctx.items);
items.add(arg);
this.setNodeValue(ctx, items);
};
EPromptoBuilder.prototype.exitPythonOrdinalOnlyArgumentList = function(ctx) {
var ordinal = this.getNodeValue(ctx.ordinal);
this.setNodeValue(ctx, ordinal);
};
EPromptoBuilder.prototype.exitPythonOrdinalArgumentList = function(ctx) {
var item = this.getNodeValue(ctx.item);
var arg = new python.PythonOrdinalArgument(item);
this.setNodeValue(ctx, new python.PythonArgumentList(arg));
};
EPromptoBuilder.prototype.exitPythonOrdinalArgumentListItem = function(ctx) {
var item = this.getNodeValue(ctx.item);
var arg = new python.PythonOrdinalArgument(item);
var items = this.getNodeValue(ctx.items);
items.add(arg);
this.setNodeValue(ctx, items);
};
EPromptoBuilder.prototype.exitPythonSelectorExpression = function(ctx) {
var parent = this.getNodeValue(ctx.parent);
var selector = this.getNodeValue(ctx.child);
selector.parent = parent;
this.setNodeValue(ctx, selector);
};
EPromptoBuilder.prototype.exitPythonSelfExpression = function(ctx) {
this.setNodeValue(ctx, new python.PythonSelfExpression());
};
EPromptoBuilder.prototype.exitJsxChild = function(ctx) {
this.setNodeValue(ctx, this.getNodeValue(ctx.jsx));
};
EPromptoBuilder.prototype.exitJsxCode = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
this.setNodeValue(ctx, new jsx.JsxCode(exp));
};
EPromptoBuilder.prototype.exitJsxExpression = function(ctx) {
this.setNodeValue(ctx, this.getNodeValue(ctx.exp));
};
EPromptoBuilder.prototype.exitJsxElement = function(ctx) {
var elem = this.getNodeValue(ctx.opening);
var closing = this.getNodeValue(ctx.closing);
elem.setClosing(closing);
var children = this.getNodeValue(ctx.children_);
elem.setChildren(children);
this.setNodeValue(ctx, elem);
};
EPromptoBuilder.prototype.exitJsxSelfClosing = function(ctx) {
this.setNodeValue(ctx, this.getNodeValue(ctx.jsx));
};
EPromptoBuilder.prototype.exitJsxText = function(ctx) {
var text = parser.ParserUtils.getFullText(ctx.text);
this.setNodeValue(ctx, new jsx.JsxText(text));
};
EPromptoBuilder.prototype.exitJsxValue = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
this.setNodeValue(ctx, new jsx.JsxExpression(exp));
};
EPromptoBuilder.prototype.exitJsx_attribute = function(ctx) {
var name = this.getNodeValue(ctx.name);
var value = this.getNodeValue(ctx.value);
var suite = this.getJsxWhiteSpace(ctx.jsx_ws());
this.setNodeValue(ctx, new jsx.JsxAttribute(name, value, suite));
};
EPromptoBuilder.prototype.exitJsx_children = function(ctx) {
var list = ctx.jsx_child().map(function(cx) { return this.getNodeValue(cx); }, this);
this.setNodeValue(ctx, list);
};
EPromptoBuilder.prototype.exitJsx_element_name = function(ctx) {
var name = ctx.getText();
this.setNodeValue(ctx, new grammar.Identifier(name));
};
EPromptoBuilder.prototype.exitJsx_expression = function(ctx) {
this.setNodeValue(ctx, this.getNodeValue(ctx.getChild(0)));
};
EPromptoBuilder.prototype.exitJsx_identifier = function(ctx) {
var name = ctx.getText();
this.setNodeValue(ctx, new grammar.Identifier(name));
};
EPromptoBuilder.prototype.exitJsxLiteral = function(ctx) {
var text = ctx.getText();
this.setNodeValue(ctx, new jsx.JsxLiteral(text));
};
EPromptoBuilder.prototype.exitJsx_opening = function(ctx) {
var name = this.getNodeValue(ctx.name);
var nameSuite = this.getJsxWhiteSpace(ctx.jsx_ws());
var attributes = ctx.jsx_attribute()
.map(function(cx) { return this.getNodeValue(cx); }, this);
this.setNodeValue(ctx, new jsx.JsxElement(name, nameSuite, attributes, null));
};
EPromptoBuilder.prototype.exitJsx_closing = function(ctx) {
var name = this.getNodeValue(ctx.name);
this.setNodeValue(ctx, new jsx.JsxClosing(name, null));
};
EPromptoBuilder.prototype.exitJsx_self_closing = function(ctx) {
var name = this.getNodeValue(ctx.name);
var nameSuite = this.getJsxWhiteSpace(ctx.jsx_ws());
var attributes = ctx.jsx_attribute()
.map(function(cx) { return this.getNodeValue(cx); }, this);
this.setNodeValue(ctx, new jsx.JsxSelfClosing(name, nameSuite, attributes, null));
};
EPromptoBuilder.prototype.exitCssExpression = function(ctx) {
this.setNodeValue(ctx, this.getNodeValue(ctx.exp));
}
EPromptoBuilder.prototype.exitCss_expression = function(ctx) {
var exp = new css.CssExpression();
ctx.css_field().forEach(function(cx) {
var field = this.getNodeValue(cx);
exp.addField(field);
}, this);
this.setNodeValue(ctx, exp);
};
EPromptoBuilder.prototype.exitCss_field = function(ctx) {
var name = ctx.name.getText();
var value = this.getNodeValue(ctx.value);
this.setNodeValue(ctx, new css.CssField(name, value));
};
EPromptoBuilder.prototype.exitCssText = function(ctx) {
var text = ctx.text.getText();
this.setNodeValue(ctx, new css.CssText(text));
};
EPromptoBuilder.prototype.exitCssValue = function(ctx) {
var exp = this.getNodeValue(ctx.exp);
this.setNodeValue(ctx, new css.CssCode(exp));
};
EPromptoBuilder.prototype.buildSection = function(node, section) {
var first = this.findFirstValidToken(node.start.tokenIndex);
var last = this.findLastValidToken(node.stop.tokenIndex);
section.setSectionFrom(this.path, first, last, parser.Dialect.E);
};
EPromptoBuilder.prototype.findFirstValidToken = function(idx) {
if(idx===-1) { // happens because input.index() is called before any other read operation (bug?)
idx = 0;
}
do {
var token = this.readValidToken(idx++);
if(token!==null) {
return token;
}
} while(idx=0) {
var token = this.readValidToken(idx--);
if(token!==null) {
return token;
}
}
return null;
};
EPromptoBuilder.prototype.readValidToken = function(idx) {
var token = this.input.get(idx);
var text = token.text;
// ignore trailing whitespace
if(text!==null && text.replace(/(\n|\r|\t|' ')/g,"").length>0) {
return token;
} else {
return null;
}
};
exports.EPromptoBuilder = EPromptoBuilder;
/***/ }),
/* 119 */
/***/ (function(module, exports, __webpack_require__) {
exports.AttributeArgument = __webpack_require__(120).AttributeArgument;
exports.CategoryArgument = __webpack_require__(122).CategoryArgument;
exports.ExtendedArgument = __webpack_require__(124).ExtendedArgument;
exports.CodeArgument = __webpack_require__(125).CodeArgument;
exports.UnresolvedArgument = __webpack_require__(127).UnresolvedArgument;
__webpack_require__(124).resolve();
/***/ }),
/* 120 */
/***/ (function(module, exports, __webpack_require__) {
var Argument = __webpack_require__(121).Argument;
function AttributeArgument(id) {
Argument.call(this, id);
return this;
}
AttributeArgument.prototype = Object.create(Argument.prototype);
AttributeArgument.prototype.constructor = AttributeArgument;
AttributeArgument.prototype.toString = function() {
return this.id.name;
};
AttributeArgument.prototype.getProto = function() {
return this.id.name;
};
AttributeArgument.prototype.getTranspiledName = function(context) {
return this.id.name;
};
AttributeArgument.prototype.register = function(context) {
context.registerValue(this, true);
if(this.defaultExpression!=null) try {
context.setValue(this.id, this.defaultExpression.interpret(context));
} catch(error) {
throw new SyntaxError("Unable to register default value: "+ this.defaultExpression.toString() + " for argument: " + this.name);
}
};
AttributeArgument.prototype.check = function(context) {
var actual = context.getRegisteredDeclaration(this.name);
if(actual==null)
throw new SyntaxError("Unknown attribute: \"" + this.name + "\"");
};
AttributeArgument.prototype.getType = function(context) {
var named = context.getRegisteredDeclaration(this.name);
return named.getType(context);
};
AttributeArgument.prototype.checkValue = function(context, value) {
var actual = context.getRegisteredDeclaration(this.name);
return actual.checkValue(context,value);
};
AttributeArgument.prototype.declare = function(transpiler) {
var decl = transpiler.context.getRegisteredDeclaration(this.name);
decl.declare(transpiler);
};
AttributeArgument.prototype.transpileCall = function(transpiler, expression) {
var decl = transpiler.context.getRegisteredDeclaration(this.name);
if(decl.constraint) {
transpiler.append("$check_").append(this.name).append("(");
Argument.prototype.transpileCall.call(this, transpiler, expression);
transpiler.append(")");
} else
Argument.prototype.transpileCall.call(this, transpiler, expression);
};
AttributeArgument.prototype.equals = function(other) {
return other === this || (other instanceof AttributeArgument && this.name === other.name);
};
exports.AttributeArgument = AttributeArgument;
/***/ }),
/* 121 */
/***/ (function(module, exports, __webpack_require__) {
var IntegerValue = __webpack_require__(80).IntegerValue;
var DecimalValue = __webpack_require__(81).DecimalValue;
var IntegerType = __webpack_require__(83).IntegerType;
var DecimalType = __webpack_require__(82).DecimalType;
function Argument(id) {
this.id = id;
this.mutable = false;
this.defaultExpression = null;
return this;
}
Object.defineProperty(Argument.prototype, "name", {
get : function() {
return this.id.name;
}
});
Argument.prototype.checkValue = function(context, expression) {
var value = expression.interpret(context);
if (value instanceof IntegerValue && this.getType(context)==DecimalType.instance) {
return new DecimalValue(value.DecimalValue());
} else if (value instanceof DecimalValue && this.getType(context)==IntegerType.instance) {
return new IntegerValue(value.IntegerValue());
} else {
return value;
}
};
Argument.prototype.toDialect = function(writer) {
if(this.mutable)
writer.append("mutable ");
writer.toDialect(this);
if(this.defaultExpression!=null) {
writer.append(" = ");
this.defaultExpression.toDialect(writer);
}
};
Argument.prototype.transpile = function(transpiler, expression) {
transpiler.append(this.name);
};
Argument.prototype.transpileCall = function(transpiler, expression) {
var expType = expression.check(transpiler.context);
if (this.type === IntegerType.instance && expType === DecimalType.instance) {
transpiler.append("Math.round(");
expression.transpile(transpiler);
transpiler.append(")");
} else
expression.transpile(transpiler);
};
exports.Argument = Argument;
/***/ }),
/* 122 */
/***/ (function(module, exports, __webpack_require__) {
var Argument = __webpack_require__(121).Argument;
var IdentifierList = __webpack_require__(123).IdentifierList;
var SyntaxError = __webpack_require__(69).SyntaxError;
var utils = __webpack_require__(50);
function CategoryArgument(type, id, defaultExpression) {
Argument.call(this, id);
this.type = type;
this.defaultExpression = defaultExpression || null;
return this;
}
CategoryArgument.prototype = Object.create(Argument.prototype);
CategoryArgument.prototype.constructor = CategoryArgument;
CategoryArgument.prototype.getProto = function() {
return this.type.name;
};
CategoryArgument.prototype.getTranspiledName = function(context) {
return this.type.getTranspiledName(context);
};
CategoryArgument.prototype.equals = function(other) {
return other === this || (other instanceof CategoryArgument && utils.equalObjects(this.type, other.type));
};
CategoryArgument.prototype.register = function(context) {
var actual = context.getRegisteredValue(this.name);
if(actual!==null) {
throw new SyntaxError("Duplicate argument: \"" + this.name + "\"");
}
context.registerValue(this);
if(this.defaultExpression!=null)
context.setValue(this.id, this.defaultExpression.interpret(context));
};
CategoryArgument.prototype.check = function(context) {
this.type.checkExists(context);
};
CategoryArgument.prototype.declare = function(transpiler) {
this.type.declare(transpiler);
};
CategoryArgument.prototype.getType = function(context) {
return this.type;
};
CategoryArgument.prototype.toEDialect = function(writer) {
var anonymous = "any"==this.type.name;
this.type.toDialect(writer);
if(anonymous) {
writer.append(' ');
writer.append(this.name);
}
if(!anonymous) {
writer.append(' ');
writer.append(this.name);
}
};
CategoryArgument.prototype.toODialect = function(writer) {
this.type.toDialect(writer);
writer.append(' ');
writer.append(this.name);
};
CategoryArgument.prototype.toMDialect = function(writer) {
writer.append(this.name);
writer.append(':');
this.type.toDialect(writer);
};
exports.CategoryArgument = CategoryArgument;
/***/ }),
/* 123 */
/***/ (function(module, exports, __webpack_require__) {
var ObjectList = __webpack_require__(52).ObjectList;
var Dialect = __webpack_require__(110).Dialect;
function IdentifierList(item) {
ObjectList.call(this);
item = item || null;
if(item!==null) {
this.add(item);
}
return this;
}
IdentifierList.prototype = Object.create(ObjectList.prototype);
IdentifierList.prototype.constructor = IdentifierList;
IdentifierList.prototype.names = function() {
return this.map(function(id) { return id.name; } );
};
IdentifierList.prototype.hasAttribute = function(name) {
for(var i = 0; i < this.length; i++) {
if(this[i].name===name)
return true;
}
return false;
};
IdentifierList.prototype.toDialect = function(writer, finalAnd) {
finalAnd = finalAnd || false;
switch(writer.dialect) {
case Dialect.E:
this.toEDialect(writer, finalAnd);
break;
case Dialect.O:
this.toODialect(writer);
break;
case Dialect.M:
this.toMDialect(writer);
break;
}
};
IdentifierList.prototype.toEDialect = function(writer, finalAnd) {
switch(this.length) {
case 0:
return;
case 1:
writer.append(this[0].name);
break;
default:
for(var i=0;i0) {
this.forEach(function(id) {
writer.append(id.name);
writer.append(", ");
});
writer.trimLast(2);
}
};
IdentifierList.prototype.toMDialect = function(writer) {
this.toODialect(writer);
};
exports.IdentifierList = IdentifierList;
/***/ }),
/* 124 */
/***/ (function(module, exports, __webpack_require__) {
var CategoryArgument = __webpack_require__(122).CategoryArgument;
var IdentifierList = __webpack_require__(123).IdentifierList;
var AttributeDeclaration = __webpack_require__(59).AttributeDeclaration;
var ConcreteCategoryDeclaration = null;
var utils = __webpack_require__(50);
exports.resolve = function() {
ConcreteCategoryDeclaration = __webpack_require__(57).ConcreteCategoryDeclaration;
}
function ExtendedArgument(type, id, attributes) {
CategoryArgument.call(this, type, id);
this.attributes = attributes;
return this;
}
ExtendedArgument.prototype = Object.create(CategoryArgument.prototype);
ExtendedArgument.prototype.constructor = ExtendedArgument;
ExtendedArgument.prototype.getProto = function() {
return this.type.name + '(' + this.attributes.toString() + ')';
};
ExtendedArgument.prototype.equals = function(obj) {
if(obj===this) {
return true;
}
if(obj===null || obj===undefined) {
return false;
}
if(!(obj instanceof ExtendedArgument)) {
return false;
}
return utils.equalObjects(this.type, obj.type) &&
this.name===obj.name &&
utils.equalArrays(this.attributes, obj.attributes);
};
ExtendedArgument.prototype.register = function(context) {
var actual = context.getRegisteredValue(this.name);
if(actual!==null) {
throw new SyntaxError("Duplicate argument: \"" + this.id.name + "\"");
}
var declaration = new ConcreteCategoryDeclaration(this.id, this.attributes, new IdentifierList(this.type.id), null);
context.registerDeclaration(declaration);
context.registerValue(this);
if(this.defaultExpression!=null)
context.setValue(this.id, this.defaultExpression.interpret(context));
};
ExtendedArgument.prototype.check = function(context) {
this.type.checkExists(context);
if(this.attributes!==null) {
this.attributes.forEach(function(attr) {
var actual = context.getRegisteredDeclaration(attr);
if (!actual instanceof AttributeDeclaration) {
throw new SyntaxError("Unknown attribute: \"" + attr + "\"");
}
});
}
};
ExtendedArgument.prototype.getType = function(context) {
var decl = context.getRegisteredDeclaration(this.name);
return decl ? decl.getType(context) : this.type;
};
ExtendedArgument.prototype.toEDialect = function(writer) {
this.type.toDialect(writer);
writer.append(' ');
writer.append(this.name);
switch(this.attributes.length) {
case 0:
break;
case 1:
writer.append(" with attribute ");
this.attributes.toDialect(writer, false);
break;
default:
writer.append(" with attributes ");
this.attributes.toDialect(writer, true);
break;
}
};
ExtendedArgument.prototype.toODialect = function(writer) {
this.type.toDialect(writer);
writer.append('(');
this.attributes.toDialect(writer, false);
writer.append(')');
writer.append(' ');
writer.append(this.name);
};
ExtendedArgument.prototype.toMDialect = function(writer) {
writer.append(this.name);
writer.append(':');
this.type.toDialect(writer);
writer.append('(');
this.attributes.toDialect(writer, false);
writer.append(')');
};
exports.ExtendedArgument = ExtendedArgument;
/***/ }),
/* 125 */
/***/ (function(module, exports, __webpack_require__) {
var CodeType = __webpack_require__(126).CodeType;
var Argument = __webpack_require__(121).Argument;
function CodeArgument(id) {
Argument.call(this, id);
return this;
}
CodeArgument.prototype = Object.create(Argument.prototype);
CodeArgument.prototype.constructor = CodeArgument;
CodeArgument.prototype.getProto = function() {
return CodeType.instance.name;
};
CodeArgument.prototype.register = function(context) {
var actual = context.getRegisteredValue(this.name);
if(actual!=null) {
throw new SyntaxError("Duplicate argument: \"" + this.name + "\"");
}
context.registerValue(this);
};
CodeArgument.prototype.check = function(context) {
// nothing to do
};
CodeArgument.prototype.declare = function(transpiler) {
// nothing to do
};
CodeArgument.prototype.getType = function(context) {
return CodeType.instance;
};
CodeArgument.prototype.toDialect = function(writer) {
writer.append(CodeType.instance.name);
writer.append(" ");
writer.append(this.name);
};
exports.CodeArgument = CodeArgument;
/***/ }),
/* 126 */
/***/ (function(module, exports, __webpack_require__) {
var NativeType = __webpack_require__(67).NativeType;
var Identifier = __webpack_require__(73).Identifier;
function CodeType() {
NativeType.call(this, new Identifier("Code"));
return this;
}
CodeType.prototype = Object.create(NativeType.prototype);
CodeType.prototype.constructor = CodeType;
CodeType.instance = new CodeType();
/*
@Override
public Class> toJavaClass() {
return null;
}
*/
exports.CodeType = CodeType;
/***/ }),
/* 127 */
/***/ (function(module, exports, __webpack_require__) {
var ProblemCollector = __webpack_require__(128).ProblemCollector;
var AttributeDeclaration = __webpack_require__(59).AttributeDeclaration;
var AttributeArgument = __webpack_require__(120).AttributeArgument;
var MethodDeclarationMap = __webpack_require__(55).MethodDeclarationMap;
var MethodArgument = __webpack_require__(129).MethodArgument;
function UnresolvedArgument(id) {
this.id = id;
this.resolved = null;
return this;
}
Object.defineProperty(UnresolvedArgument.prototype, "name", {
get : function() {
return this.id.name;
}
});
UnresolvedArgument.prototype.getTranspiledName = function(context) {
this.resolveAndCheck(context);
return this.resolved.getTranspiledName(context);
};
UnresolvedArgument.prototype.toDialect = function(writer) {
writer.append(this.name);
if(this.defaultExpression!=null) {
writer.append(" = ");
this.defaultExpression.toDialect(writer);
}
};
UnresolvedArgument.prototype.check = function(context) {
this.resolveAndCheck(context);
};
UnresolvedArgument.prototype.getProto = function() {
return this.name;
};
UnresolvedArgument.prototype.getType = function(context) {
this.resolveAndCheck(context);
return this.resolved.getType(context);
};
UnresolvedArgument.prototype.register = function(context) {
this.resolveAndCheck(context);
this.resolved.register(context);
if(this.defaultExpression!=null)
context.setValue(this.id, this.defaultExpression.interpret(context));
};
UnresolvedArgument.prototype.checkValue = function(context, value) {
this.resolveAndCheck(context);
return this.resolved.checkValue(context, value);
};
UnresolvedArgument.prototype.resolveAndCheck = function(context) {
if(this.resolved!=null)
return;
// ignore problems during resolution
var listener = context.problemListener;
try {
context.problemListener = new ProblemCollector();
// try out various solutions
var named = context.getRegisteredDeclaration(this.name);
if (named instanceof AttributeDeclaration) {
this.resolved = new AttributeArgument(this.id);
} else if (named instanceof MethodDeclarationMap) {
this.resolved = new MethodArgument(this.id);
}
} finally {
// restore listener
context.problemListener = listener;
}
if(this.resolved==null)
context.problemListener.reportUnknownVariable(this.id);
};
UnresolvedArgument.prototype.declare = function(transpiler) {
this.resolveAndCheck(transpiler.context);
this.resolved.declare(transpiler);
};
UnresolvedArgument.prototype.transpile = function(transpiler) {
this.resolveAndCheck(transpiler.context);
this.resolved.transpile(transpiler);
};
UnresolvedArgument.prototype.transpileCall = function(transpiler, expression) {
this.resolveAndCheck(transpiler.context);
this.resolved.transpileCall(transpiler, expression);
};
UnresolvedArgument.prototype.equals = function(other) {
return other === this || (other instanceof UnresolvedArgument && this.name === other.name);
};
exports.UnresolvedArgument = UnresolvedArgument;
/***/ }),
/* 128 */
/***/ (function(module, exports, __webpack_require__) {
var antlr4 = __webpack_require__(1);
function ProblemCollector() {
antlr4.error.ErrorListener.call(this);
this.problems = [];
return this;
}
ProblemCollector.prototype = Object.create(antlr4.error.ErrorListener.prototype);
ProblemCollector.prototype.constructor = ProblemCollector;
ProblemCollector.prototype.collectProblem = function(problem) {
this.problems.push(problem);
};
ProblemCollector.prototype.readSection = function(section) {
return {
path : section.path,
startLine : section.start.line,
startColumn : section.start.column,
endLine : section.end.line,
endColumn : section.end.column
};
}
ProblemCollector.prototype.syntaxError = function(recognizer, offendingSymbol, line, column, msg, e) {
var problem = {
startLine: line,
startColumn: column,
endLine: line,
endColumn: column + ( offendingSymbol ? offendingSymbol.text.length : 0 ),
type: "error",
message: msg
};
;
this.collectProblem(problem);
};
ProblemCollector.prototype.reportDuplicate = function(name, declaration) {
var problem = this.readSection(declaration.id);
problem.type = "error";
problem.message = "Duplicate name: " + name;
this.collectProblem(problem);
};
ProblemCollector.prototype.reportUnknownAttribute = function(id) {
this.reportUnknown(id, "attribute");
};
ProblemCollector.prototype.reportUnknownCategory = function(id) {
this.reportUnknown(id, "category");
};
ProblemCollector.prototype.reportUnknownMethod = function(id) {
this.reportUnknown(id, "method");
};
ProblemCollector.prototype.reportUnknownVariable = function(id) {
this.reportUnknown(id, "variable");
};
ProblemCollector.prototype.reportUnknownIdentifier = function(id) {
this.reportUnknown(id, "identifier");
};
ProblemCollector.prototype.reportEmptyVariable = function(id) {
var problem = this.readSection(id);
problem.type = "error";
problem.message = "Empty variable: " + id.name;
this.collectProblem(problem);
};
ProblemCollector.prototype.reportUnknown = function(id, type) {
var problem = this.readSection(id);
problem.type = "error";
problem.message = "Unknown " + type + ": " + id.name;
this.collectProblem(problem);
};
ProblemCollector.prototype.reportNoMatchingPrototype = function(method) {
var problem = this.readSection(method);
problem.type = "error";
problem.message = "No matching prototype for: " + method.toString();
this.collectProblem(problem);
};
ProblemCollector.prototype.reportCannotIterate = function(source) {
var problem = this.readSection(source);
problem.type = "error";
problem.message = "Cannot iterate over: " + source.toString();
this.collectProblem(problem);
};
ProblemCollector.prototype.reportInvalidItem = function(parentType, itemType, source) {
var problem = this.readSection(source);
problem.type = "error";
problem.message = "Type: " + parentType.toString() + " cannot read item of type: " + itemType.toString();
this.collectProblem(problem);
};
ProblemCollector.prototype.reportInvalidCast = function(expression, target, actual) {
var problem = this.readSection(expression);
problem.type = "error";
problem.message = "Cannot cast " + actual.toString() + " to " + target.toString();
this.collectProblem(problem);
};
ProblemCollector.prototype.reportExpectingBoolean = function(expression, type) {
var problem = this.readSection(expression);
problem.type = "error";
problem.message = "Cannot test " + expression.toString() + ", expected a Boolean got a " + type.toString();
this.collectProblem(problem);
}
ProblemCollector.prototype.reportMissingClosingTag = function(opening) {
var problem = this.readSection(opening.id);
problem.type = "error";
problem.message = "Missing closing tag '</" + opening.id.name + ">";
this.collectProblem(problem);
}
ProblemCollector.prototype.reportInvalidClosingTag = function(closing, opening) {
var problem = this.readSection(closing);
problem.type = "error";
problem.message = "Invalid closing tag: " + closing.name + ">, expected: " + opening.name + ">";
this.collectProblem(problem);
}
ProblemCollector.prototype.reportInvalidMember = function(section, name) {
var problem = this.readSection(section);
problem.type = "error";
problem.message = "Invalid member '" + name + "' in " + this.name + " type";
this.collectProblem(problem);
};
ProblemCollector.prototype.reportInvalidCopySource = function(section) {
var problem = this.readSection(section);
problem.type = "error";
problem.message = "Invalid copy source";
this.collectProblem(problem);
};
ProblemCollector.prototype.reportNotAResource = function(section) {
var problem = this.readSection(section);
problem.type = "error";
problem.message = "Not a resource";
this.collectProblem(problem);
};
ProblemCollector.prototype.reportNotAResourceContext = function(section) {
var problem = this.readSection(section);
problem.type = "error";
problem.message = "Not a resource context";
this.collectProblem(problem);
};
ProblemCollector.prototype.reportIncompatibleTypes = function(section, left, right) {
var problem = this.readSection(section);
problem.type = "error";
problem.message = "Type " + left.name + " is not compatible with " + right.name;
this.collectProblem(problem);
};
exports.ProblemCollector = ProblemCollector;
/***/ }),
/* 129 */
/***/ (function(module, exports, __webpack_require__) {
var Argument = __webpack_require__(121).Argument;
var MethodType = __webpack_require__(101).MethodType;
function MethodArgument(id) {
Argument.call(this, id);
return this;
}
MethodArgument.prototype = Object.create(Argument.prototype);
MethodArgument.prototype.constructor = MethodArgument;
MethodArgument.prototype.getSignature = function(dialect) {
return this.name;
};
MethodArgument.prototype.toString = function() {
return this.name;
};
MethodArgument.prototype.getProto = function() {
return this.name;
};
MethodArgument.prototype.register = function(context) {
var actual = context.getRegisteredValue(this.name);
if(actual!=null) {
throw new SyntaxError("Duplicate argument: \"" + this.name + "\"");
}
context.registerValue(this);
};
MethodArgument.prototype.check = function(context) {
var actual = context.getRegisteredDeclaration(this.name);
if(actual==null) {
throw new SyntaxError("Unknown method: \"" + this.name + "\"");
}
};
MethodArgument.prototype.getType = function(context) {
var method = this.getDeclaration(context);
return new MethodType(method);
};
MethodArgument.prototype.getDeclaration = function(context) {
var methods = context.getRegisteredDeclaration(this.name);
if (methods)
return methods.getFirst();
else
return null;
};
MethodArgument.prototype.declare = function(transpiler) {
// nothing to do ?
};
MethodArgument.prototype.getTranspiledName = function(context) {
var method = this.getDeclaration(context);
return method.getTranspiledName(context);
};
MethodArgument.prototype.equals = function(other) {
return other === this || (other instanceof MethodArgument && this.name === other.name);
};
exports.MethodArgument = MethodArgument;
/***/ }),
/* 130 */
/***/ (function(module, exports, __webpack_require__) {
exports.MatchingPatternConstraint = __webpack_require__(131).MatchingPatternConstraint;
exports.MatchingCollectionConstraint = __webpack_require__(158).MatchingCollectionConstraint;
exports.MatchingExpressionConstraint = __webpack_require__(159).MatchingExpressionConstraint;
/***/ }),
/* 131 */
/***/ (function(module, exports, __webpack_require__) {
var InvalidDataError = __webpack_require__(132).InvalidDataError;
var Identifier = __webpack_require__(73).Identifier;
var Variable = __webpack_require__(91).Variable;
function MatchingPatternConstraint(expression) {
this.expression = expression;
this.pattern = null;
return this;
}
MatchingPatternConstraint.prototype.checkValue = function(context, value) {
if(this.pattern==null) {
var toMatch = this.expression.interpret(context);
this.pattern = new RegExp(toMatch);
}
if(!this.pattern.test(value.toString())) {
throw new InvalidDataError(value.toString() + " does not match:" + this.pattern.toString());
}
};
MatchingPatternConstraint.prototype.toDialect = function(writer) {
writer.append(" matching ");
this.expression.toDialect(writer);
}
MatchingPatternConstraint.prototype.declare = function(transpiler, name, type) {
var transpiler = transpiler.newChildTranspiler();
var id = new Identifier("value");
transpiler.context.registerValue(new Variable(id, type));
this.expression.declare(transpiler);
this.transpile = function(transpiler) { this.transpileChecker(transpiler, name, type); };
transpiler.declare(this);
};
MatchingPatternConstraint.prototype.transpileChecker = function(transpiler, name, type) {
transpiler.append("function $check_").append(name).append("(value) {").indent();
var transpiler = transpiler.newChildTranspiler();
var id = new Identifier("value");
transpiler.context.registerValue(new Variable(id, type));
transpiler.append("if(new RegExp(");
this.expression.transpile(transpiler);
transpiler.append(").test(value))").indent();
transpiler.append("return value;").dedent();
transpiler.append("else").indent();
transpiler.append("throw new IllegalValueError((value == null ? 'null' : value.toString()) + ' does not match: ").append(this.expression.toString()).append("');").dedent();
transpiler.dedent().append("}").newLine();
transpiler.flush();
};
exports.MatchingPatternConstraint = MatchingPatternConstraint;
/***/ }),
/* 132 */
/***/ (function(module, exports, __webpack_require__) {
var ExecutionError = __webpack_require__(89).ExecutionError;
var TextLiteral = __webpack_require__(133).TextLiteral;
function InvalidDataError(message) {
ExecutionError.call(this, message);
return this;
}
InvalidDataError.prototype = Object.create(ExecutionError.prototype);
InvalidDataError.prototype.constructor = InvalidDataError;
InvalidDataError.prototype.getExpression = function(context) {
return new TextLiteral("'" + this.message + "'");
};
exports.InvalidDataError = InvalidDataError;
/***/ }),
/* 133 */
/***/ (function(module, exports, __webpack_require__) {
var Literal = __webpack_require__(134).Literal;
var TextValue = __webpack_require__(78).TextValue;
var TextType = __webpack_require__(135).TextType;
/*jshint evil:true*/
function unescape(text) {
return eval(text);
}
function TextLiteral(text) {
Literal.call(this, text, new TextValue(unescape(text)));
return this;
}
TextLiteral.prototype = Object.create(Literal.prototype);
TextLiteral.prototype.constructor = TextLiteral;
TextLiteral.prototype.check = function(context) {
return TextType.instance;
};
TextLiteral.prototype.declare = function(transpiler) {
// nothing to do
};
TextLiteral.prototype.transpile = function(transpiler) {
transpiler.append(this.text);
};
exports.TextLiteral = TextLiteral;
/***/ }),
/* 134 */
/***/ (function(module, exports, __webpack_require__) {
var Section = __webpack_require__(61).Section;
function Literal(text, value) {
Section.call(this);
this.text = text;
this.value = value;
return this;
}
Literal.prototype = Object.create(Section.prototype);
Literal.prototype.constructor = Section;
Literal.prototype.toDialect = function(writer) {
writer.append(this.escapedText(writer.escapeMode));
};
Literal.prototype.escapedText = function(escapeMode) {
if(escapeMode)
return this.text.replace(/\'/g, "\\'");
else
return this.text;
};
Literal.prototype.toString = function() {
return this.text;
};
Literal.prototype.transpile = function(transpiler) {
throw new Error("Transpile not implemented by " + this.constructor.name);
};
Literal.prototype.getValue = function() {
return this.value;
};
Literal.prototype.interpret = function(context) {
return this.value;
};
exports.Literal = Literal;
/***/ }),
/* 135 */
/***/ (function(module, exports, __webpack_require__) {
var BuiltInMethodDeclaration = null;
var NativeType = __webpack_require__(67).NativeType;
var Identifier = __webpack_require__(73).Identifier;
var CharacterType = null;
var ListType = null;
var IntegerType = __webpack_require__(83).IntegerType;
var BooleanType = __webpack_require__(72).BooleanType;
var AnyType = __webpack_require__(74).AnyType;
var Identifier = __webpack_require__(73).Identifier;
var TextValue = null; // circular dependency
var IntegerValue = __webpack_require__(80).IntegerValue;
var BooleanValue = __webpack_require__(76).BooleanValue;
var CategoryArgument = __webpack_require__(122).CategoryArgument;
var TextLiteral = null;
var ListValue = null;
var List = __webpack_require__(136).List;
var TypeFamily = __webpack_require__(137).TypeFamily;
exports.resolve = function() {
CharacterType = __webpack_require__(138).CharacterType;
ListType = __webpack_require__(71).ListType;
TextLiteral = __webpack_require__(133).TextLiteral;
ListValue = __webpack_require__(141).ListValue;
TextValue = __webpack_require__(78).TextValue;
resolveBuiltInMethodDeclaration();
}
function TextType() {
NativeType.call(this, new Identifier("Text"));
this.family = TypeFamily.TEXT;
return this;
}
TextType.prototype = Object.create(NativeType.prototype);
TextType.prototype.constructor = TextType;
TextType.instance = new TextType();
TextType.prototype.isAssignableFrom = function(context, other) {
return NativeType.prototype.isAssignableFrom.call(this, context, other)
|| (other == CharacterType.instance);
};
TextType.prototype.declare = function(transpiler) {
var isAText = __webpack_require__(51).isAText;
transpiler.require(isAText);
};
TextType.prototype.transpile = function(transpiler) {
transpiler.append('"Text"');
};
TextType.prototype.checkAdd = function(context, other, tryReverse) {
// can add anything to text
return this;
};
TextType.prototype.declareAdd = function(transpiler, other, tryReverse, left, right) {
left.declare(transpiler);
right.declare(transpiler);
};
TextType.prototype.transpileAdd = function(transpiler, other, tryReverse, left, right) {
var DecimalType = __webpack_require__(82).DecimalType;
// can add anything to text
left.transpile(transpiler);
transpiler.append(" + ");
right.transpile(transpiler);
if(other === DecimalType.instance)
transpiler.append(".toDecimalString()");
};
TextType.prototype.checkMultiply = function(context, other, tryReverse) {
if(other instanceof IntegerType) {
return TextType.instance;
}
return NativeType.prototype.checkMultiply.call(this, context, other, tryReverse);
};
TextType.prototype.declareMultiply = function(transpiler, other, tryReverse, left, right) {
if (other === IntegerType.instance) {
left.declare(transpiler);
right.declare(transpiler);
} else
return NativeType.prototype.declareMultiply.call(this, transpiler, other, tryReverse, left, right);
};
TextType.prototype.transpileMultiply = function(transpiler, other, tryReverse, left, right) {
if (other === IntegerType.instance) {
left.transpile(transpiler);
transpiler.append(".repeat(");
right.transpile(transpiler);
transpiler.append(")");
} else
return NativeType.prototype.transpileMultiply.call(this, transpiler, other, tryReverse, left, right);
};
TextType.prototype.checkCompare = function(context, other) {
if(other instanceof TextType || other instanceof CharacterType) {
return BooleanType.instance;
}
return NativeType.prototype.checkCompare.call(this, context, other);
};
TextType.prototype.declareCompare = function(context, other) {
// nothing to do
};
TextType.prototype.transpileCompare = function(transpiler, other, operator, left, right) {
left.transpile(transpiler);
transpiler.append(" ").append(operator.toString()).append(" ");
right.transpile(transpiler);
};
TextType.prototype.checkItem = function(context, other, expression) {
if(other==IntegerType.instance) {
return CharacterType.instance;
} else {
return NativeType.prototype.checkItem.call(this, context, other, expression);
}
};
TextType.prototype.declareItem = function(transpiler, itemType, item) {
// nothing to do
};
TextType.prototype.transpileItem = function(transpiler, itemType, item) {
transpiler.append("[");
item.transpile(transpiler);
transpiler.append("-1]");
};
TextType.prototype.checkMember = function(context, section, name) {
if ("count"==name) {
return IntegerType.instance;
} else {
return NativeType.prototype.checkMember.call(this, context, section, name);
}
};
TextType.prototype.declareMember = function(transpiler, name) {
if ("count"!==name) {
NativeType.prototype.declareMember.call(this, transpiler, name);
}
};
TextType.prototype.transpileMember = function(transpiler, name) {
if ("count"==name) {
transpiler.append("length");
} else {
NativeType.prototype.transpileMember.call(this, transpiler, name);
}
};
TextType.prototype.checkContains = function(context, other) {
if(other instanceof TextType || other instanceof CharacterType) {
return BooleanType.instance;
}
return NativeType.prototype.checkContains.call(this, context, other);
};
TextType.prototype.declareContains = function(transpiler, other, container, item) {
container.declare(transpiler);
item.declare(transpiler);
};
TextType.prototype.transpileContains = function(transpiler, other, container, item) {
container.transpile(transpiler);
transpiler.append(".includes(");
item.transpile(transpiler);
transpiler.append(")");
};
TextType.prototype.checkContainsAllOrAny = function(context, other) {
return BooleanType.instance;
};
TextType.prototype.declareContainsAllOrAny = function(transpiler, other, container, items) {
container.declare(transpiler);
items.declare(transpiler);
};
TextType.prototype.transpileContainsAll = function(transpiler, other, container, items) {
container.transpile(transpiler);
transpiler.append(".hasAll(");
items.transpile(transpiler);
transpiler.append(")");
};
TextType.prototype.transpileContainsAny = function(transpiler, other, container, items) {
container.transpile(transpiler);
transpiler.append(".hasAny(");
items.transpile(transpiler);
transpiler.append(")");
};
TextType.prototype.checkSlice = function(context) {
return this;
};
TextType.prototype.declareSlice = function(transpiler, first, last) {
if(first) {
first.declare(transpiler);
}
if(last) {
last.declare(transpiler);
}
};
TextType.prototype.transpileSlice = function(transpiler, first, last) {
transpiler.append(".slice1Based(");
if(first) {
first.transpile(transpiler);
} else
transpiler.append("null");
if(last) {
transpiler.append(",");
last.transpile(transpiler);
}
transpiler.append(")");
};
TextType.prototype.convertJavaScriptValueToPromptoValue = function(context, value, returnType) {
if (typeof(value) == 'string') {
return new TextValue(value);
} else {
return value; // TODO for now
}
}
TextType.prototype.getMemberMethods = function(context, name) {
switch (name) {
case "startsWith":
return [new StartsWithMethodDeclaration()];
case "endsWith":
return [new EndsWithMethodDeclaration()];
case "toLowerCase":
return [new ToLowerCaseMethodDeclaration()];
case "toUpperCase":
return [new ToUpperCaseMethodDeclaration()];
case "toCapitalized":
return [new ToCapitalizedMethodDeclaration()];
case "trim":
return [new TrimMethodDeclaration()];
case "replace":
return [new ReplaceMethodDeclaration()];
case "replaceAll":
return [new ReplaceAllMethodDeclaration()];
case "split":
return [new SplitMethodDeclaration()];
case "indexOf":
return [new IndexOfMethodDeclaration()];
default:
return NativeType.prototype.getMemberMethods.call(context, name);
}
};
function ToLowerCaseMethodDeclaration() {
BuiltInMethodDeclaration.call(this, "toLowerCase");
return this;
}
function ToUpperCaseMethodDeclaration() {
BuiltInMethodDeclaration.call(this, "toUpperCase");
return this;
}
function TrimMethodDeclaration() {
BuiltInMethodDeclaration.call(this, "trim");
return this;
}
function ToCapitalizedMethodDeclaration() {
BuiltInMethodDeclaration.call(this, "toCapitalized");
return this;
}
function SplitMethodDeclaration() {
BuiltInMethodDeclaration.call(this, "split", new CategoryArgument(TextType.instance, new Identifier("separator"), new TextLiteral('" "')));
return this;
}
function StartsWithMethodDeclaration() {
BuiltInMethodDeclaration.call(this, "startsWith", new CategoryArgument(TextType.instance, new Identifier("value")));
return this;
}
function EndsWithMethodDeclaration() {
BuiltInMethodDeclaration.call(this, "endsWith", new CategoryArgument(TextType.instance, new Identifier("value")));
return this;
}
function ReplaceMethodDeclaration() {
BuiltInMethodDeclaration.call(this, "replace",
new CategoryArgument(TextType.instance, new Identifier("toReplace")),
new CategoryArgument(TextType.instance, new Identifier("replaceWith")));
return this;
}
function ReplaceAllMethodDeclaration() {
BuiltInMethodDeclaration.call(this, "replaceAll",
new CategoryArgument(TextType.instance, new Identifier("toReplace")),
new CategoryArgument(TextType.instance, new Identifier("replaceWith")));
return this;
}
function IndexOfMethodDeclaration() {
BuiltInMethodDeclaration.call(this, "indexOf", new CategoryArgument(TextType.instance, new Identifier("value")));
return this;
}
function resolveBuiltInMethodDeclaration() {
BuiltInMethodDeclaration = __webpack_require__(145).BuiltInMethodDeclaration;
ToLowerCaseMethodDeclaration.prototype = Object.create(BuiltInMethodDeclaration.prototype);
ToLowerCaseMethodDeclaration.prototype.constructor = ToLowerCaseMethodDeclaration;
ToLowerCaseMethodDeclaration.prototype.interpret = function(context) {
var value = this.getValue(context).getStorableData();
return new TextValue(value.toLowerCase());
};
ToLowerCaseMethodDeclaration.prototype.check = function(context) {
return TextType.instance;
};
ToLowerCaseMethodDeclaration.prototype.transpileCall = function(transpiler, assignments) {
transpiler.append("toLowerCase()");
};
ToUpperCaseMethodDeclaration.prototype = Object.create(BuiltInMethodDeclaration.prototype);
ToUpperCaseMethodDeclaration.prototype.constructor = ToUpperCaseMethodDeclaration;
ToUpperCaseMethodDeclaration.prototype.interpret = function(context) {
var value = this.getValue(context).getStorableData();
return new TextValue(value.toUpperCase());
};
ToUpperCaseMethodDeclaration.prototype.check = function(context) {
return TextType.instance;
};
ToUpperCaseMethodDeclaration.prototype.transpileCall = function(transpiler, assignments) {
transpiler.append("toUpperCase()");
};
ToCapitalizedMethodDeclaration.prototype = Object.create(BuiltInMethodDeclaration.prototype);
ToCapitalizedMethodDeclaration.prototype.constructor = ToCapitalizedMethodDeclaration;
ToCapitalizedMethodDeclaration.prototype.interpret = function(context) {
var value = this.getValue(context).getStorableData();
value = value.replace( /(^|\s)([a-z])/g , function(m, p1, p2){ return p1 + p2.toUpperCase(); } );
return new TextValue(value);
};
ToCapitalizedMethodDeclaration.prototype.transpileCall = function(transpiler, assignments) {
transpiler.append("replace( /(^|\\s)([a-z])/g , function(m, p1, p2){ return p1 + p2.toUpperCase(); } )");
};
ToCapitalizedMethodDeclaration.prototype.check = function(context) {
return TextType.instance;
};
TrimMethodDeclaration.prototype = Object.create(BuiltInMethodDeclaration.prototype);
TrimMethodDeclaration.prototype.constructor = TrimMethodDeclaration;
TrimMethodDeclaration.prototype.interpret = function(context) {
var value = this.getValue(context).getStorableData();
value = value.trim();
return new TextValue(value);
};
TrimMethodDeclaration.prototype.check = function(context) {
return TextType.instance;
};
TrimMethodDeclaration.prototype.transpileCall = function(transpiler, assignments) {
transpiler.append("trim()");
};
ReplaceMethodDeclaration.prototype = Object.create(BuiltInMethodDeclaration.prototype);
ReplaceMethodDeclaration.prototype.constructor = ReplaceMethodDeclaration;
ReplaceMethodDeclaration.prototype.interpret = function(context) {
var value = this.getValue(context).getStorableData();
var toReplace = context.getValue(new Identifier("toReplace")).getStorableData();
var replaceWith = context.getValue(new Identifier("replaceWith")).getStorableData();
value = value.replace(toReplace, replaceWith);
return new TextValue(value);
};
ReplaceMethodDeclaration.prototype.check = function(context) {
return TextType.instance;
};
ReplaceMethodDeclaration.prototype.transpileCall = function(transpiler, assignments) {
transpiler.append("replace(");
assignments.find("toReplace").transpile(transpiler);
transpiler.append(",");
assignments.find("replaceWith").transpile(transpiler);
transpiler.append(")");
};
ReplaceAllMethodDeclaration.prototype = Object.create(BuiltInMethodDeclaration.prototype);
ReplaceAllMethodDeclaration.prototype.constructor = ReplaceAllMethodDeclaration;
ReplaceAllMethodDeclaration.prototype.interpret = function(context) {
var value = this.getValue(context).getStorableData();
var toReplace = context.getValue(new Identifier("toReplace")).getStorableData();
var replaceWith = context.getValue(new Identifier("replaceWith")).getStorableData();
value = value.replace(new RegExp(toReplace, 'g'), replaceWith);
return new TextValue(value);
};
ReplaceAllMethodDeclaration.prototype.check = function(context) {
return TextType.instance;
};
ReplaceAllMethodDeclaration.prototype.transpileCall = function(transpiler, assignments) {
transpiler.append("replace(new RegExp(");
assignments.find("toReplace").transpile(transpiler);
transpiler.append(", 'g'),");
assignments.find("replaceWith").transpile(transpiler);
transpiler.append(")");
};
SplitMethodDeclaration.prototype = Object.create(BuiltInMethodDeclaration.prototype);
SplitMethodDeclaration.prototype.constructor = SplitMethodDeclaration;
SplitMethodDeclaration.prototype.interpret = function(context) {
var value = this.getValue(context).getStorableData();
var sep = context.getValue(new Identifier("separator")).getStorableData();
var list = value.split(sep);
var texts = list.map(function(s) { return new TextValue(s); });
return new ListValue(TextType.instance, texts);
};
SplitMethodDeclaration.prototype.check = function(context) {
return new ListType(TextType.instance);
};
SplitMethodDeclaration.prototype.declareCall = function(transpiler) {
transpiler.require(List);
};
SplitMethodDeclaration.prototype.transpileCall = function(transpiler, assignments) {
transpiler.append("splitToList(");
if(assignments)
assignments[0].transpile(transpiler);
else
transpiler.append("' '"); // default
transpiler.append(")");
};
StartsWithMethodDeclaration.prototype = Object.create(BuiltInMethodDeclaration.prototype);
StartsWithMethodDeclaration.prototype.constructor = StartsWithMethodDeclaration;
StartsWithMethodDeclaration.prototype.interpret = function(context) {
var value = this.getValue(context).getStorableData();
var find = context.getValue(new Identifier("value")).getStorableData();
var startsWith = value.indexOf(find)===0;
return BooleanValue.ValueOf(startsWith);
};
StartsWithMethodDeclaration.prototype.check = function(context) {
return BooleanType.instance;
};
StartsWithMethodDeclaration.prototype.transpileCall = function(transpiler, assignments) {
transpiler.append("startsWith(");
assignments[0].transpile(transpiler);
transpiler.append(")");
};
EndsWithMethodDeclaration.prototype = Object.create(BuiltInMethodDeclaration.prototype);
EndsWithMethodDeclaration.prototype.constructor = EndsWithMethodDeclaration;
EndsWithMethodDeclaration.prototype.interpret = function(context) {
var value = this.getValue(context).getStorableData();
var find = context.getValue(new Identifier("value")).getStorableData();
var endsWith = value.indexOf(find)===value.length-find.length;
return BooleanValue.ValueOf(endsWith);
};
EndsWithMethodDeclaration.prototype.check = function(context) {
return BooleanType.instance;
};
EndsWithMethodDeclaration.prototype.transpileCall = function(transpiler, assignments) {
transpiler.append("endsWith(");
assignments[0].transpile(transpiler);
transpiler.append(")");
};
IndexOfMethodDeclaration.prototype = Object.create(BuiltInMethodDeclaration.prototype);
IndexOfMethodDeclaration.prototype.constructor = IndexOfMethodDeclaration;
IndexOfMethodDeclaration.prototype.interpret = function(context) {
var value = this.getValue(context).getStorableData();
var find = context.getValue(new Identifier("value")).getStorableData();
var index = value.indexOf(find);
return new IntegerValue(index + 1);
};
IndexOfMethodDeclaration.prototype.check = function(context) {
return IntegerType.instance;
};
IndexOfMethodDeclaration.prototype.transpileCall = function(transpiler, assignments) {
transpiler.append("indexOf1Based(");
assignments[0].transpile(transpiler);
transpiler.append(")");
};
}
exports.TextType = TextType;
/***/ }),
/* 136 */
/***/ (function(module, exports) {
function List(mutable, items) {
Array.call(this);
if(items)
this.addItems(items);
this.mutable = mutable;
return this;
}
List.prototype = Object.create(Array.prototype);
List.prototype.constructor = List;
List.prototype.addItems = function(items) {
if(typeof(StrictSet) !== 'undefined' && items instanceof StrictSet)
items = Array.from(items.set.values());
this.push.apply(this, items);
return this; // enable fluid API
};
List.prototype.add = function(items) {
if(typeof(StrictSet) !== 'undefined' && items instanceof StrictSet)
items = Array.from(items.set.values());
var concat = new List(false);
concat.addItems(this);
concat.addItems(items);
return concat;
};
List.prototype.remove = function(items) {
var excluded = (typeof(StrictSet) !== 'undefined' && items instanceof StrictSet) ? items : new Set(items);
var remaining = this.filter(function(item) { return !excluded.has(item); });
var concat = new List(false);
concat.addItems(remaining);
return concat;
};
List.prototype.sorted = function(sortFunction) {
var sorted = Array.from(this).sort(sortFunction);
return new List(false, sorted);
};
List.prototype.filtered = function(filterFunction) {
var filtered = this.filter(filterFunction);
return new List(false, filtered);
};
List.prototype.item = function(idx) {
if(idx==null)
throw new ReferenceError();
else if(idx<1 || idx>this.length)
throw new RangeError();
else
return this[idx-1];
};
List.prototype.getItem = function (idx, create) {
if(idx==null)
throw new ReferenceError();
else if(idx<1 || idx>this.length)
throw new RangeError();
else {
if(!this[idx - 1] && create)
this[idx - 1] = new Document();
return this[idx - 1] || null;
}
};
List.prototype.setItem = function (idx, value) {
if(!this.mutable)
throw new NotMutableError();
else if(idx==null)
throw new ReferenceError();
else if(idx<1 || idx>this.length)
throw new RangeError();
else
this[idx-1] = value;
};
List.prototype.has = function(item, noCheckEquals) {
var set = new StrictSet(this);
return set.has(item, noCheckEquals);
};
List.prototype.hasAll = function(items, noCheckEquals) {
var set = new StrictSet(this);
return set.hasAll(items, noCheckEquals);
};
List.prototype.hasAny = function(items, noCheckEquals) {
var set = new StrictSet(this);
return set.hasAny(items, noCheckEquals);
};
List.prototype.slice1Based = function(start, last) {
if(start) {
if (start < 0 || start >= this.length)
throw new RangeError();
start = start - 1;
} else
start = 0;
if(!last)
return new List(false, this.slice(start));
if(last >= 0) {
if(last<=start || last>= this.length - 1)
throw new RangeError();
return new List(false, this.slice(start, last));
} else {
// TODO check Range
return new List(false, this.slice(start, 1 + last));
}
};
List.prototype.iterate = function (fn) {
var self = this;
return {
length: self.length,
iterator: function() {
var idx = 0;
return {
hasNext: function() { return idx < self.length; },
next: function() { return fn(self[idx++]); }
};
},
toArray: function() {
var array = [];
var iterator = this.iterator();
while(iterator.hasNext())
array.push(iterator.next());
return array;
},
getText: function() {
return this.toArray().join(", ");
}
}
};
List.prototype.collectStorables = function(storablesToAdd) {
this.forEach(function(item) {
if(item && item.collectStorables)
item.collectStorables(storablesToAdd);
});
};
List.prototype.equals = function(o) {
o = o || null;
if(this===o) {
return true;
}
if(!(o instanceof List) || this.length !== o.length) {
return false;
}
for(var i=0;i=1)
return new CharacterValue(value.value.substring(0, 1));
else
throw new InvalidDataError("Cannot convert " + value.toString() + " to CharacterValue");
};
CharacterType.prototype.checkMember = function(context, section, name) {
if ("codePoint"==name) {
return IntegerType.instance;
} else {
return NativeType.prototype.checkMember.call(this, context, section, name);
}
};
CharacterType.prototype.declareMember = function(transpiler, name) {
if ("codePoint"!==name) {
NativeType.prototype.declareMember.call(this, transpiler, name);
}
};
CharacterType.prototype.transpileMember = function(transpiler, name) {
if ("codePoint"==name) {
transpiler.append("charCodeAt(0)");
} else {
NativeType.prototype.transpileMember.call(this, transpiler, name);
}
};
CharacterType.prototype.checkAdd = function(context, other, tryReverse) {
return TextType.instance;
};
CharacterType.prototype.declareAdd = function(transpiler, other, tryReverse, left, right) {
left.declare(transpiler);
right.declare(transpiler);
};
CharacterType.prototype.transpileAdd = function(transpiler, other, tryReverse, left, right) {
// can add anything to text
left.transpile(transpiler);
transpiler.append(" + ");
right.transpile(transpiler);
};
CharacterType.prototype.checkMultiply = function(context, other, tryReverse) {
if(other === IntegerType.instance) {
return TextType.instance;
}
return NativeType.prototype.checkMultiply.apply(this, context, other, tryReverse);
};
CharacterType.prototype.declareMultiply = function(transpiler, other, tryReverse, left, right) {
if (other === IntegerType.instance) {
left.declare(transpiler);
right.declare(transpiler);
} else
return NativeType.prototype.declareMultiply.call(this, transpiler, other, tryReverse, left, right);
};
CharacterType.prototype.transpileMultiply = function(transpiler, other, tryReverse, left, right) {
if (other === IntegerType.instance) {
left.transpile(transpiler);
transpiler.append(".repeat(");
right.transpile(transpiler);
transpiler.append(")");
} else
return NativeType.prototype.transpileMultiply.call(this, transpiler, other, tryReverse, left, right);
};
CharacterType.prototype.checkCompare = function(context, other) {
if(other instanceof CharacterType || other instanceof TextType) {
return BooleanType.instance;
}
return NativeType.prototype.checkCompare.apply(this, context, other);
};
CharacterType.prototype.declareCompare = function(context, other) {
// nothing to do
};
CharacterType.prototype.transpileCompare = function(transpiler, other, operator, left, right) {
left.transpile(transpiler);
transpiler.append(" ").append(operator.toString()).append(" ");
right.transpile(transpiler);
};
CharacterType.prototype.checkRange = function(context, other) {
if(other instanceof CharacterType) {
return new RangeType(this);
} else {
return NativeType.prototype.checkRange.call(this, context, other);
}
};
CharacterType.prototype.declareRange = function(transpiler, other) {
if(other === CharacterType.instance) {
var module = __webpack_require__(140);
transpiler.require(module.Range);
transpiler.require(module.IntegerRange);
transpiler.require(module.CharacterRange);
} else {
return NativeType.prototype.declareRange.call(this, transpiler, other);
}
};
CharacterType.prototype.transpileRange = function(transpiler, first, last) {
transpiler.append("new CharacterRange(");
first.transpile(transpiler);
transpiler.append(",");
last.transpile(transpiler);
transpiler.append(")");
};
CharacterType.prototype.newRange = function(left, right) {
if(left instanceof CharacterValue && right instanceof CharacterValue) {
return new CharacterRange(left, right);
} else {
return CharacterType.prototype.newRange.call(this, left, right);
}
};
exports.CharacterType = CharacterType;
/***/ }),
/* 139 */
/***/ (function(module, exports, __webpack_require__) {
var RangeValue = __webpack_require__(87).RangeValue;
var IntegerValue = __webpack_require__(80).IntegerValue;
var CharacterValue = null;
var CharacterType = null;
exports.resolve = function() {
CharacterValue = __webpack_require__(79).CharacterValue;
CharacterType = __webpack_require__(138).CharacterType;
}
function CharacterRange(left, right) {
RangeValue.call(this, CharacterType.instance, left, right);
return this;
}
CharacterRange.prototype = Object.create(RangeValue.prototype);
CharacterRange.prototype.constructor = CharacterRange;
CharacterRange.prototype.size = function() {
return 1 + this.high.value.charCodeAt(0) - this.low.value.charCodeAt(0);
};
CharacterRange.prototype.getItem = function(index) {
var result = this.low.value.charCodeAt(0) + index - 1;
if(result>this.high.value.charCodeAt(0)) {
throw new IndexOutOfBoundsException();
} else {
return new CharacterValue(String.fromCharCode(result));
}
};
/*
@Override
public RangeValue newInstance(CharacterValue left, CharacterValue right) {
return new CharacterRange(left, right);
}
*/
exports.CharacterRange = CharacterRange;
/***/ }),
/* 140 */
/***/ (function(module, exports) {
function Range(first, last) {
this.first = first;
this.last = last;
return this;
}
Range.prototype.toString = function() {
return "[" + this.first + ".." + this.last + "]";
};
Range.prototype.getText = Range.prototype.toString;
Range.prototype.iterator = function() {
var self = this;
return {
idx: 1, // since we are calling item()
length: self.length,
hasNext: function() { return this.idx <= this.length },
next : function() { return self.item(this.idx++); }
};
};
Range.prototype.equals = function(obj) {
if(Object.is(this, obj))
return true;
else if(Object.getPrototypeOf(this) === Object.getPrototypeOf(obj))
return equalObjects(this.first, obj.first) && equalObjects(this.last, obj.last);
else
return false;
};
Range.prototype.hasAll = function(items) {
if(typeof(StrictSet) !== 'undefined' && items instanceof StrictSet)
items = Array.from(items.set.values());
for (var i = 0; i < items.length; i++) {
if (!this.has(items[i]))
return false;
}
return true;
};
Range.prototype.slice1Based = function(start, end) {
this.checkRange(start, end);
var range = Object.create(this);
range.first = start ? this.item(start) : this.first;
range.last = end ? ( end > 0 ? this.item(end) : this.item(this.length + 1 + end) ) : this.last;
return range;
};
Range.prototype.checkRange = function(start, end) {
if(start && (start<1 || start>this.length))
throw new RangeError();
if(!start)
start = 1;
if(end) {
if(end>=0 && (end<1 || end>this.length))
throw new RangeError();
else if(end<-this.length)
throw new RangeError();
}
};
Range.prototype.hasAny = function(items) {
if(typeof(StrictSet) !== 'undefined' && items instanceof StrictSet)
items = Array.from(items.set.values());
for (var i = 0; i < items.length; i++) {
if (this.has(items[i]))
return true;
}
return false;
};
function IntegerRange(first, last) {
Range.call(this, first, last);
return this;
}
IntegerRange.prototype = Object.create(Range.prototype);
IntegerRange.prototype.constructor = IntegerRange;
Object.defineProperty(IntegerRange.prototype, "length", {
get: function() {
return 1 + this.last - this.first;
}
});
IntegerRange.prototype.item = function(idx) {
return this.first + idx - 1;
};
IntegerRange.prototype.has = function(value) {
var int = Math.floor(value);
return int==value && int>=this.first && int<=this.last;
};
function CharacterRange(first, last) {
IntegerRange.call(this, first.charCodeAt(0), last.charCodeAt(0));
return this;
}
CharacterRange.prototype = Object.create(IntegerRange.prototype);
CharacterRange.prototype.constructor = CharacterRange;
CharacterRange.prototype.has = function(value) {
var int = value.charCodeAt(0);
return int>=this.first && int<=this.last;
};
CharacterRange.prototype.item = function(idx) {
return String.fromCharCode(this.first + idx - 1);
};
function DateRange(first, last) {
Range.call(this, first, last);
return this;
}
DateRange.prototype = Object.create(Range.prototype);
DateRange.prototype.constructor = DateRange;
Object.defineProperty(DateRange.prototype, "length", {
get: function() {
var h = this.last.valueOf();
var l = this.first.valueOf();
return 1 + ( (h-l)/(24*60*60*1000));
}
});
DateRange.prototype.item = function(idx) {
var millis = this.first.valueOf() + (idx-1)*(24*60*60*1000);
if(millis > this.last.valueOf()) {
throw new RangeError();
} else {
return new LocalDate(millis);
}
};
DateRange.prototype.has = function(value) {
var int = value.valueOf();
return int>=this.first.valueOf() && int<=this.last.valueOf();
};
function TimeRange(first, last) {
Range.call(this, first, last);
return this;
}
TimeRange.prototype = Object.create(Range.prototype);
TimeRange.prototype.constructor = TimeRange;
Object.defineProperty(TimeRange.prototype, "length", {
get: function() {
return 1 + (this.last.valueOf() - this.first.valueOf())/1000;
}
});
TimeRange.prototype.item = function(idx) {
var result = this.first.valueOf() + (idx-1)*1000;
if(result > this.last.valueOf()) {
throw new RangeError();
}
return new LocalTime(result);
};
TimeRange.prototype.has = function(value) {
var int = value.valueOf();
return int >= this.first.valueOf() && int <= this.last.valueOf();
};
exports.Range = Range;
exports.IntegerRange = IntegerRange;
exports.CharacterRange = CharacterRange;
exports.DateRange = DateRange;
exports.TimeRange = TimeRange;
/***/ }),
/* 141 */
/***/ (function(module, exports, __webpack_require__) {
var BaseValueList = __webpack_require__(142).BaseValueList;
var BooleanValue = __webpack_require__(76).BooleanValue;
var IntegerValue = __webpack_require__(80).IntegerValue;
var multiplyArray = __webpack_require__(51).multiplyArray;
var ListType = null;
var SetValue = null;
exports.resolve = function() {
ListType = __webpack_require__(71).ListType;
SetValue = __webpack_require__(143).SetValue;
};
function ListValue(itemType, items, item, mutable) {
BaseValueList.call(this, new ListType(itemType), items, item, mutable);
this.storables = null;
return this;
}
ListValue.prototype = Object.create(BaseValueList.prototype);
ListValue.prototype.constructor = ListValue;
ListValue.prototype.newInstance = function(items) {
return new ListValue(this.type.itemType, items);
};
ListValue.prototype.getStorableData = function() {
if(this.storables == null)
this.storables = this.items.map(function(item) {
return item.getStorableData();
});
return this.storables;
};
ListValue.prototype.collectStorables = function(list) {
this.items.map(function(item) {
item.collectStorables(list);
});
};
ListValue.prototype.Add = function(context, value) {
if (value instanceof ListValue) {
var items = this.items.concat(value.items);
return new ListValue(this.type.itemType, items);
} else if(value instanceof SetValue) {
var items1 = Array.from(value.items.set.values());
var items2 = this.items.concat(items1);
return new ListValue(this.type.itemType, items2);
} else {
return BaseValueList.prototype.Add.apply(this, context, value);
}
};
ListValue.prototype.Subtract = function(context, value) {
if (value instanceof ListValue) {
var setValue = new SetValue(this.type.itemType);
value = setValue.Add(context, value);
}
if(value instanceof SetValue) {
var items = this.items.filter(function(item) { return !value.items.has(item); });
return new ListValue(this.type.itemType, items);
} else {
return BaseValueList.prototype.Subtract.apply(this, context, value);
}
};
ListValue.prototype.Multiply = function(context, value) {
if (value instanceof IntegerValue) {
var count = value.value;
if (count < 0) {
throw new SyntaxError("Negative repeat count:" + count);
} else {
var items = multiplyArray(this.items, count);
return new ListValue(this.type.itemType, items);
}
} else {
return BaseValueList.prototype.Multiply.apply(this, context, value);
}
};
ListValue.prototype.toDialect = function(writer) {
writer.append('[');
BaseValueList.prototype.toDialect.call(this, writer);
writer.append(']');
};
ListValue.prototype.filter = function(context, itemId, filter) {
var result = new ListValue(this.type.itemType);
var iter = this.getIterator(context);
while(iter.hasNext()) {
var o = iter.next();
context.setValue(itemId, o);
var test = filter.interpret(context);
if(!(test instanceof BooleanValue)) {
throw new InternalError("Illegal test result: " + test);
}
if(test.value) {
result.add(o);
}
}
return result;
}
exports.ListValue = ListValue;
/***/ }),
/* 142 */
/***/ (function(module, exports, __webpack_require__) {
var Value = __webpack_require__(77).Value;
var Container = __webpack_require__(77).Container;
var IntegerValue = __webpack_require__(80).IntegerValue;
var PromptoError = __webpack_require__(64).PromptoError;
var InternalError = __webpack_require__(63).InternalError;
var IndexOutOfRangeError = __webpack_require__(88).IndexOutOfRangeError;
/* an abstract list of values, common to ListValue and TupleValue */
function BaseValueList(type, items, item, mutable) {
Container.call(this, type);
this.items = items || [];
item = item || null;
if(item!==null) {
this.add(item);
}
this.mutable = mutable || false;
return this;
}
BaseValueList.prototype = Object.create(Container.prototype);
BaseValueList.prototype.constructor = BaseValueList;
BaseValueList.prototype.toString = function() {
return "[" + this.items.join(", ") + "]";
};
BaseValueList.prototype.add = function(o) {
this.items.push(o);
};
BaseValueList.prototype.setItem = function(index, value) {
this.items[index] = value;
};
BaseValueList.prototype.setItemInContext = function(context, index, value) {
if (index instanceof IntegerValue) {
var idx = index.IntegerValue() - 1;
if (idx > this.items.length) {
throw new IndexOutOfRangeError();
}
this.items[idx] = value;
} else
throw new SyntaxError("No such item:" + index.toString())
};
BaseValueList.prototype.get = function(index) {
return this.items[index];
};
BaseValueList.prototype.size = function() {
return this.items.length;
};
BaseValueList.prototype.isEmpty = function() {
return this.items.length===0;
};
BaseValueList.prototype.slice = function(fi, li) {
var first = this.checkFirst(fi);
var last = this.checkLast(li);
var items = this.items.slice(first-1,last);
return this.newInstance(items);
};
BaseValueList.prototype.checkFirst = function(fi) {
var value = (fi == null) ? 1 : fi.IntegerValue();
if (value < 1 || value > this.items.length) {
throw new IndexOutOfRangeError();
}
return value;
};
BaseValueList.prototype.checkLast = function(li) {
var value = (li == null) ? this.items.length : li.IntegerValue();
if (value < 0) {
value = this.items.length + 1 + li.IntegerValue();
}
if (value < 1 || value > this.items.length) {
throw new IndexOutOfRangeError();
}
return value;
};
BaseValueList.prototype.hasItem = function(context, lval) {
for (var i=0;ithis.items.length) {
throw new IndexOutOfRangeError();
}
var value = this.items[idx] || null;
if(value==null) {
return null;
}
if (value instanceof Value) {
return value;
} else {
throw new InternalError("Item not a value!");
}
} catch (e) {
if(e instanceof PromptoError) {
throw e;
} else {
throw new InternalError(e.toString());
}
}
} else
throw new SyntaxError("No such item:" + index.toString());
};
BaseValueList.prototype.equals = function(obj) {
if(obj instanceof BaseValueList) {
if(this.items.length!=obj.items.length) {
return false;
} else {
for(var i=0;i0) {
this.items.forEach(function(o) {
if(o.toDialect)
o.toDialect(writer);
else
writer.append(o.toString());
writer.append(", ");
});
writer.trimLast(2);
}
};
BaseValueList.prototype.toJson = function(context, json, instanceId, fieldName, withType, binaries) {
var values = [];
this.items.map(function(item) {
item.toJson(context, values, instanceId, fieldName, withType, binaries);
});
if(Array.isArray(json))
json.push(values);
else
json[fieldName] = values;
};
exports.BaseValueList = BaseValueList;
/***/ }),
/* 143 */
/***/ (function(module, exports, __webpack_require__) {
var BooleanValue = __webpack_require__(76).BooleanValue;
var Value = __webpack_require__(77).Value;
var IntegerValue = __webpack_require__(80).IntegerValue;
var SetType = __webpack_require__(144).SetType;
var StrictSet = __webpack_require__(85).StrictSet;
var ListValue = null;
exports.resolve = function() {
SetType = __webpack_require__(144).SetType;
ListValue = __webpack_require__(141).ListValue;
};
function SetValue(itemType, items) {
Value.call(this, new SetType(itemType));
this.itemType = null;
this.items = items || new StrictSet();
return this;
}
SetValue.prototype = Object.create(Value.prototype);
SetValue.prototype.constructor = SetValue;
SetValue.prototype.add = function(item) {
this.items.add(item);
};
SetValue.prototype.toString = function() {
return this.items.toString();
};
SetValue.prototype.size = function() {
return this.items.length;
};
SetValue.prototype.getMemberValue = function(context, name) {
if ("count"==name) {
return new IntegerValue(this.items.length);
} else {
return Value.prototype.getMemberValue.call(this, context, name);
}
};
SetValue.prototype.isEmpty = function() {
return this.items.length === 0;
};
SetValue.prototype.hasItem = function(context, item) {
return this.items.has(item);
};
SetValue.prototype.getItemInContext = function(context, index) {
if (index instanceof IntegerValue) {
var idx = index.IntegerValue();
var items = Array.from(this.items.set.values());
if(idx<1 || idx>items.length)
throw new IndexOutOfRangeError();
return items[idx-1];
} else
throw new SyntaxError("No such item:" + index.toString());
};
SetValue.prototype.Add = function(context, value) {
if (value instanceof SetValue || value instanceof ListValue) {
var set = new StrictSet();
set.addItems(this.items);
set.addItems(value.items);
return new SetValue(this.type.itemType, set);
} else {
return Value.prototype.Add.apply(this, context, value);
}
};
SetValue.prototype.Subtract = function(context, value) {
if (value instanceof ListValue) {
var setValue = new SetValue(this.type.itemType);
value = setValue.Add(context, value);
}
if (value instanceof SetValue) {
var set = new StrictSet();
var iter = this.items.iterator();
while(iter.hasNext()) {
var item = iter.next();
if(!value.items.has(item))
set.set.add(item);
}
return new SetValue(this.type.itemType, set);
} else {
return Value.prototype.Subtract.apply(this, context, value);
}
};
SetValue.prototype.filter = function(context, itemId, filter) {
var result = new SetValue(this.type.itemType);
var iter = this.getIterator(context);
while(iter.hasNext()) {
var o = iter.next();
context.setValue(itemId, o);
var test = filter.interpret(context);
if(!(test instanceof BooleanValue)) {
throw new InternalError("Illegal test result: " + test);
}
if(test.value) {
result.add(o);
}
}
return result;
}
SetValue.prototype.getIterator = function(context) {
return this.items.iterator();
};
SetValue.prototype.equals = function(obj) {
if(obj instanceof SetValue) {
return this.items.equals(obj.items);
} else {
return false;
}
};
exports.SetValue = SetValue;
/***/ }),
/* 144 */
/***/ (function(module, exports, __webpack_require__) {
var ContainerType = __webpack_require__(65).ContainerType;
var ListType = __webpack_require__(71).ListType;
var IntegerType = __webpack_require__(83).IntegerType;
var BooleanType = __webpack_require__(72).BooleanType;
var Identifier = __webpack_require__(73).Identifier;
function SetType(itemType) {
ContainerType.call(this, new Identifier(itemType.name+"<>"), itemType);
this.itemType = itemType;
return this;
}
SetType.prototype = Object.create(ContainerType.prototype);
SetType.prototype.constructor = SetType;
SetType.prototype.withItemType = function(itemType) {
return new SetType(itemType);
};
SetType.prototype.getTranspiledName = function(context) {
return this.itemType.getTranspiledName(context) + "_set";
};
SetType.prototype.equals = function(obj) {
if(obj===this) {
return true;
}
if(obj===null) {
return false;
}
if(!(obj instanceof SetType)) {
return false;
}
return this.itemType.equals(obj.itemType);
};
SetType.prototype.checkAdd = function(context, other, tryReverse) {
if((other instanceof SetType || other instanceof ListType) && this.itemType.equals(other.itemType)) {
return this;
} else {
return ContainerType.prototype.checkAdd.call(this, context, other, tryReverse);
}
};
SetType.prototype.declareAdd = function(transpiler, other, tryReverse, left, right) {
if((other instanceof SetType || other instanceof ListType) && this.itemType.equals(other.itemType)) {
left.declare(transpiler);
right.declare(transpiler);
} else {
return ContainerType.prototype.declareAdd.call(this, transpiler, other, tryReverse, left, right);
}
};
SetType.prototype.transpileAdd = function(transpiler, other, tryReverse, left, right) {
if((other instanceof SetType || other instanceof ListType) && this.itemType.equals(other.itemType)) {
left.transpile(transpiler);
transpiler.append(".addAll(");
right.transpile(transpiler);
transpiler.append(")");
} else {
return ContainerType.prototype.transpileAdd.call(this, transpiler, other, tryReverse, left, right);
}
};
SetType.prototype.checkSubtract = function(context, other) {
if((other instanceof SetType || other instanceof ListType) && this.itemType.equals(other.itemType)) {
return this;
} else {
return ContainerType.prototype.checkSubtract.call(this, context, other);
}
};
SetType.prototype.declareSubtract = function(transpiler, other, left, right) {
if((other instanceof SetType || other instanceof ListType) && this.itemType.equals(other.itemType)) {
left.declare(transpiler);
right.declare(transpiler);
} else {
return ContainerType.prototype.declareSubtract.call(this, transpiler, other, left, right);
}
};
SetType.prototype.transpileSubtract= function(transpiler, other, left, right) {
if((other instanceof SetType || other instanceof ListType) && this.itemType.equals(other.itemType)) {
left.transpile(transpiler);
transpiler.append(".remove(");
right.transpile(transpiler);
transpiler.append(")");
} else {
return ContainerType.prototype.transpileSubtract.call(this, transpiler, other, left, right);
}
};
SetType.prototype.checkItem = function(context, other, expression) {
if(other==IntegerType.instance) {
return this.itemType;
} else {
return ContainerType.prototype.checkItem.call(this, context, other, expression);
}
};
SetType.prototype.declareItem = function(transpiler, itemType, item) {
// nothing to do
};
SetType.prototype.transpileItem = function(transpiler, itemType, item) {
transpiler.append(".item(");
item.transpile(transpiler);
transpiler.append("-1)");
};
SetType.prototype.declareContains = function(transpiler, other, container, item) {
container.declare(transpiler);
item.declare(transpiler);
};
SetType.prototype.transpileContains = function(transpiler, other, container, item) {
container.transpile(transpiler);
transpiler.append(".has(");
item.transpile(transpiler);
transpiler.append(")");
};
SetType.prototype.checkContainsAllOrAny = function(context, other) {
return BooleanType.instance;
}
SetType.prototype.declareContainsAllOrAny = function(transpiler, other, container, items) {
var StrictSet = __webpack_require__(85).StrictSet;
transpiler.require(StrictSet);
container.declare(transpiler);
items.declare(transpiler);
};
SetType.prototype.transpileContainsAll = function(transpiler, other, container, items) {
container.transpile(transpiler);
transpiler.append(".hasAll(");
items.transpile(transpiler);
transpiler.append(")");
};
SetType.prototype.transpileContainsAny = function(transpiler, other, container, items) {
container.transpile(transpiler);
transpiler.append(".hasAny(");
items.transpile(transpiler);
transpiler.append(")");
};
SetType.prototype.checkIterator = function(context, source) {
return this.itemType;
}
SetType.prototype.isAssignableFrom = function(context, other) {
return ContainerType.prototype.isAssignableFrom.call(this, context, other)
|| ((other instanceof SetType) && this.itemType.isAssignableFrom(context, other.itemType));
};
exports.SetType = SetType;
/***/ }),
/* 145 */
/***/ (function(module, exports, __webpack_require__) {
var BaseMethodDeclaration = __webpack_require__(146).BaseMethodDeclaration;
var ArgumentList = __webpack_require__(147).ArgumentList;
var BuiltInContext = null;
exports.resolve = function() {
BuiltInContext = __webpack_require__(55).BuiltInContext;
};
function BuiltInMethodDeclaration(name) {
var args = null;
if ( arguments.length > 1 ) {
args = new ArgumentList();
for(var i = 1;i0)
return this.name;
else
return [this.name].concat(this.args.map(function(arg) { return arg.getTranspiledName(context); })).join("$");
};
BaseMethodDeclaration.prototype.transpileProlog = function(transpiler) {
if (this.memberOf)
transpiler.append(this.memberOf.name).append(".prototype.").append(this.getTranspiledName(transpiler.context)).append(" = function (");
else
transpiler.append("function ").append(this.getTranspiledName(transpiler.context)).append(" (");
this.args.transpile(transpiler);
transpiler.append(") {").indent();
};
BaseMethodDeclaration.prototype.transpileEpilog = function(transpiler) {
transpiler.dedent().append("}");
if(this.memberOf)
transpiler.append(";");
transpiler.newLine();
};
BaseMethodDeclaration.prototype.unregister = function(context) {
context.unregisterMethodDeclaration (this, this.getProto(context));
};
BaseMethodDeclaration.prototype.register = function(context) {
context.registerMethodDeclaration(this);
};
BaseMethodDeclaration.prototype.registerArguments = function(context) {
if(this.args!=null) {
this.args.register(context);
}
};
BaseMethodDeclaration.prototype.declareArguments = function(transpiler) {
if(this.args!=null) {
this.args.declare(transpiler);
}
};
BaseMethodDeclaration.prototype.isAssignableTo = function(context, assignments, checkInstance, allowDerived) {
var listener = context.problemListener;
try {
context.problemListener = new ProblemListener();
var local = context.newLocalContext();
this.registerArguments(local);
var assignmentsList = new ArgumentAssignmentList(assignments);
for(var i=0;i=0 ? assignmentsList[idx] : null;
if(assignment==null) { // missing argument
if(argument.defaultExpression!=null)
assignment = new ArgumentAssignment(argument, argument.defaultExpression);
else
return false;
}
if(!assignment.isAssignableToArgument(local, argument, this, checkInstance, allowDerived)) {
return false;
}
if(idx>=0)
assignmentsList.remove(idx);
}
return assignmentsList.length===0;
} catch (e) {
if(e instanceof SyntaxError) {
return false;
} else {
throw e;
}
} finally {
context.problemListener = listener;
}
};
BaseMethodDeclaration.prototype.isEligibleAsMain = function() {
return false;
};
exports.BaseMethodDeclaration = BaseMethodDeclaration;
/***/ }),
/* 147 */
/***/ (function(module, exports, __webpack_require__) {
var ObjectList = __webpack_require__(52).ObjectList;
var CodeArgument = __webpack_require__(125).CodeArgument;
function ArgumentList() {
ObjectList.call(this);
for (var i=0; i < arguments.length; i++) {
this.add(arguments[i]);
}
return this;
}
ArgumentList.prototype = Object.create(ObjectList.prototype);
ArgumentList.prototype.constructor = ArgumentList;
ArgumentList.prototype.register = function(context) {
this.forEach(function(arg) {
arg.register(context);
});
};
ArgumentList.prototype.check = function(context) {
this.forEach(function(arg) {
arg.check(context);
});
};
ArgumentList.prototype.declare = function(transpiler) {
this.forEach(function(arg) {
arg.declare(transpiler);
});
};
ArgumentList.prototype.find = function(name) {
for(var i=0;i1) {
writer.trimLast(2);
writer.append(" and ");
}
this[this.length-1].toDialect(writer);
writer.append(" ");
};
ArgumentList.prototype.toODialect = function(writer) {
if(this.length>0) {
this.forEach(function(arg) {
arg.toDialect(writer);
writer.append(", ");
});
writer.trimLast(2);
}
};
ArgumentList.prototype.toMDialect = function(writer) {
this.toODialect(writer);
};
ArgumentList.prototype.transpile = function(transpiler) {
var args = this.filter(function(arg) {
return !(arg instanceof CodeArgument);
})
if(args.length>0) {
args.forEach(function (arg) {
arg.transpile(transpiler);
transpiler.append(", ");
});
transpiler.trimLast(2);
}
};
exports.ArgumentList = ArgumentList;
/***/ }),
/* 148 */
/***/ (function(module, exports, __webpack_require__) {
var ObjectList = __webpack_require__(52).ObjectList;
var Dialect = __webpack_require__(110).Dialect;
var ContextualExpression = __webpack_require__(149).ContextualExpression;
var AttributeArgument = __webpack_require__(120).AttributeArgument;
var ArgumentAssignment = __webpack_require__(150).ArgumentAssignment;
var AndExpression = null;
var UnresolvedIdentifier = null;
exports.resolve = function() {
AndExpression = __webpack_require__(156).AndExpression;
UnresolvedIdentifier = __webpack_require__(94).UnresolvedIdentifier;
}
function ArgumentAssignmentList(items) {
ObjectList.call(this, items || []);
return this;
}
ArgumentAssignmentList.prototype = Object.create(ObjectList.prototype);
ArgumentAssignmentList.prototype.constructor = ArgumentAssignmentList;
/* post-fix expression priority for final assignment in E dialect */
/* 'xyz with a and b as c' should read 'xyz with a, b as c' NOT 'xyz with (a and b) as c' */
ArgumentAssignmentList.prototype.checkLastAnd = function() {
var assignment = this.slice(-1).pop();
if(assignment!=null && assignment.argument!=null && assignment.expression instanceof AndExpression) {
var and = assignment.expression;
if(and.left instanceof UnresolvedIdentifier) {
var id = and.left.id;
var leading = id.name.charAt(0);
if(leading !== leading.toUpperCase()) {
this.pop();
// add AttributeArgument
var argument = new AttributeArgument(id);
var attribute = new ArgumentAssignment(argument, null);
this.add(attribute);
// fix last assignment
assignment.expression = and.right;
this.add(assignment);
}
}
}
};
ArgumentAssignmentList.prototype.findIndex = function(name) {
for(var i=0;i0 && this[0].argument==null)
index = 0;
if(index>=0) {
assignment = local[index];
local.splice(index, 1);
}
if(assignment==null) {
if (argument.defaultExpression != null)
assignments.push(new ArgumentAssignment(argument, argument.defaultExpression));
else
throw new SyntaxError("Missing argument:" + argument.name);
} else {
var expression = new ContextualExpression(context, assignment.expression);
assignments.push(new ArgumentAssignment(argument, expression));
}
}
if(local.length > 0)
throw new SyntaxError("Method has no argument:" + local[0].name);
return assignments;
};
ArgumentAssignmentList.prototype.toDialect = function(writer) {
writer.toDialect(this);
};
ArgumentAssignmentList.prototype.toEDialect = function(writer) {
var idx = 0;
// anonymous argument before 'with'
if(this.length>0 && this[0].argument==null) {
writer.append(' ');
this[idx++].toDialect(writer);
}
if(idx0)
writer.trimLast(2);
writer.append(")");
};
ArgumentAssignmentList.prototype.toMDialect = function(writer) {
this.toODialect(writer);
};
ArgumentAssignmentList.prototype.declare = function(transpiler) {
this.forEach(function(arg) {
arg.declare(transpiler);
});
};
ArgumentAssignmentList.prototype.transpile = function(transpiler) {
transpiler.append("(");
this.forEach(function(arg) {
arg.transpile(transpiler);
transpiler.append(", ");
});
if(this.length>0)
transpiler.trimLast(2);
transpiler.append(")");
};
exports.ArgumentAssignmentList = ArgumentAssignmentList;
/***/ }),
/* 149 */
/***/ (function(module, exports, __webpack_require__) {
var Value = __webpack_require__(77).Value;
function ContextualExpression(calling, expression) {
Value.call(this, null); // TODO check that this is not a problem
this.calling = calling;
this.expression = expression;
return this;
}
ContextualExpression.prototype = Object.create(Value.prototype);
ContextualExpression.prototype.constructor = ContextualExpression;
ContextualExpression.prototype.toDialect = function(dialect) {
return this.expression.toDialect(dialect);
};
ContextualExpression.prototype.check = function(context) {
return this.expression.check(this.calling);
};
ContextualExpression.prototype.interpret = function(context) {
return this.expression.interpret(this.calling);
};
ContextualExpression.prototype.transpile = function(transpiler) {
transpiler = transpiler.newChildTranspiler(this.calling);
this.expression.transpile(transpiler);
transpiler.flush();
};
exports.ContextualExpression = ContextualExpression;
/***/ }),
/* 150 */
/***/ (function(module, exports, __webpack_require__) {
var CategoryType = null;
var InstanceExpression = __webpack_require__(151).InstanceExpression;
var MemberSelector = __webpack_require__(102).MemberSelector;
var Variable = __webpack_require__(91).Variable;
var VoidType = __webpack_require__(153).VoidType;
var PromptoError = __webpack_require__(64).PromptoError;
var Specificity = __webpack_require__(155).Specificity;
exports.resolve = function() {
CategoryType = __webpack_require__(93).CategoryType;
}
function ArgumentAssignment(argument, expression) {
this.argument = argument;
this._expression = expression;
return this;
}
Object.defineProperty(ArgumentAssignment.prototype, "id", {
get : function() {
return this.argument.id;
}
});
Object.defineProperty(ArgumentAssignment.prototype, "name", {
get : function() {
return this.argument ? this.argument.name : null;
}
});
Object.defineProperty(ArgumentAssignment.prototype, "expression", {
get : function() {
return this._expression ? this._expression : new InstanceExpression(this.id);
},
set : function(expression) {
this._expression = expression;
}
});
// needed for error reporting
Object.defineProperty(ArgumentAssignment.prototype, "end", {
get : function() {
return this.expression.end;
}
});
ArgumentAssignment.prototype.toDialect = function(writer) {
writer.toDialect(this);
};
ArgumentAssignment.prototype.toODialect = function(writer) {
if(!this._expression) {
writer.append(this.argument.name);
} else {
if (this.argument != null) {
writer.append(this.argument.name);
writer.append(" = ");
}
this._expression.toDialect(writer);
}
};
ArgumentAssignment.prototype.toMDialect = function(writer) {
if(!this._expression) {
writer.append(this.argument.name);
} else {
if (this.argument != null) {
writer.append(this.argument.name);
writer.append(" = ");
}
this._expression.toDialect(writer);
}
};
ArgumentAssignment.prototype.toEDialect = function(writer) {
if(!this._expression) {
writer.append(this.argument.name);
} else {
this._expression.toDialect(writer);
if (this.argument != null) {
writer.append(" as ");
writer.append(this.argument.name);
}
}
};
ArgumentAssignment.prototype.declare = function(transpiler) {
if(this._expression)
this._expression.declare(transpiler);
};
ArgumentAssignment.prototype.transpile = function(transpiler) {
this._expression.transpile(transpiler);
};
ArgumentAssignment.prototype.toString = function() {
if(!this._expression) {
return this.argument.name;
} else {
if (this.argument === null) {
return this._expression.toString();
} else {
return this.name + " = " + this._expression.toString();
}
}
};
ArgumentAssignment.prototype.equals = function(obj) {
if(obj==this) {
return true;
} else if(obj==null) {
return false;
} else if(!(obj instanceof ArgumentAssignment)) {
return false;
} else {
return this.argument.equals(obj.argument) &&
this.expression.equals(other.expression);
}
};
ArgumentAssignment.prototype.check = function(context) {
var actual = context.getRegisteredValue(this.argument.name);
if(actual==null) {
var actualType = this.expression.check(context);
context.registerValue(new Variable(this.argument.id, actualType));
} else {
// need to check type compatibility
var actualType = actual.getType(context);
var newType = this.expression.check(context);
actualType.checkAssignableFrom(context, newType, this);
}
return VoidType.instance;
};
ArgumentAssignment.prototype.resolve = function(context, methodDeclaration, checkInstance, allowDerived) {
// since we support implicit members, it's time to resolve them
var name = this.argument.name;
var expression = this.expression;
var argument = methodDeclaration.args.find(name);
var required = argument.getType(context);
var actual = expression.check(context.getCallingContext());
if(checkInstance && actual instanceof CategoryType) {
var value = expression.interpret(context.getCallingContext());
if(value && value.getType) {
actual = value.getType();
}
}
var assignable = required.isAssignableFrom(context, actual);
// when in dispatch, allow derived
if(!assignable && allowDerived)
assignable = actual.isAssignableFrom(context, required);
// try passing member
if(!assignable && (actual instanceof CategoryType)) {
expression = new MemberSelector(expression, this.argument.id);
}
return expression;
};
ArgumentAssignment.prototype.makeAssignment = function(context, declaration) {
var argument = this.argument;
// when 1st argument, can be unnamed
if(argument===null) {
if(declaration.args.length==0) {
throw new SyntaxError("Method has no argument");
}
argument = declaration.args[0];
} else {
argument = declaration.args.find(this.name);
}
if(argument==null) {
throw new SyntaxError("Method has no argument:" + this.name);
}
};
ArgumentAssignment.prototype.isAssignableToArgument = function(context, argument, declaration, checkInstance, allowDerived) {
return this.computeSpecificity(context, argument, declaration, checkInstance, allowDerived)!==Specificity.INCOMPATIBLE;
};
ArgumentAssignment.prototype.computeSpecificity = function(context, argument, declaration, checkInstance, allowDerived) {
try {
var required = argument.getType(context);
var actual = this.expression.check(context);
// retrieve actual runtime type
if(checkInstance && (actual instanceof CategoryType)) {
var value = this.expression.interpret(context.getCallingContext());
if(value && value.getType) {
actual = value.getType();
}
}
if(actual.equals(required)) {
return Specificity.EXACT;
} else if(required.isAssignableFrom(context, actual)) {
return Specificity.INHERITED;
} else if(allowDerived && actual.isAssignableFrom(context, required)) {
return Specificity.DERIVED;
}
actual = this.resolve(context, declaration, checkInstance).check(context);
if(required.isAssignableFrom(context, actual)) {
return Specificity.IMPLICIT;
} else if(allowDerived && actual.isAssignableFrom(context, required)) {
return Specificity.IMPLICIT;
}
} catch(error) {
if(!(error instanceof PromptoError )) {
throw error;
}
}
return Specificity.INCOMPATIBLE;
};
exports.ArgumentAssignment = ArgumentAssignment;
/***/ }),
/* 151 */
/***/ (function(module, exports, __webpack_require__) {
var Variable = __webpack_require__(91).Variable;
var LinkedVariable = __webpack_require__(152).LinkedVariable;
var Identifier = __webpack_require__(73).Identifier;
var Argument = __webpack_require__(121).Argument;
var Dialect = __webpack_require__(110).Dialect;
var CategoryDeclaration = null;
var VoidType = __webpack_require__(153).VoidType;
var MethodType = __webpack_require__(101).MethodType;
var ClosureValue = __webpack_require__(154).ClosureValue;
var Section = __webpack_require__(61).Section;
var AttributeDeclaration = __webpack_require__(59).AttributeDeclaration;
var MethodDeclarationMap = null;
var InstanceContext = null;
exports.resolve = function() {
CategoryDeclaration = __webpack_require__(58).CategoryDeclaration;
MethodDeclarationMap = __webpack_require__(55).MethodDeclarationMap;
InstanceContext = __webpack_require__(55).InstanceContext;
}
function InstanceExpression(id) {
Section.prototype.copySectionFrom.call(this, id);
this.id = id;
return this;
}
Object.defineProperty(InstanceExpression.prototype, "name", {
get : function() {
return this.id.name;
}
});
InstanceExpression.prototype.toString = function() {
return this.name;
};
InstanceExpression.prototype.declare = function(transpiler) {
var named = transpiler.context.getRegistered(this.name);
if(named instanceof MethodDeclarationMap) {
var decl = named.getFirst();
// don't declare member methods
if(decl.memberOf!=null)
return;
// don't declare closures
if(decl.declarationStatement)
return;
decl.declare(transpiler);
}
};
InstanceExpression.prototype.transpile = function(transpiler) {
var context = transpiler.context.contextForValue(this.name);
if(context instanceof InstanceContext) {
context.instanceType.transpileInstance(transpiler);
transpiler.append(".");
}
var named = transpiler.context.getRegistered(this.name);
if(named instanceof MethodDeclarationMap) {
transpiler.append(named.getFirst().getTranspiledName());
// need to bind instance methods
if(context instanceof InstanceContext) {
transpiler.append(".bind(");
context.instanceType.transpileInstance(transpiler);
transpiler.append(")");
}
} else {
if (transpiler.getterName === this.name)
transpiler.append("$");
transpiler.append(this.name);
}
};
InstanceExpression.prototype.toDialect = function(writer, requireMethod) {
if(requireMethod === undefined)
requireMethod = true;
if(requireMethod && this.requiresMethod(writer))
writer.append("Method: ");
writer.append(this.name);
};
InstanceExpression.prototype.requiresMethod = function(writer) {
if(writer.dialect!=Dialect.E)
return false;
var o = writer.context.getRegistered(this.name);
if(o instanceof MethodDeclarationMap)
return true;
return false;
};
InstanceExpression.prototype.check = function(context) {
var named = context.getRegistered(this.id.name);
if(named==null) {
named = context.getRegisteredDeclaration(this.id.name);
}
if (named instanceof Variable) { // local variable
return named.getType(context);
} else if(named instanceof LinkedVariable) { // local variable
return named.getType(context);
} else if (named instanceof Argument) { // named argument
return named.getType(context);
} else if(named instanceof CategoryDeclaration) { // any p with x
return named.getType(context);
} else if(named instanceof AttributeDeclaration) { // in category method
return named.getType(context);
} else if(named instanceof MethodDeclarationMap) { // global method or closure
return new MethodType(named.getFirst());
} else {
context.problemListener.reportUnknownVariable(this.id);
return VoidType.instance;
}
};
InstanceExpression.prototype.interpret = function(context) {
if(context.hasValue(this.id)) {
return context.getValue(this.id);
} else {
var named = context.getRegistered(this.id);
if (named instanceof MethodDeclarationMap) {
var decl = named.getFirst();
return new ClosureValue(context, new MethodType(decl))
} else {
throw new SyntaxError("No method with name:" + this.name);
}
}
};
exports.InstanceExpression = InstanceExpression;
/***/ }),
/* 152 */
/***/ (function(module, exports) {
/* used for downcast */
function LinkedVariable (type, linked) {
this.type = type;
this.linked = linked;
return this;
}
LinkedVariable.prototype.getType = function(context) {
return this.type;
};
Object.defineProperty(LinkedVariable.prototype, "name", {
get : function() {
return this.linked.name;
}
});
exports.LinkedVariable = LinkedVariable;
/***/ }),
/* 153 */
/***/ (function(module, exports, __webpack_require__) {
var NativeType = __webpack_require__(67).NativeType;
var Identifier = __webpack_require__(73).Identifier;
function VoidType() {
NativeType.call(this, new Identifier("Void"));
return this;
}
VoidType.prototype = Object.create(NativeType.prototype);
VoidType.prototype.constructor = VoidType;
VoidType.prototype.isAssignableFrom = function(context, other) {
// illegal, but happens during syntax checking, if error is collected rather than thrown
return false;
};
VoidType.instance = new VoidType();
exports.VoidType = VoidType;
/***/ }),
/* 154 */
/***/ (function(module, exports, __webpack_require__) {
var MethodType = __webpack_require__(101).MethodType;
var Value = __webpack_require__(77).Value;
function ClosureValue(context, type) {
Value.call(this, type);
this.context = context;
return this;
}
ClosureValue.prototype = Object.create(Value.prototype);
ClosureValue.prototype.constructor = ClosureValue;
ClosureValue.prototype.interpret = function(context) {
var parentMost = this.context.getParentMostContext();
parentMost.setParentContext(context);
var result = this.type.method.interpret(this.context);
parentMost.setParentContext(null);
return result;
};
exports.ClosureValue = ClosureValue;
/***/ }),
/* 155 */
/***/ (function(module, exports) {
function Specificity(ordinal, name) {
this.ordinal = ordinal;
this.name = name;
return this;
}
Specificity.INCOMPATIBLE = new Specificity(0, "INCOMPATIBLE");
Specificity.IMPLICIT = new Specificity(1, "IMPLICIT");
Specificity.INHERITED = new Specificity(2, "INHERITED");
Specificity.EXACT = new Specificity(3, "EXACT");
Specificity.DERIVED = new Specificity(4, "DERIVED");
Specificity.prototype.moreSpecificThan = function(other) {
// DERIVED, EXACT, INHERITED, IMPLICIT
return this.ordinal > other.ordinal;
}
Specificity.prototype.toString = function() {
return this.name;
}
exports.Specificity = Specificity;
/***/ }),
/* 156 */
/***/ (function(module, exports, __webpack_require__) {
var CodeWriter = __webpack_require__(54).CodeWriter;
var Dialect = __webpack_require__(110).Dialect;
var Value = __webpack_require__(77).Value;
var BooleanValue = __webpack_require__(76).BooleanValue;
function AndExpression(left, right) {
this.left = left;
this.right = right;
return this;
}
AndExpression.prototype.toString = function() {
return this.left.toString() + " and " + this.right.toString();
};
AndExpression.prototype.toDialect = function(writer) {
writer.toDialect(this);
};
AndExpression.prototype.operatorToDialect = function(dialect) {
switch(dialect) {
case Dialect.E:
case Dialect.M:
return " and ";
case Dialect.O:
return " && ";
default:
throw new Exception("Unsupported: " + dialect.name);
}
};
AndExpression.prototype.toEDialect = function(writer) {
this.left.toDialect(writer);
writer.append(" and ");
this.right.toDialect(writer);
};
AndExpression.prototype.toODialect = function(writer) {
this.left.toDialect(writer);
writer.append(" && ");
this.right.toDialect(writer);
};
AndExpression.prototype.toMDialect = function(writer) {
this.left.toDialect(writer);
writer.append(" and ");
this.right.toDialect(writer);
};
AndExpression.prototype.check = function(context) {
var lt = this.left.check(context);
var rt = this.right.check(context);
return lt.checkAnd(context, rt);
};
AndExpression.prototype.interpret = function(context) {
var lval = this.left.interpret(context);
var rval = this.right.interpret(context);
return lval.And(rval);
};
AndExpression.prototype.declare = function(transpiler) {
this.left.declare(transpiler);
this.right.declare(transpiler);
};
AndExpression.prototype.transpile = function(transpiler) {
this.left.transpile(transpiler);
transpiler.append(" && ");
this.right.transpile(transpiler);
};
AndExpression.prototype.interpretAssert = function(context, test) {
var lval = this.left.interpret(context);
var rval = this.right.interpret(context);
var result = lval.And(rval);
if(result==BooleanValue.TRUE)
return true;
var expected = this.getExpected(context, test.dialect);
var actual = lval.toString() + this.operatorToDialect(test.dialect) + rval.toString();
test.printFailedAssertion(context, expected, actual);
return false;
};
AndExpression.prototype.getExpected = function(context, dialect, escapeMode) {
var writer = new CodeWriter(dialect, context);
writer.escapeMode = escapeMode;
this.toDialect(writer);
return writer.toString();
};
AndExpression.prototype.transpileFound = function(transpiler, dialect) {
transpiler.append("(");
this.left.transpile(transpiler);
transpiler.append(") + '").append(this.operatorToDialect(dialect)).append("' + (");
this.right.transpile(transpiler);
transpiler.append(")");
};
exports.AndExpression = AndExpression;
/***/ }),
/* 157 */
/***/ (function(module, exports, __webpack_require__) {
var ProblemCollector = __webpack_require__(128).ProblemCollector;
var SyntaxError = __webpack_require__(69).SyntaxError;
function ProblemListener() {
ProblemCollector.call(this);
return this;
}
ProblemListener.prototype = Object.create(ProblemCollector.prototype);
ProblemListener.prototype.constructor = ProblemListener;
ProblemListener.prototype.readSection = function(section) {
return {}; // avoid NPE when section unused
};
ProblemListener.prototype.collectProblem = function(problem) {
throw new SyntaxError(problem.message);
};
exports.ProblemListener = ProblemListener;
/***/ }),
/* 158 */
/***/ (function(module, exports, __webpack_require__) {
var InvalidDataError = __webpack_require__(132).InvalidDataError;
var Identifier = __webpack_require__(73).Identifier;
var Variable = __webpack_require__(91).Variable;
var StrictSet = __webpack_require__(85).StrictSet;
function MatchingCollectionConstraint(collection) {
this.collection = collection;
return this;
}
MatchingCollectionConstraint.prototype.checkValue = function(context, value) {
var container = this.collection.interpret(context);
if(container.hasItem) {
if(!(container.hasItem(context, value))) {
throw new InvalidDataError("" + value.toString() + " is not in: " + this.collection.toString());
}
} else {
throw new InvalidDataError("Not a collection: " + this.collection.toString());
}
};
MatchingCollectionConstraint.prototype.toDialect = function(writer) {
writer.append(" in ");
this.collection.toDialect(writer);
};
MatchingCollectionConstraint.prototype.declare = function(transpiler, name, type) {
transpiler = transpiler.newChildTranspiler();
var id = new Identifier("value");
transpiler.context.registerValue(new Variable(id, type));
this.collection.declare(transpiler);
this.transpile = function(transpiler) { this.transpileChecker(transpiler, name, type); };
transpiler.declare(this);
transpiler.require(StrictSet);
};
MatchingCollectionConstraint.prototype.transpileChecker = function(transpiler, name, type) {
transpiler.append("function $check_").append(name).append("(value) {").indent();
var transpiler = transpiler.newChildTranspiler();
var id = new Identifier("value");
transpiler.context.registerValue(new Variable(id, type));
transpiler.append("if(");
this.collection.transpile(transpiler);
transpiler.append(".has(value))").indent();
transpiler.append("return value;").dedent();
transpiler.append("else").indent();
transpiler.append("throw new IllegalValueError((value == null ? 'null' : value.toString()) + ' is not in: \"").append(this.collection.toString()).append("\"');").dedent();
transpiler.dedent().append("}").newLine();
transpiler.flush();
};
exports.MatchingCollectionConstraint = MatchingCollectionConstraint;
/***/ }),
/* 159 */
/***/ (function(module, exports, __webpack_require__) {
var InvalidDataError = __webpack_require__(132).InvalidDataError;
var Identifier = __webpack_require__(73).Identifier;
var Variable = __webpack_require__(91).Variable;
var AnyType = __webpack_require__(74).AnyType;
function MatchingExpressionConstraint(expression) {
this.expression = expression;
return this;
}
MatchingExpressionConstraint.prototype.checkValue = function(context, value) {
var child = context.newChildContext();
var id = new Identifier("value");
child.registerValue(new Variable(id, AnyType.instance));
child.setValue(id, value);
var test = this.expression.interpret(child);
if(!test.value) {
throw new InvalidDataError((value == null ? "null" : value.toString()) + " does not match:" + this.expression.toString());
}
};
MatchingExpressionConstraint.prototype.toDialect = function(writer) {
writer.append(" matching ");
this.expression.toDialect(writer);
}
MatchingExpressionConstraint.prototype.declare = function(transpiler, name, type) {
var transpiler = transpiler.newChildTranspiler();
var id = new Identifier("value");
transpiler.context.registerValue(new Variable(id, type));
this.expression.declare(transpiler);
this.transpile = function(transpiler) { this.transpileChecker(transpiler, name, type); };
transpiler.declare(this);
};
MatchingExpressionConstraint.prototype.transpileChecker = function(transpiler, name, type) {
transpiler.append("function $check_").append(name).append("(value) {").indent();
transpiler = transpiler.newChildTranspiler();
var id = new Identifier("value");
transpiler.context.registerValue(new Variable(id, type));
transpiler.append("if(");
this.expression.transpile(transpiler);
transpiler.append(")").indent();
transpiler.append("return value;").dedent();
transpiler.append("else").indent();
transpiler.append("throw new IllegalValueError((value == null ? 'null' : value.toString()) + ' does not match: \"").append(this.expression.toString()).append("\"');").dedent();
transpiler.dedent().append("}").newLine();
transpiler.flush();
};
exports.MatchingExpressionConstraint = MatchingExpressionConstraint;
/***/ }),
/* 160 */
/***/ (function(module, exports, __webpack_require__) {
exports.VariableInstance = __webpack_require__(161).VariableInstance;
exports.MemberInstance = __webpack_require__(167).MemberInstance;
exports.ItemInstance = __webpack_require__(169).ItemInstance;
/***/ }),
/* 161 */
/***/ (function(module, exports, __webpack_require__) {
var Variable = __webpack_require__(91).Variable;
var NullValue = __webpack_require__(108).NullValue;
var CodeType = __webpack_require__(126).CodeType;
var DocumentType = __webpack_require__(162).DocumentType;
function VariableInstance(id) {
this.id = id;
return this;
}
Object.defineProperty(VariableInstance.prototype, "name", {
get : function() {
return this.id.name;
}
});
VariableInstance.prototype.toDialect = function(writer, expression) {
if(expression!=null) try {
var type = expression.check(writer.context);
var actual = writer.context.getRegisteredValue(this.name);
if(actual==null)
writer.context.registerValue(new Variable(this.id, type));
} catch(e) {
// console.log(e.stack);
// TODO warning
}
writer.append(this.name);
};
VariableInstance.prototype.toString = function() {
return this.name;
};
VariableInstance.prototype.check = function(context) {
var actual = context.getRegisteredValue(this.id);
return actual.type;
};
VariableInstance.prototype.checkAssignValue = function(context, valueType, section) {
var actual = context.getRegisteredValue(this.id);
if(actual==null) {
context.registerValue(new Variable(this.id, valueType));
return valueType;
} else {
// need to check type compatibility
actual.type.checkAssignableFrom(context, valueType, section);
return actual.type;
}
};
VariableInstance.prototype.checkAssignMember = function(context, name, valueType, section) {
var actual = context.getRegisteredValue(this.id);
if(actual==null)
context.problemListener.reportUnknownVariable(section, this.id);
return valueType;
};
VariableInstance.prototype.checkAssignItem = function(context, itemType, valueType, section) {
var actual = context.getRegisteredValue(this.id);
if(actual==null)
context.problemListener.reportUnknownVariable(section, this.id);
var parentType = actual.getType(context);
return parentType.checkItem(context, itemType);
};
VariableInstance.prototype.assign = function(context, expression) {
var value = expression.interpret(context);
if(context.getRegisteredValue(this.name)==null) {
var type = expression.check(context);
context.registerValue(new Variable(this.id, type));
}
context.setValue(this.id, value);
};
VariableInstance.prototype.interpret = function(context) {
return context.getValue(this.id);
};
VariableInstance.prototype.declareAssign = function(transpiler, expression) {
if(transpiler.context.getRegisteredValue(this.name)==null) {
var valueType = expression.check(transpiler.context);
transpiler.context.registerValue(new Variable(this.id, valueType));
// Code expressions need to be interpreted as part of full check
if (valueType === CodeType.instance) {
transpiler.context.setValue(this.id, expression.interpret(transpiler.context));
}
}
expression.declare(transpiler);
};
VariableInstance.prototype.transpileAssign = function(transpiler, expression) {
if(transpiler.context.getRegisteredValue(this.name)==null) {
var type = expression.check(transpiler.context);
transpiler.context.registerValue(new Variable(this.id, type));
transpiler.append("var ");
}
var context = transpiler.context.contextForValue(this.id.name);
if(context.instanceType) {
context.instanceType.transpileInstance(transpiler);
transpiler.append(".setMember('").append(this.name).append("', ");
expression.transpile(transpiler);
transpiler.append(")");
} else {
transpiler.append(this.name);
transpiler.append(" = ");
expression.transpile(transpiler);
}
};
VariableInstance.prototype.transpileAssignParent = function(transpiler) {
transpiler.append(this.name);
};
VariableInstance.prototype.declare = function(transpiler) {
// nothing to do
};
VariableInstance.prototype.transpile = function(transpiler) {
transpiler.append(this.name);
};
exports.VariableInstance = VariableInstance;
/***/ }),
/* 162 */
/***/ (function(module, exports, __webpack_require__) {
var MissingType = __webpack_require__(163).MissingType;
var NativeType = __webpack_require__(67).NativeType;
var TextType = __webpack_require__(135).TextType;
var NullType = __webpack_require__(109).NullType;
var AnyType = __webpack_require__(74).AnyType;
var Identifier = __webpack_require__(73).Identifier;
var TextLiteral = __webpack_require__(133).TextLiteral;
var TextValue = __webpack_require__(78).TextValue;
var IntegerValue = __webpack_require__(80).IntegerValue;
var MethodDeclarationMap = null;
var ExpressionValue = __webpack_require__(164).ExpressionValue;
var DocumentValue = null;
var Document = __webpack_require__(165).Document;
var List = __webpack_require__(136).List;
var ArgumentAssignmentList = null;
var ArgumentAssignment = null;
var MethodCall = __webpack_require__(95).MethodCall;
var MethodSelector = __webpack_require__(100).MethodSelector;
var compareValues = __webpack_require__(51).compareValues;
exports.resolve = function() {
MethodDeclarationMap = __webpack_require__(55).MethodDeclarationMap;
ArgumentAssignmentList = __webpack_require__(148).ArgumentAssignmentList;
ArgumentAssignment = __webpack_require__(150).ArgumentAssignment;
DocumentValue = __webpack_require__(166).DocumentValue;
};
function DocumentType() {
NativeType.call(this, new Identifier("Document"));
return this;
}
DocumentType.prototype = Object.create(NativeType.prototype);
DocumentType.prototype.constructor = DocumentType;
DocumentType.prototype.withItemType = function(itemType) {
return this;
};
DocumentType.prototype.isMoreSpecificThan = function(context, other) {
if ((other instanceof NullType) || (other instanceof AnyType) || (other instanceof MissingType))
return true;
else
return NativeType.prototype.isMoreSpecificThan.call(this, context, other);
};
DocumentType.prototype.checkMember = function(context, section, name) {
return AnyType.instance;
};
DocumentType.prototype.convertJavaScriptValueToPromptoValue = function(context, value, returnType) {
if(value instanceof Document)
return new DocumentValue(value);
else
return NativeType.prototype.convertJavaScriptValueToPromptoValue.call(this, context, value, returnType);
};
DocumentType.prototype.declare = function(transpiler) {
transpiler.register(Document);
transpiler.register(List);
};
DocumentType.prototype.transpile = function(transpiler) {
transpiler.append('Document')
};
DocumentType.prototype.declareMember = function(transpiler, name) {
// nothing to do
};
DocumentType.prototype.transpileMember = function(transpiler, name) {
if ("text"!==name) {
transpiler.append(name);
} else {
transpiler.append("getText()");
}
};
DocumentType.prototype.transpileAssignMember = function(transpiler, name) {
transpiler.append(".getMember('").append(name).append("', true)");
};
DocumentType.prototype.transpileAssignMemberValue = function(transpiler, name, expression) {
transpiler.append(".setMember('").append(name).append("', ");
expression.transpile(transpiler);
transpiler.append(")");
};
DocumentType.prototype.transpileAssignItemValue = function(transpiler, item, expression) {
transpiler.append(".setItem(");
item.transpile(transpiler);
transpiler.append(", ");
expression.transpile(transpiler);
transpiler.append(")");
};
DocumentType.prototype.declareSorted = function(transpiler, key) {
if(key==null)
key = new TextLiteral('"key"');
var keyname = key.toString();
var decl = this.findGlobalMethod(transpiler.context, keyname, true);
if (decl != null) {
decl.declare(transpiler);
} else {
transpiler = transpiler.newDocumentTranspiler();
key.declare(transpiler);
}
};
DocumentType.prototype.transpileSorted = function(transpiler, desc, key) {
if(key==null)
key = new TextLiteral('"key"');
var keyname = key.toString();
var decl = this.findGlobalMethod(transpiler.context, keyname, false);
if (decl != null) {
this.transpileSortedByGlobalMethod(transpiler, desc, decl.getTranspiledName(transpiler.context));
} else if(key instanceof TextLiteral) {
this.transpileSortedByEntry(transpiler, desc, key);
} else {
this.transpileSortedByExpression(transpiler, desc, key);
}
};
DocumentType.prototype.transpileSortedByGlobalMethod = function(transpiler, desc, name) {
transpiler.append("function(o1, o2) { return ")
.append(name).append("(o1) === ").append(name).append("(o2)").append(" ? 0 : ")
.append(name).append("(o1) > ").append(name).append("(o2)").append(" ? ");
if(desc)
transpiler.append("-1 : 1; }");
else
transpiler.append("1 : -1; }");
};
DocumentType.prototype.transpileSortedByEntry = function(transpiler, descending, key) {
transpiler.append("function(o1, o2) { return ");
this.transpileEqualEntries(transpiler, key);
transpiler.append(" ? 0 : ");
this.transpileGreaterEntries(transpiler, key);
transpiler.append(" ? ");
if(descending)
transpiler.append("-1 : 1; }");
else
transpiler.append("1 : -1; }");
};
DocumentType.prototype.transpileEqualEntries = function(transpiler, key) {
transpiler.append("o1[");
key.transpile(transpiler);
transpiler.append("] === o2[");
key.transpile(transpiler);
transpiler.append("]");
};
DocumentType.prototype.transpileGreaterEntries = function(transpiler, key) {
transpiler.append("o1[");
key.transpile(transpiler);
transpiler.append("] > o2[");
key.transpile(transpiler);
transpiler.append("]");
};
DocumentType.prototype.transpileSortedByExpression = function(transpiler, descending, key) {
transpiler = transpiler.newDocumentTranspiler();
transpiler.append("function(o1, o2) { var v1 = (function() { return ");
key.transpile(transpiler);
transpiler.append("; }).bind(o1)(); var v2 = (function() { return ");
key.transpile(transpiler);
transpiler.append("; }).bind(o2)(); return v1===v2 ? 0 : v1 > v2 ? ");
if(descending)
transpiler.append("-1 : 1; }");
else
transpiler.append("1 : -1; }");
transpiler.flush();
};
DocumentType.prototype.checkItem = function(context, itemType) {
if(itemType===TextType.instance)
return AnyType.instance;
else
throw ("text");
};
DocumentType.prototype.transpileItem = function(transpiler, type, item) {
transpiler.append(".item(");
item.transpile(transpiler);
transpiler.append(")");
};
DocumentType.prototype.readJSONValue = function(context, node, parts) {
var instance = new DocumentValue();
for(key in node) {
var value = this.readJSONField(context, node[key], parts);
instance.setMember(context, key, value);
}
return instance;
};
DocumentType.prototype.readJSONField = function(context, node, parts) {
if(!node)
return NullValue.instance;
else if(typeof(node)===typeof(true))
return Boolean.ValueOf(node);
else if(typeof(node)===typeof(1))
return new IntegerValue(node);
else if(typeof(node)===typeof(1.0))
return new Decimal(node)
else if(typeof(node)===typeof(""))
return new TextValue(node)
else if(typeof(node)===typeof([]))
throw new Error("list");
else if(typeof(node)===typeof({}))
throw new Error("dict/object");
else
throw new Error(typeof(node).toString());
};
DocumentType.prototype.sort = function(context, list, desc, key) {
if (list.size() <= 1) {
return list;
}
key = key || null;
if (key == null) {
key = new TextLiteral('"key"');
}
var keyname = key.toString();
var call = this.findGlobalMethod(context, keyname, true);
if(call!=null) {
return this.sortByGlobalMethod(context, list, desc, call);
} else if(key instanceof TextLiteral) {
return this.sortByEntry(context, list, desc, key);
} else {
return this.sortByExpression(context, list, desc, key);
}
};
/* look for a method which takes Document as sole parameter */
DocumentType.prototype.findGlobalMethod = function(context, name, returnCall) {
var methods = context.getRegisteredDeclaration(name);
if(!(methods instanceof MethodDeclarationMap))
return null;
else if(!methods.protos[DocumentType.instance.name])
return null;
else if(returnCall) {
var exp = new ExpressionValue(this, new DocumentValue());
var arg = new ArgumentAssignment(null, exp);
var args = new ArgumentAssignmentList([arg]);
return new MethodCall(new MethodSelector(null, new Identifier(name)), args);
} else
return methods.protos[DocumentType.instance.name];
};
DocumentType.prototype.sortByGlobalMethod = function(context, list, desc, call) {
var self = this;
function cmp(o1, o2) {
var assignment = call.assignments[0];
assignment._expression = new ExpressionValue(self, o1);
var value1 = call.interpret(context);
assignment._expression = new ExpressionValue(self, o2);
var value2 = call.interpret(context);
return compareValues(value1, value2);
}
return NativeType.prototype.doSort(context, list, cmp, desc);
};
DocumentType.prototype.sortByEntry = function(context, list, desc, key) {
var name = key.value.getStorableData();
function cmp(o1, o2) {
var value1 = o1.getMemberValue(context, name);
var value2 = o2.getMemberValue(context, name);
return compareValues(value1, value2);
}
return NativeType.prototype.doSort(context, list, cmp, desc);
};
DocumentType.prototype.sortByExpression = function(context, list, desc, expression) {
function cmp(o1, o2) {
var co = context.newDocumentContext(o1, false);
var value1 = expression.interpret(co);
co = context.newDocumentContext(o2, false);
var value2 = expression.interpret(co);
return compareValues(value1, value2);
}
return NativeType.prototype.doSort(context, list, cmp, desc);
};
DocumentType.instance = new DocumentType();
exports.DocumentType = DocumentType;
/***/ }),
/* 163 */
/***/ (function(module, exports, __webpack_require__) {
var NativeType = __webpack_require__(67).NativeType;
var Identifier = __webpack_require__(73).Identifier;
function MissingType() {
NativeType.call(this, new Identifier("*"));
return this;
}
MissingType.prototype = Object.create(NativeType.prototype);
MissingType.prototype.constructor = MissingType;
MissingType.instance = new MissingType();
MissingType.prototype.isAssignableFrom = function(context, other) {
return true;
};
exports.MissingType = MissingType;
/***/ }),
/* 164 */
/***/ (function(module, exports, __webpack_require__) {
var Value = __webpack_require__(77).Value;
function ExpressionValue(type, value) {
Value.call(this, type);
this.value = value;
// make this sliceable
this.sliceable = value.slice ? value : null;
return this;
}
ExpressionValue.prototype = Object.create(Value.prototype);
ExpressionValue.prototype.constructor = ExpressionValue;
ExpressionValue.prototype.check = function(context) {
return this.type;
};
ExpressionValue.prototype.interpret = function(context) {
if(this.value.interpret) {
return this.value.interpret(context);
} else {
return this.value;
}
};
ExpressionValue.prototype.declare = function(transpiler) {
if(this.value.declare) {
return this.value.declare(transpiler);
}
};
ExpressionValue.prototype.transpile = function(transpiler) {
if (this.value.transpile) {
return this.value.transpile(transpiler);
}
;
};
ExpressionValue.prototype.toString = function() {
return this.value.toString();
};
ExpressionValue.prototype.toDialect = function(dialect) {
return this.value.toDialect(dialect);
};
exports.ExpressionValue = ExpressionValue;
/***/ }),
/* 165 */
/***/ (function(module, exports) {
function Document(entries) {
if(entries)
Object.getOwnPropertyNames(entries).forEach(function(name) { this[name] = entries[name]; }, this);
return this;
}
Document.prototype.toString = function() {
return JSON.stringify(this);
};
Document.prototype.getText = function() {
if(this.hasOwnProperty("text"))
return this.text;
else
return this.toString();
};
Document.prototype.getMember = function(name, create) {
if(this.hasOwnProperty(name))
return this[name];
else if(create) {
this[name] = new Document();
return this[name];
} else
return null;
};
Document.prototype.setMember = function(name, value) {
this[name] = value;
};
Document.prototype.setItem = function(index, value) {
this[index] = value;
};
Document.prototype.item = function(index) {
return this[index];
};
Document.prototype.toJson = function(json, instanceId, fieldName, withType, binaries) {
var values = {};
Object.getOwnPropertyNames(this).forEach(function (key) {
var value = this[key];
if(!value || typeof(value)===typeof(true) || typeof(value)===typeof(1) || typeof(value)===typeof(1.0) || typeof(value)===typeof(""))
values[key] = value;
else {
var id = this; // TODO create identifier
value.toJson(values, id, key, withType, binaries);
}
}, this);
var doc = withType ? {type: "Document", value: values} : values;
if (Array.isArray(json))
json.push(doc);
else
json[fieldName] = doc;
};
Document.prototype.fromJson = function(node, parts) {
for (key in node) {
this[key] = this.readJsonField(node[key], parts);
}
};
Document.prototype.readJsonField = function(node, parts) {
if(!node || typeof(node)===typeof(true) || typeof(node)===typeof(1) || typeof(node)===typeof(1.0) || typeof(node)===typeof(""))
return node;
else if(typeof(node)===typeof([]))
throw new Error("list");
else if(typeof(node)===typeof({}))
throw new Error("dict/object");
else
throw new Error(typeof(node).toString());
};
exports.Document = Document;
/***/ }),
/* 166 */
/***/ (function(module, exports, __webpack_require__) {
var NullValue = __webpack_require__(108).NullValue;
var Value = __webpack_require__(77).Value;
var TextValue = __webpack_require__(78).TextValue;
var DocumentType = __webpack_require__(162).DocumentType;
var Document = __webpack_require__(165).Document;
function DocumentValue(values) {
Value.call(this, DocumentType.instance);
this.mutable = true;
this.values = values || new Document();
return this;
}
DocumentValue.prototype = Object.create(Value.prototype);
DocumentValue.prototype.constructor = DocumentValue;
DocumentValue.prototype.getMemberNames = function() {
return Object.getOwnPropertyNames(this.values);
};
DocumentValue.prototype.getStorableData = function() {
return this.values;
};
DocumentValue.prototype.hasMember = function(name) {
return this.values.hasOwnProperty(name);
}
DocumentValue.prototype.getMemberValue = function(context, name, autoCreate) {
if(this.values.hasOwnProperty(name))
return this.values[name] || null;
else if("text" == name)
return new TextValue(this.toString());
else if(autoCreate) {
result = new DocumentValue();
this.values[name] = result;
return result;
} else
return NullValue.instance;
};
DocumentValue.prototype.setMember = function(context, name, value) {
this.values[name] = value;
};
DocumentValue.prototype.getItemInContext = function(context, index) {
if (index instanceof TextValue) {
// TODO autocreate
return this.values[index.value] || NullValue.instance;
} else {
throw new SyntaxError("No such item:" + index.toString())
}
};
DocumentValue.prototype.setItemInContext = function(context, index, value) {
if (index instanceof TextValue) {
this.values[index.value] = value
} else {
throw new SyntaxError("No such item:" + index.toString());
}
};
DocumentValue.prototype.equals = function(other) {
return other==this;
};
DocumentValue.prototype.toString = function() {
var binaries = {};
// create json type-aware object graph and collect binaries
var values = {}; // need a temporary parent
for (var key in this.values) {
var value = this.values[key];
if(typeof(value) === 'function')
continue;
if (value == null || value == undefined)
values[key] = null;
else {
var id = this; // TODO create identifier
value.toJson(null, values, id, key, false, binaries);
}
}
return JSON.stringify(values);
};
DocumentValue.prototype.toJson = function(context, json, instanceId, fieldName, withType, binaries) {
var values = {};
Object.getOwnPropertyNames(this.values).forEach(function(key) {
var value = this.values[key];
if (value == null || value == undefined)
values[key] = null;
else {
var id = this; // TODO create identifier
value.toJson(context, values, id, key, withType, binaries);
}
}, this);
var doc = withType ? { type: DocumentType.instance.name, value: values} : values;
if(Array.isArray(json))
json.push(doc);
else
json[fieldName] = doc;
};
DocumentValue.prototype.declare = function(transpiler) {
transpiler.require(Document);
};
exports.DocumentValue = DocumentValue;
/***/ }),
/* 167 */
/***/ (function(module, exports, __webpack_require__) {
var DocumentValue = __webpack_require__(166).DocumentValue;
var NotMutableError = __webpack_require__(168).NotMutableError;
function MemberInstance(id) {
this.parent = null;
this.id = id;
return this;
}
Object.defineProperty(MemberInstance.prototype, "name", {
get : function() {
return this.id.name;
}
});
MemberInstance.prototype.toString = function() {
return this.parent.toString() + "." + this.name;
};
MemberInstance.prototype.toDialect = function(writer) {
this.parent.toDialect(writer);
writer.append(".");
writer.append(this.name);
};
MemberInstance.prototype.interpret = function(context) {
var root = this.parent.interpret(context);
return root.getMemberValue(context, this.name, true);
};
MemberInstance.prototype.checkAssignValue = function(context, valueType, section) {
return this.parent.checkAssignMember(context, this.name, valueType, section);
};
MemberInstance.prototype.checkAssignMember = function(context, name, valueType, section) {
this.parent.checkAssignMember(context, this.name, section);
return valueType; // TODO
};
MemberInstance.prototype.checkAssignItem = function(context, itemType, valueType, section) {
return valueType; // TODO
};
MemberInstance.prototype.assign = function(context, expression) {
var root = this.parent.interpret(context);
if(!root.mutable)
throw new NotMutableError();
var value = expression.interpret(context);
root.setMember(context, this.name, value);
};
MemberInstance.prototype.check = function(context) {
var parentType = this.parent.check(context);
return parentType.checkMember(context, this.id, this.name);
};
MemberInstance.prototype.declare = function(transpiler) {
this.parent.declare(transpiler);
};
MemberInstance.prototype.transpile = function(transpiler) {
this.parent.transpile(transpiler);
transpiler.append(".").append(this.name);
};
MemberInstance.prototype.declareAssign = function(transpiler, expression) {
this.parent.declare(transpiler);
expression.declare(transpiler);
};
MemberInstance.prototype.transpileAssign = function(transpiler, expression) {
var parentType = this.parent.check(transpiler.context);
this.parent.transpileAssignParent(transpiler);
parentType.transpileAssignMemberValue(transpiler, this.name, expression);
};
MemberInstance.prototype.transpileAssignParent = function(transpiler) {
var parentType = this.parent.check(transpiler.context);
this.parent.transpileAssignParent(transpiler);
parentType.transpileAssignMember(transpiler, this.name);
};
exports.MemberInstance = MemberInstance;
/***/ }),
/* 168 */
/***/ (function(module, exports, __webpack_require__) {
var ExecutionError = __webpack_require__(89).ExecutionError;
function NotMutableError() {
ExecutionError.call(this);
return this;
}
NotMutableError.prototype = Object.create(ExecutionError.prototype);
NotMutableError.prototype.constructor = NotMutableError;
NotMutableError.prototype.getExpression = function(context) {
return context.getRegisteredValue("NOT_MUTABLE");
};
exports.NotMutableError = NotMutableError;
/***/ }),
/* 169 */
/***/ (function(module, exports, __webpack_require__) {
var InvalidDataError = __webpack_require__(132).InvalidDataError;
var NotMutableError = __webpack_require__(168).NotMutableError;
var IntegerType = __webpack_require__(83).IntegerType;
var AnyType = __webpack_require__(74).AnyType;
var BaseValueList = __webpack_require__(142).BaseValueList;
var IntegerValue = __webpack_require__(80).IntegerValue;
var Value = __webpack_require__(77).Value;
function ItemInstance(item) {
this.parent = null;
this.item = item;
return this;
}
ItemInstance.prototype.toString = function() {
return this.parent.toString() + "[" + this.item.toString() + "]";
};
ItemInstance.prototype.toDialect = function(writer) {
this.parent.toDialect(writer);
writer.append('[');
this.item.toDialect(writer);
writer.append(']');
}
ItemInstance.prototype.check = function(context) {
var parentType = this.parent.check(context);
var itemType = this.item.check(context);
return parentType.checkItem(context, itemType);
};
ItemInstance.prototype.checkAssignValue = function(context, valueType, section) {
var itemType = this.item.check(context);
return this.parent.checkAssignItem(context, itemType, valueType, section);
};
ItemInstance.prototype.checkAssignMember = function(context, name, valueType, section) {
return AnyType.instance
};
ItemInstance.prototype.checkAssignItem = function(context, itemType, valueType, section) {
return AnyType.instance
};
ItemInstance.prototype.assign = function(context, expression) {
var root = this.parent.interpret(context);
if(!root.mutable)
throw new NotMutableError();
var item = this.item.interpret(context);
var value = expression.interpret(context);
if (root.setItemInContext) {
root.setItemInContext(context, item, value);
} else {
throw new SyntaxError("Unknown item/key: " + typeof(item));
}
};
ItemInstance.prototype.interpret = function(context) {
var root = this.parent.interpret(context);
var item = this.item.interpret(context);
if (root.getItemInContext) {
return root.getItemInContext(context, item);
} else {
throw new SyntaxError("Unknown item/key: " + typeof(item));
}
};
ItemInstance.prototype.declare = function(transpiler) {
this.parent.declare(transpiler);
this.item.declare(transpiler);
};
ItemInstance.prototype.transpile = function(transpiler) {
this.parent.transpile(transpiler);
transpiler.append(".item(");
this.item.transpile(transpiler);
transpiler.append(")");
};
ItemInstance.prototype.declareAssign = function(transpiler, expression) {
this.parent.declare(transpiler);
this.item.declare(transpiler);
expression.declare(transpiler);
};
ItemInstance.prototype.transpileAssign = function(transpiler, expression) {
var parentType = this.parent.check(transpiler.context);
this.parent.transpileAssignParent(transpiler);
parentType.transpileAssignItemValue(transpiler, this.item, expression);
};
ItemInstance.prototype.transpileAssignParent = function(transpiler) {
this.parent.transpileAssignParent(transpiler);
transpiler.append(".getItem(");
this.item.transpile(transpiler);
transpiler.append(", true)");
};
exports.ItemInstance = ItemInstance;
/***/ }),
/* 170 */
/***/ (function(module, exports, __webpack_require__) {
exports.AttributeDeclaration = __webpack_require__(59).AttributeDeclaration;
exports.CategoryDeclaration = __webpack_require__(58).CategoryDeclaration;
exports.ConcreteCategoryDeclaration = __webpack_require__(57).ConcreteCategoryDeclaration;
exports.ConcreteWidgetDeclaration = __webpack_require__(171).ConcreteWidgetDeclaration;
exports.DeclarationList = __webpack_require__(172).DeclarationList;
exports.AbstractMethodDeclaration = __webpack_require__(176).AbstractMethodDeclaration;
exports.ConcreteMethodDeclaration = __webpack_require__(177).ConcreteMethodDeclaration;
exports.NativeMethodDeclaration = __webpack_require__(186).NativeMethodDeclaration;
exports.TestMethodDeclaration = __webpack_require__(174).TestMethodDeclaration;
exports.EnumeratedCategoryDeclaration = __webpack_require__(56).EnumeratedCategoryDeclaration;
exports.SingletonCategoryDeclaration = __webpack_require__(303).SingletonCategoryDeclaration;
exports.NativeCategoryDeclaration = __webpack_require__(304).NativeCategoryDeclaration;
exports.NativeResourceDeclaration = __webpack_require__(321).NativeResourceDeclaration;
exports.NativeWidgetDeclaration = __webpack_require__(324).NativeWidgetDeclaration;
exports.EnumeratedNativeDeclaration = __webpack_require__(173).EnumeratedNativeDeclaration;
exports.OperatorMethodDeclaration = __webpack_require__(325).OperatorMethodDeclaration;
exports.GetterMethodDeclaration = __webpack_require__(326).GetterMethodDeclaration;
exports.SetterMethodDeclaration = __webpack_require__(327).SetterMethodDeclaration;
exports.NativeGetterMethodDeclaration = __webpack_require__(328).NativeGetterMethodDeclaration;
exports.NativeSetterMethodDeclaration = __webpack_require__(329).NativeSetterMethodDeclaration;
exports.DispatchMethodDeclaration = __webpack_require__(330).DispatchMethodDeclaration;
exports.BuiltInMethodDeclaration = __webpack_require__(145).BuiltInMethodDeclaration;
__webpack_require__(146).resolve();
__webpack_require__(57).resolve();
__webpack_require__(330).resolve();
__webpack_require__(145).resolve();
/***/ }),
/* 171 */
/***/ (function(module, exports, __webpack_require__) {
var ConcreteCategoryDeclaration = __webpack_require__(57).ConcreteCategoryDeclaration;
var CategoryType = __webpack_require__(93).CategoryType;
var IdentifierList = __webpack_require__(123).IdentifierList;
function ConcreteWidgetDeclaration(name, derivedFrom, methods) {
derivedFrom = derivedFrom==null ? null : new IdentifierList(derivedFrom);
ConcreteCategoryDeclaration.call(this, name, null, derivedFrom, methods);
return this;
}
ConcreteWidgetDeclaration.prototype = Object.create(ConcreteCategoryDeclaration.prototype);
ConcreteWidgetDeclaration.prototype.constructor = ConcreteWidgetDeclaration;
ConcreteWidgetDeclaration.prototype.isWidget = function(context) {
return true;
};
ConcreteWidgetDeclaration.prototype.getDeclarationType = function() {
return "Widget";
};
ConcreteWidgetDeclaration.prototype.categoryTypeToEDialect = function(writer) {
if(this.derivedFrom==null)
writer.append("widget");
else
this.derivedFrom.toDialect(writer, true);
};
ConcreteWidgetDeclaration.prototype.categoryTypeToODialect = function(writer) {
writer.append("widget");
};
ConcreteWidgetDeclaration.prototype.categoryTypeToMDialect = function(writer) {
writer.append("widget");
};
ConcreteWidgetDeclaration.prototype.declareRoot = function(transpiler) {
// nothing to do
};
ConcreteWidgetDeclaration.prototype.transpile = function(transpiler) {
var parent = this.derivedFrom!=null && this.derivedFrom.length>0 ? this.derivedFrom[0] : null;
transpiler.append("function ").append(this.name).append("() {");
transpiler.indent();
this.transpileGetterSetterAttributes(transpiler);
this.transpileSuperConstructor(transpiler);
this.transpileLocalAttributes(transpiler);
transpiler.append("return this;");
transpiler.dedent();
transpiler.append("}");
transpiler.newLine();
if(parent!=null)
transpiler.append(this.name).append(".prototype = Object.create(").append(parent.toString()).append(".prototype);").newLine();
else
transpiler.append(this.name).append(".prototype = Object.create(React.Component.prototype);").newLine();
transpiler.append(this.name).append(".prototype.constructor = ").append(this.name).append(";").newLine();
transpiler = transpiler.newInstanceTranspiler(new CategoryType(this.id));
this.transpileLoaders(transpiler);
this.transpileMethods(transpiler);
this.transpileGetterSetters(transpiler);
transpiler.flush();
return true;
};
ConcreteWidgetDeclaration.prototype.transpileRootConstructor = function(transpiler) {
return transpiler.append("React.Component.call(this);");
};
exports.ConcreteWidgetDeclaration = ConcreteWidgetDeclaration;
/***/ }),
/* 172 */
/***/ (function(module, exports, __webpack_require__) {
var ObjectList = __webpack_require__(52).ObjectList;
var AttributeDeclaration = __webpack_require__(59).AttributeDeclaration;
var CategoryDeclaration = __webpack_require__(58).CategoryDeclaration;
var EnumeratedNativeDeclaration = __webpack_require__(173).EnumeratedNativeDeclaration;
var BaseMethodDeclaration = __webpack_require__(146).BaseMethodDeclaration;
var TestMethodDeclaration = __webpack_require__(174).TestMethodDeclaration;
function DeclarationList(items, item) {
items = items || [];
ObjectList.call(this, items);
item = item || null;
if(item!==null) {
this.add(item);
}
return this;
}
DeclarationList.prototype = Object.create(ObjectList.prototype);
DeclarationList.prototype.constructor = DeclarationList;
DeclarationList.prototype.register = function(context) {
this.registerAttributes(context);
this.registerCategories(context);
this.registerEnumerated(context);
this.registerMethods(context);
this.registerTests(context);
};
DeclarationList.prototype.registerAttributes = function(context) {
this.forEach(function (decl) {
if(decl instanceof AttributeDeclaration)
decl.register(context);
});
};
DeclarationList.prototype.registerCategories = function(context) {
this.forEach(function (decl) {
if(decl instanceof CategoryDeclaration)
decl.register(context);
});
};
DeclarationList.prototype.registerEnumerated = function(context) {
this.forEach(function (decl) {
if(decl instanceof EnumeratedNativeDeclaration)
decl.register(context);
});
};
DeclarationList.prototype.registerMethods = function(context) {
this.forEach(function (decl) {
if(decl instanceof BaseMethodDeclaration)
decl.register(context);
});
};
DeclarationList.prototype.registerTests = function(context) {
this.forEach(function (decl) {
if(decl instanceof TestMethodDeclaration)
decl.register(context);
});
};
DeclarationList.prototype.unregister = function(context) {
this.forEach(function(decl) {
decl.unregister(context);
});
};
DeclarationList.prototype.check = function(context) {
this.forEach(function(decl) {
decl.check(context, true);
});
};
DeclarationList.prototype.toDialect = function(writer) {
this.forEach(function(decl) {
if(decl.comments) {
decl.comments.forEach(function (cmt) {
cmt.toDialect(writer);
});
}
if(decl.annotations) {
decl.annotations.forEach(function (ann) {
ann.toDialect(writer);
});
}
decl.toDialect(writer);
writer.newLine();
});
};
exports.DeclarationList = DeclarationList;
/***/ }),
/* 173 */
/***/ (function(module, exports, __webpack_require__) {
var BaseDeclaration = __webpack_require__(60).BaseDeclaration;
var EnumeratedNativeType = __webpack_require__(70).EnumeratedNativeType;
var List = __webpack_require__(136).List;
function EnumeratedNativeDeclaration(id, derivedFrom, symbols) {
BaseDeclaration.call(this, id);
this.type = new EnumeratedNativeType(id, derivedFrom);
this.symbols = symbols || [];
this.symbols.forEach(function (symbol) {
symbol.type = this.type;
}, this);
return this;
}
EnumeratedNativeDeclaration.prototype = Object.create(BaseDeclaration.prototype);
EnumeratedNativeDeclaration.prototype.constructor = EnumeratedNativeDeclaration;
EnumeratedNativeDeclaration.prototype.getDeclarationType = function() {
return "Enumerated";
};
EnumeratedNativeDeclaration.prototype.unregister = function(context) {
context.unregisterDeclaration (this);
this.symbols.forEach(function(symbol) {
symbol.unregister(context);
});
};
EnumeratedNativeDeclaration.prototype.toDialect = function(writer) {
writer.toDialect(this);
};
EnumeratedNativeDeclaration.prototype.toMDialect = function(writer) {
writer.append("enum ").append(this.name).append('(');
this.type.derivedFrom.toDialect(writer);
writer.append("):").newLine().indent();
this.symbols.forEach(function(symbol) {
symbol.toDialect(writer);
writer.newLine();
});
writer.dedent();
}
EnumeratedNativeDeclaration.prototype.toODialect = function(writer) {
writer.append("enumerated ").append(this.name).append('(');
this.type.derivedFrom.toDialect(writer);
writer.append(") {").newLine().indent();
this.symbols.forEach(function(symbol) {
symbol.toDialect(writer);
writer.append(";").newLine();
});
writer.dedent().append("}").newLine();
}
EnumeratedNativeDeclaration.prototype.toEDialect = function(writer) {
writer.append("define ").append(this.name).append(" as enumerated ");
this.type.derivedFrom.toDialect(writer);
writer.append(" with symbols:").newLine().indent();
this.symbols.forEach(function(symbol) {
symbol.toDialect(writer);
writer.newLine();
});
writer.dedent();
};
EnumeratedNativeDeclaration.prototype.register = function(context) {
context.registerDeclaration(this);
this.symbols.forEach(function(symbol) {
symbol.register(context);
});
};
EnumeratedNativeDeclaration.prototype.check = function(context, isStart) {
this.symbols.forEach(function(symbol) {
symbol.check(context);
});
return this.type;
};
EnumeratedNativeDeclaration.prototype.transpile = function(transpiler) {
transpiler.append("function " + this.name + "(name, value) { this.name = name; this.value = value; return this; };").newLine();
transpiler.append(this.name).append(".prototype.toString = function() { return this.name; };").newLine();
this.symbols.forEach(function(symbol) {symbol.initialize(transpiler);});
var names = this.symbols.map(function(symbol) { return symbol.name; });
transpiler.append(this.name).append(".symbols = new List(false, [").append(names.join(", ")).append("]);");
};
EnumeratedNativeDeclaration.prototype.getType = function(context) {
return this.type;
};
EnumeratedNativeDeclaration.prototype.declare = function(transpiler) {
transpiler.require(List);
};
exports.EnumeratedNativeDeclaration = EnumeratedNativeDeclaration;
/***/ }),
/* 174 */
/***/ (function(module, exports, __webpack_require__) {
/* WEBPACK VAR INJECTION */(function(process) {var isNodeJs = typeof window === 'undefined' && typeof importScripts === 'undefined';
var BaseDeclaration = __webpack_require__(60).BaseDeclaration;
var Identifier = __webpack_require__(73).Identifier;
var PromptoError = __webpack_require__(64).PromptoError;
var VoidType = __webpack_require__(153).VoidType;
function TestMethodDeclaration(id, stmts, exps, error) {
BaseDeclaration.call(this, id);
this.statements = stmts;
this.assertions = exps;
this.error = error;
return this;
}
TestMethodDeclaration.prototype = Object.create(BaseDeclaration.prototype);
TestMethodDeclaration.prototype.constructor = TestMethodDeclaration;
TestMethodDeclaration.prototype.getDeclarationType = function() {
return "Test";
};
TestMethodDeclaration.prototype.cleanId = function() {
var cleanId = this.name.replace(/\W/g,'_');
return cleanId.substring(1, cleanId.length - 1);
};
TestMethodDeclaration.prototype.declare = function(transpiler) {
transpiler.declare(this);
transpiler = transpiler.newLocalTranspiler();
this.statements.declare(transpiler);
if(this.assertions)
this.assertions.declare(transpiler);
if(this.error)
this.error.declare(transpiler);
};
TestMethodDeclaration.prototype.transpile = function(transpiler) {
transpiler = transpiler.newLocalTranspiler();
if (this.error)
this.transpileExpectedError(transpiler);
else
this.transpileAssertions(transpiler);
transpiler.flush();
};
TestMethodDeclaration.prototype.transpileAssertions = function(transpiler) {
transpiler.append("function ").append(this.cleanId()).append("() {");
transpiler.indent();
transpiler.append("try {");
transpiler.indent();
this.statements.transpile(transpiler);
transpiler.append("var success = true;").newLine();
this.assertions.forEach(function (assertion) {
transpiler.append("if(");
assertion.transpile(transpiler);
transpiler.append(")").indent();
transpiler.append("success &= true;").dedent();
transpiler.append("else {").indent();
transpiler.append("success = false;").newLine();
transpiler.printTestName(this.name).append('failed while verifying: ');
transpiler.escape();
transpiler.append(assertion.getExpected(transpiler.context, this.dialect, transpiler.escapeMode));
transpiler.unescape();
transpiler.append(", found: ' + ");
transpiler.escape();
assertion.transpileFound(transpiler, this.dialect);
transpiler.unescape();
transpiler.append(");");
transpiler.dedent();
transpiler.append("}").newLine();
}, this);
transpiler.append("if (success)").indent().printTestName(this.name).append("successful');").dedent();
transpiler.dedent();
transpiler.append("} catch (e) {");
transpiler.indent();
transpiler.printTestName(this.name).append("failed with error: ' + e.name);");
transpiler.append("process.stderr.write(e.stack);").newLine();
transpiler.dedent();
transpiler.append("}");
transpiler.dedent();
transpiler.append("}");
transpiler.newLine();
transpiler.flush();
};
var NativeErrorNames = {
DIVIDE_BY_ZERO: "DivideByZeroError",
INDEX_OUT_OF_RANGE: RangeError.name,
NULL_REFERENCE: ReferenceError.name,
NOT_MUTABLE: "NotMutableError",
NOT_STORABLE: "NotStorableError",
READ_WRITE: "ReadWriteError"
};
TestMethodDeclaration.prototype.transpileExpectedError = function(transpiler) {
transpiler.append("function ").append(this.cleanId()).append("() {");
transpiler.indent();
transpiler.append("try {");
transpiler.indent();
this.statements.transpile(transpiler);
transpiler.printTestName(this.name).append("failed while expecting: ").append(this.error.name).append(", found: no error');");
transpiler.dedent();
transpiler.append("} catch (e) {");
transpiler.indent();
transpiler.append("if(e instanceof ").append(NativeErrorNames[this.error.name]).append(") {").indent();
transpiler.printTestName(this.name).append("successful');").dedent();
transpiler.append("} else {").indent();
transpiler.printTestName(this.name).append('failed while expecting: ').append(this.error.name).append(", found: ' + translateError(e));").dedent();
transpiler.append("}");
transpiler.dedent();
transpiler.append("}");
transpiler.dedent();
transpiler.append("}");
transpiler.newLine();
transpiler.flush();
};
TestMethodDeclaration.prototype.check = function(context, isStart) {
context = context.newLocalContext();
this.statements.forEach(function(s) {
this.checkStatement(context, s);
}, this);
if(this.assertions!=null) {
this.assertions.forEach(function (a) {
context = a.check(context);
}, this);
}
return VoidType.instance;
};
TestMethodDeclaration.prototype.checkStatement = function(context, statement) {
var type = statement.check(context);
if(type!=null && type!=VoidType.instance) // null indicates SyntaxError
context.problemListener.reportIllegalReturn(statement);
};
TestMethodDeclaration.prototype.register = function(context) {
context.registerTestDeclaration (this);
};
TestMethodDeclaration.prototype.unregister = function(context) {
context.unregisterTestDeclaration (this);
};
TestMethodDeclaration.prototype.getType = function(context) {
return VoidType.instance;
};
TestMethodDeclaration.prototype.interpret = function(context)
{
if (this.interpretBody (context)) {
this.interpretNoError (context);
this.interpretAsserts (context);
}
};
TestMethodDeclaration.prototype.interpretNoError = function(context)
{
// we land here only if no error was raised
if (this.error != null)
this.printMissingError (context, this.error.name, "no error");
};
TestMethodDeclaration.prototype.interpretAsserts = function(context)
{
if (this.assertions == null)
return;
context.enterMethod (this);
try {
var success = true;
this.assertions.forEach(function(a) {
success &= a.interpretAssert (context, this);
}, this);
if (success)
this.printSuccess (context);
} finally {
context.leaveMethod (this);
}
};
TestMethodDeclaration.print = function(msg) {
if(isNodeJs)
process.stdout.write(msg);
else
console.log(msg);
};
TestMethodDeclaration.prototype.printMissingError = function(context, expected, actual)
{
var msg = this.name + " test failed while expecting: " + expected + ", found: " + actual;
TestMethodDeclaration.print(msg);
};
TestMethodDeclaration.prototype.printFailedAssertion = function(context, expected, actual)
{
var msg = this.name + " test failed while verifying: " + expected + ", found: " + actual;
TestMethodDeclaration.print(msg);
};
TestMethodDeclaration.prototype.printSuccess = function(context)
{
var msg = this.name + " test successful";
TestMethodDeclaration.print(msg);
};
TestMethodDeclaration.prototype.interpretBody = function(context)
{
context.enterMethod (this);
try {
this.statements.interpret (context);
return true;
} catch (e) {
if(e instanceof PromptoError) {
this.interpretError(context, e);
// no more to execute
return false;
} else
throw e;
} finally {
context.leaveMethod (this);
}
};
TestMethodDeclaration.prototype.interpretError = function(context, ex)
{
// help fix runtime issues by rethrowing non PromptoErrors
if(!ex.interpret)
throw ex;
var expectedError = this.error == null ? null : this.error.interpret (context);
var actual = ex.interpret (context, new Identifier("__test_error__"));
if (expectedError!=null && expectedError.equals (actual))
this.printSuccess (context);
else {
var actualName = actual.getMemberValue (context, "name").toString ();
var expectedName = this.error == null ? "SUCCESS" : this.error.name;
this.printMissingError (context, expectedName, actualName);
}
};
TestMethodDeclaration.prototype.toDialect = function(writer)
{
if (writer.isGlobalContext ())
writer = writer.newLocalWriter ();
writer.toDialect(this);
};
TestMethodDeclaration.prototype.toMDialect = function(writer)
{
writer.append ("def test ").append(this.name).append (" ():").newLine().indent ();
if(this.statements!=null)
this.statements.toDialect (writer);
writer.dedent().append("verifying:");
if (this.error != null) {
writer.append (" ");
this.error.toDialect (writer);
writer.newLine();
} else if(this.assertions!=null) {
writer.newLine().indent ();
this.assertions.forEach(function(a) {
a.toDialect (writer);
writer.newLine();
});
writer.dedent ();
}
};
TestMethodDeclaration.prototype.toEDialect = function(writer)
{
writer.append("define ").append(this.name).append(" as test method doing:").newLine().indent ();
if(this.statements!=null)
this.statements.toDialect (writer);
writer.dedent().append("and verifying");
if (this.error != null) {
writer.append(" ");
this.error.toDialect (writer);
writer.newLine();
} else if(this.assertions!=null) {
writer.append(":").newLine().indent ();
this.assertions.forEach(function(a) {
a.toDialect (writer);
writer.newLine();
});
writer.dedent ();
}
};
TestMethodDeclaration.prototype.toODialect = function(writer)
{
writer.append("test method ").append(this.name).append(" () {").newLine().indent ();
if(this.statements!=null)
this.statements.toDialect (writer);
writer.dedent().append("} verifying ");
if (this.error != null) {
this.error.toDialect (writer);
writer.append (";").newLine();
} else if(this.assertions!=null) {
writer.append ("{").newLine().indent ();
this.assertions.forEach(function(a) {
a.toDialect (writer);
writer.append(";").newLine();
});
writer.dedent().append("}").newLine();
}
};
exports.TestMethodDeclaration = TestMethodDeclaration;
/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(175)))
/***/ }),
/* 175 */
/***/ (function(module, exports) {
// shim for using process in browser
var process = module.exports = {};
// cached from whatever global is present so that test runners that stub it
// don't break things. But we need to wrap it in a try catch in case it is
// wrapped in strict mode code which doesn't define any globals. It's inside a
// function because try/catches deoptimize in certain engines.
var cachedSetTimeout;
var cachedClearTimeout;
function defaultSetTimout() {
throw new Error('setTimeout has not been defined');
}
function defaultClearTimeout () {
throw new Error('clearTimeout has not been defined');
}
(function () {
try {
if (typeof setTimeout === 'function') {
cachedSetTimeout = setTimeout;
} else {
cachedSetTimeout = defaultSetTimout;
}
} catch (e) {
cachedSetTimeout = defaultSetTimout;
}
try {
if (typeof clearTimeout === 'function') {
cachedClearTimeout = clearTimeout;
} else {
cachedClearTimeout = defaultClearTimeout;
}
} catch (e) {
cachedClearTimeout = defaultClearTimeout;
}
} ())
function runTimeout(fun) {
if (cachedSetTimeout === setTimeout) {
//normal enviroments in sane situations
return setTimeout(fun, 0);
}
// if setTimeout wasn't available but was latter defined
if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
cachedSetTimeout = setTimeout;
return setTimeout(fun, 0);
}
try {
// when when somebody has screwed with setTimeout but no I.E. maddness
return cachedSetTimeout(fun, 0);
} catch(e){
try {
// When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
return cachedSetTimeout.call(null, fun, 0);
} catch(e){
// same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
return cachedSetTimeout.call(this, fun, 0);
}
}
}
function runClearTimeout(marker) {
if (cachedClearTimeout === clearTimeout) {
//normal enviroments in sane situations
return clearTimeout(marker);
}
// if clearTimeout wasn't available but was latter defined
if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
cachedClearTimeout = clearTimeout;
return clearTimeout(marker);
}
try {
// when when somebody has screwed with setTimeout but no I.E. maddness
return cachedClearTimeout(marker);
} catch (e){
try {
// When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
return cachedClearTimeout.call(null, marker);
} catch (e){
// same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
// Some versions of I.E. have different rules for clearTimeout vs setTimeout
return cachedClearTimeout.call(this, marker);
}
}
}
var queue = [];
var draining = false;
var currentQueue;
var queueIndex = -1;
function cleanUpNextTick() {
if (!draining || !currentQueue) {
return;
}
draining = false;
if (currentQueue.length) {
queue = currentQueue.concat(queue);
} else {
queueIndex = -1;
}
if (queue.length) {
drainQueue();
}
}
function drainQueue() {
if (draining) {
return;
}
var timeout = runTimeout(cleanUpNextTick);
draining = true;
var len = queue.length;
while(len) {
currentQueue = queue;
queue = [];
while (++queueIndex < len) {
if (currentQueue) {
currentQueue[queueIndex].run();
}
}
queueIndex = -1;
len = queue.length;
}
currentQueue = null;
draining = false;
runClearTimeout(timeout);
}
process.nextTick = function (fun) {
var args = new Array(arguments.length - 1);
if (arguments.length > 1) {
for (var i = 1; i < arguments.length; i++) {
args[i - 1] = arguments[i];
}
}
queue.push(new Item(fun, args));
if (queue.length === 1 && !draining) {
runTimeout(drainQueue);
}
};
// v8 likes predictible objects
function Item(fun, array) {
this.fun = fun;
this.array = array;
}
Item.prototype.run = function () {
this.fun.apply(null, this.array);
};
process.title = 'browser';
process.browser = true;
process.env = {};
process.argv = [];
process.version = ''; // empty string to avoid regexp issues
process.versions = {};
function noop() {}
process.on = noop;
process.addListener = noop;
process.once = noop;
process.off = noop;
process.removeListener = noop;
process.removeAllListeners = noop;
process.emit = noop;
process.prependListener = noop;
process.prependOnceListener = noop;
process.listeners = function (name) { return [] }
process.binding = function (name) {
throw new Error('process.binding is not supported');
};
process.cwd = function () { return '/' };
process.chdir = function (dir) {
throw new Error('process.chdir is not supported');
};
process.umask = function() { return 0; };
/***/ }),
/* 176 */
/***/ (function(module, exports, __webpack_require__) {
var BaseMethodDeclaration = __webpack_require__(146).BaseMethodDeclaration;
var VoidType = __webpack_require__(153).VoidType;
var CodeArgument = __webpack_require__(125).CodeArgument;
function AbstractMethodDeclaration(id, args, returnType) {
BaseMethodDeclaration.call(this, id, args, returnType);
this.returnType = returnType || VoidType.instance;
return this;
}
AbstractMethodDeclaration.prototype = Object.create(BaseMethodDeclaration.prototype);
AbstractMethodDeclaration.prototype.constructor = AbstractMethodDeclaration;
AbstractMethodDeclaration.prototype.memberCheck = function(declaration, context) {
// TODO Auto-generated method stub
};
AbstractMethodDeclaration.prototype.check = function(context, isStart) {
if(this.args!=null) {
this.args.check(context);
}
if(isStart) {
var local = context.newLocalContext();
this.registerArguments(local);
}
return this.returnType;
};
AbstractMethodDeclaration.prototype.declare = function(transpiler) {
this.declareArguments(transpiler);
};
AbstractMethodDeclaration.prototype.transpile = function(transpiler) {
// nothing to do
};
AbstractMethodDeclaration.prototype.toMDialect = function(writer) {
writer.append("abstract def ");
writer.append(this.name);
writer.append(" (");
this.args.toDialect(writer);
writer.append(")");
if(this.returnType!=null && this.returnType!=VoidType.instance) {
writer.append("->");
this.returnType.toDialect(writer);
}
}
AbstractMethodDeclaration.prototype.toEDialect = function(writer) {
writer.append("define ");
writer.append(this.name);
writer.append(" as abstract method ");
this.args.toDialect(writer);
if(this.returnType!=null && this.returnType!=VoidType.instance) {
writer.append("returning ");
this.returnType.toDialect(writer);
}
};
AbstractMethodDeclaration.prototype.toODialect = function(writer) {
writer.append("abstract ");
if(this.returnType!=null && this.returnType!=VoidType.instance) {
this.returnType.toDialect(writer);
writer.append(" ");
}
writer.append("method ");
writer.append(this.name);
writer.append(" (");
this.args.toDialect(writer);
writer.append(");");
}
exports.AbstractMethodDeclaration = AbstractMethodDeclaration;
/***/ }),
/* 177 */
/***/ (function(module, exports, __webpack_require__) {
var BaseMethodDeclaration = __webpack_require__(146).BaseMethodDeclaration;
var VoidType = __webpack_require__(153).VoidType;
var DictionaryType = __webpack_require__(178).DictionaryType;
var TextType = __webpack_require__(135).TextType;
var CodeArgument = __webpack_require__(125).CodeArgument;
var CategoryArgument = __webpack_require__(122).CategoryArgument;
var StatementList = __webpack_require__(181).StatementList;
var DeclarationStatement = __webpack_require__(185).DeclarationStatement;
function ConcreteMethodDeclaration(id, args, returnType, statements) {
BaseMethodDeclaration.call(this, id, args, returnType);
this.statements = statements || new StatementList();
this.declarationOf = null;
this.statements.forEach(function(stmt) {
if(stmt instanceof DeclarationStatement)
stmt.declaration.closureOf = this;
}, this);
return this;
}
ConcreteMethodDeclaration.prototype = Object.create(BaseMethodDeclaration.prototype);
ConcreteMethodDeclaration.prototype.constructor = ConcreteMethodDeclaration;
ConcreteMethodDeclaration.prototype.checkMember = function(declaration, context) {
context = context.newInstanceContext(null, declaration.getType(context), false)
return this.checkChild(context);
};
ConcreteMethodDeclaration.prototype.check = function(context, isStart) {
if(this.canBeChecked(context)) {
return this.fullCheck(context, isStart);
} else {
return VoidType.instance;
}
};
ConcreteMethodDeclaration.prototype.canBeChecked = function(context) {
if(context.isGlobalContext()) {
return !this.mustBeCheckedInCallContext(context);
} else {
return true;
}
};
ConcreteMethodDeclaration.prototype.mustBeCheckedInCallContext = function(context) {
// if at least one argument is 'Code'
if(this.args===null) {
return false;
}
for(var i=0;i");
this.returnType.toDialect(writer);
}
writer.append(":").newLine().indent();
this.statements.toDialect(writer);
writer.dedent();
};
ConcreteMethodDeclaration.prototype.toEDialect = function(writer) {
writer.append("define ").append(this.name).append(" as method ");
this.args.toDialect(writer);
if(this.returnType!=null && this.returnType!=VoidType.instance) {
writer.append("returning ");
this.returnType.toDialect(writer);
writer.append(" ");
}
writer.append("doing:").newLine().indent();
this.statements.toDialect(writer);
writer.dedent();
};
ConcreteMethodDeclaration.prototype.toODialect = function(writer) {
if(this.returnType!=null && this.returnType!=VoidType.instance) {
this.returnType.toDialect(writer);
writer.append(" ");
}
writer.append("method ").append(this.name).append(" (");
this.args.toDialect(writer);
writer.append(") {").newLine().indent();
this.statements.toDialect(writer);
writer.dedent().append("}").newLine();
};
ConcreteMethodDeclaration.prototype.declare = function(transpiler) {
if(this.declaring)
return;
this.declaring = true;
try {
if (!this.memberOf) {
transpiler = transpiler.newLocalTranspiler();
transpiler.declare(this);
this.declareArguments(transpiler);
}
if(this.returnType)
this.returnType.declare(transpiler);
this.registerArguments(transpiler.context);
this.statements.declare(transpiler);
} finally {
this.declaring = false;
}
};
ConcreteMethodDeclaration.prototype.transpile = function(transpiler) {
this.registerArguments(transpiler.context);
this.registerCodeArguments(transpiler.context);
this.transpileProlog(transpiler);
this.statements.transpile(transpiler);
this.transpileEpilog(transpiler);
};
ConcreteMethodDeclaration.prototype.declareChild = function(transpiler) {
this.declareArguments(transpiler);
transpiler = transpiler.newChildTranspiler();
this.registerArguments(transpiler.context);
return this.statements.declare(transpiler);
};
ConcreteMethodDeclaration.prototype.registerCodeArguments = function(context) {
if(!this.codeArguments)
return;
Object.getOwnPropertyNames(this.codeArguments).forEach(function(name) {
var arg = this.codeArguments[name];
context.setValue(arg.id, arg.value);
}, this);
};
ConcreteMethodDeclaration.prototype.fullDeclare = function(transpiler, id) {
var declaration = new ConcreteMethodDeclaration(id, this.args, this.returnType, this.statements);
declaration.memberOf = this.memberOf;
transpiler.declare(declaration);
this.statements.declare(transpiler);
// remember code arguments
declaration.codeArguments = {};
this.args.filter(function(arg) {
return arg instanceof CodeArgument;
}).forEach(function(arg) {
declaration.codeArguments[arg.name] = { id: arg.id, value: transpiler.context.getValue(arg.id) };
});
};
ConcreteMethodDeclaration.prototype.locateSectionAtLine = function(line) {
return this.statements.locateSectionAtLine(line);
};
exports.ConcreteMethodDeclaration = ConcreteMethodDeclaration;
/***/ }),
/* 178 */
/***/ (function(module, exports, __webpack_require__) {
var Identifier = __webpack_require__(73).Identifier;
var ContainerType = __webpack_require__(65).ContainerType;
var BooleanType = __webpack_require__(72).BooleanType;
var IntegerType = __webpack_require__(83).IntegerType;
var TextType = __webpack_require__(135).TextType;
var SetType = __webpack_require__(144).SetType;
var ListType = __webpack_require__(71).ListType;
var EntryType = __webpack_require__(179).EntryType;
var List = __webpack_require__(136).List;
var StrictSet = __webpack_require__(85).StrictSet;
var Dictionary = __webpack_require__(180).Dictionary;
function DictionaryType(itemType) {
ContainerType.call(this, new Identifier(itemType.name + "<:>"), itemType);
this.itemType = itemType;
return this;
}
DictionaryType.prototype = Object.create(ContainerType.prototype);
DictionaryType.prototype.constructor = DictionaryType;
DictionaryType.prototype.withItemType = function(itemType) {
return new DictionaryType(itemType);
};
DictionaryType.prototype.getTranspiledName = function(context) {
return this.itemType.getTranspiledName(context) + "_dict";
};
DictionaryType.prototype.declare = function(transpiler) {
transpiler.require(Dictionary);
};
DictionaryType.prototype.isAssignableFrom = function(context, other) {
return ContainerType.prototype.isAssignableFrom.call(this, context, other)
|| ((other instanceof DictionaryType) && this.itemType.isAssignableFrom(context, other.itemType));
};
DictionaryType.prototype.equals = function(obj) {
if (obj == null) {
return false;
} else if (obj == this) {
return true;
} else if (!(obj instanceof DictionaryType)) {
return false;
} else {
return this.itemType.equals(obj.itemType);
}
};
DictionaryType.prototype.checkAdd = function(context, other, tryReverse) {
if(other instanceof DictionaryType && this.itemType.equals(other.itemType)) {
return this;
} else {
return ContainerType.prototype.checkAdd.call(this, context, other, tryReverse);
}
};
DictionaryType.prototype.declareAdd = function(transpiler, other, tryReverse, left, right) {
if(other instanceof DictionaryType && this.itemType.equals(other.itemType)) {
left.declare(transpiler);
right.declare(transpiler);
} else {
return ContainerType.prototype.declareAdd.call(this, transpiler, other, tryReverse, left, right);
}
};
DictionaryType.prototype.transpileAdd = function(transpiler, other, tryReverse, left, right) {
if(other instanceof DictionaryType && this.itemType.equals(other.itemType)) {
left.transpile(transpiler);
transpiler.append(".add(");
right.transpile(transpiler);
transpiler.append(")");
} else {
return ContainerType.prototype.transpileAdd.call(this, transpiler, other, tryReverse, left, right);
}
};
DictionaryType.prototype.checkContains = function(context, other) {
if(other==TextType.instance) {
return BooleanType.instance;
} else {
return ContainerType.prototype.checkContains.call(this, context, other);
}
};
DictionaryType.prototype.declareContains = function(transpiler, other, container, item) {
transpiler.require(StrictSet);
container.declare(transpiler);
item.declare(transpiler);
};
DictionaryType.prototype.transpileContains = function(transpiler, other, container, item) {
container.transpile(transpiler);
transpiler.append(".has(");
item.transpile(transpiler);
transpiler.append(")");
};
DictionaryType.prototype.checkContainsAllOrAny = function(context, other) {
return BooleanType.instance;
};
DictionaryType.prototype.declareContainsAllOrAny = function(transpiler, other, container, items) {
transpiler.require(StrictSet);
container.declare(transpiler);
items.declare(transpiler);
};
DictionaryType.prototype.transpileContainsAll = function(transpiler, other, container, items) {
container.transpile(transpiler);
transpiler.append(".hasAll(");
items.transpile(transpiler);
transpiler.append(")");
};
DictionaryType.prototype.transpileContainsAny = function(transpiler, other, container, items) {
container.transpile(transpiler);
transpiler.append(".hasAny(");
items.transpile(transpiler);
transpiler.append(")");
};
DictionaryType.prototype.checkItem = function(context, other, expression) {
if(other==TextType.instance) {
return this.itemType;
} else {
return ContainerType.prototype.checkItem.call(this, context, other, expression);
}
};
DictionaryType.prototype.declareItem = function(transpiler, itemType, item) {
// nothing to do
};
DictionaryType.prototype.transpileItem = function(transpiler, itemType, item) {
transpiler.append(".item(");
item.transpile(transpiler);
transpiler.append(")");
};
DictionaryType.prototype.transpileAssignItemValue = function(transpiler, item, expression) {
transpiler.append(".setItem(");
item.transpile(transpiler);
transpiler.append(", ");
expression.transpile(transpiler);
transpiler.append(")");
};
DictionaryType.prototype.checkIterator = function(context, source) {
return new EntryType(this.itemType);
};
DictionaryType.prototype.checkMember = function(context, section, name) {
if ("count"==name) {
return IntegerType.instance;
} else if("keys"==name) {
return new SetType(TextType.instance);
} else if ("values"==name) {
return new ListType(this.itemType);
} else {
return ContainerType.prototype.checkMember.call(this, context, section, name);
}
};
DictionaryType.prototype.declareMember = function(transpiler, name) {
if("keys"===name) {
transpiler.require(StrictSet);
} else if("values"==name) {
transpiler.require(List);
} else if ("count"!==name) {
ContainerType.prototype.declareMember.call(this, transpiler, name);
}
};
DictionaryType.prototype.transpileMember = function(transpiler, name) {
if ("count"===name) {
transpiler.append("length");
} else if("keys"===name || "values"==name) {
transpiler.append(name);
} else {
ContainerType.prototype.transpileMember.call(this, transpiler, name);
}
};
exports.DictionaryType = DictionaryType;
/***/ }),
/* 179 */
/***/ (function(module, exports, __webpack_require__) {
var BaseType = __webpack_require__(68).BaseType;
var BooleanType = __webpack_require__(72).BooleanType;
var TextType = __webpack_require__(135).TextType;
var Identifier = __webpack_require__(73).Identifier;
function EntryType(itemType) {
BaseType.call(this, new Identifier(itemType.name + "{}[]"));
this.itemType = itemType;
return this;
}
EntryType.prototype = Object.create(BaseType.prototype);
EntryType.prototype.constructor = EntryType;
EntryType.prototype.checkMember = function(context, section, name) {
if ("key"==name) {
return TextType.instance;
} else if ("value"==name) {
return this.itemType;
} else {
return BaseType.prototype.checkMember.call(this, context, section, name);
}
};
EntryType.prototype.declareMember = function(transpiler, name) {
if ("key"==name)
return;
else if ("value"==name)
this.itemType.declare(transpiler);
else
return BaseType.prototype.declareMember.call(this, transpiler, name);
};
EntryType.prototype.transpileMember = function(transpiler, name) {
transpiler.append(name);
};
exports.EntryType = EntryType;
/***/ }),
/* 180 */
/***/ (function(module, exports, __webpack_require__) {
var List = __webpack_require__(136).List;
var StrictSet = __webpack_require__(85).StrictSet;
function Dictionary(mutable, entries) {
if(entries)
Object.getOwnPropertyNames(entries).forEach(function(name) { this[name] = entries[name]; }, this);
this.mutable = mutable || false;
return this;
}
Object.defineProperty(Dictionary.prototype, "$keys", {
get : function() {
return Object.getOwnPropertyNames(this).filter(function(name) { return name!=="mutable"; });
}
});
Object.defineProperty(Dictionary.prototype, "length", {
get : function() {
return this.$keys.length;
}
});
Object.defineProperty(Dictionary.prototype, "keys", {
get : function() {
return new StrictSet(this.$keys);
}
});
Object.defineProperty(Dictionary.prototype, "values", {
get : function() {
var names = this.$keys.map(function(name) { return this[name]; }, this);
return new List(false, names);
}
});
Dictionary.prototype.iterator = function() {
var self = this;
var iter = this.keys.iterator();
return {
hasNext: iter.hasNext,
next: function() { var key = iter.next(); return {key: key, value: self[key] }; }
};
};
Dictionary.prototype.add = function(dict) {
var result = Object.assign({}, this, dict);
result.__proto__ = Dictionary.prototype;
return result;
}
Dictionary.prototype.toString = function() {
var vals = this.$keys.map(function (name) {
return '"' + name + '":' + this[name];
}, this);
return "<" + (vals.length ? vals.join(", ") : ':') + ">";
};
Dictionary.prototype.getText = Dictionary.prototype.toString;
Dictionary.prototype.equals = function(dict) {
var keys = this.$keys;
if (this.length != dict.length)
return false;
for (var i = 0; i < keys.length; i++) {
var key = keys[i];
var v1 = this[key] || null;
var v2 = dict[key] || null;
if (v1 === v2)
continue;
else if (v1 === null || v2 === null)
return false;
else if (v1.equals) {
if (!v1.equals(v2)) {
return false;
}
} else if (v2.equals) {
if (!v2.equals(v1)) {
return false;
}
} else
return false;
}
return true;
};
Dictionary.prototype.has = function(item) {
return this.hasOwnProperty(item);
};
Dictionary.prototype.hasAll = function(items) {
return this.keys.hasAll(items, true);
};
Dictionary.prototype.hasAny = function(item) {
return this.keys.hasAny(item, true);
};
Dictionary.prototype.item = function(item) {
if(!item)
throw new ReferenceError();
if(!this.hasOwnProperty(item))
throw new RangeError();
return this[item];
};
Dictionary.prototype.setItem = function (item, value) {
if(!this.mutable)
throw new NotMutableError();
else if(item==null)
throw new ReferenceError();
else
this[item] = value;
};
exports.Dictionary = Dictionary;
/***/ }),
/* 181 */
/***/ (function(module, exports, __webpack_require__) {
var ObjectList = __webpack_require__(52).ObjectList;
var TypeMap = __webpack_require__(182).TypeMap;
var VoidType = __webpack_require__(153).VoidType;
var Dialect = __webpack_require__(110).Dialect;
var PromptoError = __webpack_require__(64).PromptoError;
var NullReferenceError = __webpack_require__(107).NullReferenceError;
var SimpleStatement = __webpack_require__(96).SimpleStatement;
var NativeCall = __webpack_require__(183).NativeCall;
var JavaScriptNativeCall = __webpack_require__(184).JavaScriptNativeCall;
function StatementList(statement) {
ObjectList.call(this);
this.add(statement);
return this;
}
StatementList.prototype = Object.create(ObjectList.prototype);
StatementList.prototype.constructor = StatementList;
StatementList.prototype.check = function(context, returnType) {
return this.checkStatements(context, returnType, false);
};
StatementList.prototype.checkNative = function(context, returnType) {
return this.checkStatements(context, returnType, true);
};
StatementList.prototype.checkStatements = function(context, returnType, nativeOnly) {
if(returnType==VoidType.instance) {
if(nativeOnly) {
this.forEach(function (stmt) {
if(stmt instanceof JavaScriptNativeCall)
stmt.check(context);
});
} else {
this.forEach(function (stmt) {
stmt.check(context);
});
}
return VoidType.instance;
} else {
var section = null;
var types = new TypeMap();
if(nativeOnly) {
this.forEach(function (stmt) {
if(stmt instanceof JavaScriptNativeCall) {
var type = stmt.check(context);
if(!stmt.canReturn())
type = VoidType.instance;
if(type!==VoidType.instance) {
section = stmt;
types[type.name] = type;
}
}
});
} else {
this.forEach(function (stmt) {
var type = stmt.check(context);
if(type!==VoidType.instance) {
section = stmt;
types[type.name] = type;
}
});
}
return types.inferType(context, section);
}
};
StatementList.prototype.interpret = function(context) {
try {
return this.doInterpret(context);
} catch(e) {
if(e instanceof ReferenceError) {
throw new NullReferenceError();
} else {
if(!(e instanceof PromptoError))
console.trace();
throw e;
}
}
};
StatementList.prototype.interpretNative = function(context, returnType) {
try {
return this.doInterpretNative(context, returnType);
} catch(e) {
if(e instanceof ReferenceError) {
throw new NullReferenceError();
} else {
if(!(e instanceof PromptoError))
console.trace();
throw e;
}
}
};
StatementList.prototype.doInterpret = function(context) {
for(var i=0;i");
this.returnType.toDialect(writer);
}
writer.append(":").newLine().indent();
this.statements.toDialect(writer);
writer.dedent();
};
NativeMethodDeclaration.prototype.toODialect = function(writer) {
if(this.returnType!=null && this.returnType!=VoidType.instance) {
this.returnType.toDialect(writer);
writer.append(" ");
}
if(this.memberOf==null)
writer.append("native ");
writer.append("method ").append(this.name).append(" (");
this.args.toDialect(writer);
writer.append(") {").newLine().indent();
this.statements.forEach(function(stmt) {
stmt.toDialect(writer);
writer.newLine();
});
writer.dedent().append("}").newLine();
};
NativeMethodDeclaration.prototype.toEDialect = function(writer) {
writer.append("define ").append(this.name).append(" as ");
if(this.memberOf==null)
writer.append("native ");
writer.append("method ");
this.args.toDialect(writer);
if(this.returnType!=null && this.returnType!=VoidType.instance) {
writer.append("returning ");
this.returnType.toDialect(writer);
writer.append(" ");
}
writer.append("doing:").newLine().indent();
this.statements.toDialect(writer);
writer.dedent().newLine();
};
exports.NativeMethodDeclaration = NativeMethodDeclaration;
/***/ }),
/* 187 */
/***/ (function(module, exports, __webpack_require__) {
exports.Any = __webpack_require__(75).Any;
exports.Blob = __webpack_require__(188).Blob;
exports.Cursor = __webpack_require__(295).Cursor;
exports.DateTime = __webpack_require__(296).DateTime;
exports.Dictionary = __webpack_require__(180).Dictionary;
exports.Document = __webpack_require__(165).Document;
exports.List = __webpack_require__(136).List;
exports.LocalDate = __webpack_require__(298).LocalDate;
exports.LocalTime = __webpack_require__(299).LocalTime;
exports.Period = __webpack_require__(297).Period;
exports.Range = __webpack_require__(140).Range;
exports.StrictSet = __webpack_require__(85).StrictSet;
exports.Tuple = __webpack_require__(300).Tuple;
exports.UUID = __webpack_require__(301).UUID;
exports.Version = __webpack_require__(302).Version;
/***/ }),
/* 188 */
/***/ (function(module, exports, __webpack_require__) {
var utf8BufferToString = __webpack_require__(51).utf8BufferToString;
function Blob(data) {
this.data = data;
return this;
}
Blob.ofValue = function(value) {
var binaries = {};
// create json type-aware object graph and collect binaries
var values = {}; // need a temporary parent
value.toJson(values, null, "value", true, binaries);
var json = JSON.stringify(values["value"]);
// add it
binaries["value.json"] = stringToUtf8Buffer(json);
// zip binaries
var zipped = Blob.zipDatas(binaries)
// done
return new Blob(zipped);
};
Blob.zipDatas = function(datas) {
var JSZip = __webpack_require__(189);
var zip = new JSZip();
return zip.sync(function() {
for (var key in datas)
zip.file(key, datas[key]);
var result = null;
zip.generateAsync({type: "arraybuffer", compression: "DEFLATE"}).
then(function(value) {
result = value;
});
return result;
});
};
Blob.readParts = function(data) {
var JSZip = __webpack_require__(189);
var zip = new JSZip();
return zip.sync(function() {
var parts = {};
zip.loadAsync(data);
zip.forEach(function (entry) {
zip.file(entry)
.async("arraybuffer")
.then(function(value) {
parts[entry] = value;
});
});
return parts;
});
};
Blob.readValue = function(parts) {
var data = parts["value.json"] || null;
if (data == null)
throw new Error("Expecting a 'value.json' part!");
var json = utf8BufferToString(data);
return JSON.parse(json);
};
Blob.prototype.toDocument = function() {
var parts = Blob.readParts(this.data);
var value = Blob.readValue(parts);
var typeName = value["type"] || null;
if (typeName == null)
throw new Error("Expecting a 'type' field!");
var type = eval(typeName)
if (type != Document)
throw new Error("Expecting a Document type!");
value = value["value"] || null;
if (value == null)
throw new Error("Expecting a 'value' field!");
var instance = new type();
instance.fromJson(value, parts);
return instance;
};
exports.Blob = Blob;
/***/ }),
/* 189 */
/***/ (function(module, exports, __webpack_require__) {
'use strict';
/**
* Representation a of zip file in js
* @constructor
*/
function JSZip() {
// if this constructor is used without `new`, it adds `new` before itself:
if(!(this instanceof JSZip)) {
return new JSZip();
}
if(arguments.length) {
throw new Error("The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.");
}
// object containing the files :
// {
// "folder/" : {...},
// "folder/data.txt" : {...}
// }
this.files = {};
this.comment = null;
// Where we are in the hierarchy
this.root = "";
this.clone = function() {
var newObj = new JSZip();
for (var i in this) {
if (typeof this[i] !== "function") {
newObj[i] = this[i];
}
}
return newObj;
};
}
JSZip.prototype = __webpack_require__(190);
JSZip.prototype.loadAsync = __webpack_require__(286);
JSZip.support = __webpack_require__(193);
JSZip.defaults = __webpack_require__(256);
// TODO find a better way to handle this version,
// a require('package.json').version doesn't work with webpack, see #327
JSZip.version = "3.1.3";
JSZip.loadAsync = function (content, options) {
return new JSZip().loadAsync(content, options);
};
JSZip.external = __webpack_require__(247);
module.exports = JSZip;
/***/ }),
/* 190 */
/***/ (function(module, exports, __webpack_require__) {
'use strict';
var utf8 = __webpack_require__(191);
var utils = __webpack_require__(192);
var GenericWorker = __webpack_require__(250);
var StreamHelper = __webpack_require__(251);
var defaults = __webpack_require__(256);
var CompressedObject = __webpack_require__(257);
var ZipObject = __webpack_require__(262);
var generate = __webpack_require__(263);
var external = __webpack_require__(247);
var nodejsUtils = __webpack_require__(225);
var NodejsStreamInputAdapter = __webpack_require__(284);
var SyncPromise = __webpack_require__(285).SyncPromise;
/**
* Add a file in the current folder.
* @private
* @param {string} name the name of the file
* @param {String|ArrayBuffer|Uint8Array|Buffer} data the data of the file
* @param {Object} originalOptions the options of the file
* @return {Object} the new file.
*/
var fileAdd = function(name, data, originalOptions) {
// be sure sub folders exist
var dataType = utils.getTypeOf(data),
parent;
/*
* Correct options.
*/
var o = utils.extend(originalOptions || {}, defaults);
o.date = o.date || new Date();
if (o.compression !== null) {
o.compression = o.compression.toUpperCase();
}
if (typeof o.unixPermissions === "string") {
o.unixPermissions = parseInt(o.unixPermissions, 8);
}
// UNX_IFDIR 0040000 see zipinfo.c
if (o.unixPermissions && (o.unixPermissions & 0x4000)) {
o.dir = true;
}
// Bit 4 Directory
if (o.dosPermissions && (o.dosPermissions & 0x0010)) {
o.dir = true;
}
if (o.dir) {
name = forceTrailingSlash(name);
}
if (o.createFolders && (parent = parentFolder(name))) {
folderAdd.call(this, parent, true);
}
var isUnicodeString = dataType === "string" && o.binary === false && o.base64 === false;
if (!originalOptions || typeof originalOptions.binary === "undefined") {
o.binary = !isUnicodeString;
}
var isCompressedEmpty = (data instanceof CompressedObject) && data.uncompressedSize === 0;
if (isCompressedEmpty || o.dir || !data || data.length === 0) {
o.base64 = false;
o.binary = true;
data = "";
o.compression = "STORE";
dataType = "string";
}
/*
* Convert content to fit.
*/
var zipObjectContent = null;
if (data instanceof CompressedObject || data instanceof GenericWorker) {
zipObjectContent = data;
} else if (nodejsUtils.isNode && nodejsUtils.isStream(data)) {
zipObjectContent = new NodejsStreamInputAdapter(name, data);
} else {
zipObjectContent = utils.prepareContent(name, data, o.binary, o.optimizedBinaryString, o.base64);
}
var object = new ZipObject(name, zipObjectContent, o);
this.files[name] = object;
/*
TODO: we can't throw an exception because we have async promises
(we can have a promise of a Date() for example) but returning a
promise is useless because file(name, data) returns the JSZip
object for chaining. Should we break that to allow the user
to catch the error ?
return external.Promise.resolve(zipObjectContent)
.then(function () {
return object;
});
*/
};
/**
* Find the parent folder of the path.
* @private
* @param {string} path the path to use
* @return {string} the parent folder, or ""
*/
var parentFolder = function (path) {
if (path.slice(-1) === '/') {
path = path.substring(0, path.length - 1);
}
var lastSlash = path.lastIndexOf('/');
return (lastSlash > 0) ? path.substring(0, lastSlash) : "";
};
/**
* Returns the path with a slash at the end.
* @private
* @param {String} path the path to check.
* @return {String} the path with a trailing slash.
*/
var forceTrailingSlash = function(path) {
// Check the name ends with a /
if (path.slice(-1) !== "/") {
path += "/"; // IE doesn't like substr(-1)
}
return path;
};
/**
* Add a (sub) folder in the current folder.
* @private
* @param {string} name the folder's name
* @param {boolean=} [createFolders] If true, automatically create sub
* folders. Defaults to false.
* @return {Object} the new folder.
*/
var folderAdd = function(name, createFolders) {
createFolders = (typeof createFolders !== 'undefined') ? createFolders : defaults.createFolders;
name = forceTrailingSlash(name);
// Does this folder already exist?
if (!this.files[name]) {
fileAdd.call(this, name, null, {
dir: true,
createFolders: createFolders
});
}
return this.files[name];
};
/**
* Cross-window, cross-Node-context regular expression detection
* @param {Object} object Anything
* @return {Boolean} true if the object is a regular expression,
* false otherwise
*/
function isRegExp(object) {
return Object.prototype.toString.call(object) === "[object RegExp]";
}
// return the actual prototype of JSZip
var out = {
sync: function(cb) {
var saved_promise = external.Promise;
var saved_delay = external.delay;
try {
// convert async stuff to sync stuff
external.Promise = SyncPromise;
external.delay = function(callback, args, self) {
callback.apply(self || null, args || []);
};
// execute
return cb.call();
} finally {
external.delay = saved_delay;
external.Promise = saved_promise;
};
},
/**
* @see loadAsync
*/
load: function() {
throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.");
},
/**
* Call a callback function for each entry at this folder level.
* @param {Function} cb the callback function:
* function (relativePath, file) {...}
* It takes 2 arguments : the relative path and the file.
*/
forEach: function(cb) {
var filename, relativePath, file;
for (filename in this.files) {
if (!this.files.hasOwnProperty(filename)) {
continue;
}
file = this.files[filename];
relativePath = filename.slice(this.root.length, filename.length);
if (relativePath && filename.slice(0, this.root.length) === this.root) { // the file is in the current root
cb(relativePath, file); // TODO reverse the parameters ? need to be clean AND consistent with the filter search fn...
}
}
},
/**
* Filter nested files/folders with the specified function.
* @param {Function} search the predicate to use :
* function (relativePath, file) {...}
* It takes 2 arguments : the relative path and the file.
* @return {Array} An array of matching elements.
*/
filter: function(search) {
var result = [];
this.forEach(function (relativePath, entry) {
if (search(relativePath, entry)) { // the file matches the function
result.push(entry);
}
});
return result;
},
/**
* Add a file to the zip file, or search a file.
* @param {string|RegExp} name The name of the file to add (if data is defined),
* the name of the file to find (if no data) or a regex to match files.
* @param {String|ArrayBuffer|Uint8Array|Buffer} data The file data, either raw or base64 encoded
* @param {Object} o File options
* @return {JSZip|Object|Array} this JSZip object (when adding a file),
* a file (when searching by string) or an array of files (when searching by regex).
*/
file: function(name, data, o) {
if (arguments.length === 1) {
if (isRegExp(name)) {
var regexp = name;
return this.filter(function(relativePath, file) {
return !file.dir && regexp.test(relativePath);
});
}
else { // text
var obj = this.files[this.root + name];
if (obj && !obj.dir) {
return obj;
} else {
return null;
}
}
}
else { // more than one argument : we have data !
name = this.root + name;
fileAdd.call(this, name, data, o);
}
return this;
},
/**
* Add a directory to the zip file, or search.
* @param {String|RegExp} arg The name of the directory to add, or a regex to search folders.
* @return {JSZip} an object with the new directory as the root, or an array containing matching folders.
*/
folder: function(arg) {
if (!arg) {
return this;
}
if (isRegExp(arg)) {
return this.filter(function(relativePath, file) {
return file.dir && arg.test(relativePath);
});
}
// else, name is a new folder
var name = this.root + arg;
var newFolder = folderAdd.call(this, name);
// Allow chaining by returning a new object with this folder as the root
var ret = this.clone();
ret.root = newFolder.name;
return ret;
},
/**
* Delete a file, or a directory and all sub-files, from the zip
* @param {string} name the name of the file to delete
* @return {JSZip} this JSZip object
*/
remove: function(name) {
name = this.root + name;
var file = this.files[name];
if (!file) {
// Look for any folders
if (name.slice(-1) !== "/") {
name += "/";
}
file = this.files[name];
}
if (file && !file.dir) {
// file
delete this.files[name];
} else {
// maybe a folder, delete recursively
var kids = this.filter(function(relativePath, file) {
return file.name.slice(0, name.length) === name;
});
for (var i = 0; i < kids.length; i++) {
delete this.files[kids[i].name];
}
}
return this;
},
/**
* Generate the complete zip file
* @param {Object} options the options to generate the zip file :
* - compression, "STORE" by default.
* - type, "base64" by default. Values are : string, base64, uint8array, arraybuffer, blob.
* @return {String|Uint8Array|ArrayBuffer|Buffer|Blob} the zip file
*/
generate: function(options) {
throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.");
},
/**
* Generate the complete zip file as an internal stream.
* @param {Object} options the options to generate the zip file :
* - compression, "STORE" by default.
* - type, "base64" by default. Values are : string, base64, uint8array, arraybuffer, blob.
* @return {StreamHelper} the streamed zip file.
*/
generateInternalStream: function(options) {
var worker, opts = {};
try {
opts = utils.extend(options || {}, {
streamFiles: false,
compression: "STORE",
compressionOptions : null,
type: "",
platform: "DOS",
comment: null,
mimeType: 'application/zip',
encodeFileName: utf8.utf8encode
});
opts.type = opts.type.toLowerCase();
opts.compression = opts.compression.toUpperCase();
// "binarystring" is prefered but the internals use "string".
if(opts.type === "binarystring") {
opts.type = "string";
}
if (!opts.type) {
throw new Error("No output type specified.");
}
utils.checkSupport(opts.type);
// accept nodejs `process.platform`
if(
opts.platform === 'darwin' ||
opts.platform === 'freebsd' ||
opts.platform === 'linux' ||
opts.platform === 'sunos'
) {
opts.platform = "UNIX";
}
if (opts.platform === 'win32') {
opts.platform = "DOS";
}
var comment = opts.comment || this.comment || "";
worker = generate.generateWorker(this, opts, comment);
} catch (e) {
worker = new GenericWorker("error");
worker.error(e);
}
return new StreamHelper(worker, opts.type || "string", opts.mimeType);
},
/**
* Generate the complete zip file asynchronously.
* @see generateInternalStream
*/
generateAsync: function(options, onUpdate) {
return this.generateInternalStream(options).accumulate(onUpdate);
},
/**
* Generate the complete zip file asynchronously.
* @see generateInternalStream
*/
generateNodeStream: function(options, onUpdate) {
options = options || {};
if (!options.type) {
options.type = "nodebuffer";
}
return this.generateInternalStream(options).toNodejsStream(onUpdate);
}
};
module.exports = out;
/***/ }),
/* 191 */
/***/ (function(module, exports, __webpack_require__) {
'use strict';
var utils = __webpack_require__(192);
var support = __webpack_require__(193);
var nodejsUtils = __webpack_require__(225);
var GenericWorker = __webpack_require__(250);
/**
* The following functions come from pako, from pako/lib/utils/strings
* released under the MIT license, see pako https://github.com/nodeca/pako/
*/
// Table with utf8 lengths (calculated by first byte of sequence)
// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,
// because max possible codepoint is 0x10ffff
var _utf8len = new Array(256);
for (var i=0; i<256; i++) {
_utf8len[i] = (i >= 252 ? 6 : i >= 248 ? 5 : i >= 240 ? 4 : i >= 224 ? 3 : i >= 192 ? 2 : 1);
}
_utf8len[254]=_utf8len[254]=1; // Invalid sequence start
// convert string to array (typed, when possible)
var string2buf = function (str) {
var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;
// count binary size
for (m_pos = 0; m_pos < str_len; m_pos++) {
c = str.charCodeAt(m_pos);
if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {
c2 = str.charCodeAt(m_pos+1);
if ((c2 & 0xfc00) === 0xdc00) {
c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);
m_pos++;
}
}
buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;
}
// allocate buffer
if (support.uint8array) {
buf = new Uint8Array(buf_len);
} else {
buf = new Array(buf_len);
}
// convert
for (i=0, m_pos = 0; i < buf_len; m_pos++) {
c = str.charCodeAt(m_pos);
if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {
c2 = str.charCodeAt(m_pos+1);
if ((c2 & 0xfc00) === 0xdc00) {
c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);
m_pos++;
}
}
if (c < 0x80) {
/* one byte */
buf[i++] = c;
} else if (c < 0x800) {
/* two bytes */
buf[i++] = 0xC0 | (c >>> 6);
buf[i++] = 0x80 | (c & 0x3f);
} else if (c < 0x10000) {
/* three bytes */
buf[i++] = 0xE0 | (c >>> 12);
buf[i++] = 0x80 | (c >>> 6 & 0x3f);
buf[i++] = 0x80 | (c & 0x3f);
} else {
/* four bytes */
buf[i++] = 0xf0 | (c >>> 18);
buf[i++] = 0x80 | (c >>> 12 & 0x3f);
buf[i++] = 0x80 | (c >>> 6 & 0x3f);
buf[i++] = 0x80 | (c & 0x3f);
}
}
return buf;
};
// Calculate max possible position in utf8 buffer,
// that will not break sequence. If that's not possible
// - (very small limits) return max size as is.
//
// buf[] - utf8 bytes array
// max - length limit (mandatory);
var utf8border = function(buf, max) {
var pos;
max = max || buf.length;
if (max > buf.length) { max = buf.length; }
// go back from last position, until start of sequence found
pos = max-1;
while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }
// Fuckup - very small and broken sequence,
// return max, because we should return something anyway.
if (pos < 0) { return max; }
// If we came to start of buffer - that means vuffer is too small,
// return max too.
if (pos === 0) { return max; }
return (pos + _utf8len[buf[pos]] > max) ? pos : max;
};
// convert array to string
var buf2string = function (buf) {
var str, i, out, c, c_len;
var len = buf.length;
// Reserve max possible length (2 words per char)
// NB: by unknown reasons, Array is significantly faster for
// String.fromCharCode.apply than Uint16Array.
var utf16buf = new Array(len*2);
for (out=0, i=0; i 4) { utf16buf[out++] = 0xfffd; i += c_len-1; continue; }
// apply mask on first byte
c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;
// join the rest
while (c_len > 1 && i < len) {
c = (c << 6) | (buf[i++] & 0x3f);
c_len--;
}
// terminated by end of string?
if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }
if (c < 0x10000) {
utf16buf[out++] = c;
} else {
c -= 0x10000;
utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);
utf16buf[out++] = 0xdc00 | (c & 0x3ff);
}
}
// shrinkBuf(utf16buf, out)
if (utf16buf.length !== out) {
if(utf16buf.subarray) {
utf16buf = utf16buf.subarray(0, out);
} else {
utf16buf.length = out;
}
}
// return String.fromCharCode.apply(null, utf16buf);
return utils.applyFromCharCode(utf16buf);
};
// That's all for the pako functions.
/**
* Transform a javascript string into an array (typed if possible) of bytes,
* UTF-8 encoded.
* @param {String} str the string to encode
* @return {Array|Uint8Array|Buffer} the UTF-8 encoded string.
*/
exports.utf8encode = function utf8encode(str) {
if (support.nodebuffer) {
return nodejsUtils.newBuffer(str, "utf-8");
}
return string2buf(str);
};
/**
* Transform a bytes array (or a representation) representing an UTF-8 encoded
* string into a javascript string.
* @param {Array|Uint8Array|Buffer} buf the data de decode
* @return {String} the decoded string.
*/
exports.utf8decode = function utf8decode(buf) {
if (support.nodebuffer) {
return utils.transformTo("nodebuffer", buf).toString("utf-8");
}
buf = utils.transformTo(support.uint8array ? "uint8array" : "array", buf);
return buf2string(buf);
};
/**
* A worker to decode utf8 encoded binary chunks into string chunks.
* @constructor
*/
function Utf8DecodeWorker() {
GenericWorker.call(this, "utf-8 decode");
// the last bytes if a chunk didn't end with a complete codepoint.
this.leftOver = null;
}
utils.inherits(Utf8DecodeWorker, GenericWorker);
/**
* @see GenericWorker.processChunk
*/
Utf8DecodeWorker.prototype.processChunk = function (chunk) {
var data = utils.transformTo(support.uint8array ? "uint8array" : "array", chunk.data);
// 1st step, re-use what's left of the previous chunk
if (this.leftOver && this.leftOver.length) {
if(support.uint8array) {
var previousData = data;
data = new Uint8Array(previousData.length + this.leftOver.length);
data.set(this.leftOver, 0);
data.set(previousData, this.leftOver.length);
} else {
data = this.leftOver.concat(data);
}
this.leftOver = null;
}
var nextBoundary = utf8border(data);
var usableData = data;
if (nextBoundary !== data.length) {
if (support.uint8array) {
usableData = data.subarray(0, nextBoundary);
this.leftOver = data.subarray(nextBoundary, data.length);
} else {
usableData = data.slice(0, nextBoundary);
this.leftOver = data.slice(nextBoundary, data.length);
}
}
this.push({
data : exports.utf8decode(usableData),
meta : chunk.meta
});
};
/**
* @see GenericWorker.flush
*/
Utf8DecodeWorker.prototype.flush = function () {
if(this.leftOver && this.leftOver.length) {
this.push({
data : exports.utf8decode(this.leftOver),
meta : {}
});
this.leftOver = null;
}
};
exports.Utf8DecodeWorker = Utf8DecodeWorker;
/**
* A worker to endcode string chunks into utf8 encoded binary chunks.
* @constructor
*/
function Utf8EncodeWorker() {
GenericWorker.call(this, "utf-8 encode");
}
utils.inherits(Utf8EncodeWorker, GenericWorker);
/**
* @see GenericWorker.processChunk
*/
Utf8EncodeWorker.prototype.processChunk = function (chunk) {
this.push({
data : exports.utf8encode(chunk.data),
meta : chunk.meta
});
};
exports.Utf8EncodeWorker = Utf8EncodeWorker;
/***/ }),
/* 192 */
/***/ (function(module, exports, __webpack_require__) {
'use strict';
var support = __webpack_require__(193);
var base64 = __webpack_require__(224);
var nodejsUtils = __webpack_require__(225);
var setImmediate = __webpack_require__(226);
var external = __webpack_require__(247);
/**
* Convert a string that pass as a "binary string": it should represent a byte
* array but may have > 255 char codes. Be sure to take only the first byte
* and returns the byte array.
* @param {String} str the string to transform.
* @return {Array|Uint8Array} the string in a binary format.
*/
function string2binary(str) {
var result = null;
if (support.uint8array) {
result = new Uint8Array(str.length);
} else {
result = new Array(str.length);
}
return stringToArrayLike(str, result);
}
/**
* Create a new blob with the given content and the given type.
* @param {Array[String|ArrayBuffer]} parts the content to put in the blob. DO NOT use
* an Uint8Array because the stock browser of android 4 won't accept it (it
* will be silently converted to a string, "[object Uint8Array]").
* @param {String} type the mime type of the blob.
* @return {Blob} the created blob.
*/
exports.newBlob = function(parts, type) {
exports.checkSupport("blob");
try {
// Blob constructor
return new Blob(parts, {
type: type
});
}
catch (e) {
try {
// deprecated, browser only, old way
var Builder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder;
var builder = new Builder();
for (var i = 0; i < parts.length; i++) {
builder.append(parts[i]);
}
return builder.getBlob(type);
}
catch (e) {
// well, fuck ?!
throw new Error("Bug : can't construct the Blob.");
}
}
};
/**
* The identity function.
* @param {Object} input the input.
* @return {Object} the same input.
*/
function identity(input) {
return input;
}
/**
* Fill in an array with a string.
* @param {String} str the string to use.
* @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to fill in (will be mutated).
* @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated array.
*/
function stringToArrayLike(str, array) {
for (var i = 0; i < str.length; ++i) {
array[i] = str.charCodeAt(i) & 0xFF;
}
return array;
}
/**
* An helper for the function arrayLikeToString.
* This contains static informations and functions that
* can be optimized by the browser JIT compiler.
*/
var arrayToStringHelper = {
/**
* Transform an array of int into a string, chunk by chunk.
* See the performances notes on arrayLikeToString.
* @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.
* @param {String} type the type of the array.
* @param {Integer} chunk the chunk size.
* @return {String} the resulting string.
* @throws Error if the chunk is too big for the stack.
*/
stringifyByChunk: function(array, type, chunk) {
var result = [], k = 0, len = array.length;
// shortcut
if (len <= chunk) {
return String.fromCharCode.apply(null, array);
}
while (k < len) {
if (type === "array" || type === "nodebuffer") {
result.push(String.fromCharCode.apply(null, array.slice(k, Math.min(k + chunk, len))));
}
else {
result.push(String.fromCharCode.apply(null, array.subarray(k, Math.min(k + chunk, len))));
}
k += chunk;
}
return result.join("");
},
/**
* Call String.fromCharCode on every item in the array.
* This is the naive implementation, which generate A LOT of intermediate string.
* This should be used when everything else fail.
* @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.
* @return {String} the result.
*/
stringifyByChar: function(array){
var resultStr = "";
for(var i = 0; i < array.length; i++) {
resultStr += String.fromCharCode(array[i]);
}
return resultStr;
},
applyCanBeUsed : {
/**
* true if the browser accepts to use String.fromCharCode on Uint8Array
*/
uint8array : (function () {
try {
return support.uint8array && String.fromCharCode.apply(null, new Uint8Array(1)).length === 1;
} catch (e) {
return false;
}
})(),
/**
* true if the browser accepts to use String.fromCharCode on nodejs Buffer.
*/
nodebuffer : (function () {
try {
return support.nodebuffer && String.fromCharCode.apply(null, nodejsUtils.newBuffer(1)).length === 1;
} catch (e) {
return false;
}
})()
}
};
/**
* Transform an array-like object to a string.
* @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.
* @return {String} the result.
*/
function arrayLikeToString(array) {
// Performances notes :
// --------------------
// String.fromCharCode.apply(null, array) is the fastest, see
// see http://jsperf.com/converting-a-uint8array-to-a-string/2
// but the stack is limited (and we can get huge arrays !).
//
// result += String.fromCharCode(array[i]); generate too many strings !
//
// This code is inspired by http://jsperf.com/arraybuffer-to-string-apply-performance/2
// TODO : we now have workers that split the work. Do we still need that ?
var chunk = 65536,
type = exports.getTypeOf(array),
canUseApply = true;
if (type === "uint8array") {
canUseApply = arrayToStringHelper.applyCanBeUsed.uint8array;
} else if (type === "nodebuffer") {
canUseApply = arrayToStringHelper.applyCanBeUsed.nodebuffer;
}
if (canUseApply) {
while (chunk > 1) {
try {
return arrayToStringHelper.stringifyByChunk(array, type, chunk);
} catch (e) {
chunk = Math.floor(chunk / 2);
}
}
}
// no apply or chunk error : slow and painful algorithm
// default browser on android 4.*
return arrayToStringHelper.stringifyByChar(array);
}
exports.applyFromCharCode = arrayLikeToString;
/**
* Copy the data from an array-like to an other array-like.
* @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayFrom the origin array.
* @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayTo the destination array which will be mutated.
* @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated destination array.
*/
function arrayLikeToArrayLike(arrayFrom, arrayTo) {
for (var i = 0; i < arrayFrom.length; i++) {
arrayTo[i] = arrayFrom[i];
}
return arrayTo;
}
// a matrix containing functions to transform everything into everything.
var transform = {};
// string to ?
transform["string"] = {
"string": identity,
"array": function(input) {
return stringToArrayLike(input, new Array(input.length));
},
"arraybuffer": function(input) {
return transform["string"]["uint8array"](input).buffer;
},
"uint8array": function(input) {
return stringToArrayLike(input, new Uint8Array(input.length));
},
"nodebuffer": function(input) {
return stringToArrayLike(input, nodejsUtils.newBuffer(input.length));
}
};
// array to ?
transform["array"] = {
"string": arrayLikeToString,
"array": identity,
"arraybuffer": function(input) {
return (new Uint8Array(input)).buffer;
},
"uint8array": function(input) {
return new Uint8Array(input);
},
"nodebuffer": function(input) {
return nodejsUtils.newBuffer(input);
}
};
// arraybuffer to ?
transform["arraybuffer"] = {
"string": function(input) {
return arrayLikeToString(new Uint8Array(input));
},
"array": function(input) {
return arrayLikeToArrayLike(new Uint8Array(input), new Array(input.byteLength));
},
"arraybuffer": identity,
"uint8array": function(input) {
return new Uint8Array(input);
},
"nodebuffer": function(input) {
return nodejsUtils.newBuffer(new Uint8Array(input));
}
};
// uint8array to ?
transform["uint8array"] = {
"string": arrayLikeToString,
"array": function(input) {
return arrayLikeToArrayLike(input, new Array(input.length));
},
"arraybuffer": function(input) {
// copy the uint8array: DO NOT propagate the original ArrayBuffer, it
// can be way larger (the whole zip file for example).
var copy = new Uint8Array(input.length);
if (input.length) {
copy.set(input, 0);
}
return copy.buffer;
},
"uint8array": identity,
"nodebuffer": function(input) {
return nodejsUtils.newBuffer(input);
}
};
// nodebuffer to ?
transform["nodebuffer"] = {
"string": arrayLikeToString,
"array": function(input) {
return arrayLikeToArrayLike(input, new Array(input.length));
},
"arraybuffer": function(input) {
return transform["nodebuffer"]["uint8array"](input).buffer;
},
"uint8array": function(input) {
return arrayLikeToArrayLike(input, new Uint8Array(input.length));
},
"nodebuffer": identity
};
/**
* Transform an input into any type.
* The supported output type are : string, array, uint8array, arraybuffer, nodebuffer.
* If no output type is specified, the unmodified input will be returned.
* @param {String} outputType the output type.
* @param {String|Array|ArrayBuffer|Uint8Array|Buffer} input the input to convert.
* @throws {Error} an Error if the browser doesn't support the requested output type.
*/
exports.transformTo = function(outputType, input) {
if (!input) {
// undefined, null, etc
// an empty string won't harm.
input = "";
}
if (!outputType) {
return input;
}
exports.checkSupport(outputType);
var inputType = exports.getTypeOf(input);
var result = transform[inputType][outputType](input);
return result;
};
/**
* Return the type of the input.
* The type will be in a format valid for JSZip.utils.transformTo : string, array, uint8array, arraybuffer.
* @param {Object} input the input to identify.
* @return {String} the (lowercase) type of the input.
*/
exports.getTypeOf = function(input) {
if (typeof input === "string") {
return "string";
}
if (Object.prototype.toString.call(input) === "[object Array]") {
return "array";
}
if (support.nodebuffer && nodejsUtils.isBuffer(input)) {
return "nodebuffer";
}
if (support.uint8array && input instanceof Uint8Array) {
return "uint8array";
}
if (support.arraybuffer && input instanceof ArrayBuffer) {
return "arraybuffer";
}
};
/**
* Throw an exception if the type is not supported.
* @param {String} type the type to check.
* @throws {Error} an Error if the browser doesn't support the requested type.
*/
exports.checkSupport = function(type) {
var supported = support[type.toLowerCase()];
if (!supported) {
throw new Error(type + " is not supported by this platform");
}
};
exports.MAX_VALUE_16BITS = 65535;
exports.MAX_VALUE_32BITS = -1; // well, "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF" is parsed as -1
/**
* Prettify a string read as binary.
* @param {string} str the string to prettify.
* @return {string} a pretty string.
*/
exports.pretty = function(str) {
var res = '',
code, i;
for (i = 0; i < (str || "").length; i++) {
code = str.charCodeAt(i);
res += '\\x' + (code < 16 ? "0" : "") + code.toString(16).toUpperCase();
}
return res;
};
/**
* Defer the call of a function.
* @param {Function} callback the function to call asynchronously.
* @param {Array} args the arguments to give to the callback.
*/
exports.delay = function(callback, args, self) {
setImmediate(function () {
callback.apply(self || null, args || []);
});
};
/**
* Extends a prototype with an other, without calling a constructor with
* side effects. Inspired by nodejs' `utils.inherits`
* @param {Function} ctor the constructor to augment
* @param {Function} superCtor the parent constructor to use
*/
exports.inherits = function (ctor, superCtor) {
var Obj = function() {};
Obj.prototype = superCtor.prototype;
ctor.prototype = new Obj();
};
/**
* Merge the objects passed as parameters into a new one.
* @private
* @param {...Object} var_args All objects to merge.
* @return {Object} a new object with the data of the others.
*/
exports.extend = function() {
var result = {}, i, attr;
for (i = 0; i < arguments.length; i++) { // arguments is not enumerable in some browsers
for (attr in arguments[i]) {
if (arguments[i].hasOwnProperty(attr) && typeof result[attr] === "undefined") {
result[attr] = arguments[i][attr];
}
}
}
return result;
};
/**
* Transform arbitrary content into a Promise.
* @param {String} name a name for the content being processed.
* @param {Object} inputData the content to process.
* @param {Boolean} isBinary true if the content is not an unicode string
* @param {Boolean} isOptimizedBinaryString true if the string content only has one byte per character.
* @param {Boolean} isBase64 true if the string content is encoded with base64.
* @return {Promise} a promise in a format usable by JSZip.
*/
exports.prepareContent = function(name, inputData, isBinary, isOptimizedBinaryString, isBase64) {
// if inputData is already a promise, this flatten it.
var promise = external.Promise.resolve(inputData).then(function(data) {
var isBlob = support.blob && (data instanceof Blob || ['[object File]', '[object Blob]'].indexOf(Object.prototype.toString.call(data)) !== -1);
if (isBlob && typeof FileReader !== "undefined") {
return new external.Promise(function (resolve, reject) {
var reader = new FileReader();
reader.onload = function(e) {
resolve(e.target.result);
};
reader.onerror = function(e) {
reject(e.target.error);
};
reader.readAsArrayBuffer(data);
});
} else {
return data;
}
});
return promise.then(function(data) {
var dataType = exports.getTypeOf(data);
if (!dataType) {
return external.Promise.reject(
new Error("The data of '" + name + "' is in an unsupported format !")
);
}
// special case : it's way easier to work with Uint8Array than with ArrayBuffer
if (dataType === "arraybuffer") {
data = exports.transformTo("uint8array", data);
} else if (dataType === "string") {
if (isBase64) {
data = base64.decode(data);
}
else if (isBinary) {
// optimizedBinaryString === true means that the file has already been filtered with a 0xFF mask
if (isOptimizedBinaryString !== true) {
// this is a string, not in a base64 format.
// Be sure that this is a correct "binary string"
data = string2binary(data);
}
}
}
return data;
});
};
/***/ }),
/* 193 */
/***/ (function(module, exports, __webpack_require__) {
/* WEBPACK VAR INJECTION */(function(Buffer) {'use strict';
exports.base64 = true;
exports.array = true;
exports.string = true;
exports.arraybuffer = typeof ArrayBuffer !== "undefined" && typeof Uint8Array !== "undefined";
exports.nodebuffer = typeof Buffer !== "undefined";
// contains true if JSZip can read/generate Uint8Array, false otherwise.
exports.uint8array = typeof Uint8Array !== "undefined";
if (typeof ArrayBuffer === "undefined") {
exports.blob = false;
}
else {
var buffer = new ArrayBuffer(0);
try {
exports.blob = new Blob([buffer], {
type: "application/zip"
}).size === 0;
}
catch (e) {
try {
var Builder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder;
var builder = new Builder();
builder.append(buffer);
exports.blob = builder.getBlob('application/zip').size === 0;
}
catch (e) {
exports.blob = false;
}
}
}
try {
exports.nodestream = !!__webpack_require__(198).Readable;
} catch(e) {
exports.nodestream = false;
}
/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(194).Buffer))
/***/ }),
/* 194 */
/***/ (function(module, exports, __webpack_require__) {
/* WEBPACK VAR INJECTION */(function(global) {/*!
* The buffer module from node.js, for the browser.
*
* @author Feross Aboukhadijeh
* @license MIT
*/
/* eslint-disable no-proto */
'use strict'
var base64 = __webpack_require__(195)
var ieee754 = __webpack_require__(196)
var isArray = __webpack_require__(197)
exports.Buffer = Buffer
exports.SlowBuffer = SlowBuffer
exports.INSPECT_MAX_BYTES = 50
/**
* If `Buffer.TYPED_ARRAY_SUPPORT`:
* === true Use Uint8Array implementation (fastest)
* === false Use Object implementation (most compatible, even IE6)
*
* Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
* Opera 11.6+, iOS 4.2+.
*
* Due to various browser bugs, sometimes the Object implementation will be used even
* when the browser supports typed arrays.
*
* Note:
*
* - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,
* See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.
*
* - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.
*
* - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of
* incorrect length in some situations.
* We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they
* get the Object implementation, which is slower but behaves correctly.
*/
Buffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined
? global.TYPED_ARRAY_SUPPORT
: typedArraySupport()
/*
* Export kMaxLength after typed array support is determined.
*/
exports.kMaxLength = kMaxLength()
function typedArraySupport () {
try {
var arr = new Uint8Array(1)
arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
return arr.foo() === 42 && // typed array instances can be augmented
typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`
arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`
} catch (e) {
return false
}
}
function kMaxLength () {
return Buffer.TYPED_ARRAY_SUPPORT
? 0x7fffffff
: 0x3fffffff
}
function createBuffer (that, length) {
if (kMaxLength() < length) {
throw new RangeError('Invalid typed array length')
}
if (Buffer.TYPED_ARRAY_SUPPORT) {
// Return an augmented `Uint8Array` instance, for best performance
that = new Uint8Array(length)
that.__proto__ = Buffer.prototype
} else {
// Fallback: Return an object instance of the Buffer class
if (that === null) {
that = new Buffer(length)
}
that.length = length
}
return that
}
/**
* The Buffer constructor returns instances of `Uint8Array` that have their
* prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
* `Uint8Array`, so the returned instances will have all the node `Buffer` methods
* and the `Uint8Array` methods. Square bracket notation works as expected -- it
* returns a single octet.
*
* The `Uint8Array` prototype remains unmodified.
*/
function Buffer (arg, encodingOrOffset, length) {
if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {
return new Buffer(arg, encodingOrOffset, length)
}
// Common case.
if (typeof arg === 'number') {
if (typeof encodingOrOffset === 'string') {
throw new Error(
'If encoding is specified then the first argument must be a string'
)
}
return allocUnsafe(this, arg)
}
return from(this, arg, encodingOrOffset, length)
}
Buffer.poolSize = 8192 // not used by this implementation
// TODO: Legacy, not needed anymore. Remove in next major version.
Buffer._augment = function (arr) {
arr.__proto__ = Buffer.prototype
return arr
}
function from (that, value, encodingOrOffset, length) {
if (typeof value === 'number') {
throw new TypeError('"value" argument must not be a number')
}
if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {
return fromArrayBuffer(that, value, encodingOrOffset, length)
}
if (typeof value === 'string') {
return fromString(that, value, encodingOrOffset)
}
return fromObject(that, value)
}
/**
* Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
* if value is a number.
* Buffer.from(str[, encoding])
* Buffer.from(array)
* Buffer.from(buffer)
* Buffer.from(arrayBuffer[, byteOffset[, length]])
**/
Buffer.from = function (value, encodingOrOffset, length) {
return from(null, value, encodingOrOffset, length)
}
if (Buffer.TYPED_ARRAY_SUPPORT) {
Buffer.prototype.__proto__ = Uint8Array.prototype
Buffer.__proto__ = Uint8Array
if (typeof Symbol !== 'undefined' && Symbol.species &&
Buffer[Symbol.species] === Buffer) {
// Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
Object.defineProperty(Buffer, Symbol.species, {
value: null,
configurable: true
})
}
}
function assertSize (size) {
if (typeof size !== 'number') {
throw new TypeError('"size" argument must be a number')
} else if (size < 0) {
throw new RangeError('"size" argument must not be negative')
}
}
function alloc (that, size, fill, encoding) {
assertSize(size)
if (size <= 0) {
return createBuffer(that, size)
}
if (fill !== undefined) {
// Only pay attention to encoding if it's a string. This
// prevents accidentally sending in a number that would
// be interpretted as a start offset.
return typeof encoding === 'string'
? createBuffer(that, size).fill(fill, encoding)
: createBuffer(that, size).fill(fill)
}
return createBuffer(that, size)
}
/**
* Creates a new filled Buffer instance.
* alloc(size[, fill[, encoding]])
**/
Buffer.alloc = function (size, fill, encoding) {
return alloc(null, size, fill, encoding)
}
function allocUnsafe (that, size) {
assertSize(size)
that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)
if (!Buffer.TYPED_ARRAY_SUPPORT) {
for (var i = 0; i < size; ++i) {
that[i] = 0
}
}
return that
}
/**
* Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
* */
Buffer.allocUnsafe = function (size) {
return allocUnsafe(null, size)
}
/**
* Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
*/
Buffer.allocUnsafeSlow = function (size) {
return allocUnsafe(null, size)
}
function fromString (that, string, encoding) {
if (typeof encoding !== 'string' || encoding === '') {
encoding = 'utf8'
}
if (!Buffer.isEncoding(encoding)) {
throw new TypeError('"encoding" must be a valid string encoding')
}
var length = byteLength(string, encoding) | 0
that = createBuffer(that, length)
var actual = that.write(string, encoding)
if (actual !== length) {
// Writing a hex string, for example, that contains invalid characters will
// cause everything after the first invalid character to be ignored. (e.g.
// 'abxxcd' will be treated as 'ab')
that = that.slice(0, actual)
}
return that
}
function fromArrayLike (that, array) {
var length = array.length < 0 ? 0 : checked(array.length) | 0
that = createBuffer(that, length)
for (var i = 0; i < length; i += 1) {
that[i] = array[i] & 255
}
return that
}
function fromArrayBuffer (that, array, byteOffset, length) {
array.byteLength // this throws if `array` is not a valid ArrayBuffer
if (byteOffset < 0 || array.byteLength < byteOffset) {
throw new RangeError('\'offset\' is out of bounds')
}
if (array.byteLength < byteOffset + (length || 0)) {
throw new RangeError('\'length\' is out of bounds')
}
if (byteOffset === undefined && length === undefined) {
array = new Uint8Array(array)
} else if (length === undefined) {
array = new Uint8Array(array, byteOffset)
} else {
array = new Uint8Array(array, byteOffset, length)
}
if (Buffer.TYPED_ARRAY_SUPPORT) {
// Return an augmented `Uint8Array` instance, for best performance
that = array
that.__proto__ = Buffer.prototype
} else {
// Fallback: Return an object instance of the Buffer class
that = fromArrayLike(that, array)
}
return that
}
function fromObject (that, obj) {
if (Buffer.isBuffer(obj)) {
var len = checked(obj.length) | 0
that = createBuffer(that, len)
if (that.length === 0) {
return that
}
obj.copy(that, 0, 0, len)
return that
}
if (obj) {
if ((typeof ArrayBuffer !== 'undefined' &&
obj.buffer instanceof ArrayBuffer) || 'length' in obj) {
if (typeof obj.length !== 'number' || isnan(obj.length)) {
return createBuffer(that, 0)
}
return fromArrayLike(that, obj)
}
if (obj.type === 'Buffer' && isArray(obj.data)) {
return fromArrayLike(that, obj.data)
}
}
throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
}
function checked (length) {
// Note: cannot use `length < kMaxLength()` here because that fails when
// length is NaN (which is otherwise coerced to zero.)
if (length >= kMaxLength()) {
throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
'size: 0x' + kMaxLength().toString(16) + ' bytes')
}
return length | 0
}
function SlowBuffer (length) {
if (+length != length) { // eslint-disable-line eqeqeq
length = 0
}
return Buffer.alloc(+length)
}
Buffer.isBuffer = function isBuffer (b) {
return !!(b != null && b._isBuffer)
}
Buffer.compare = function compare (a, b) {
if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
throw new TypeError('Arguments must be Buffers')
}
if (a === b) return 0
var x = a.length
var y = b.length
for (var i = 0, len = Math.min(x, y); i < len; ++i) {
if (a[i] !== b[i]) {
x = a[i]
y = b[i]
break
}
}
if (x < y) return -1
if (y < x) return 1
return 0
}
Buffer.isEncoding = function isEncoding (encoding) {
switch (String(encoding).toLowerCase()) {
case 'hex':
case 'utf8':
case 'utf-8':
case 'ascii':
case 'latin1':
case 'binary':
case 'base64':
case 'ucs2':
case 'ucs-2':
case 'utf16le':
case 'utf-16le':
return true
default:
return false
}
}
Buffer.concat = function concat (list, length) {
if (!isArray(list)) {
throw new TypeError('"list" argument must be an Array of Buffers')
}
if (list.length === 0) {
return Buffer.alloc(0)
}
var i
if (length === undefined) {
length = 0
for (i = 0; i < list.length; ++i) {
length += list[i].length
}
}
var buffer = Buffer.allocUnsafe(length)
var pos = 0
for (i = 0; i < list.length; ++i) {
var buf = list[i]
if (!Buffer.isBuffer(buf)) {
throw new TypeError('"list" argument must be an Array of Buffers')
}
buf.copy(buffer, pos)
pos += buf.length
}
return buffer
}
function byteLength (string, encoding) {
if (Buffer.isBuffer(string)) {
return string.length
}
if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&
(ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {
return string.byteLength
}
if (typeof string !== 'string') {
string = '' + string
}
var len = string.length
if (len === 0) return 0
// Use a for loop to avoid recursion
var loweredCase = false
for (;;) {
switch (encoding) {
case 'ascii':
case 'latin1':
case 'binary':
return len
case 'utf8':
case 'utf-8':
case undefined:
return utf8ToBytes(string).length
case 'ucs2':
case 'ucs-2':
case 'utf16le':
case 'utf-16le':
return len * 2
case 'hex':
return len >>> 1
case 'base64':
return base64ToBytes(string).length
default:
if (loweredCase) return utf8ToBytes(string).length // assume utf8
encoding = ('' + encoding).toLowerCase()
loweredCase = true
}
}
}
Buffer.byteLength = byteLength
function slowToString (encoding, start, end) {
var loweredCase = false
// No need to verify that "this.length <= MAX_UINT32" since it's a read-only
// property of a typed array.
// This behaves neither like String nor Uint8Array in that we set start/end
// to their upper/lower bounds if the value passed is out of range.
// undefined is handled specially as per ECMA-262 6th Edition,
// Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
if (start === undefined || start < 0) {
start = 0
}
// Return early if start > this.length. Done here to prevent potential uint32
// coercion fail below.
if (start > this.length) {
return ''
}
if (end === undefined || end > this.length) {
end = this.length
}
if (end <= 0) {
return ''
}
// Force coersion to uint32. This will also coerce falsey/NaN values to 0.
end >>>= 0
start >>>= 0
if (end <= start) {
return ''
}
if (!encoding) encoding = 'utf8'
while (true) {
switch (encoding) {
case 'hex':
return hexSlice(this, start, end)
case 'utf8':
case 'utf-8':
return utf8Slice(this, start, end)
case 'ascii':
return asciiSlice(this, start, end)
case 'latin1':
case 'binary':
return latin1Slice(this, start, end)
case 'base64':
return base64Slice(this, start, end)
case 'ucs2':
case 'ucs-2':
case 'utf16le':
case 'utf-16le':
return utf16leSlice(this, start, end)
default:
if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
encoding = (encoding + '').toLowerCase()
loweredCase = true
}
}
}
// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect
// Buffer instances.
Buffer.prototype._isBuffer = true
function swap (b, n, m) {
var i = b[n]
b[n] = b[m]
b[m] = i
}
Buffer.prototype.swap16 = function swap16 () {
var len = this.length
if (len % 2 !== 0) {
throw new RangeError('Buffer size must be a multiple of 16-bits')
}
for (var i = 0; i < len; i += 2) {
swap(this, i, i + 1)
}
return this
}
Buffer.prototype.swap32 = function swap32 () {
var len = this.length
if (len % 4 !== 0) {
throw new RangeError('Buffer size must be a multiple of 32-bits')
}
for (var i = 0; i < len; i += 4) {
swap(this, i, i + 3)
swap(this, i + 1, i + 2)
}
return this
}
Buffer.prototype.swap64 = function swap64 () {
var len = this.length
if (len % 8 !== 0) {
throw new RangeError('Buffer size must be a multiple of 64-bits')
}
for (var i = 0; i < len; i += 8) {
swap(this, i, i + 7)
swap(this, i + 1, i + 6)
swap(this, i + 2, i + 5)
swap(this, i + 3, i + 4)
}
return this
}
Buffer.prototype.toString = function toString () {
var length = this.length | 0
if (length === 0) return ''
if (arguments.length === 0) return utf8Slice(this, 0, length)
return slowToString.apply(this, arguments)
}
Buffer.prototype.equals = function equals (b) {
if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
if (this === b) return true
return Buffer.compare(this, b) === 0
}
Buffer.prototype.inspect = function inspect () {
var str = ''
var max = exports.INSPECT_MAX_BYTES
if (this.length > 0) {
str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
if (this.length > max) str += ' ... '
}
return ''
}
Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
if (!Buffer.isBuffer(target)) {
throw new TypeError('Argument must be a Buffer')
}
if (start === undefined) {
start = 0
}
if (end === undefined) {
end = target ? target.length : 0
}
if (thisStart === undefined) {
thisStart = 0
}
if (thisEnd === undefined) {
thisEnd = this.length
}
if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
throw new RangeError('out of range index')
}
if (thisStart >= thisEnd && start >= end) {
return 0
}
if (thisStart >= thisEnd) {
return -1
}
if (start >= end) {
return 1
}
start >>>= 0
end >>>= 0
thisStart >>>= 0
thisEnd >>>= 0
if (this === target) return 0
var x = thisEnd - thisStart
var y = end - start
var len = Math.min(x, y)
var thisCopy = this.slice(thisStart, thisEnd)
var targetCopy = target.slice(start, end)
for (var i = 0; i < len; ++i) {
if (thisCopy[i] !== targetCopy[i]) {
x = thisCopy[i]
y = targetCopy[i]
break
}
}
if (x < y) return -1
if (y < x) return 1
return 0
}
// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
// OR the last index of `val` in `buffer` at offset <= `byteOffset`.
//
// Arguments:
// - buffer - a Buffer to search
// - val - a string, Buffer, or number
// - byteOffset - an index into `buffer`; will be clamped to an int32
// - encoding - an optional encoding, relevant is val is a string
// - dir - true for indexOf, false for lastIndexOf
function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
// Empty buffer means no match
if (buffer.length === 0) return -1
// Normalize byteOffset
if (typeof byteOffset === 'string') {
encoding = byteOffset
byteOffset = 0
} else if (byteOffset > 0x7fffffff) {
byteOffset = 0x7fffffff
} else if (byteOffset < -0x80000000) {
byteOffset = -0x80000000
}
byteOffset = +byteOffset // Coerce to Number.
if (isNaN(byteOffset)) {
// byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
byteOffset = dir ? 0 : (buffer.length - 1)
}
// Normalize byteOffset: negative offsets start from the end of the buffer
if (byteOffset < 0) byteOffset = buffer.length + byteOffset
if (byteOffset >= buffer.length) {
if (dir) return -1
else byteOffset = buffer.length - 1
} else if (byteOffset < 0) {
if (dir) byteOffset = 0
else return -1
}
// Normalize val
if (typeof val === 'string') {
val = Buffer.from(val, encoding)
}
// Finally, search either indexOf (if dir is true) or lastIndexOf
if (Buffer.isBuffer(val)) {
// Special case: looking for empty string/buffer always fails
if (val.length === 0) {
return -1
}
return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
} else if (typeof val === 'number') {
val = val & 0xFF // Search for a byte value [0-255]
if (Buffer.TYPED_ARRAY_SUPPORT &&
typeof Uint8Array.prototype.indexOf === 'function') {
if (dir) {
return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
} else {
return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
}
}
return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
}
throw new TypeError('val must be string, number or Buffer')
}
function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
var indexSize = 1
var arrLength = arr.length
var valLength = val.length
if (encoding !== undefined) {
encoding = String(encoding).toLowerCase()
if (encoding === 'ucs2' || encoding === 'ucs-2' ||
encoding === 'utf16le' || encoding === 'utf-16le') {
if (arr.length < 2 || val.length < 2) {
return -1
}
indexSize = 2
arrLength /= 2
valLength /= 2
byteOffset /= 2
}
}
function read (buf, i) {
if (indexSize === 1) {
return buf[i]
} else {
return buf.readUInt16BE(i * indexSize)
}
}
var i
if (dir) {
var foundIndex = -1
for (i = byteOffset; i < arrLength; i++) {
if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
if (foundIndex === -1) foundIndex = i
if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
} else {
if (foundIndex !== -1) i -= i - foundIndex
foundIndex = -1
}
}
} else {
if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
for (i = byteOffset; i >= 0; i--) {
var found = true
for (var j = 0; j < valLength; j++) {
if (read(arr, i + j) !== read(val, j)) {
found = false
break
}
}
if (found) return i
}
}
return -1
}
Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
return this.indexOf(val, byteOffset, encoding) !== -1
}
Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
}
Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
}
function hexWrite (buf, string, offset, length) {
offset = Number(offset) || 0
var remaining = buf.length - offset
if (!length) {
length = remaining
} else {
length = Number(length)
if (length > remaining) {
length = remaining
}
}
// must be an even number of digits
var strLen = string.length
if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
if (length > strLen / 2) {
length = strLen / 2
}
for (var i = 0; i < length; ++i) {
var parsed = parseInt(string.substr(i * 2, 2), 16)
if (isNaN(parsed)) return i
buf[offset + i] = parsed
}
return i
}
function utf8Write (buf, string, offset, length) {
return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
}
function asciiWrite (buf, string, offset, length) {
return blitBuffer(asciiToBytes(string), buf, offset, length)
}
function latin1Write (buf, string, offset, length) {
return asciiWrite(buf, string, offset, length)
}
function base64Write (buf, string, offset, length) {
return blitBuffer(base64ToBytes(string), buf, offset, length)
}
function ucs2Write (buf, string, offset, length) {
return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
}
Buffer.prototype.write = function write (string, offset, length, encoding) {
// Buffer#write(string)
if (offset === undefined) {
encoding = 'utf8'
length = this.length
offset = 0
// Buffer#write(string, encoding)
} else if (length === undefined && typeof offset === 'string') {
encoding = offset
length = this.length
offset = 0
// Buffer#write(string, offset[, length][, encoding])
} else if (isFinite(offset)) {
offset = offset | 0
if (isFinite(length)) {
length = length | 0
if (encoding === undefined) encoding = 'utf8'
} else {
encoding = length
length = undefined
}
// legacy write(string, encoding, offset, length) - remove in v0.13
} else {
throw new Error(
'Buffer.write(string, encoding, offset[, length]) is no longer supported'
)
}
var remaining = this.length - offset
if (length === undefined || length > remaining) length = remaining
if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
throw new RangeError('Attempt to write outside buffer bounds')
}
if (!encoding) encoding = 'utf8'
var loweredCase = false
for (;;) {
switch (encoding) {
case 'hex':
return hexWrite(this, string, offset, length)
case 'utf8':
case 'utf-8':
return utf8Write(this, string, offset, length)
case 'ascii':
return asciiWrite(this, string, offset, length)
case 'latin1':
case 'binary':
return latin1Write(this, string, offset, length)
case 'base64':
// Warning: maxLength not taken into account in base64Write
return base64Write(this, string, offset, length)
case 'ucs2':
case 'ucs-2':
case 'utf16le':
case 'utf-16le':
return ucs2Write(this, string, offset, length)
default:
if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
encoding = ('' + encoding).toLowerCase()
loweredCase = true
}
}
}
Buffer.prototype.toJSON = function toJSON () {
return {
type: 'Buffer',
data: Array.prototype.slice.call(this._arr || this, 0)
}
}
function base64Slice (buf, start, end) {
if (start === 0 && end === buf.length) {
return base64.fromByteArray(buf)
} else {
return base64.fromByteArray(buf.slice(start, end))
}
}
function utf8Slice (buf, start, end) {
end = Math.min(buf.length, end)
var res = []
var i = start
while (i < end) {
var firstByte = buf[i]
var codePoint = null
var bytesPerSequence = (firstByte > 0xEF) ? 4
: (firstByte > 0xDF) ? 3
: (firstByte > 0xBF) ? 2
: 1
if (i + bytesPerSequence <= end) {
var secondByte, thirdByte, fourthByte, tempCodePoint
switch (bytesPerSequence) {
case 1:
if (firstByte < 0x80) {
codePoint = firstByte
}
break
case 2:
secondByte = buf[i + 1]
if ((secondByte & 0xC0) === 0x80) {
tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
if (tempCodePoint > 0x7F) {
codePoint = tempCodePoint
}
}
break
case 3:
secondByte = buf[i + 1]
thirdByte = buf[i + 2]
if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
codePoint = tempCodePoint
}
}
break
case 4:
secondByte = buf[i + 1]
thirdByte = buf[i + 2]
fourthByte = buf[i + 3]
if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
codePoint = tempCodePoint
}
}
}
}
if (codePoint === null) {
// we did not generate a valid codePoint so insert a
// replacement char (U+FFFD) and advance only 1 byte
codePoint = 0xFFFD
bytesPerSequence = 1
} else if (codePoint > 0xFFFF) {
// encode to utf16 (surrogate pair dance)
codePoint -= 0x10000
res.push(codePoint >>> 10 & 0x3FF | 0xD800)
codePoint = 0xDC00 | codePoint & 0x3FF
}
res.push(codePoint)
i += bytesPerSequence
}
return decodeCodePointsArray(res)
}
// Based on http://stackoverflow.com/a/22747272/680742, the browser with
// the lowest limit is Chrome, with 0x10000 args.
// We go 1 magnitude less, for safety
var MAX_ARGUMENTS_LENGTH = 0x1000
function decodeCodePointsArray (codePoints) {
var len = codePoints.length
if (len <= MAX_ARGUMENTS_LENGTH) {
return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
}
// Decode in chunks to avoid "call stack size exceeded".
var res = ''
var i = 0
while (i < len) {
res += String.fromCharCode.apply(
String,
codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
)
}
return res
}
function asciiSlice (buf, start, end) {
var ret = ''
end = Math.min(buf.length, end)
for (var i = start; i < end; ++i) {
ret += String.fromCharCode(buf[i] & 0x7F)
}
return ret
}
function latin1Slice (buf, start, end) {
var ret = ''
end = Math.min(buf.length, end)
for (var i = start; i < end; ++i) {
ret += String.fromCharCode(buf[i])
}
return ret
}
function hexSlice (buf, start, end) {
var len = buf.length
if (!start || start < 0) start = 0
if (!end || end < 0 || end > len) end = len
var out = ''
for (var i = start; i < end; ++i) {
out += toHex(buf[i])
}
return out
}
function utf16leSlice (buf, start, end) {
var bytes = buf.slice(start, end)
var res = ''
for (var i = 0; i < bytes.length; i += 2) {
res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)
}
return res
}
Buffer.prototype.slice = function slice (start, end) {
var len = this.length
start = ~~start
end = end === undefined ? len : ~~end
if (start < 0) {
start += len
if (start < 0) start = 0
} else if (start > len) {
start = len
}
if (end < 0) {
end += len
if (end < 0) end = 0
} else if (end > len) {
end = len
}
if (end < start) end = start
var newBuf
if (Buffer.TYPED_ARRAY_SUPPORT) {
newBuf = this.subarray(start, end)
newBuf.__proto__ = Buffer.prototype
} else {
var sliceLen = end - start
newBuf = new Buffer(sliceLen, undefined)
for (var i = 0; i < sliceLen; ++i) {
newBuf[i] = this[i + start]
}
}
return newBuf
}
/*
* Need to make sure that buffer isn't trying to write out of bounds.
*/
function checkOffset (offset, ext, length) {
if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
}
Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
offset = offset | 0
byteLength = byteLength | 0
if (!noAssert) checkOffset(offset, byteLength, this.length)
var val = this[offset]
var mul = 1
var i = 0
while (++i < byteLength && (mul *= 0x100)) {
val += this[offset + i] * mul
}
return val
}
Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
offset = offset | 0
byteLength = byteLength | 0
if (!noAssert) {
checkOffset(offset, byteLength, this.length)
}
var val = this[offset + --byteLength]
var mul = 1
while (byteLength > 0 && (mul *= 0x100)) {
val += this[offset + --byteLength] * mul
}
return val
}
Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
if (!noAssert) checkOffset(offset, 1, this.length)
return this[offset]
}
Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
if (!noAssert) checkOffset(offset, 2, this.length)
return this[offset] | (this[offset + 1] << 8)
}
Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
if (!noAssert) checkOffset(offset, 2, this.length)
return (this[offset] << 8) | this[offset + 1]
}
Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
if (!noAssert) checkOffset(offset, 4, this.length)
return ((this[offset]) |
(this[offset + 1] << 8) |
(this[offset + 2] << 16)) +
(this[offset + 3] * 0x1000000)
}
Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
if (!noAssert) checkOffset(offset, 4, this.length)
return (this[offset] * 0x1000000) +
((this[offset + 1] << 16) |
(this[offset + 2] << 8) |
this[offset + 3])
}
Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
offset = offset | 0
byteLength = byteLength | 0
if (!noAssert) checkOffset(offset, byteLength, this.length)
var val = this[offset]
var mul = 1
var i = 0
while (++i < byteLength && (mul *= 0x100)) {
val += this[offset + i] * mul
}
mul *= 0x80
if (val >= mul) val -= Math.pow(2, 8 * byteLength)
return val
}
Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
offset = offset | 0
byteLength = byteLength | 0
if (!noAssert) checkOffset(offset, byteLength, this.length)
var i = byteLength
var mul = 1
var val = this[offset + --i]
while (i > 0 && (mul *= 0x100)) {
val += this[offset + --i] * mul
}
mul *= 0x80
if (val >= mul) val -= Math.pow(2, 8 * byteLength)
return val
}
Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
if (!noAssert) checkOffset(offset, 1, this.length)
if (!(this[offset] & 0x80)) return (this[offset])
return ((0xff - this[offset] + 1) * -1)
}
Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
if (!noAssert) checkOffset(offset, 2, this.length)
var val = this[offset] | (this[offset + 1] << 8)
return (val & 0x8000) ? val | 0xFFFF0000 : val
}
Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
if (!noAssert) checkOffset(offset, 2, this.length)
var val = this[offset + 1] | (this[offset] << 8)
return (val & 0x8000) ? val | 0xFFFF0000 : val
}
Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
if (!noAssert) checkOffset(offset, 4, this.length)
return (this[offset]) |
(this[offset + 1] << 8) |
(this[offset + 2] << 16) |
(this[offset + 3] << 24)
}
Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
if (!noAssert) checkOffset(offset, 4, this.length)
return (this[offset] << 24) |
(this[offset + 1] << 16) |
(this[offset + 2] << 8) |
(this[offset + 3])
}
Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
if (!noAssert) checkOffset(offset, 4, this.length)
return ieee754.read(this, offset, true, 23, 4)
}
Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
if (!noAssert) checkOffset(offset, 4, this.length)
return ieee754.read(this, offset, false, 23, 4)
}
Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
if (!noAssert) checkOffset(offset, 8, this.length)
return ieee754.read(this, offset, true, 52, 8)
}
Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
if (!noAssert) checkOffset(offset, 8, this.length)
return ieee754.read(this, offset, false, 52, 8)
}
function checkInt (buf, value, offset, ext, max, min) {
if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
if (offset + ext > buf.length) throw new RangeError('Index out of range')
}
Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
value = +value
offset = offset | 0
byteLength = byteLength | 0
if (!noAssert) {
var maxBytes = Math.pow(2, 8 * byteLength) - 1
checkInt(this, value, offset, byteLength, maxBytes, 0)
}
var mul = 1
var i = 0
this[offset] = value & 0xFF
while (++i < byteLength && (mul *= 0x100)) {
this[offset + i] = (value / mul) & 0xFF
}
return offset + byteLength
}
Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
value = +value
offset = offset | 0
byteLength = byteLength | 0
if (!noAssert) {
var maxBytes = Math.pow(2, 8 * byteLength) - 1
checkInt(this, value, offset, byteLength, maxBytes, 0)
}
var i = byteLength - 1
var mul = 1
this[offset + i] = value & 0xFF
while (--i >= 0 && (mul *= 0x100)) {
this[offset + i] = (value / mul) & 0xFF
}
return offset + byteLength
}
Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
value = +value
offset = offset | 0
if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
this[offset] = (value & 0xff)
return offset + 1
}
function objectWriteUInt16 (buf, value, offset, littleEndian) {
if (value < 0) value = 0xffff + value + 1
for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {
buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>
(littleEndian ? i : 1 - i) * 8
}
}
Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
value = +value
offset = offset | 0
if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
if (Buffer.TYPED_ARRAY_SUPPORT) {
this[offset] = (value & 0xff)
this[offset + 1] = (value >>> 8)
} else {
objectWriteUInt16(this, value, offset, true)
}
return offset + 2
}
Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
value = +value
offset = offset | 0
if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
if (Buffer.TYPED_ARRAY_SUPPORT) {
this[offset] = (value >>> 8)
this[offset + 1] = (value & 0xff)
} else {
objectWriteUInt16(this, value, offset, false)
}
return offset + 2
}
function objectWriteUInt32 (buf, value, offset, littleEndian) {
if (value < 0) value = 0xffffffff + value + 1
for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {
buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff
}
}
Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
value = +value
offset = offset | 0
if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
if (Buffer.TYPED_ARRAY_SUPPORT) {
this[offset + 3] = (value >>> 24)
this[offset + 2] = (value >>> 16)
this[offset + 1] = (value >>> 8)
this[offset] = (value & 0xff)
} else {
objectWriteUInt32(this, value, offset, true)
}
return offset + 4
}
Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
value = +value
offset = offset | 0
if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
if (Buffer.TYPED_ARRAY_SUPPORT) {
this[offset] = (value >>> 24)
this[offset + 1] = (value >>> 16)
this[offset + 2] = (value >>> 8)
this[offset + 3] = (value & 0xff)
} else {
objectWriteUInt32(this, value, offset, false)
}
return offset + 4
}
Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
value = +value
offset = offset | 0
if (!noAssert) {
var limit = Math.pow(2, 8 * byteLength - 1)
checkInt(this, value, offset, byteLength, limit - 1, -limit)
}
var i = 0
var mul = 1
var sub = 0
this[offset] = value & 0xFF
while (++i < byteLength && (mul *= 0x100)) {
if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
sub = 1
}
this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
}
return offset + byteLength
}
Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
value = +value
offset = offset | 0
if (!noAssert) {
var limit = Math.pow(2, 8 * byteLength - 1)
checkInt(this, value, offset, byteLength, limit - 1, -limit)
}
var i = byteLength - 1
var mul = 1
var sub = 0
this[offset + i] = value & 0xFF
while (--i >= 0 && (mul *= 0x100)) {
if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
sub = 1
}
this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
}
return offset + byteLength
}
Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
value = +value
offset = offset | 0
if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
if (value < 0) value = 0xff + value + 1
this[offset] = (value & 0xff)
return offset + 1
}
Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
value = +value
offset = offset | 0
if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
if (Buffer.TYPED_ARRAY_SUPPORT) {
this[offset] = (value & 0xff)
this[offset + 1] = (value >>> 8)
} else {
objectWriteUInt16(this, value, offset, true)
}
return offset + 2
}
Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
value = +value
offset = offset | 0
if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
if (Buffer.TYPED_ARRAY_SUPPORT) {
this[offset] = (value >>> 8)
this[offset + 1] = (value & 0xff)
} else {
objectWriteUInt16(this, value, offset, false)
}
return offset + 2
}
Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
value = +value
offset = offset | 0
if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
if (Buffer.TYPED_ARRAY_SUPPORT) {
this[offset] = (value & 0xff)
this[offset + 1] = (value >>> 8)
this[offset + 2] = (value >>> 16)
this[offset + 3] = (value >>> 24)
} else {
objectWriteUInt32(this, value, offset, true)
}
return offset + 4
}
Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
value = +value
offset = offset | 0
if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
if (value < 0) value = 0xffffffff + value + 1
if (Buffer.TYPED_ARRAY_SUPPORT) {
this[offset] = (value >>> 24)
this[offset + 1] = (value >>> 16)
this[offset + 2] = (value >>> 8)
this[offset + 3] = (value & 0xff)
} else {
objectWriteUInt32(this, value, offset, false)
}
return offset + 4
}
function checkIEEE754 (buf, value, offset, ext, max, min) {
if (offset + ext > buf.length) throw new RangeError('Index out of range')
if (offset < 0) throw new RangeError('Index out of range')
}
function writeFloat (buf, value, offset, littleEndian, noAssert) {
if (!noAssert) {
checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
}
ieee754.write(buf, value, offset, littleEndian, 23, 4)
return offset + 4
}
Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
return writeFloat(this, value, offset, true, noAssert)
}
Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
return writeFloat(this, value, offset, false, noAssert)
}
function writeDouble (buf, value, offset, littleEndian, noAssert) {
if (!noAssert) {
checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
}
ieee754.write(buf, value, offset, littleEndian, 52, 8)
return offset + 8
}
Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
return writeDouble(this, value, offset, true, noAssert)
}
Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
return writeDouble(this, value, offset, false, noAssert)
}
// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
Buffer.prototype.copy = function copy (target, targetStart, start, end) {
if (!start) start = 0
if (!end && end !== 0) end = this.length
if (targetStart >= target.length) targetStart = target.length
if (!targetStart) targetStart = 0
if (end > 0 && end < start) end = start
// Copy 0 bytes; we're done
if (end === start) return 0
if (target.length === 0 || this.length === 0) return 0
// Fatal error conditions
if (targetStart < 0) {
throw new RangeError('targetStart out of bounds')
}
if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
if (end < 0) throw new RangeError('sourceEnd out of bounds')
// Are we oob?
if (end > this.length) end = this.length
if (target.length - targetStart < end - start) {
end = target.length - targetStart + start
}
var len = end - start
var i
if (this === target && start < targetStart && targetStart < end) {
// descending copy from end
for (i = len - 1; i >= 0; --i) {
target[i + targetStart] = this[i + start]
}
} else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {
// ascending copy from start
for (i = 0; i < len; ++i) {
target[i + targetStart] = this[i + start]
}
} else {
Uint8Array.prototype.set.call(
target,
this.subarray(start, start + len),
targetStart
)
}
return len
}
// Usage:
// buffer.fill(number[, offset[, end]])
// buffer.fill(buffer[, offset[, end]])
// buffer.fill(string[, offset[, end]][, encoding])
Buffer.prototype.fill = function fill (val, start, end, encoding) {
// Handle string cases:
if (typeof val === 'string') {
if (typeof start === 'string') {
encoding = start
start = 0
end = this.length
} else if (typeof end === 'string') {
encoding = end
end = this.length
}
if (val.length === 1) {
var code = val.charCodeAt(0)
if (code < 256) {
val = code
}
}
if (encoding !== undefined && typeof encoding !== 'string') {
throw new TypeError('encoding must be a string')
}
if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
throw new TypeError('Unknown encoding: ' + encoding)
}
} else if (typeof val === 'number') {
val = val & 255
}
// Invalid ranges are not set to a default, so can range check early.
if (start < 0 || this.length < start || this.length < end) {
throw new RangeError('Out of range index')
}
if (end <= start) {
return this
}
start = start >>> 0
end = end === undefined ? this.length : end >>> 0
if (!val) val = 0
var i
if (typeof val === 'number') {
for (i = start; i < end; ++i) {
this[i] = val
}
} else {
var bytes = Buffer.isBuffer(val)
? val
: utf8ToBytes(new Buffer(val, encoding).toString())
var len = bytes.length
for (i = 0; i < end - start; ++i) {
this[i + start] = bytes[i % len]
}
}
return this
}
// HELPER FUNCTIONS
// ================
var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g
function base64clean (str) {
// Node strips out invalid characters like \n and \t from the string, base64-js does not
str = stringtrim(str).replace(INVALID_BASE64_RE, '')
// Node converts strings with length < 2 to ''
if (str.length < 2) return ''
// Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
while (str.length % 4 !== 0) {
str = str + '='
}
return str
}
function stringtrim (str) {
if (str.trim) return str.trim()
return str.replace(/^\s+|\s+$/g, '')
}
function toHex (n) {
if (n < 16) return '0' + n.toString(16)
return n.toString(16)
}
function utf8ToBytes (string, units) {
units = units || Infinity
var codePoint
var length = string.length
var leadSurrogate = null
var bytes = []
for (var i = 0; i < length; ++i) {
codePoint = string.charCodeAt(i)
// is surrogate component
if (codePoint > 0xD7FF && codePoint < 0xE000) {
// last char was a lead
if (!leadSurrogate) {
// no lead yet
if (codePoint > 0xDBFF) {
// unexpected trail
if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
continue
} else if (i + 1 === length) {
// unpaired lead
if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
continue
}
// valid lead
leadSurrogate = codePoint
continue
}
// 2 leads in a row
if (codePoint < 0xDC00) {
if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
leadSurrogate = codePoint
continue
}
// valid surrogate pair
codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
} else if (leadSurrogate) {
// valid bmp char, but last char was a lead
if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
}
leadSurrogate = null
// encode utf8
if (codePoint < 0x80) {
if ((units -= 1) < 0) break
bytes.push(codePoint)
} else if (codePoint < 0x800) {
if ((units -= 2) < 0) break
bytes.push(
codePoint >> 0x6 | 0xC0,
codePoint & 0x3F | 0x80
)
} else if (codePoint < 0x10000) {
if ((units -= 3) < 0) break
bytes.push(
codePoint >> 0xC | 0xE0,
codePoint >> 0x6 & 0x3F | 0x80,
codePoint & 0x3F | 0x80
)
} else if (codePoint < 0x110000) {
if ((units -= 4) < 0) break
bytes.push(
codePoint >> 0x12 | 0xF0,
codePoint >> 0xC & 0x3F | 0x80,
codePoint >> 0x6 & 0x3F | 0x80,
codePoint & 0x3F | 0x80
)
} else {
throw new Error('Invalid code point')
}
}
return bytes
}
function asciiToBytes (str) {
var byteArray = []
for (var i = 0; i < str.length; ++i) {
// Node's code seems to be doing this and not & 0x7F..
byteArray.push(str.charCodeAt(i) & 0xFF)
}
return byteArray
}
function utf16leToBytes (str, units) {
var c, hi, lo
var byteArray = []
for (var i = 0; i < str.length; ++i) {
if ((units -= 2) < 0) break
c = str.charCodeAt(i)
hi = c >> 8
lo = c % 256
byteArray.push(lo)
byteArray.push(hi)
}
return byteArray
}
function base64ToBytes (str) {
return base64.toByteArray(base64clean(str))
}
function blitBuffer (src, dst, offset, length) {
for (var i = 0; i < length; ++i) {
if ((i + offset >= dst.length) || (i >= src.length)) break
dst[i + offset] = src[i]
}
return i
}
function isnan (val) {
return val !== val // eslint-disable-line no-self-compare
}
/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
/***/ }),
/* 195 */
/***/ (function(module, exports) {
'use strict'
exports.byteLength = byteLength
exports.toByteArray = toByteArray
exports.fromByteArray = fromByteArray
var lookup = []
var revLookup = []
var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
for (var i = 0, len = code.length; i < len; ++i) {
lookup[i] = code[i]
revLookup[code.charCodeAt(i)] = i
}
// Support decoding URL-safe base64 strings, as Node.js does.
// See: https://en.wikipedia.org/wiki/Base64#URL_applications
revLookup['-'.charCodeAt(0)] = 62
revLookup['_'.charCodeAt(0)] = 63
function getLens (b64) {
var len = b64.length
if (len % 4 > 0) {
throw new Error('Invalid string. Length must be a multiple of 4')
}
// Trim off extra bytes after placeholder bytes are found
// See: https://github.com/beatgammit/base64-js/issues/42
var validLen = b64.indexOf('=')
if (validLen === -1) validLen = len
var placeHoldersLen = validLen === len
? 0
: 4 - (validLen % 4)
return [validLen, placeHoldersLen]
}
// base64 is 4/3 + up to two characters of the original data
function byteLength (b64) {
var lens = getLens(b64)
var validLen = lens[0]
var placeHoldersLen = lens[1]
return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen
}
function _byteLength (b64, validLen, placeHoldersLen) {
return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen
}
function toByteArray (b64) {
var tmp
var lens = getLens(b64)
var validLen = lens[0]
var placeHoldersLen = lens[1]
var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))
var curByte = 0
// if there are placeholders, only get up to the last complete 4 chars
var len = placeHoldersLen > 0
? validLen - 4
: validLen
for (var i = 0; i < len; i += 4) {
tmp =
(revLookup[b64.charCodeAt(i)] << 18) |
(revLookup[b64.charCodeAt(i + 1)] << 12) |
(revLookup[b64.charCodeAt(i + 2)] << 6) |
revLookup[b64.charCodeAt(i + 3)]
arr[curByte++] = (tmp >> 16) & 0xFF
arr[curByte++] = (tmp >> 8) & 0xFF
arr[curByte++] = tmp & 0xFF
}
if (placeHoldersLen === 2) {
tmp =
(revLookup[b64.charCodeAt(i)] << 2) |
(revLookup[b64.charCodeAt(i + 1)] >> 4)
arr[curByte++] = tmp & 0xFF
}
if (placeHoldersLen === 1) {
tmp =
(revLookup[b64.charCodeAt(i)] << 10) |
(revLookup[b64.charCodeAt(i + 1)] << 4) |
(revLookup[b64.charCodeAt(i + 2)] >> 2)
arr[curByte++] = (tmp >> 8) & 0xFF
arr[curByte++] = tmp & 0xFF
}
return arr
}
function tripletToBase64 (num) {
return lookup[num >> 18 & 0x3F] +
lookup[num >> 12 & 0x3F] +
lookup[num >> 6 & 0x3F] +
lookup[num & 0x3F]
}
function encodeChunk (uint8, start, end) {
var tmp
var output = []
for (var i = start; i < end; i += 3) {
tmp =
((uint8[i] << 16) & 0xFF0000) +
((uint8[i + 1] << 8) & 0xFF00) +
(uint8[i + 2] & 0xFF)
output.push(tripletToBase64(tmp))
}
return output.join('')
}
function fromByteArray (uint8) {
var tmp
var len = uint8.length
var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
var parts = []
var maxChunkLength = 16383 // must be multiple of 3
// go through the array every three bytes, we'll deal with trailing stuff later
for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
parts.push(encodeChunk(
uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)
))
}
// pad the end with zeros, but make sure to not forget the extra bytes
if (extraBytes === 1) {
tmp = uint8[len - 1]
parts.push(
lookup[tmp >> 2] +
lookup[(tmp << 4) & 0x3F] +
'=='
)
} else if (extraBytes === 2) {
tmp = (uint8[len - 2] << 8) + uint8[len - 1]
parts.push(
lookup[tmp >> 10] +
lookup[(tmp >> 4) & 0x3F] +
lookup[(tmp << 2) & 0x3F] +
'='
)
}
return parts.join('')
}
/***/ }),
/* 196 */
/***/ (function(module, exports) {
exports.read = function (buffer, offset, isLE, mLen, nBytes) {
var e, m
var eLen = (nBytes * 8) - mLen - 1
var eMax = (1 << eLen) - 1
var eBias = eMax >> 1
var nBits = -7
var i = isLE ? (nBytes - 1) : 0
var d = isLE ? -1 : 1
var s = buffer[offset + i]
i += d
e = s & ((1 << (-nBits)) - 1)
s >>= (-nBits)
nBits += eLen
for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}
m = e & ((1 << (-nBits)) - 1)
e >>= (-nBits)
nBits += mLen
for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}
if (e === 0) {
e = 1 - eBias
} else if (e === eMax) {
return m ? NaN : ((s ? -1 : 1) * Infinity)
} else {
m = m + Math.pow(2, mLen)
e = e - eBias
}
return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
}
exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
var e, m, c
var eLen = (nBytes * 8) - mLen - 1
var eMax = (1 << eLen) - 1
var eBias = eMax >> 1
var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
var i = isLE ? 0 : (nBytes - 1)
var d = isLE ? 1 : -1
var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
value = Math.abs(value)
if (isNaN(value) || value === Infinity) {
m = isNaN(value) ? 1 : 0
e = eMax
} else {
e = Math.floor(Math.log(value) / Math.LN2)
if (value * (c = Math.pow(2, -e)) < 1) {
e--
c *= 2
}
if (e + eBias >= 1) {
value += rt / c
} else {
value += rt * Math.pow(2, 1 - eBias)
}
if (value * c >= 2) {
e++
c /= 2
}
if (e + eBias >= eMax) {
m = 0
e = eMax
} else if (e + eBias >= 1) {
m = ((value * c) - 1) * Math.pow(2, mLen)
e = e + eBias
} else {
m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
e = 0
}
}
for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
e = (e << mLen) | m
eLen += mLen
for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
buffer[offset + i - d] |= s * 128
}
/***/ }),
/* 197 */
/***/ (function(module, exports) {
var toString = {}.toString;
module.exports = Array.isArray || function (arr) {
return toString.call(arr) == '[object Array]';
};
/***/ }),
/* 198 */
/***/ (function(module, exports, __webpack_require__) {
/*
* This file is used by module bundlers (browserify/webpack/etc) when
* including a stream implementation. We use "readable-stream" to get a
* consistent behavior between nodejs versions but bundlers often have a shim
* for "stream". Using this shim greatly improve the compatibility and greatly
* reduce the final size of the bundle (only one stream implementation, not
* two).
*/
module.exports = __webpack_require__(199);
/***/ }),
/* 199 */
/***/ (function(module, exports, __webpack_require__) {
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
module.exports = Stream;
var EE = __webpack_require__(200).EventEmitter;
var inherits = __webpack_require__(201);
inherits(Stream, EE);
Stream.Readable = __webpack_require__(202);
Stream.Writable = __webpack_require__(220);
Stream.Duplex = __webpack_require__(221);
Stream.Transform = __webpack_require__(222);
Stream.PassThrough = __webpack_require__(223);
// Backwards-compat with node 0.4.x
Stream.Stream = Stream;
// old-style streams. Note that the pipe method (the only relevant
// part of this class) is overridden in the Readable class.
function Stream() {
EE.call(this);
}
Stream.prototype.pipe = function(dest, options) {
var source = this;
function ondata(chunk) {
if (dest.writable) {
if (false === dest.write(chunk) && source.pause) {
source.pause();
}
}
}
source.on('data', ondata);
function ondrain() {
if (source.readable && source.resume) {
source.resume();
}
}
dest.on('drain', ondrain);
// If the 'end' option is not supplied, dest.end() will be called when
// source gets the 'end' or 'close' events. Only dest.end() once.
if (!dest._isStdio && (!options || options.end !== false)) {
source.on('end', onend);
source.on('close', onclose);
}
var didOnEnd = false;
function onend() {
if (didOnEnd) return;
didOnEnd = true;
dest.end();
}
function onclose() {
if (didOnEnd) return;
didOnEnd = true;
if (typeof dest.destroy === 'function') dest.destroy();
}
// don't leave dangling pipes when there are errors.
function onerror(er) {
cleanup();
if (EE.listenerCount(this, 'error') === 0) {
throw er; // Unhandled stream error in pipe.
}
}
source.on('error', onerror);
dest.on('error', onerror);
// remove all the event listeners that were added.
function cleanup() {
source.removeListener('data', ondata);
dest.removeListener('drain', ondrain);
source.removeListener('end', onend);
source.removeListener('close', onclose);
source.removeListener('error', onerror);
dest.removeListener('error', onerror);
source.removeListener('end', cleanup);
source.removeListener('close', cleanup);
dest.removeListener('close', cleanup);
}
source.on('end', cleanup);
source.on('close', cleanup);
dest.on('close', cleanup);
dest.emit('pipe', source);
// Allow for unix-like usage: A.pipe(B).pipe(C)
return dest;
};
/***/ }),
/* 200 */
/***/ (function(module, exports) {
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
function EventEmitter() {
this._events = this._events || {};
this._maxListeners = this._maxListeners || undefined;
}
module.exports = EventEmitter;
// Backwards-compat with node 0.10.x
EventEmitter.EventEmitter = EventEmitter;
EventEmitter.prototype._events = undefined;
EventEmitter.prototype._maxListeners = undefined;
// By default EventEmitters will print a warning if more than 10 listeners are
// added to it. This is a useful default which helps finding memory leaks.
EventEmitter.defaultMaxListeners = 10;
// Obviously not all Emitters should be limited to 10. This function allows
// that to be increased. Set to zero for unlimited.
EventEmitter.prototype.setMaxListeners = function(n) {
if (!isNumber(n) || n < 0 || isNaN(n))
throw TypeError('n must be a positive number');
this._maxListeners = n;
return this;
};
EventEmitter.prototype.emit = function(type) {
var er, handler, len, args, i, listeners;
if (!this._events)
this._events = {};
// If there is no 'error' event listener then throw.
if (type === 'error') {
if (!this._events.error ||
(isObject(this._events.error) && !this._events.error.length)) {
er = arguments[1];
if (er instanceof Error) {
throw er; // Unhandled 'error' event
} else {
// At least give some kind of context to the user
var err = new Error('Uncaught, unspecified "error" event. (' + er + ')');
err.context = er;
throw err;
}
}
}
handler = this._events[type];
if (isUndefined(handler))
return false;
if (isFunction(handler)) {
switch (arguments.length) {
// fast cases
case 1:
handler.call(this);
break;
case 2:
handler.call(this, arguments[1]);
break;
case 3:
handler.call(this, arguments[1], arguments[2]);
break;
// slower
default:
args = Array.prototype.slice.call(arguments, 1);
handler.apply(this, args);
}
} else if (isObject(handler)) {
args = Array.prototype.slice.call(arguments, 1);
listeners = handler.slice();
len = listeners.length;
for (i = 0; i < len; i++)
listeners[i].apply(this, args);
}
return true;
};
EventEmitter.prototype.addListener = function(type, listener) {
var m;
if (!isFunction(listener))
throw TypeError('listener must be a function');
if (!this._events)
this._events = {};
// To avoid recursion in the case that type === "newListener"! Before
// adding it to the listeners, first emit "newListener".
if (this._events.newListener)
this.emit('newListener', type,
isFunction(listener.listener) ?
listener.listener : listener);
if (!this._events[type])
// Optimize the case of one listener. Don't need the extra array object.
this._events[type] = listener;
else if (isObject(this._events[type]))
// If we've already got an array, just append.
this._events[type].push(listener);
else
// Adding the second element, need to change to array.
this._events[type] = [this._events[type], listener];
// Check for listener leak
if (isObject(this._events[type]) && !this._events[type].warned) {
if (!isUndefined(this._maxListeners)) {
m = this._maxListeners;
} else {
m = EventEmitter.defaultMaxListeners;
}
if (m && m > 0 && this._events[type].length > m) {
this._events[type].warned = true;
console.error('(node) warning: possible EventEmitter memory ' +
'leak detected. %d listeners added. ' +
'Use emitter.setMaxListeners() to increase limit.',
this._events[type].length);
if (typeof console.trace === 'function') {
// not supported in IE 10
console.trace();
}
}
}
return this;
};
EventEmitter.prototype.on = EventEmitter.prototype.addListener;
EventEmitter.prototype.once = function(type, listener) {
if (!isFunction(listener))
throw TypeError('listener must be a function');
var fired = false;
function g() {
this.removeListener(type, g);
if (!fired) {
fired = true;
listener.apply(this, arguments);
}
}
g.listener = listener;
this.on(type, g);
return this;
};
// emits a 'removeListener' event iff the listener was removed
EventEmitter.prototype.removeListener = function(type, listener) {
var list, position, length, i;
if (!isFunction(listener))
throw TypeError('listener must be a function');
if (!this._events || !this._events[type])
return this;
list = this._events[type];
length = list.length;
position = -1;
if (list === listener ||
(isFunction(list.listener) && list.listener === listener)) {
delete this._events[type];
if (this._events.removeListener)
this.emit('removeListener', type, listener);
} else if (isObject(list)) {
for (i = length; i-- > 0;) {
if (list[i] === listener ||
(list[i].listener && list[i].listener === listener)) {
position = i;
break;
}
}
if (position < 0)
return this;
if (list.length === 1) {
list.length = 0;
delete this._events[type];
} else {
list.splice(position, 1);
}
if (this._events.removeListener)
this.emit('removeListener', type, listener);
}
return this;
};
EventEmitter.prototype.removeAllListeners = function(type) {
var key, listeners;
if (!this._events)
return this;
// not listening for removeListener, no need to emit
if (!this._events.removeListener) {
if (arguments.length === 0)
this._events = {};
else if (this._events[type])
delete this._events[type];
return this;
}
// emit removeListener for all listeners on all events
if (arguments.length === 0) {
for (key in this._events) {
if (key === 'removeListener') continue;
this.removeAllListeners(key);
}
this.removeAllListeners('removeListener');
this._events = {};
return this;
}
listeners = this._events[type];
if (isFunction(listeners)) {
this.removeListener(type, listeners);
} else if (listeners) {
// LIFO order
while (listeners.length)
this.removeListener(type, listeners[listeners.length - 1]);
}
delete this._events[type];
return this;
};
EventEmitter.prototype.listeners = function(type) {
var ret;
if (!this._events || !this._events[type])
ret = [];
else if (isFunction(this._events[type]))
ret = [this._events[type]];
else
ret = this._events[type].slice();
return ret;
};
EventEmitter.prototype.listenerCount = function(type) {
if (this._events) {
var evlistener = this._events[type];
if (isFunction(evlistener))
return 1;
else if (evlistener)
return evlistener.length;
}
return 0;
};
EventEmitter.listenerCount = function(emitter, type) {
return emitter.listenerCount(type);
};
function isFunction(arg) {
return typeof arg === 'function';
}
function isNumber(arg) {
return typeof arg === 'number';
}
function isObject(arg) {
return typeof arg === 'object' && arg !== null;
}
function isUndefined(arg) {
return arg === void 0;
}
/***/ }),
/* 201 */
/***/ (function(module, exports) {
if (typeof Object.create === 'function') {
// implementation from standard node.js 'util' module
module.exports = function inherits(ctor, superCtor) {
ctor.super_ = superCtor
ctor.prototype = Object.create(superCtor.prototype, {
constructor: {
value: ctor,
enumerable: false,
writable: true,
configurable: true
}
});
};
} else {
// old school shim for old browsers
module.exports = function inherits(ctor, superCtor) {
ctor.super_ = superCtor
var TempCtor = function () {}
TempCtor.prototype = superCtor.prototype
ctor.prototype = new TempCtor()
ctor.prototype.constructor = ctor
}
}
/***/ }),
/* 202 */
/***/ (function(module, exports, __webpack_require__) {
exports = module.exports = __webpack_require__(203);
exports.Stream = exports;
exports.Readable = exports;
exports.Writable = __webpack_require__(213);
exports.Duplex = __webpack_require__(212);
exports.Transform = __webpack_require__(218);
exports.PassThrough = __webpack_require__(219);
/***/ }),
/* 203 */
/***/ (function(module, exports, __webpack_require__) {
/* WEBPACK VAR INJECTION */(function(global, process) {// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
'use strict';
/**/
var pna = __webpack_require__(204);
/* */
module.exports = Readable;
/**/
var isArray = __webpack_require__(197);
/* */
/**/
var Duplex;
/* */
Readable.ReadableState = ReadableState;
/**/
var EE = __webpack_require__(200).EventEmitter;
var EElistenerCount = function (emitter, type) {
return emitter.listeners(type).length;
};
/* */
/**/
var Stream = __webpack_require__(205);
/* */
/**/
var Buffer = __webpack_require__(206).Buffer;
var OurUint8Array = global.Uint8Array || function () {};
function _uint8ArrayToBuffer(chunk) {
return Buffer.from(chunk);
}
function _isUint8Array(obj) {
return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
}
/* */
/**/
var util = __webpack_require__(207);
util.inherits = __webpack_require__(201);
/* */
/**/
var debugUtil = __webpack_require__(208);
var debug = void 0;
if (debugUtil && debugUtil.debuglog) {
debug = debugUtil.debuglog('stream');
} else {
debug = function () {};
}
/* */
var BufferList = __webpack_require__(209);
var destroyImpl = __webpack_require__(211);
var StringDecoder;
util.inherits(Readable, Stream);
var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];
function prependListener(emitter, event, fn) {
// Sadly this is not cacheable as some libraries bundle their own
// event emitter implementation with them.
if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);
// This is a hack to make sure that our error handler is attached before any
// userland ones. NEVER DO THIS. This is here only because this code needs
// to continue to work with older versions of Node.js that do not include
// the prependListener() method. The goal is to eventually remove this hack.
if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];
}
function ReadableState(options, stream) {
Duplex = Duplex || __webpack_require__(212);
options = options || {};
// Duplex streams are both readable and writable, but share
// the same options object.
// However, some cases require setting options to different
// values for the readable and the writable sides of the duplex stream.
// These options can be provided separately as readableXXX and writableXXX.
var isDuplex = stream instanceof Duplex;
// object stream flag. Used to make read(n) ignore n and to
// make all the buffer merging and length checks go away
this.objectMode = !!options.objectMode;
if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;
// the point at which it stops calling _read() to fill the buffer
// Note: 0 is a valid value, means "don't call _read preemptively ever"
var hwm = options.highWaterMark;
var readableHwm = options.readableHighWaterMark;
var defaultHwm = this.objectMode ? 16 : 16 * 1024;
if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;
// cast to ints.
this.highWaterMark = Math.floor(this.highWaterMark);
// A linked list is used to store data chunks instead of an array because the
// linked list can remove elements from the beginning faster than
// array.shift()
this.buffer = new BufferList();
this.length = 0;
this.pipes = null;
this.pipesCount = 0;
this.flowing = null;
this.ended = false;
this.endEmitted = false;
this.reading = false;
// a flag to be able to tell if the event 'readable'/'data' is emitted
// immediately, or on a later tick. We set this to true at first, because
// any actions that shouldn't happen until "later" should generally also
// not happen before the first read call.
this.sync = true;
// whenever we return null, then we set a flag to say
// that we're awaiting a 'readable' event emission.
this.needReadable = false;
this.emittedReadable = false;
this.readableListening = false;
this.resumeScheduled = false;
// has it been destroyed
this.destroyed = false;
// Crypto is kind of old and crusty. Historically, its default string
// encoding is 'binary' so we have to make this configurable.
// Everything else in the universe uses 'utf8', though.
this.defaultEncoding = options.defaultEncoding || 'utf8';
// the number of writers that are awaiting a drain event in .pipe()s
this.awaitDrain = 0;
// if true, a maybeReadMore has been scheduled
this.readingMore = false;
this.decoder = null;
this.encoding = null;
if (options.encoding) {
if (!StringDecoder) StringDecoder = __webpack_require__(217).StringDecoder;
this.decoder = new StringDecoder(options.encoding);
this.encoding = options.encoding;
}
}
function Readable(options) {
Duplex = Duplex || __webpack_require__(212);
if (!(this instanceof Readable)) return new Readable(options);
this._readableState = new ReadableState(options, this);
// legacy
this.readable = true;
if (options) {
if (typeof options.read === 'function') this._read = options.read;
if (typeof options.destroy === 'function') this._destroy = options.destroy;
}
Stream.call(this);
}
Object.defineProperty(Readable.prototype, 'destroyed', {
get: function () {
if (this._readableState === undefined) {
return false;
}
return this._readableState.destroyed;
},
set: function (value) {
// we ignore the value if the stream
// has not been initialized yet
if (!this._readableState) {
return;
}
// backward compatibility, the user is explicitly
// managing destroyed
this._readableState.destroyed = value;
}
});
Readable.prototype.destroy = destroyImpl.destroy;
Readable.prototype._undestroy = destroyImpl.undestroy;
Readable.prototype._destroy = function (err, cb) {
this.push(null);
cb(err);
};
// Manually shove something into the read() buffer.
// This returns true if the highWaterMark has not been hit yet,
// similar to how Writable.write() returns true if you should
// write() some more.
Readable.prototype.push = function (chunk, encoding) {
var state = this._readableState;
var skipChunkCheck;
if (!state.objectMode) {
if (typeof chunk === 'string') {
encoding = encoding || state.defaultEncoding;
if (encoding !== state.encoding) {
chunk = Buffer.from(chunk, encoding);
encoding = '';
}
skipChunkCheck = true;
}
} else {
skipChunkCheck = true;
}
return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);
};
// Unshift should *always* be something directly out of read()
Readable.prototype.unshift = function (chunk) {
return readableAddChunk(this, chunk, null, true, false);
};
function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {
var state = stream._readableState;
if (chunk === null) {
state.reading = false;
onEofChunk(stream, state);
} else {
var er;
if (!skipChunkCheck) er = chunkInvalid(state, chunk);
if (er) {
stream.emit('error', er);
} else if (state.objectMode || chunk && chunk.length > 0) {
if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {
chunk = _uint8ArrayToBuffer(chunk);
}
if (addToFront) {
if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);
} else if (state.ended) {
stream.emit('error', new Error('stream.push() after EOF'));
} else {
state.reading = false;
if (state.decoder && !encoding) {
chunk = state.decoder.write(chunk);
if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);
} else {
addChunk(stream, state, chunk, false);
}
}
} else if (!addToFront) {
state.reading = false;
}
}
return needMoreData(state);
}
function addChunk(stream, state, chunk, addToFront) {
if (state.flowing && state.length === 0 && !state.sync) {
stream.emit('data', chunk);
stream.read(0);
} else {
// update the buffer info.
state.length += state.objectMode ? 1 : chunk.length;
if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);
if (state.needReadable) emitReadable(stream);
}
maybeReadMore(stream, state);
}
function chunkInvalid(state, chunk) {
var er;
if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
er = new TypeError('Invalid non-string/buffer chunk');
}
return er;
}
// if it's past the high water mark, we can push in some more.
// Also, if we have no data yet, we can stand some
// more bytes. This is to work around cases where hwm=0,
// such as the repl. Also, if the push() triggered a
// readable event, and the user called read(largeNumber) such that
// needReadable was set, then we ought to push more, so that another
// 'readable' event will be triggered.
function needMoreData(state) {
return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);
}
Readable.prototype.isPaused = function () {
return this._readableState.flowing === false;
};
// backwards compatibility.
Readable.prototype.setEncoding = function (enc) {
if (!StringDecoder) StringDecoder = __webpack_require__(217).StringDecoder;
this._readableState.decoder = new StringDecoder(enc);
this._readableState.encoding = enc;
return this;
};
// Don't raise the hwm > 8MB
var MAX_HWM = 0x800000;
function computeNewHighWaterMark(n) {
if (n >= MAX_HWM) {
n = MAX_HWM;
} else {
// Get the next highest power of 2 to prevent increasing hwm excessively in
// tiny amounts
n--;
n |= n >>> 1;
n |= n >>> 2;
n |= n >>> 4;
n |= n >>> 8;
n |= n >>> 16;
n++;
}
return n;
}
// This function is designed to be inlinable, so please take care when making
// changes to the function body.
function howMuchToRead(n, state) {
if (n <= 0 || state.length === 0 && state.ended) return 0;
if (state.objectMode) return 1;
if (n !== n) {
// Only flow one buffer at a time
if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;
}
// If we're asking for more than the current hwm, then raise the hwm.
if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
if (n <= state.length) return n;
// Don't have enough
if (!state.ended) {
state.needReadable = true;
return 0;
}
return state.length;
}
// you can override either this method, or the async _read(n) below.
Readable.prototype.read = function (n) {
debug('read', n);
n = parseInt(n, 10);
var state = this._readableState;
var nOrig = n;
if (n !== 0) state.emittedReadable = false;
// if we're doing read(0) to trigger a readable event, but we
// already have a bunch of data in the buffer, then just trigger
// the 'readable' event and move on.
if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {
debug('read: emitReadable', state.length, state.ended);
if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);
return null;
}
n = howMuchToRead(n, state);
// if we've ended, and we're now clear, then finish it up.
if (n === 0 && state.ended) {
if (state.length === 0) endReadable(this);
return null;
}
// All the actual chunk generation logic needs to be
// *below* the call to _read. The reason is that in certain
// synthetic stream cases, such as passthrough streams, _read
// may be a completely synchronous operation which may change
// the state of the read buffer, providing enough data when
// before there was *not* enough.
//
// So, the steps are:
// 1. Figure out what the state of things will be after we do
// a read from the buffer.
//
// 2. If that resulting state will trigger a _read, then call _read.
// Note that this may be asynchronous, or synchronous. Yes, it is
// deeply ugly to write APIs this way, but that still doesn't mean
// that the Readable class should behave improperly, as streams are
// designed to be sync/async agnostic.
// Take note if the _read call is sync or async (ie, if the read call
// has returned yet), so that we know whether or not it's safe to emit
// 'readable' etc.
//
// 3. Actually pull the requested chunks out of the buffer and return.
// if we need a readable event, then we need to do some reading.
var doRead = state.needReadable;
debug('need readable', doRead);
// if we currently have less than the highWaterMark, then also read some
if (state.length === 0 || state.length - n < state.highWaterMark) {
doRead = true;
debug('length less than watermark', doRead);
}
// however, if we've ended, then there's no point, and if we're already
// reading, then it's unnecessary.
if (state.ended || state.reading) {
doRead = false;
debug('reading or ended', doRead);
} else if (doRead) {
debug('do read');
state.reading = true;
state.sync = true;
// if the length is currently zero, then we *need* a readable event.
if (state.length === 0) state.needReadable = true;
// call internal read method
this._read(state.highWaterMark);
state.sync = false;
// If _read pushed data synchronously, then `reading` will be false,
// and we need to re-evaluate how much data we can return to the user.
if (!state.reading) n = howMuchToRead(nOrig, state);
}
var ret;
if (n > 0) ret = fromList(n, state);else ret = null;
if (ret === null) {
state.needReadable = true;
n = 0;
} else {
state.length -= n;
}
if (state.length === 0) {
// If we have nothing in the buffer, then we want to know
// as soon as we *do* get something into the buffer.
if (!state.ended) state.needReadable = true;
// If we tried to read() past the EOF, then emit end on the next tick.
if (nOrig !== n && state.ended) endReadable(this);
}
if (ret !== null) this.emit('data', ret);
return ret;
};
function onEofChunk(stream, state) {
if (state.ended) return;
if (state.decoder) {
var chunk = state.decoder.end();
if (chunk && chunk.length) {
state.buffer.push(chunk);
state.length += state.objectMode ? 1 : chunk.length;
}
}
state.ended = true;
// emit 'readable' now to make sure it gets picked up.
emitReadable(stream);
}
// Don't emit readable right away in sync mode, because this can trigger
// another read() call => stack overflow. This way, it might trigger
// a nextTick recursion warning, but that's not so bad.
function emitReadable(stream) {
var state = stream._readableState;
state.needReadable = false;
if (!state.emittedReadable) {
debug('emitReadable', state.flowing);
state.emittedReadable = true;
if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);
}
}
function emitReadable_(stream) {
debug('emit readable');
stream.emit('readable');
flow(stream);
}
// at this point, the user has presumably seen the 'readable' event,
// and called read() to consume some data. that may have triggered
// in turn another _read(n) call, in which case reading = true if
// it's in progress.
// However, if we're not ended, or reading, and the length < hwm,
// then go ahead and try to read some more preemptively.
function maybeReadMore(stream, state) {
if (!state.readingMore) {
state.readingMore = true;
pna.nextTick(maybeReadMore_, stream, state);
}
}
function maybeReadMore_(stream, state) {
var len = state.length;
while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {
debug('maybeReadMore read 0');
stream.read(0);
if (len === state.length)
// didn't get any data, stop spinning.
break;else len = state.length;
}
state.readingMore = false;
}
// abstract method. to be overridden in specific implementation classes.
// call cb(er, data) where data is <= n in length.
// for virtual (non-string, non-buffer) streams, "length" is somewhat
// arbitrary, and perhaps not very meaningful.
Readable.prototype._read = function (n) {
this.emit('error', new Error('_read() is not implemented'));
};
Readable.prototype.pipe = function (dest, pipeOpts) {
var src = this;
var state = this._readableState;
switch (state.pipesCount) {
case 0:
state.pipes = dest;
break;
case 1:
state.pipes = [state.pipes, dest];
break;
default:
state.pipes.push(dest);
break;
}
state.pipesCount += 1;
debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
var endFn = doEnd ? onend : unpipe;
if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);
dest.on('unpipe', onunpipe);
function onunpipe(readable, unpipeInfo) {
debug('onunpipe');
if (readable === src) {
if (unpipeInfo && unpipeInfo.hasUnpiped === false) {
unpipeInfo.hasUnpiped = true;
cleanup();
}
}
}
function onend() {
debug('onend');
dest.end();
}
// when the dest drains, it reduces the awaitDrain counter
// on the source. This would be more elegant with a .once()
// handler in flow(), but adding and removing repeatedly is
// too slow.
var ondrain = pipeOnDrain(src);
dest.on('drain', ondrain);
var cleanedUp = false;
function cleanup() {
debug('cleanup');
// cleanup event handlers once the pipe is broken
dest.removeListener('close', onclose);
dest.removeListener('finish', onfinish);
dest.removeListener('drain', ondrain);
dest.removeListener('error', onerror);
dest.removeListener('unpipe', onunpipe);
src.removeListener('end', onend);
src.removeListener('end', unpipe);
src.removeListener('data', ondata);
cleanedUp = true;
// if the reader is waiting for a drain event from this
// specific writer, then it would cause it to never start
// flowing again.
// So, if this is awaiting a drain, then we just call it now.
// If we don't know, then assume that we are waiting for one.
if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
}
// If the user pushes more data while we're writing to dest then we'll end up
// in ondata again. However, we only want to increase awaitDrain once because
// dest will only emit one 'drain' event for the multiple writes.
// => Introduce a guard on increasing awaitDrain.
var increasedAwaitDrain = false;
src.on('data', ondata);
function ondata(chunk) {
debug('ondata');
increasedAwaitDrain = false;
var ret = dest.write(chunk);
if (false === ret && !increasedAwaitDrain) {
// If the user unpiped during `dest.write()`, it is possible
// to get stuck in a permanently paused state if that write
// also returned false.
// => Check whether `dest` is still a piping destination.
if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {
debug('false write response, pause', src._readableState.awaitDrain);
src._readableState.awaitDrain++;
increasedAwaitDrain = true;
}
src.pause();
}
}
// if the dest has an error, then stop piping into it.
// however, don't suppress the throwing behavior for this.
function onerror(er) {
debug('onerror', er);
unpipe();
dest.removeListener('error', onerror);
if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);
}
// Make sure our error handler is attached before userland ones.
prependListener(dest, 'error', onerror);
// Both close and finish should trigger unpipe, but only once.
function onclose() {
dest.removeListener('finish', onfinish);
unpipe();
}
dest.once('close', onclose);
function onfinish() {
debug('onfinish');
dest.removeListener('close', onclose);
unpipe();
}
dest.once('finish', onfinish);
function unpipe() {
debug('unpipe');
src.unpipe(dest);
}
// tell the dest that it's being piped to
dest.emit('pipe', src);
// start the flow if it hasn't been started already.
if (!state.flowing) {
debug('pipe resume');
src.resume();
}
return dest;
};
function pipeOnDrain(src) {
return function () {
var state = src._readableState;
debug('pipeOnDrain', state.awaitDrain);
if (state.awaitDrain) state.awaitDrain--;
if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {
state.flowing = true;
flow(src);
}
};
}
Readable.prototype.unpipe = function (dest) {
var state = this._readableState;
var unpipeInfo = { hasUnpiped: false };
// if we're not piping anywhere, then do nothing.
if (state.pipesCount === 0) return this;
// just one destination. most common case.
if (state.pipesCount === 1) {
// passed in one, but it's not the right one.
if (dest && dest !== state.pipes) return this;
if (!dest) dest = state.pipes;
// got a match.
state.pipes = null;
state.pipesCount = 0;
state.flowing = false;
if (dest) dest.emit('unpipe', this, unpipeInfo);
return this;
}
// slow case. multiple pipe destinations.
if (!dest) {
// remove all.
var dests = state.pipes;
var len = state.pipesCount;
state.pipes = null;
state.pipesCount = 0;
state.flowing = false;
for (var i = 0; i < len; i++) {
dests[i].emit('unpipe', this, unpipeInfo);
}return this;
}
// try to find the right one.
var index = indexOf(state.pipes, dest);
if (index === -1) return this;
state.pipes.splice(index, 1);
state.pipesCount -= 1;
if (state.pipesCount === 1) state.pipes = state.pipes[0];
dest.emit('unpipe', this, unpipeInfo);
return this;
};
// set up data events if they are asked for
// Ensure readable listeners eventually get something
Readable.prototype.on = function (ev, fn) {
var res = Stream.prototype.on.call(this, ev, fn);
if (ev === 'data') {
// Start flowing on next tick if stream isn't explicitly paused
if (this._readableState.flowing !== false) this.resume();
} else if (ev === 'readable') {
var state = this._readableState;
if (!state.endEmitted && !state.readableListening) {
state.readableListening = state.needReadable = true;
state.emittedReadable = false;
if (!state.reading) {
pna.nextTick(nReadingNextTick, this);
} else if (state.length) {
emitReadable(this);
}
}
}
return res;
};
Readable.prototype.addListener = Readable.prototype.on;
function nReadingNextTick(self) {
debug('readable nexttick read 0');
self.read(0);
}
// pause() and resume() are remnants of the legacy readable stream API
// If the user uses them, then switch into old mode.
Readable.prototype.resume = function () {
var state = this._readableState;
if (!state.flowing) {
debug('resume');
state.flowing = true;
resume(this, state);
}
return this;
};
function resume(stream, state) {
if (!state.resumeScheduled) {
state.resumeScheduled = true;
pna.nextTick(resume_, stream, state);
}
}
function resume_(stream, state) {
if (!state.reading) {
debug('resume read 0');
stream.read(0);
}
state.resumeScheduled = false;
state.awaitDrain = 0;
stream.emit('resume');
flow(stream);
if (state.flowing && !state.reading) stream.read(0);
}
Readable.prototype.pause = function () {
debug('call pause flowing=%j', this._readableState.flowing);
if (false !== this._readableState.flowing) {
debug('pause');
this._readableState.flowing = false;
this.emit('pause');
}
return this;
};
function flow(stream) {
var state = stream._readableState;
debug('flow', state.flowing);
while (state.flowing && stream.read() !== null) {}
}
// wrap an old-style stream as the async data source.
// This is *not* part of the readable stream interface.
// It is an ugly unfortunate mess of history.
Readable.prototype.wrap = function (stream) {
var _this = this;
var state = this._readableState;
var paused = false;
stream.on('end', function () {
debug('wrapped end');
if (state.decoder && !state.ended) {
var chunk = state.decoder.end();
if (chunk && chunk.length) _this.push(chunk);
}
_this.push(null);
});
stream.on('data', function (chunk) {
debug('wrapped data');
if (state.decoder) chunk = state.decoder.write(chunk);
// don't skip over falsy values in objectMode
if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;
var ret = _this.push(chunk);
if (!ret) {
paused = true;
stream.pause();
}
});
// proxy all the other methods.
// important when wrapping filters and duplexes.
for (var i in stream) {
if (this[i] === undefined && typeof stream[i] === 'function') {
this[i] = function (method) {
return function () {
return stream[method].apply(stream, arguments);
};
}(i);
}
}
// proxy certain important events.
for (var n = 0; n < kProxyEvents.length; n++) {
stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));
}
// when we try to consume some more bytes, simply unpause the
// underlying stream.
this._read = function (n) {
debug('wrapped _read', n);
if (paused) {
paused = false;
stream.resume();
}
};
return this;
};
Object.defineProperty(Readable.prototype, 'readableHighWaterMark', {
// making it explicit this property is not enumerable
// because otherwise some prototype manipulation in
// userland will fail
enumerable: false,
get: function () {
return this._readableState.highWaterMark;
}
});
// exposed for testing purposes only.
Readable._fromList = fromList;
// Pluck off n bytes from an array of buffers.
// Length is the combined lengths of all the buffers in the list.
// This function is designed to be inlinable, so please take care when making
// changes to the function body.
function fromList(n, state) {
// nothing buffered
if (state.length === 0) return null;
var ret;
if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {
// read it all, truncate the list
if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);
state.buffer.clear();
} else {
// read part of list
ret = fromListPartial(n, state.buffer, state.decoder);
}
return ret;
}
// Extracts only enough buffered data to satisfy the amount requested.
// This function is designed to be inlinable, so please take care when making
// changes to the function body.
function fromListPartial(n, list, hasStrings) {
var ret;
if (n < list.head.data.length) {
// slice is the same for buffers and strings
ret = list.head.data.slice(0, n);
list.head.data = list.head.data.slice(n);
} else if (n === list.head.data.length) {
// first chunk is a perfect match
ret = list.shift();
} else {
// result spans more than one buffer
ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);
}
return ret;
}
// Copies a specified amount of characters from the list of buffered data
// chunks.
// This function is designed to be inlinable, so please take care when making
// changes to the function body.
function copyFromBufferString(n, list) {
var p = list.head;
var c = 1;
var ret = p.data;
n -= ret.length;
while (p = p.next) {
var str = p.data;
var nb = n > str.length ? str.length : n;
if (nb === str.length) ret += str;else ret += str.slice(0, n);
n -= nb;
if (n === 0) {
if (nb === str.length) {
++c;
if (p.next) list.head = p.next;else list.head = list.tail = null;
} else {
list.head = p;
p.data = str.slice(nb);
}
break;
}
++c;
}
list.length -= c;
return ret;
}
// Copies a specified amount of bytes from the list of buffered data chunks.
// This function is designed to be inlinable, so please take care when making
// changes to the function body.
function copyFromBuffer(n, list) {
var ret = Buffer.allocUnsafe(n);
var p = list.head;
var c = 1;
p.data.copy(ret);
n -= p.data.length;
while (p = p.next) {
var buf = p.data;
var nb = n > buf.length ? buf.length : n;
buf.copy(ret, ret.length - n, 0, nb);
n -= nb;
if (n === 0) {
if (nb === buf.length) {
++c;
if (p.next) list.head = p.next;else list.head = list.tail = null;
} else {
list.head = p;
p.data = buf.slice(nb);
}
break;
}
++c;
}
list.length -= c;
return ret;
}
function endReadable(stream) {
var state = stream._readableState;
// If we get here before consuming all the bytes, then that is a
// bug in node. Should never happen.
if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream');
if (!state.endEmitted) {
state.ended = true;
pna.nextTick(endReadableNT, state, stream);
}
}
function endReadableNT(state, stream) {
// Check that we didn't get one last unshift.
if (!state.endEmitted && state.length === 0) {
state.endEmitted = true;
stream.readable = false;
stream.emit('end');
}
}
function indexOf(xs, x) {
for (var i = 0, l = xs.length; i < l; i++) {
if (xs[i] === x) return i;
}
return -1;
}
/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(175)))
/***/ }),
/* 204 */
/***/ (function(module, exports, __webpack_require__) {
/* WEBPACK VAR INJECTION */(function(process) {'use strict';
if (!process.version ||
process.version.indexOf('v0.') === 0 ||
process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {
module.exports = { nextTick: nextTick };
} else {
module.exports = process
}
function nextTick(fn, arg1, arg2, arg3) {
if (typeof fn !== 'function') {
throw new TypeError('"callback" argument must be a function');
}
var len = arguments.length;
var args, i;
switch (len) {
case 0:
case 1:
return process.nextTick(fn);
case 2:
return process.nextTick(function afterTickOne() {
fn.call(null, arg1);
});
case 3:
return process.nextTick(function afterTickTwo() {
fn.call(null, arg1, arg2);
});
case 4:
return process.nextTick(function afterTickThree() {
fn.call(null, arg1, arg2, arg3);
});
default:
args = new Array(len - 1);
i = 0;
while (i < args.length) {
args[i++] = arguments[i];
}
return process.nextTick(function afterTick() {
fn.apply(null, args);
});
}
}
/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(175)))
/***/ }),
/* 205 */
/***/ (function(module, exports, __webpack_require__) {
module.exports = __webpack_require__(200).EventEmitter;
/***/ }),
/* 206 */
/***/ (function(module, exports, __webpack_require__) {
/* eslint-disable node/no-deprecated-api */
var buffer = __webpack_require__(194)
var Buffer = buffer.Buffer
// alternative to using Object.keys for old browsers
function copyProps (src, dst) {
for (var key in src) {
dst[key] = src[key]
}
}
if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {
module.exports = buffer
} else {
// Copy properties from require('buffer')
copyProps(buffer, exports)
exports.Buffer = SafeBuffer
}
function SafeBuffer (arg, encodingOrOffset, length) {
return Buffer(arg, encodingOrOffset, length)
}
// Copy static methods from Buffer
copyProps(Buffer, SafeBuffer)
SafeBuffer.from = function (arg, encodingOrOffset, length) {
if (typeof arg === 'number') {
throw new TypeError('Argument must not be a number')
}
return Buffer(arg, encodingOrOffset, length)
}
SafeBuffer.alloc = function (size, fill, encoding) {
if (typeof size !== 'number') {
throw new TypeError('Argument must be a number')
}
var buf = Buffer(size)
if (fill !== undefined) {
if (typeof encoding === 'string') {
buf.fill(fill, encoding)
} else {
buf.fill(fill)
}
} else {
buf.fill(0)
}
return buf
}
SafeBuffer.allocUnsafe = function (size) {
if (typeof size !== 'number') {
throw new TypeError('Argument must be a number')
}
return Buffer(size)
}
SafeBuffer.allocUnsafeSlow = function (size) {
if (typeof size !== 'number') {
throw new TypeError('Argument must be a number')
}
return buffer.SlowBuffer(size)
}
/***/ }),
/* 207 */
/***/ (function(module, exports, __webpack_require__) {
/* WEBPACK VAR INJECTION */(function(Buffer) {// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
// NOTE: These type checking functions intentionally don't use `instanceof`
// because it is fragile and can be easily faked with `Object.create()`.
function isArray(arg) {
if (Array.isArray) {
return Array.isArray(arg);
}
return objectToString(arg) === '[object Array]';
}
exports.isArray = isArray;
function isBoolean(arg) {
return typeof arg === 'boolean';
}
exports.isBoolean = isBoolean;
function isNull(arg) {
return arg === null;
}
exports.isNull = isNull;
function isNullOrUndefined(arg) {
return arg == null;
}
exports.isNullOrUndefined = isNullOrUndefined;
function isNumber(arg) {
return typeof arg === 'number';
}
exports.isNumber = isNumber;
function isString(arg) {
return typeof arg === 'string';
}
exports.isString = isString;
function isSymbol(arg) {
return typeof arg === 'symbol';
}
exports.isSymbol = isSymbol;
function isUndefined(arg) {
return arg === void 0;
}
exports.isUndefined = isUndefined;
function isRegExp(re) {
return objectToString(re) === '[object RegExp]';
}
exports.isRegExp = isRegExp;
function isObject(arg) {
return typeof arg === 'object' && arg !== null;
}
exports.isObject = isObject;
function isDate(d) {
return objectToString(d) === '[object Date]';
}
exports.isDate = isDate;
function isError(e) {
return (objectToString(e) === '[object Error]' || e instanceof Error);
}
exports.isError = isError;
function isFunction(arg) {
return typeof arg === 'function';
}
exports.isFunction = isFunction;
function isPrimitive(arg) {
return arg === null ||
typeof arg === 'boolean' ||
typeof arg === 'number' ||
typeof arg === 'string' ||
typeof arg === 'symbol' || // ES6 symbol
typeof arg === 'undefined';
}
exports.isPrimitive = isPrimitive;
exports.isBuffer = Buffer.isBuffer;
function objectToString(o) {
return Object.prototype.toString.call(o);
}
/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(194).Buffer))
/***/ }),
/* 208 */
/***/ (function(module, exports) {
/* (ignored) */
/***/ }),
/* 209 */
/***/ (function(module, exports, __webpack_require__) {
'use strict';
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var Buffer = __webpack_require__(206).Buffer;
var util = __webpack_require__(210);
function copyBuffer(src, target, offset) {
src.copy(target, offset);
}
module.exports = function () {
function BufferList() {
_classCallCheck(this, BufferList);
this.head = null;
this.tail = null;
this.length = 0;
}
BufferList.prototype.push = function push(v) {
var entry = { data: v, next: null };
if (this.length > 0) this.tail.next = entry;else this.head = entry;
this.tail = entry;
++this.length;
};
BufferList.prototype.unshift = function unshift(v) {
var entry = { data: v, next: this.head };
if (this.length === 0) this.tail = entry;
this.head = entry;
++this.length;
};
BufferList.prototype.shift = function shift() {
if (this.length === 0) return;
var ret = this.head.data;
if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;
--this.length;
return ret;
};
BufferList.prototype.clear = function clear() {
this.head = this.tail = null;
this.length = 0;
};
BufferList.prototype.join = function join(s) {
if (this.length === 0) return '';
var p = this.head;
var ret = '' + p.data;
while (p = p.next) {
ret += s + p.data;
}return ret;
};
BufferList.prototype.concat = function concat(n) {
if (this.length === 0) return Buffer.alloc(0);
if (this.length === 1) return this.head.data;
var ret = Buffer.allocUnsafe(n >>> 0);
var p = this.head;
var i = 0;
while (p) {
copyBuffer(p.data, ret, i);
i += p.data.length;
p = p.next;
}
return ret;
};
return BufferList;
}();
if (util && util.inspect && util.inspect.custom) {
module.exports.prototype[util.inspect.custom] = function () {
var obj = util.inspect({ length: this.length });
return this.constructor.name + ' ' + obj;
};
}
/***/ }),
/* 210 */
/***/ (function(module, exports) {
/* (ignored) */
/***/ }),
/* 211 */
/***/ (function(module, exports, __webpack_require__) {
'use strict';
/**/
var pna = __webpack_require__(204);
/* */
// undocumented cb() API, needed for core, not for public API
function destroy(err, cb) {
var _this = this;
var readableDestroyed = this._readableState && this._readableState.destroyed;
var writableDestroyed = this._writableState && this._writableState.destroyed;
if (readableDestroyed || writableDestroyed) {
if (cb) {
cb(err);
} else if (err && (!this._writableState || !this._writableState.errorEmitted)) {
pna.nextTick(emitErrorNT, this, err);
}
return this;
}
// we set destroyed to true before firing error callbacks in order
// to make it re-entrance safe in case destroy() is called within callbacks
if (this._readableState) {
this._readableState.destroyed = true;
}
// if this is a duplex stream mark the writable part as destroyed as well
if (this._writableState) {
this._writableState.destroyed = true;
}
this._destroy(err || null, function (err) {
if (!cb && err) {
pna.nextTick(emitErrorNT, _this, err);
if (_this._writableState) {
_this._writableState.errorEmitted = true;
}
} else if (cb) {
cb(err);
}
});
return this;
}
function undestroy() {
if (this._readableState) {
this._readableState.destroyed = false;
this._readableState.reading = false;
this._readableState.ended = false;
this._readableState.endEmitted = false;
}
if (this._writableState) {
this._writableState.destroyed = false;
this._writableState.ended = false;
this._writableState.ending = false;
this._writableState.finished = false;
this._writableState.errorEmitted = false;
}
}
function emitErrorNT(self, err) {
self.emit('error', err);
}
module.exports = {
destroy: destroy,
undestroy: undestroy
};
/***/ }),
/* 212 */
/***/ (function(module, exports, __webpack_require__) {
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
// a duplex stream is just a stream that is both readable and writable.
// Since JS doesn't have multiple prototypal inheritance, this class
// prototypally inherits from Readable, and then parasitically from
// Writable.
'use strict';
/**/
var pna = __webpack_require__(204);
/* */
/**/
var objectKeys = Object.keys || function (obj) {
var keys = [];
for (var key in obj) {
keys.push(key);
}return keys;
};
/* */
module.exports = Duplex;
/**/
var util = __webpack_require__(207);
util.inherits = __webpack_require__(201);
/* */
var Readable = __webpack_require__(203);
var Writable = __webpack_require__(213);
util.inherits(Duplex, Readable);
{
// avoid scope creep, the keys array can then be collected
var keys = objectKeys(Writable.prototype);
for (var v = 0; v < keys.length; v++) {
var method = keys[v];
if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];
}
}
function Duplex(options) {
if (!(this instanceof Duplex)) return new Duplex(options);
Readable.call(this, options);
Writable.call(this, options);
if (options && options.readable === false) this.readable = false;
if (options && options.writable === false) this.writable = false;
this.allowHalfOpen = true;
if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;
this.once('end', onend);
}
Object.defineProperty(Duplex.prototype, 'writableHighWaterMark', {
// making it explicit this property is not enumerable
// because otherwise some prototype manipulation in
// userland will fail
enumerable: false,
get: function () {
return this._writableState.highWaterMark;
}
});
// the no-half-open enforcer
function onend() {
// if we allow half-open state, or if the writable side ended,
// then we're ok.
if (this.allowHalfOpen || this._writableState.ended) return;
// no more data can be written.
// But allow more writes to happen in this tick.
pna.nextTick(onEndNT, this);
}
function onEndNT(self) {
self.end();
}
Object.defineProperty(Duplex.prototype, 'destroyed', {
get: function () {
if (this._readableState === undefined || this._writableState === undefined) {
return false;
}
return this._readableState.destroyed && this._writableState.destroyed;
},
set: function (value) {
// we ignore the value if the stream
// has not been initialized yet
if (this._readableState === undefined || this._writableState === undefined) {
return;
}
// backward compatibility, the user is explicitly
// managing destroyed
this._readableState.destroyed = value;
this._writableState.destroyed = value;
}
});
Duplex.prototype._destroy = function (err, cb) {
this.push(null);
this.end();
pna.nextTick(cb, err);
};
/***/ }),
/* 213 */
/***/ (function(module, exports, __webpack_require__) {
/* WEBPACK VAR INJECTION */(function(process, setImmediate, global) {// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
// A bit simpler than readable streams.
// Implement an async ._write(chunk, encoding, cb), and it'll handle all
// the drain event emission and buffering.
'use strict';
/**/
var pna = __webpack_require__(204);
/* */
module.exports = Writable;
/* */
function WriteReq(chunk, encoding, cb) {
this.chunk = chunk;
this.encoding = encoding;
this.callback = cb;
this.next = null;
}
// It seems a linked list but it is not
// there will be only 2 of these for each stream
function CorkedRequest(state) {
var _this = this;
this.next = null;
this.entry = null;
this.finish = function () {
onCorkedFinish(_this, state);
};
}
/* */
/**/
var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;
/* */
/**/
var Duplex;
/* */
Writable.WritableState = WritableState;
/**/
var util = __webpack_require__(207);
util.inherits = __webpack_require__(201);
/* */
/**/
var internalUtil = {
deprecate: __webpack_require__(216)
};
/* */
/**/
var Stream = __webpack_require__(205);
/* */
/**/
var Buffer = __webpack_require__(206).Buffer;
var OurUint8Array = global.Uint8Array || function () {};
function _uint8ArrayToBuffer(chunk) {
return Buffer.from(chunk);
}
function _isUint8Array(obj) {
return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
}
/* */
var destroyImpl = __webpack_require__(211);
util.inherits(Writable, Stream);
function nop() {}
function WritableState(options, stream) {
Duplex = Duplex || __webpack_require__(212);
options = options || {};
// Duplex streams are both readable and writable, but share
// the same options object.
// However, some cases require setting options to different
// values for the readable and the writable sides of the duplex stream.
// These options can be provided separately as readableXXX and writableXXX.
var isDuplex = stream instanceof Duplex;
// object stream flag to indicate whether or not this stream
// contains buffers or objects.
this.objectMode = !!options.objectMode;
if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;
// the point at which write() starts returning false
// Note: 0 is a valid value, means that we always return false if
// the entire buffer is not flushed immediately on write()
var hwm = options.highWaterMark;
var writableHwm = options.writableHighWaterMark;
var defaultHwm = this.objectMode ? 16 : 16 * 1024;
if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;
// cast to ints.
this.highWaterMark = Math.floor(this.highWaterMark);
// if _final has been called
this.finalCalled = false;
// drain event flag.
this.needDrain = false;
// at the start of calling end()
this.ending = false;
// when end() has been called, and returned
this.ended = false;
// when 'finish' is emitted
this.finished = false;
// has it been destroyed
this.destroyed = false;
// should we decode strings into buffers before passing to _write?
// this is here so that some node-core streams can optimize string
// handling at a lower level.
var noDecode = options.decodeStrings === false;
this.decodeStrings = !noDecode;
// Crypto is kind of old and crusty. Historically, its default string
// encoding is 'binary' so we have to make this configurable.
// Everything else in the universe uses 'utf8', though.
this.defaultEncoding = options.defaultEncoding || 'utf8';
// not an actual buffer we keep track of, but a measurement
// of how much we're waiting to get pushed to some underlying
// socket or file.
this.length = 0;
// a flag to see when we're in the middle of a write.
this.writing = false;
// when true all writes will be buffered until .uncork() call
this.corked = 0;
// a flag to be able to tell if the onwrite cb is called immediately,
// or on a later tick. We set this to true at first, because any
// actions that shouldn't happen until "later" should generally also
// not happen before the first write call.
this.sync = true;
// a flag to know if we're processing previously buffered items, which
// may call the _write() callback in the same tick, so that we don't
// end up in an overlapped onwrite situation.
this.bufferProcessing = false;
// the callback that's passed to _write(chunk,cb)
this.onwrite = function (er) {
onwrite(stream, er);
};
// the callback that the user supplies to write(chunk,encoding,cb)
this.writecb = null;
// the amount that is being written when _write is called.
this.writelen = 0;
this.bufferedRequest = null;
this.lastBufferedRequest = null;
// number of pending user-supplied write callbacks
// this must be 0 before 'finish' can be emitted
this.pendingcb = 0;
// emit prefinish if the only thing we're waiting for is _write cbs
// This is relevant for synchronous Transform streams
this.prefinished = false;
// True if the error was already emitted and should not be thrown again
this.errorEmitted = false;
// count buffered requests
this.bufferedRequestCount = 0;
// allocate the first CorkedRequest, there is always
// one allocated and free to use, and we maintain at most two
this.corkedRequestsFree = new CorkedRequest(this);
}
WritableState.prototype.getBuffer = function getBuffer() {
var current = this.bufferedRequest;
var out = [];
while (current) {
out.push(current);
current = current.next;
}
return out;
};
(function () {
try {
Object.defineProperty(WritableState.prototype, 'buffer', {
get: internalUtil.deprecate(function () {
return this.getBuffer();
}, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')
});
} catch (_) {}
})();
// Test _writableState for inheritance to account for Duplex streams,
// whose prototype chain only points to Readable.
var realHasInstance;
if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {
realHasInstance = Function.prototype[Symbol.hasInstance];
Object.defineProperty(Writable, Symbol.hasInstance, {
value: function (object) {
if (realHasInstance.call(this, object)) return true;
if (this !== Writable) return false;
return object && object._writableState instanceof WritableState;
}
});
} else {
realHasInstance = function (object) {
return object instanceof this;
};
}
function Writable(options) {
Duplex = Duplex || __webpack_require__(212);
// Writable ctor is applied to Duplexes, too.
// `realHasInstance` is necessary because using plain `instanceof`
// would return false, as no `_writableState` property is attached.
// Trying to use the custom `instanceof` for Writable here will also break the
// Node.js LazyTransform implementation, which has a non-trivial getter for
// `_writableState` that would lead to infinite recursion.
if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {
return new Writable(options);
}
this._writableState = new WritableState(options, this);
// legacy.
this.writable = true;
if (options) {
if (typeof options.write === 'function') this._write = options.write;
if (typeof options.writev === 'function') this._writev = options.writev;
if (typeof options.destroy === 'function') this._destroy = options.destroy;
if (typeof options.final === 'function') this._final = options.final;
}
Stream.call(this);
}
// Otherwise people can pipe Writable streams, which is just wrong.
Writable.prototype.pipe = function () {
this.emit('error', new Error('Cannot pipe, not readable'));
};
function writeAfterEnd(stream, cb) {
var er = new Error('write after end');
// TODO: defer error events consistently everywhere, not just the cb
stream.emit('error', er);
pna.nextTick(cb, er);
}
// Checks that a user-supplied chunk is valid, especially for the particular
// mode the stream is in. Currently this means that `null` is never accepted
// and undefined/non-string values are only allowed in object mode.
function validChunk(stream, state, chunk, cb) {
var valid = true;
var er = false;
if (chunk === null) {
er = new TypeError('May not write null values to stream');
} else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
er = new TypeError('Invalid non-string/buffer chunk');
}
if (er) {
stream.emit('error', er);
pna.nextTick(cb, er);
valid = false;
}
return valid;
}
Writable.prototype.write = function (chunk, encoding, cb) {
var state = this._writableState;
var ret = false;
var isBuf = !state.objectMode && _isUint8Array(chunk);
if (isBuf && !Buffer.isBuffer(chunk)) {
chunk = _uint8ArrayToBuffer(chunk);
}
if (typeof encoding === 'function') {
cb = encoding;
encoding = null;
}
if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;
if (typeof cb !== 'function') cb = nop;
if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {
state.pendingcb++;
ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);
}
return ret;
};
Writable.prototype.cork = function () {
var state = this._writableState;
state.corked++;
};
Writable.prototype.uncork = function () {
var state = this._writableState;
if (state.corked) {
state.corked--;
if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);
}
};
Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
// node::ParseEncoding() requires lower case.
if (typeof encoding === 'string') encoding = encoding.toLowerCase();
if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);
this._writableState.defaultEncoding = encoding;
return this;
};
function decodeChunk(state, chunk, encoding) {
if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {
chunk = Buffer.from(chunk, encoding);
}
return chunk;
}
Object.defineProperty(Writable.prototype, 'writableHighWaterMark', {
// making it explicit this property is not enumerable
// because otherwise some prototype manipulation in
// userland will fail
enumerable: false,
get: function () {
return this._writableState.highWaterMark;
}
});
// if we're already writing something, then just put this
// in the queue, and wait our turn. Otherwise, call _write
// If we return false, then we need a drain event, so set that flag.
function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {
if (!isBuf) {
var newChunk = decodeChunk(state, chunk, encoding);
if (chunk !== newChunk) {
isBuf = true;
encoding = 'buffer';
chunk = newChunk;
}
}
var len = state.objectMode ? 1 : chunk.length;
state.length += len;
var ret = state.length < state.highWaterMark;
// we must ensure that previous needDrain will not be reset to false.
if (!ret) state.needDrain = true;
if (state.writing || state.corked) {
var last = state.lastBufferedRequest;
state.lastBufferedRequest = {
chunk: chunk,
encoding: encoding,
isBuf: isBuf,
callback: cb,
next: null
};
if (last) {
last.next = state.lastBufferedRequest;
} else {
state.bufferedRequest = state.lastBufferedRequest;
}
state.bufferedRequestCount += 1;
} else {
doWrite(stream, state, false, len, chunk, encoding, cb);
}
return ret;
}
function doWrite(stream, state, writev, len, chunk, encoding, cb) {
state.writelen = len;
state.writecb = cb;
state.writing = true;
state.sync = true;
if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);
state.sync = false;
}
function onwriteError(stream, state, sync, er, cb) {
--state.pendingcb;
if (sync) {
// defer the callback if we are being called synchronously
// to avoid piling up things on the stack
pna.nextTick(cb, er);
// this can emit finish, and it will always happen
// after error
pna.nextTick(finishMaybe, stream, state);
stream._writableState.errorEmitted = true;
stream.emit('error', er);
} else {
// the caller expect this to happen before if
// it is async
cb(er);
stream._writableState.errorEmitted = true;
stream.emit('error', er);
// this can emit finish, but finish must
// always follow error
finishMaybe(stream, state);
}
}
function onwriteStateUpdate(state) {
state.writing = false;
state.writecb = null;
state.length -= state.writelen;
state.writelen = 0;
}
function onwrite(stream, er) {
var state = stream._writableState;
var sync = state.sync;
var cb = state.writecb;
onwriteStateUpdate(state);
if (er) onwriteError(stream, state, sync, er, cb);else {
// Check if we're actually ready to finish, but don't emit yet
var finished = needFinish(state);
if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
clearBuffer(stream, state);
}
if (sync) {
/**/
asyncWrite(afterWrite, stream, state, finished, cb);
/* */
} else {
afterWrite(stream, state, finished, cb);
}
}
}
function afterWrite(stream, state, finished, cb) {
if (!finished) onwriteDrain(stream, state);
state.pendingcb--;
cb();
finishMaybe(stream, state);
}
// Must force callback to be called on nextTick, so that we don't
// emit 'drain' before the write() consumer gets the 'false' return
// value, and has a chance to attach a 'drain' listener.
function onwriteDrain(stream, state) {
if (state.length === 0 && state.needDrain) {
state.needDrain = false;
stream.emit('drain');
}
}
// if there's something in the buffer waiting, then process it
function clearBuffer(stream, state) {
state.bufferProcessing = true;
var entry = state.bufferedRequest;
if (stream._writev && entry && entry.next) {
// Fast case, write everything using _writev()
var l = state.bufferedRequestCount;
var buffer = new Array(l);
var holder = state.corkedRequestsFree;
holder.entry = entry;
var count = 0;
var allBuffers = true;
while (entry) {
buffer[count] = entry;
if (!entry.isBuf) allBuffers = false;
entry = entry.next;
count += 1;
}
buffer.allBuffers = allBuffers;
doWrite(stream, state, true, state.length, buffer, '', holder.finish);
// doWrite is almost always async, defer these to save a bit of time
// as the hot path ends with doWrite
state.pendingcb++;
state.lastBufferedRequest = null;
if (holder.next) {
state.corkedRequestsFree = holder.next;
holder.next = null;
} else {
state.corkedRequestsFree = new CorkedRequest(state);
}
state.bufferedRequestCount = 0;
} else {
// Slow case, write chunks one-by-one
while (entry) {
var chunk = entry.chunk;
var encoding = entry.encoding;
var cb = entry.callback;
var len = state.objectMode ? 1 : chunk.length;
doWrite(stream, state, false, len, chunk, encoding, cb);
entry = entry.next;
state.bufferedRequestCount--;
// if we didn't call the onwrite immediately, then
// it means that we need to wait until it does.
// also, that means that the chunk and cb are currently
// being processed, so move the buffer counter past them.
if (state.writing) {
break;
}
}
if (entry === null) state.lastBufferedRequest = null;
}
state.bufferedRequest = entry;
state.bufferProcessing = false;
}
Writable.prototype._write = function (chunk, encoding, cb) {
cb(new Error('_write() is not implemented'));
};
Writable.prototype._writev = null;
Writable.prototype.end = function (chunk, encoding, cb) {
var state = this._writableState;
if (typeof chunk === 'function') {
cb = chunk;
chunk = null;
encoding = null;
} else if (typeof encoding === 'function') {
cb = encoding;
encoding = null;
}
if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);
// .end() fully uncorks
if (state.corked) {
state.corked = 1;
this.uncork();
}
// ignore unnecessary end() calls.
if (!state.ending && !state.finished) endWritable(this, state, cb);
};
function needFinish(state) {
return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;
}
function callFinal(stream, state) {
stream._final(function (err) {
state.pendingcb--;
if (err) {
stream.emit('error', err);
}
state.prefinished = true;
stream.emit('prefinish');
finishMaybe(stream, state);
});
}
function prefinish(stream, state) {
if (!state.prefinished && !state.finalCalled) {
if (typeof stream._final === 'function') {
state.pendingcb++;
state.finalCalled = true;
pna.nextTick(callFinal, stream, state);
} else {
state.prefinished = true;
stream.emit('prefinish');
}
}
}
function finishMaybe(stream, state) {
var need = needFinish(state);
if (need) {
prefinish(stream, state);
if (state.pendingcb === 0) {
state.finished = true;
stream.emit('finish');
}
}
return need;
}
function endWritable(stream, state, cb) {
state.ending = true;
finishMaybe(stream, state);
if (cb) {
if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);
}
state.ended = true;
stream.writable = false;
}
function onCorkedFinish(corkReq, state, err) {
var entry = corkReq.entry;
corkReq.entry = null;
while (entry) {
var cb = entry.callback;
state.pendingcb--;
cb(err);
entry = entry.next;
}
if (state.corkedRequestsFree) {
state.corkedRequestsFree.next = corkReq;
} else {
state.corkedRequestsFree = corkReq;
}
}
Object.defineProperty(Writable.prototype, 'destroyed', {
get: function () {
if (this._writableState === undefined) {
return false;
}
return this._writableState.destroyed;
},
set: function (value) {
// we ignore the value if the stream
// has not been initialized yet
if (!this._writableState) {
return;
}
// backward compatibility, the user is explicitly
// managing destroyed
this._writableState.destroyed = value;
}
});
Writable.prototype.destroy = destroyImpl.destroy;
Writable.prototype._undestroy = destroyImpl.undestroy;
Writable.prototype._destroy = function (err, cb) {
this.end();
cb(err);
};
/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(175), __webpack_require__(214).setImmediate, (function() { return this; }())))
/***/ }),
/* 214 */
/***/ (function(module, exports, __webpack_require__) {
/* WEBPACK VAR INJECTION */(function(global) {var scope = (typeof global !== "undefined" && global) ||
(typeof self !== "undefined" && self) ||
window;
var apply = Function.prototype.apply;
// DOM APIs, for completeness
exports.setTimeout = function() {
return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);
};
exports.setInterval = function() {
return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);
};
exports.clearTimeout =
exports.clearInterval = function(timeout) {
if (timeout) {
timeout.close();
}
};
function Timeout(id, clearFn) {
this._id = id;
this._clearFn = clearFn;
}
Timeout.prototype.unref = Timeout.prototype.ref = function() {};
Timeout.prototype.close = function() {
this._clearFn.call(scope, this._id);
};
// Does not start the time, just sets up the members needed.
exports.enroll = function(item, msecs) {
clearTimeout(item._idleTimeoutId);
item._idleTimeout = msecs;
};
exports.unenroll = function(item) {
clearTimeout(item._idleTimeoutId);
item._idleTimeout = -1;
};
exports._unrefActive = exports.active = function(item) {
clearTimeout(item._idleTimeoutId);
var msecs = item._idleTimeout;
if (msecs >= 0) {
item._idleTimeoutId = setTimeout(function onTimeout() {
if (item._onTimeout)
item._onTimeout();
}, msecs);
}
};
// setimmediate attaches itself to the global object
__webpack_require__(215);
// On some exotic environments, it's not clear which object `setimmediate` was
// able to install onto. Search each possibility in the same order as the
// `setimmediate` library.
exports.setImmediate = (typeof self !== "undefined" && self.setImmediate) ||
(typeof global !== "undefined" && global.setImmediate) ||
(this && this.setImmediate);
exports.clearImmediate = (typeof self !== "undefined" && self.clearImmediate) ||
(typeof global !== "undefined" && global.clearImmediate) ||
(this && this.clearImmediate);
/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
/***/ }),
/* 215 */
/***/ (function(module, exports, __webpack_require__) {
/* WEBPACK VAR INJECTION */(function(global, process) {(function (global, undefined) {
"use strict";
if (global.setImmediate) {
return;
}
var nextHandle = 1; // Spec says greater than zero
var tasksByHandle = {};
var currentlyRunningATask = false;
var doc = global.document;
var registerImmediate;
function setImmediate(callback) {
// Callback can either be a function or a string
if (typeof callback !== "function") {
callback = new Function("" + callback);
}
// Copy function arguments
var args = new Array(arguments.length - 1);
for (var i = 0; i < args.length; i++) {
args[i] = arguments[i + 1];
}
// Store and register the task
var task = { callback: callback, args: args };
tasksByHandle[nextHandle] = task;
registerImmediate(nextHandle);
return nextHandle++;
}
function clearImmediate(handle) {
delete tasksByHandle[handle];
}
function run(task) {
var callback = task.callback;
var args = task.args;
switch (args.length) {
case 0:
callback();
break;
case 1:
callback(args[0]);
break;
case 2:
callback(args[0], args[1]);
break;
case 3:
callback(args[0], args[1], args[2]);
break;
default:
callback.apply(undefined, args);
break;
}
}
function runIfPresent(handle) {
// From the spec: "Wait until any invocations of this algorithm started before this one have completed."
// So if we're currently running a task, we'll need to delay this invocation.
if (currentlyRunningATask) {
// Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a
// "too much recursion" error.
setTimeout(runIfPresent, 0, handle);
} else {
var task = tasksByHandle[handle];
if (task) {
currentlyRunningATask = true;
try {
run(task);
} finally {
clearImmediate(handle);
currentlyRunningATask = false;
}
}
}
}
function installNextTickImplementation() {
registerImmediate = function(handle) {
process.nextTick(function () { runIfPresent(handle); });
};
}
function canUsePostMessage() {
// The test against `importScripts` prevents this implementation from being installed inside a web worker,
// where `global.postMessage` means something completely different and can't be used for this purpose.
if (global.postMessage && !global.importScripts) {
var postMessageIsAsynchronous = true;
var oldOnMessage = global.onmessage;
global.onmessage = function() {
postMessageIsAsynchronous = false;
};
global.postMessage("", "*");
global.onmessage = oldOnMessage;
return postMessageIsAsynchronous;
}
}
function installPostMessageImplementation() {
// Installs an event handler on `global` for the `message` event: see
// * https://developer.mozilla.org/en/DOM/window.postMessage
// * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages
var messagePrefix = "setImmediate$" + Math.random() + "$";
var onGlobalMessage = function(event) {
if (event.source === global &&
typeof event.data === "string" &&
event.data.indexOf(messagePrefix) === 0) {
runIfPresent(+event.data.slice(messagePrefix.length));
}
};
if (global.addEventListener) {
global.addEventListener("message", onGlobalMessage, false);
} else {
global.attachEvent("onmessage", onGlobalMessage);
}
registerImmediate = function(handle) {
global.postMessage(messagePrefix + handle, "*");
};
}
function installMessageChannelImplementation() {
var channel = new MessageChannel();
channel.port1.onmessage = function(event) {
var handle = event.data;
runIfPresent(handle);
};
registerImmediate = function(handle) {
channel.port2.postMessage(handle);
};
}
function installReadyStateChangeImplementation() {
var html = doc.documentElement;
registerImmediate = function(handle) {
// Create a