UNPKG

adaptive-expressions

Version:
1,021 lines (1,020 loc) 81.1 kB
"use strict"; // Generated from src/parser/ExpressionAntlrParser.g4 by ANTLR 4.7.3-SNAPSHOT var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.KeyContext = exports.KeyValuePairContext = exports.KeyValuePairListContext = exports.LambdaContext = exports.ArgsListContext = exports.TextContentContext = exports.StringInterpolationContext = exports.IndexAccessExpContext = exports.FuncInvokeExpContext = exports.MemberAccessExpContext = exports.StringInterpolationAtomContext = exports.IdAtomContext = exports.StringAtomContext = exports.NumericAtomContext = exports.JsonCreationExpContext = exports.ArrayCreationExpContext = exports.ParenthesisExpContext = exports.PrimaryExpressionContext = exports.PrimaryExpContext = exports.TripleOpExpContext = exports.BinaryOpExpContext = exports.UnaryOpExpContext = exports.ExpressionContext = exports.FileContext = exports.ExpressionAntlrParser = void 0; /** * @module adaptive-expressions */ /** * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. */ const ATN_1 = require("antlr4ts/atn/ATN"); const ATNDeserializer_1 = require("antlr4ts/atn/ATNDeserializer"); const FailedPredicateException_1 = require("antlr4ts/FailedPredicateException"); const NoViableAltException_1 = require("antlr4ts/NoViableAltException"); const Parser_1 = require("antlr4ts/Parser"); const ParserRuleContext_1 = require("antlr4ts/ParserRuleContext"); const ParserATNSimulator_1 = require("antlr4ts/atn/ParserATNSimulator"); const RecognitionException_1 = require("antlr4ts/RecognitionException"); const Token_1 = require("antlr4ts/Token"); const VocabularyImpl_1 = require("antlr4ts/VocabularyImpl"); const Utils = __importStar(require("antlr4ts/misc/Utils")); class ExpressionAntlrParser extends Parser_1.Parser { constructor(input) { super(input); this._interp = new ParserATNSimulator_1.ParserATNSimulator(ExpressionAntlrParser._ATN, this); } // @Override // @NotNull get vocabulary() { return ExpressionAntlrParser.VOCABULARY; } // tslint:enable:no-trailing-whitespace // @Override get grammarFileName() { return "ExpressionAntlrParser.g4"; } // @Override get ruleNames() { return ExpressionAntlrParser.ruleNames; } // @Override get serializedATN() { return ExpressionAntlrParser._serializedATN; } // @RuleVersion(0) file() { let _localctx = new FileContext(this._ctx, this.state); this.enterRule(_localctx, 0, ExpressionAntlrParser.RULE_file); try { this.enterOuterAlt(_localctx, 1); { this.state = 20; this.expression(0); this.state = 21; this.match(ExpressionAntlrParser.EOF); } } catch (re) { if (re instanceof RecognitionException_1.RecognitionException) { _localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { throw re; } } finally { this.exitRule(); } return _localctx; } // @RuleVersion(0) expression(_p) { if (_p === undefined) { _p = 0; } let _parentctx = this._ctx; let _parentState = this.state; let _localctx = new ExpressionContext(this._ctx, _parentState); let _prevctx = _localctx; let _startState = 2; this.enterRecursionRule(_localctx, 2, ExpressionAntlrParser.RULE_expression, _p); let _la; try { let _alt; this.enterOuterAlt(_localctx, 1); { this.state = 27; this._errHandler.sync(this); switch (this._input.LA(1)) { case ExpressionAntlrParser.PLUS: case ExpressionAntlrParser.SUBSTRACT: case ExpressionAntlrParser.NON: { _localctx = new UnaryOpExpContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; this.state = 24; _la = this._input.LA(1); if (!((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << ExpressionAntlrParser.PLUS) | (1 << ExpressionAntlrParser.SUBSTRACT) | (1 << ExpressionAntlrParser.NON))) !== 0))) { this._errHandler.recoverInline(this); } else { if (this._input.LA(1) === Token_1.Token.EOF) { this.matchedEOF = true; } this._errHandler.reportMatch(this); this.consume(); } this.state = 25; this.expression(12); } break; case ExpressionAntlrParser.STRING_INTERPOLATION_START: case ExpressionAntlrParser.OPEN_BRACKET: case ExpressionAntlrParser.OPEN_SQUARE_BRACKET: case ExpressionAntlrParser.OPEN_CURLY_BRACKET: case ExpressionAntlrParser.NUMBER: case ExpressionAntlrParser.IDENTIFIER: case ExpressionAntlrParser.STRING: { _localctx = new PrimaryExpContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; this.state = 26; this.primaryExpression(0); } break; default: throw new NoViableAltException_1.NoViableAltException(this); } this._ctx._stop = this._input.tryLT(-1); this.state = 64; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 2, this._ctx); while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { if (this._parseListeners != null) { this.triggerExitRuleEvent(); } _prevctx = _localctx; { this.state = 62; this._errHandler.sync(this); switch (this.interpreter.adaptivePredict(this._input, 1, this._ctx)) { case 1: { _localctx = new BinaryOpExpContext(new ExpressionContext(_parentctx, _parentState)); this.pushNewRecursionContext(_localctx, _startState, ExpressionAntlrParser.RULE_expression); this.state = 29; if (!(this.precpred(this._ctx, 11))) { throw new FailedPredicateException_1.FailedPredicateException(this, "this.precpred(this._ctx, 11)"); } this.state = 30; this.match(ExpressionAntlrParser.XOR); this.state = 31; this.expression(11); } break; case 2: { _localctx = new BinaryOpExpContext(new ExpressionContext(_parentctx, _parentState)); this.pushNewRecursionContext(_localctx, _startState, ExpressionAntlrParser.RULE_expression); this.state = 32; if (!(this.precpred(this._ctx, 10))) { throw new FailedPredicateException_1.FailedPredicateException(this, "this.precpred(this._ctx, 10)"); } this.state = 33; _la = this._input.LA(1); if (!((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << ExpressionAntlrParser.ASTERISK) | (1 << ExpressionAntlrParser.SLASH) | (1 << ExpressionAntlrParser.PERCENT))) !== 0))) { this._errHandler.recoverInline(this); } else { if (this._input.LA(1) === Token_1.Token.EOF) { this.matchedEOF = true; } this._errHandler.reportMatch(this); this.consume(); } this.state = 34; this.expression(11); } break; case 3: { _localctx = new BinaryOpExpContext(new ExpressionContext(_parentctx, _parentState)); this.pushNewRecursionContext(_localctx, _startState, ExpressionAntlrParser.RULE_expression); this.state = 35; if (!(this.precpred(this._ctx, 9))) { throw new FailedPredicateException_1.FailedPredicateException(this, "this.precpred(this._ctx, 9)"); } this.state = 36; _la = this._input.LA(1); if (!(_la === ExpressionAntlrParser.PLUS || _la === ExpressionAntlrParser.SUBSTRACT)) { this._errHandler.recoverInline(this); } else { if (this._input.LA(1) === Token_1.Token.EOF) { this.matchedEOF = true; } this._errHandler.reportMatch(this); this.consume(); } this.state = 37; this.expression(10); } break; case 4: { _localctx = new BinaryOpExpContext(new ExpressionContext(_parentctx, _parentState)); this.pushNewRecursionContext(_localctx, _startState, ExpressionAntlrParser.RULE_expression); this.state = 38; if (!(this.precpred(this._ctx, 8))) { throw new FailedPredicateException_1.FailedPredicateException(this, "this.precpred(this._ctx, 8)"); } this.state = 39; _la = this._input.LA(1); if (!(_la === ExpressionAntlrParser.DOUBLE_EQUAL || _la === ExpressionAntlrParser.NOT_EQUAL)) { this._errHandler.recoverInline(this); } else { if (this._input.LA(1) === Token_1.Token.EOF) { this.matchedEOF = true; } this._errHandler.reportMatch(this); this.consume(); } this.state = 40; this.expression(9); } break; case 5: { _localctx = new BinaryOpExpContext(new ExpressionContext(_parentctx, _parentState)); this.pushNewRecursionContext(_localctx, _startState, ExpressionAntlrParser.RULE_expression); this.state = 41; if (!(this.precpred(this._ctx, 7))) { throw new FailedPredicateException_1.FailedPredicateException(this, "this.precpred(this._ctx, 7)"); } { this.state = 42; this.match(ExpressionAntlrParser.SINGLE_AND); } this.state = 43; this.expression(8); } break; case 6: { _localctx = new BinaryOpExpContext(new ExpressionContext(_parentctx, _parentState)); this.pushNewRecursionContext(_localctx, _startState, ExpressionAntlrParser.RULE_expression); this.state = 44; if (!(this.precpred(this._ctx, 6))) { throw new FailedPredicateException_1.FailedPredicateException(this, "this.precpred(this._ctx, 6)"); } this.state = 45; _la = this._input.LA(1); if (!((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << ExpressionAntlrParser.LESS_THAN) | (1 << ExpressionAntlrParser.MORE_THAN) | (1 << ExpressionAntlrParser.LESS_OR_EQUAl) | (1 << ExpressionAntlrParser.MORE_OR_EQUAL))) !== 0))) { this._errHandler.recoverInline(this); } else { if (this._input.LA(1) === Token_1.Token.EOF) { this.matchedEOF = true; } this._errHandler.reportMatch(this); this.consume(); } this.state = 46; this.expression(7); } break; case 7: { _localctx = new BinaryOpExpContext(new ExpressionContext(_parentctx, _parentState)); this.pushNewRecursionContext(_localctx, _startState, ExpressionAntlrParser.RULE_expression); this.state = 47; if (!(this.precpred(this._ctx, 5))) { throw new FailedPredicateException_1.FailedPredicateException(this, "this.precpred(this._ctx, 5)"); } this.state = 48; this.match(ExpressionAntlrParser.DOUBLE_AND); this.state = 49; this.expression(6); } break; case 8: { _localctx = new BinaryOpExpContext(new ExpressionContext(_parentctx, _parentState)); this.pushNewRecursionContext(_localctx, _startState, ExpressionAntlrParser.RULE_expression); this.state = 50; if (!(this.precpred(this._ctx, 4))) { throw new FailedPredicateException_1.FailedPredicateException(this, "this.precpred(this._ctx, 4)"); } this.state = 51; this.match(ExpressionAntlrParser.DOUBLE_VERTICAL_CYLINDER); this.state = 52; this.expression(5); } break; case 9: { _localctx = new BinaryOpExpContext(new ExpressionContext(_parentctx, _parentState)); this.pushNewRecursionContext(_localctx, _startState, ExpressionAntlrParser.RULE_expression); this.state = 53; if (!(this.precpred(this._ctx, 3))) { throw new FailedPredicateException_1.FailedPredicateException(this, "this.precpred(this._ctx, 3)"); } this.state = 54; this.match(ExpressionAntlrParser.NULL_COALESCE); this.state = 55; this.expression(4); } break; case 10: { _localctx = new TripleOpExpContext(new ExpressionContext(_parentctx, _parentState)); this.pushNewRecursionContext(_localctx, _startState, ExpressionAntlrParser.RULE_expression); this.state = 56; if (!(this.precpred(this._ctx, 2))) { throw new FailedPredicateException_1.FailedPredicateException(this, "this.precpred(this._ctx, 2)"); } this.state = 57; this.match(ExpressionAntlrParser.QUESTION_MARK); this.state = 58; this.expression(0); this.state = 59; this.match(ExpressionAntlrParser.COLON); this.state = 60; this.expression(3); } break; } } } this.state = 66; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 2, this._ctx); } } } catch (re) { if (re instanceof RecognitionException_1.RecognitionException) { _localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { throw re; } } finally { this.unrollRecursionContexts(_parentctx); } return _localctx; } // @RuleVersion(0) primaryExpression(_p) { if (_p === undefined) { _p = 0; } let _parentctx = this._ctx; let _parentState = this.state; let _localctx = new PrimaryExpressionContext(this._ctx, _parentState); let _prevctx = _localctx; let _startState = 4; this.enterRecursionRule(_localctx, 4, ExpressionAntlrParser.RULE_primaryExpression, _p); let _la; try { let _alt; this.enterOuterAlt(_localctx, 1); { this.state = 86; this._errHandler.sync(this); switch (this._input.LA(1)) { case ExpressionAntlrParser.OPEN_BRACKET: { _localctx = new ParenthesisExpContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; this.state = 68; this.match(ExpressionAntlrParser.OPEN_BRACKET); this.state = 69; this.expression(0); this.state = 70; this.match(ExpressionAntlrParser.CLOSE_BRACKET); } break; case ExpressionAntlrParser.OPEN_SQUARE_BRACKET: { _localctx = new ArrayCreationExpContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; this.state = 72; this.match(ExpressionAntlrParser.OPEN_SQUARE_BRACKET); this.state = 74; this._errHandler.sync(this); _la = this._input.LA(1); if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << ExpressionAntlrParser.STRING_INTERPOLATION_START) | (1 << ExpressionAntlrParser.PLUS) | (1 << ExpressionAntlrParser.SUBSTRACT) | (1 << ExpressionAntlrParser.NON) | (1 << ExpressionAntlrParser.OPEN_BRACKET) | (1 << ExpressionAntlrParser.OPEN_SQUARE_BRACKET) | (1 << ExpressionAntlrParser.OPEN_CURLY_BRACKET) | (1 << ExpressionAntlrParser.NUMBER))) !== 0) || _la === ExpressionAntlrParser.IDENTIFIER || _la === ExpressionAntlrParser.STRING) { { this.state = 73; this.argsList(); } } this.state = 76; this.match(ExpressionAntlrParser.CLOSE_SQUARE_BRACKET); } break; case ExpressionAntlrParser.OPEN_CURLY_BRACKET: { _localctx = new JsonCreationExpContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; this.state = 77; this.match(ExpressionAntlrParser.OPEN_CURLY_BRACKET); this.state = 79; this._errHandler.sync(this); _la = this._input.LA(1); if (_la === ExpressionAntlrParser.IDENTIFIER || _la === ExpressionAntlrParser.STRING) { { this.state = 78; this.keyValuePairList(); } } this.state = 81; this.match(ExpressionAntlrParser.CLOSE_CURLY_BRACKET); } break; case ExpressionAntlrParser.NUMBER: { _localctx = new NumericAtomContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; this.state = 82; this.match(ExpressionAntlrParser.NUMBER); } break; case ExpressionAntlrParser.STRING: { _localctx = new StringAtomContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; this.state = 83; this.match(ExpressionAntlrParser.STRING); } break; case ExpressionAntlrParser.IDENTIFIER: { _localctx = new IdAtomContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; this.state = 84; this.match(ExpressionAntlrParser.IDENTIFIER); } break; case ExpressionAntlrParser.STRING_INTERPOLATION_START: { _localctx = new StringInterpolationAtomContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; this.state = 85; this.stringInterpolation(); } break; default: throw new NoViableAltException_1.NoViableAltException(this); } this._ctx._stop = this._input.tryLT(-1); this.state = 107; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 9, this._ctx); while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { if (this._parseListeners != null) { this.triggerExitRuleEvent(); } _prevctx = _localctx; { this.state = 105; this._errHandler.sync(this); switch (this.interpreter.adaptivePredict(this._input, 8, this._ctx)) { case 1: { _localctx = new MemberAccessExpContext(new PrimaryExpressionContext(_parentctx, _parentState)); this.pushNewRecursionContext(_localctx, _startState, ExpressionAntlrParser.RULE_primaryExpression); this.state = 88; if (!(this.precpred(this._ctx, 3))) { throw new FailedPredicateException_1.FailedPredicateException(this, "this.precpred(this._ctx, 3)"); } this.state = 89; this.match(ExpressionAntlrParser.DOT); this.state = 90; this.match(ExpressionAntlrParser.IDENTIFIER); } break; case 2: { _localctx = new FuncInvokeExpContext(new PrimaryExpressionContext(_parentctx, _parentState)); this.pushNewRecursionContext(_localctx, _startState, ExpressionAntlrParser.RULE_primaryExpression); this.state = 91; if (!(this.precpred(this._ctx, 2))) { throw new FailedPredicateException_1.FailedPredicateException(this, "this.precpred(this._ctx, 2)"); } this.state = 93; this._errHandler.sync(this); _la = this._input.LA(1); if (_la === ExpressionAntlrParser.NON) { { this.state = 92; this.match(ExpressionAntlrParser.NON); } } this.state = 95; this.match(ExpressionAntlrParser.OPEN_BRACKET); this.state = 97; this._errHandler.sync(this); _la = this._input.LA(1); if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << ExpressionAntlrParser.STRING_INTERPOLATION_START) | (1 << ExpressionAntlrParser.PLUS) | (1 << ExpressionAntlrParser.SUBSTRACT) | (1 << ExpressionAntlrParser.NON) | (1 << ExpressionAntlrParser.OPEN_BRACKET) | (1 << ExpressionAntlrParser.OPEN_SQUARE_BRACKET) | (1 << ExpressionAntlrParser.OPEN_CURLY_BRACKET) | (1 << ExpressionAntlrParser.NUMBER))) !== 0) || _la === ExpressionAntlrParser.IDENTIFIER || _la === ExpressionAntlrParser.STRING) { { this.state = 96; this.argsList(); } } this.state = 99; this.match(ExpressionAntlrParser.CLOSE_BRACKET); } break; case 3: { _localctx = new IndexAccessExpContext(new PrimaryExpressionContext(_parentctx, _parentState)); this.pushNewRecursionContext(_localctx, _startState, ExpressionAntlrParser.RULE_primaryExpression); this.state = 100; if (!(this.precpred(this._ctx, 1))) { throw new FailedPredicateException_1.FailedPredicateException(this, "this.precpred(this._ctx, 1)"); } this.state = 101; this.match(ExpressionAntlrParser.OPEN_SQUARE_BRACKET); this.state = 102; this.expression(0); this.state = 103; this.match(ExpressionAntlrParser.CLOSE_SQUARE_BRACKET); } break; } } } this.state = 109; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 9, this._ctx); } } } catch (re) { if (re instanceof RecognitionException_1.RecognitionException) { _localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { throw re; } } finally { this.unrollRecursionContexts(_parentctx); } return _localctx; } // @RuleVersion(0) stringInterpolation() { let _localctx = new StringInterpolationContext(this._ctx, this.state); this.enterRule(_localctx, 6, ExpressionAntlrParser.RULE_stringInterpolation); let _la; try { this.enterOuterAlt(_localctx, 1); { this.state = 110; this.match(ExpressionAntlrParser.STRING_INTERPOLATION_START); this.state = 116; this._errHandler.sync(this); _la = this._input.LA(1); while (((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & ((1 << (ExpressionAntlrParser.TEMPLATE - 36)) | (1 << (ExpressionAntlrParser.ESCAPE_CHARACTER - 36)) | (1 << (ExpressionAntlrParser.TEXT_CONTENT - 36)))) !== 0)) { { this.state = 114; this._errHandler.sync(this); switch (this._input.LA(1)) { case ExpressionAntlrParser.ESCAPE_CHARACTER: { this.state = 111; this.match(ExpressionAntlrParser.ESCAPE_CHARACTER); } break; case ExpressionAntlrParser.TEMPLATE: { this.state = 112; this.match(ExpressionAntlrParser.TEMPLATE); } break; case ExpressionAntlrParser.TEXT_CONTENT: { this.state = 113; this.textContent(); } break; default: throw new NoViableAltException_1.NoViableAltException(this); } } this.state = 118; this._errHandler.sync(this); _la = this._input.LA(1); } this.state = 119; this.match(ExpressionAntlrParser.STRING_INTERPOLATION_START); } } catch (re) { if (re instanceof RecognitionException_1.RecognitionException) { _localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { throw re; } } finally { this.exitRule(); } return _localctx; } // @RuleVersion(0) textContent() { let _localctx = new TextContentContext(this._ctx, this.state); this.enterRule(_localctx, 8, ExpressionAntlrParser.RULE_textContent); try { let _alt; this.enterOuterAlt(_localctx, 1); { this.state = 122; this._errHandler.sync(this); _alt = 1; do { switch (_alt) { case 1: { { this.state = 121; this.match(ExpressionAntlrParser.TEXT_CONTENT); } } break; default: throw new NoViableAltException_1.NoViableAltException(this); } this.state = 124; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 12, this._ctx); } while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER); } } catch (re) { if (re instanceof RecognitionException_1.RecognitionException) { _localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { throw re; } } finally { this.exitRule(); } return _localctx; } // @RuleVersion(0) argsList() { let _localctx = new ArgsListContext(this._ctx, this.state); this.enterRule(_localctx, 10, ExpressionAntlrParser.RULE_argsList); let _la; try { this.enterOuterAlt(_localctx, 1); { this.state = 128; this._errHandler.sync(this); switch (this.interpreter.adaptivePredict(this._input, 13, this._ctx)) { case 1: { this.state = 126; this.lambda(); } break; case 2: { this.state = 127; this.expression(0); } break; } this.state = 137; this._errHandler.sync(this); _la = this._input.LA(1); while (_la === ExpressionAntlrParser.COMMA) { { { this.state = 130; this.match(ExpressionAntlrParser.COMMA); this.state = 133; this._errHandler.sync(this); switch (this.interpreter.adaptivePredict(this._input, 14, this._ctx)) { case 1: { this.state = 131; this.lambda(); } break; case 2: { this.state = 132; this.expression(0); } break; } } } this.state = 139; this._errHandler.sync(this); _la = this._input.LA(1); } } } catch (re) { if (re instanceof RecognitionException_1.RecognitionException) { _localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { throw re; } } finally { this.exitRule(); } return _localctx; } // @RuleVersion(0) lambda() { let _localctx = new LambdaContext(this._ctx, this.state); this.enterRule(_localctx, 12, ExpressionAntlrParser.RULE_lambda); try { this.enterOuterAlt(_localctx, 1); { this.state = 140; this.match(ExpressionAntlrParser.IDENTIFIER); this.state = 141; this.match(ExpressionAntlrParser.ARROW); this.state = 142; this.expression(0); } } catch (re) { if (re instanceof RecognitionException_1.RecognitionException) { _localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { throw re; } } finally { this.exitRule(); } return _localctx; } // @RuleVersion(0) keyValuePairList() { let _localctx = new KeyValuePairListContext(this._ctx, this.state); this.enterRule(_localctx, 14, ExpressionAntlrParser.RULE_keyValuePairList); let _la; try { this.enterOuterAlt(_localctx, 1); { this.state = 144; this.keyValuePair(); this.state = 149; this._errHandler.sync(this); _la = this._input.LA(1); while (_la === ExpressionAntlrParser.COMMA) { { { this.state = 145; this.match(ExpressionAntlrParser.COMMA); this.state = 146; this.keyValuePair(); } } this.state = 151; this._errHandler.sync(this); _la = this._input.LA(1); } } } catch (re) { if (re instanceof RecognitionException_1.RecognitionException) { _localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { throw re; } } finally { this.exitRule(); } return _localctx; } // @RuleVersion(0) keyValuePair() { let _localctx = new KeyValuePairContext(this._ctx, this.state); this.enterRule(_localctx, 16, ExpressionAntlrParser.RULE_keyValuePair); try { this.enterOuterAlt(_localctx, 1); { this.state = 152; this.key(); this.state = 153; this.match(ExpressionAntlrParser.COLON); this.state = 154; this.expression(0); } } catch (re) { if (re instanceof RecognitionException_1.RecognitionException) { _localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { throw re; } } finally { this.exitRule(); } return _localctx; } // @RuleVersion(0) key() { let _localctx = new KeyContext(this._ctx, this.state); this.enterRule(_localctx, 18, ExpressionAntlrParser.RULE_key); let _la; try { this.enterOuterAlt(_localctx, 1); { this.state = 156; _la = this._input.LA(1); if (!(_la === ExpressionAntlrParser.IDENTIFIER || _la === ExpressionAntlrParser.STRING)) { this._errHandler.recoverInline(this); } else { if (this._input.LA(1) === Token_1.Token.EOF) { this.matchedEOF = true; } this._errHandler.reportMatch(this); this.consume(); } } } catch (re) { if (re instanceof RecognitionException_1.RecognitionException) { _localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { throw re; } } finally { this.exitRule(); } return _localctx; } sempred(_localctx, ruleIndex, predIndex) { switch (ruleIndex) { case 1: return this.expression_sempred(_localctx, predIndex); case 2: return this.primaryExpression_sempred(_localctx, predIndex); } return true; } expression_sempred(_localctx, predIndex) { switch (predIndex) { case 0: return this.precpred(this._ctx, 11); case 1: return this.precpred(this._ctx, 10); case 2: return this.precpred(this._ctx, 9); case 3: return this.precpred(this._ctx, 8); case 4: return this.precpred(this._ctx, 7); case 5: return this.precpred(this._ctx, 6); case 6: return this.precpred(this._ctx, 5); case 7: return this.precpred(this._ctx, 4); case 8: return this.precpred(this._ctx, 3); case 9: return this.precpred(this._ctx, 2); } return true; } primaryExpression_sempred(_localctx, predIndex) { switch (predIndex) { case 10: return this.precpred(this._ctx, 3); case 11: return this.precpred(this._ctx, 2); case 12: return this.precpred(this._ctx, 1); } return true; } static get _ATN() { if (!ExpressionAntlrParser.__ATN) { ExpressionAntlrParser.__ATN = new ATNDeserializer_1.ATNDeserializer().deserialize(Utils.toCharArray(ExpressionAntlrParser._serializedATN)); } return ExpressionAntlrParser.__ATN; } } exports.ExpressionAntlrParser = ExpressionAntlrParser; ExpressionAntlrParser.STRING_INTERPOLATION_START = 1; ExpressionAntlrParser.PLUS = 2; ExpressionAntlrParser.SUBSTRACT = 3; ExpressionAntlrParser.NON = 4; ExpressionAntlrParser.XOR = 5; ExpressionAntlrParser.ASTERISK = 6; ExpressionAntlrParser.SLASH = 7; ExpressionAntlrParser.PERCENT = 8; ExpressionAntlrParser.DOUBLE_EQUAL = 9; ExpressionAntlrParser.NOT_EQUAL = 10; ExpressionAntlrParser.SINGLE_AND = 11; ExpressionAntlrParser.DOUBLE_AND = 12; ExpressionAntlrParser.DOUBLE_VERTICAL_CYLINDER = 13; ExpressionAntlrParser.LESS_THAN = 14; ExpressionAntlrParser.MORE_THAN = 15; ExpressionAntlrParser.LESS_OR_EQUAl = 16; ExpressionAntlrParser.MORE_OR_EQUAL = 17; ExpressionAntlrParser.OPEN_BRACKET = 18; ExpressionAntlrParser.CLOSE_BRACKET = 19; ExpressionAntlrParser.DOT = 20; ExpressionAntlrParser.OPEN_SQUARE_BRACKET = 21; ExpressionAntlrParser.CLOSE_SQUARE_BRACKET = 22; ExpressionAntlrParser.OPEN_CURLY_BRACKET = 23; ExpressionAntlrParser.CLOSE_CURLY_BRACKET = 24; ExpressionAntlrParser.COMMA = 25; ExpressionAntlrParser.COLON = 26; ExpressionAntlrParser.ARROW = 27; ExpressionAntlrParser.NULL_COALESCE = 28; ExpressionAntlrParser.QUESTION_MARK = 29; ExpressionAntlrParser.NUMBER = 30; ExpressionAntlrParser.WHITESPACE = 31; ExpressionAntlrParser.IDENTIFIER = 32; ExpressionAntlrParser.NEWLINE = 33; ExpressionAntlrParser.STRING = 34; ExpressionAntlrParser.INVALID_TOKEN_DEFAULT_MODE = 35; ExpressionAntlrParser.TEMPLATE = 36; ExpressionAntlrParser.ESCAPE_CHARACTER = 37; ExpressionAntlrParser.TEXT_CONTENT = 38; ExpressionAntlrParser.RULE_file = 0; ExpressionAntlrParser.RULE_expression = 1; ExpressionAntlrParser.RULE_primaryExpression = 2; ExpressionAntlrParser.RULE_stringInterpolation = 3; ExpressionAntlrParser.RULE_textContent = 4; ExpressionAntlrParser.RULE_argsList = 5; ExpressionAntlrParser.RULE_lambda = 6; ExpressionAntlrParser.RULE_keyValuePairList = 7; ExpressionAntlrParser.RULE_keyValuePair = 8; ExpressionAntlrParser.RULE_key = 9; // tslint:disable:no-trailing-whitespace ExpressionAntlrParser.ruleNames = [ "file", "expression", "primaryExpression", "stringInterpolation", "textContent", "argsList", "lambda", "keyValuePairList", "keyValuePair", "key", ]; ExpressionAntlrParser._LITERAL_NAMES = [ undefined, undefined, "'+'", "'-'", "'!'", "'^'", "'*'", "'/'", "'%'", "'=='", undefined, "'&'", "'&&'", "'||'", "'<'", "'>'", "'<='", "'>='", "'('", "')'", "'.'", "'['", "']'", "'{'", "'}'", "','", "':'", "'=>'", "'??'", "'?'", ]; ExpressionAntlrParser._SYMBOLIC_NAMES = [ undefined, "STRING_INTERPOLATION_START", "PLUS", "SUBSTRACT", "NON", "XOR", "ASTERISK", "SLASH", "PERCENT", "DOUBLE_EQUAL", "NOT_EQUAL", "SINGLE_AND", "DOUBLE_AND", "DOUBLE_VERTICAL_CYLINDER", "LESS_THAN", "MORE_THAN", "LESS_OR_EQUAl",