eo-lsp-server
Version:
Language Server for a syntax highlighter for the EO Language
1,193 lines (1,164 loc) • 1.79 MB
JavaScript
#!/usr/bin/env node
/******/ (() => { // webpackBootstrap
/******/ var __webpack_modules__ = ({
/***/ 4267:
/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
"use strict";
// SPDX-FileCopyrightText: Copyright (c) 2024-2025 Objectionary.com
// SPDX-License-Identifier: MIT
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.IndentationLexer = void 0;
const antlr4ts_1 = __nccwpck_require__(2968);
const EoLexer_1 = __nccwpck_require__(8774);
const EoParser_1 = __nccwpck_require__(5001);
/**
* Custom lexer that wraps EoLexer to handle indentation-based TAB/UNTAB tokens
* Modeled after the Java EoIndentLexer implementation
*/
class IndentationLexer extends antlr4ts_1.Lexer {
constructor(input) {
super(input);
this.tokens = [];
this.indent = [];
this.spaces = [];
this.wrapped = new EoLexer_1.EoLexer(input);
this.indent.push(0);
}
/**
* Returns the part of the string that comes after the first newline character.
* If no newline is found, returns the entire string.
* @param text - Input string (typically an EOL token)
* @returns The substring after the first '\n', or the original string if '\n' is absent.
*/
static textSpaces(text) {
const afterNewline = text.slice(text.indexOf("\n") + 1);
return afterNewline;
}
/**
* Emits TAB tokens to increase indentation by the specified number of levels.
* @param shift - Number of indentation levels to add
* @returns Void
*/
emitIndent(shift) {
for (let i = 0; i < shift; i++) {
this.emitToken(IndentationLexer.TAB);
}
}
/**
* Emits UNTAB tokens to decrease indentation by the specified number of levels.
* @param shift - Number of indentation levels to remove
* @returns Void
*/
emitDedent(shift) {
for (let i = 0; i < shift; i++) {
this.emitToken(IndentationLexer.UNTAB);
}
}
/**
* Creates and emits a new TAB or UNTAB token at the start of the next line.
* The token's text is set to "TAB" or "UNTAB" based on its type.
* @param type - Token type (must be IndentationLexer.TAB or IndentationLexer.UNTAB)
* @returns Void
*/
emitToken(type) {
const tkn = new antlr4ts_1.CommonToken(type, type === IndentationLexer.TAB ? "TAB" : "UNTAB");
tkn.line = this.wrapped.line;
tkn.charPositionInLine = 0;
this.tokens.push(tkn);
}
/**
* Adjusts indentation levels and emits TAB/UNTAB tokens based on the difference between
* the current and previous indentation. Also appends the next token to the token stream.
* @param tabs - Current indentation level (e.g., number of leading spaces in the new line).
* @param next - The next token to be processed (e.g., the first token after indentation).
* @returns Void
*/
handleTabs(tabs, next) {
const last = this.indent[this.indent.length - 1];
const shift = tabs - last;
if (shift < 0) {
let dedentCount = 0;
while (this.indent.length > 1 && this.indent[this.indent.length - 1] > tabs) {
this.indent.pop();
dedentCount++;
}
this.emitDedent(dedentCount);
if (this.indent[this.indent.length - 1] < tabs) {
this.indent.push(tabs);
this.emitIndent(1);
}
}
else if (shift > 0) {
this.emitIndent(shift);
this.indent.push(tabs);
}
this.tokens.push(next);
}
/**
* Processes indentation by analyzing line breaks (`EOL`) and leading whitespace.
* - Tracks spaces after each `EOL` to determine indentation levels.
* - Emits `TAB`/`UNTAB` tokens when indentation increases/decreases.
* - Closes all open indents at the end (e.g., for unclosed blocks).
*
* Logic:
* 1. For consecutive `EOL` tokens, stores their leading spaces but doesn't change indentation.
* 2. When a non-`EOL` token follows `EOL`, calculates indentation shift and emits tokens.
* 3. Finalizes by dedenting remaining levels and appending the last token (usually EOF).
* @returns Void
*/
lookAhead() {
let current = null;
let next = this.wrapped.nextToken();
while (next.type !== antlr4ts_1.Token.EOF) {
if ((current === null || current.type !== EoLexer_1.EoLexer.EOL) && next.type === EoLexer_1.EoLexer.EOL) {
this.spaces.push(IndentationLexer.textSpaces(next.text || ""));
this.tokens.push(next);
}
else if (current !== null && current.type === EoLexer_1.EoLexer.EOL && next.type === EoLexer_1.EoLexer.EOL) {
this.spaces.push(IndentationLexer.textSpaces(next.text || ""));
this.handleTabs(Math.floor(this.spaces[this.spaces.length - 1].length / 2), next);
}
else if (current !== null && current.type === EoLexer_1.EoLexer.EOL && next.type !== EoLexer_1.EoLexer.EOL) {
const spaceText = this.spaces.pop() || "";
this.handleTabs(Math.floor(spaceText.length / 2), next);
}
else {
this.tokens.push(next);
}
current = next;
next = this.wrapped.nextToken();
}
if (current !== null) {
if (current.type === EoLexer_1.EoLexer.EOL) {
const spaceText = this.spaces.pop() || "";
this.handleTabs(Math.floor(spaceText.length / 2), next);
}
else {
this.tokens.push(current);
}
}
while (this.indent.length > 1) {
this.indent.pop();
this.emitDedent(1);
}
this.tokens.push(next);
}
/**
* Overrides nextToken to provide indentation-aware tokens
* @returns Next token
*/
nextToken() {
if (this.tokens.length === 0) {
this.lookAhead();
}
return this.tokens.shift();
}
/**
* Removes all error listeners from both this lexer and the wrapped lexer
* @returns void
*/
removeErrorListeners() {
super.removeErrorListeners();
this.wrapped.removeErrorListeners();
}
get channelNames() {
return this.wrapped.channelNames;
}
get grammarFileName() {
return this.wrapped.grammarFileName;
}
get modeNames() {
return this.wrapped.modeNames;
}
get ruleNames() {
return this.wrapped.ruleNames;
}
get serializedATN() {
return this.wrapped.serializedATN;
}
get vocabulary() {
return this.wrapped.vocabulary;
}
}
exports.IndentationLexer = IndentationLexer;
IndentationLexer.TAB = EoParser_1.EoParser.TAB;
IndentationLexer.UNTAB = EoParser_1.EoParser.UNTAB;
//# sourceMappingURL=IndentationLexer.js.map
/***/ }),
/***/ 7346:
/***/ ((__unused_webpack_module, exports) => {
"use strict";
// SPDX-FileCopyrightText: Copyright (c) 2024-2025 Objectionary.com
// SPDX-License-Identifier: MIT
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.Capabilities = void 0;
class Capabilities {
constructor() {
this.configuration = false;
this.workspace = false;
this.diagnostics = false;
this.tokens = true;
}
initialize(capabilities) {
this.configuration = !!(capabilities.workspace?.configuration);
this.workspace = !!(capabilities.workspace?.workspaceFolders);
this.diagnostics = !!(capabilities.textDocument?.publishDiagnostics?.relatedInformation);
this.tokens = !!(capabilities.textDocument?.semanticTokens);
}
}
exports.Capabilities = Capabilities;
//# sourceMappingURL=capabilities.js.map
/***/ }),
/***/ 2013:
/***/ ((__unused_webpack_module, exports) => {
"use strict";
// SPDX-FileCopyrightText: Copyright (c) 2024-2025 Objectionary.com
// SPDX-License-Identifier: MIT
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.EoVersion = void 0;
/**
* The version of EO syntax.
*
* The value of this const is updated by the Makefile.
*/
exports.EoVersion = "0.0.0";
//# sourceMappingURL=eo-version.js.map
/***/ }),
/***/ 584:
/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
"use strict";
// SPDX-FileCopyrightText: Copyright (c) 2024-2025 Objectionary.com
// SPDX-License-Identifier: MIT
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.ErrorListener = void 0;
const parserError_1 = __nccwpck_require__(1997);
class ErrorListener {
constructor() {
/**
* Array of errors detected during the parsing
*/
this.errors = [];
}
syntaxError(recognizer, symbol, line, position, msg, e) {
this.errors.push(new parserError_1.ParserError(line, position, msg));
}
}
exports.ErrorListener = ErrorListener;
//# sourceMappingURL=errorListener.js.map
/***/ }),
/***/ 6523:
/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
"use strict";
// SPDX-FileCopyrightText: Copyright (c) 2024-2025 Objectionary.com
// SPDX-License-Identifier: MIT
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.buildTokenSetAndMap = buildTokenSetAndMap;
exports.resetTokenCache = resetTokenCache;
exports.antlrTypeNumToString = antlrTypeNumToString;
exports.getTokenTypes = getTokenTypes;
exports.tokenize = tokenize;
exports.getParserErrors = getParserErrors;
const fs = __nccwpck_require__(9896);
const path = __nccwpck_require__(6928);
const processor_1 = __nccwpck_require__(4214);
const errorListener_1 = __nccwpck_require__(584);
/**
* Set of the token types present in the EO's grammar file
*/
let types = null;
/**
* Maps the token numbers returned by the parser to the token type names
* present in the EO's grammar file
*/
let mapper = null;
/**
* the correct path to EoLexer.tokens file
*/
const location = __nccwpck_require__.ab + "EoLexer.tokens";
/**
* Builds the token type set and token number to token type map using the ANTLR4
* tokens file, if any of these has not been built yet.
* @param locationPath expect to see the path to EoLexer.tokens file
* @returns {void}
*/
function buildTokenSetAndMap(locationPath) {
if (!types || !mapper) {
types = new Set();
mapper = new Map();
try {
const text = fs.readFileSync(locationPath, { encoding: "utf-8" });
text.split("\n").forEach(elem => {
if (elem[0] !== "'") {
const pair = elem.split("=");
if (pair.length === 2) {
types.add(pair[0]);
mapper.set(Number(pair[1]), pair[0]);
}
}
});
}
catch (e) {
throw new Error("EoLexer.tokens file missing");
}
}
}
/**
* Resets the values of the `types` and `mapper` module variables to null.
*
* For testing purposes only
* @returns Void
*/
function resetTokenCache() {
types = null;
mapper = null;
}
/**
* Converts a type number into textual token type like "META", since antlr lexer
* returns token types as numbers
* @param num - Number of the token type returned by the parser
* @returns - Name of the token type defined by EO's grammar
*/
function antlrTypeNumToString(num) {
buildTokenSetAndMap(__nccwpck_require__.ab + "EoLexer.tokens");
return mapper.get(num);
}
/**
* Retrieves all token type names as defined in EO's grammar
* @returns - Set of all the token type names define in EO's grammar
*/
function getTokenTypes() {
buildTokenSetAndMap(__nccwpck_require__.ab + "EoLexer.tokens");
return types;
}
/**
* Tokenizes an input text using the ANTLR4 tokenizer
* @param input - Text to be tokenized
* @returns - Array of AntlrTokens containing the tokens in the text
*/
function tokenize(input) {
const processor = new processor_1.Processor(input);
processor.tokens.fill();
return processor.tokens.getTokens();
}
/**
* Parses the input text and returns the parsing errors detected
* @param input - Text to be parsed
* @returns - Array of parsing errors detected during the parsing
*/
function getParserErrors(input) {
const processor = new processor_1.Processor(input);
const listener = new errorListener_1.ErrorListener();
processor.lexer.removeErrorListeners();
processor.parser.removeErrorListeners();
processor.parser.addErrorListener(listener);
processor.parser.program();
return listener.errors;
}
//# sourceMappingURL=parser.js.map
/***/ }),
/***/ 8774:
/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
"use strict";
// Generated from Eo.g4 by ANTLR 4.9.0-SNAPSHOT
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.EoLexer = void 0;
const ATNDeserializer_1 = __nccwpck_require__(3264);
const Lexer_1 = __nccwpck_require__(2066);
const LexerATNSimulator_1 = __nccwpck_require__(1861);
const VocabularyImpl_1 = __nccwpck_require__(9496);
const Utils = __nccwpck_require__(556);
class EoLexer extends Lexer_1.Lexer {
// @Override
// @NotNull
get vocabulary() {
return EoLexer.VOCABULARY;
}
// tslint:enable:no-trailing-whitespace
constructor(input) {
super(input);
this._interp = new LexerATNSimulator_1.LexerATNSimulator(EoLexer._ATN, this);
}
// @Override
get grammarFileName() { return "Eo.g4"; }
// @Override
get ruleNames() { return EoLexer.ruleNames; }
// @Override
get serializedATN() { return EoLexer._serializedATN; }
// @Override
get channelNames() { return EoLexer.channelNames; }
// @Override
get modeNames() { return EoLexer.modeNames; }
static get _ATN() {
if (!EoLexer.__ATN) {
EoLexer.__ATN = new ATNDeserializer_1.ATNDeserializer().deserialize(Utils.toCharArray(EoLexer._serializedATN));
}
return EoLexer.__ATN;
}
}
exports.EoLexer = EoLexer;
EoLexer.COMMENTARY = 1;
EoLexer.META = 2;
EoLexer.ROOT = 3;
EoLexer.HOME = 4;
EoLexer.STAR = 5;
EoLexer.CONST = 6;
EoLexer.COLON = 7;
EoLexer.ARROW = 8;
EoLexer.XI = 9;
EoLexer.PLUS = 10;
EoLexer.MINUS = 11;
EoLexer.QUESTION = 12;
EoLexer.SPACE = 13;
EoLexer.DOT = 14;
EoLexer.LSQ = 15;
EoLexer.RSQ = 16;
EoLexer.LB = 17;
EoLexer.RB = 18;
EoLexer.PHI = 19;
EoLexer.RHO = 20;
EoLexer.HASH = 21;
EoLexer.TILDE = 22;
EoLexer.APOSTROPHE = 23;
EoLexer.EOL = 24;
EoLexer.BYTES = 25;
EoLexer.STRING = 26;
EoLexer.INT = 27;
EoLexer.FLOAT = 28;
EoLexer.HEX = 29;
EoLexer.NAME = 30;
EoLexer.TEXT = 31;
// tslint:disable:no-trailing-whitespace
EoLexer.channelNames = [
"DEFAULT_TOKEN_CHANNEL", "HIDDEN",
];
// tslint:disable:no-trailing-whitespace
EoLexer.modeNames = [
"DEFAULT_MODE",
];
EoLexer.ruleNames = [
"COMMENTARY", "META", "ROOT", "HOME", "STAR", "CONST", "COLON", "ARROW",
"XI", "PLUS", "MINUS", "QUESTION", "SPACE", "DOT", "LSQ", "RSQ", "LB",
"RB", "PHI", "RHO", "HASH", "TILDE", "APOSTROPHE", "INDENT", "LINEBREAK",
"EOL", "BYTE", "EMPTY_BYTES", "LINE_BYTES", "BYTES", "ESCAPE_SEQUENCE",
"STRING", "ZERO", "INT", "EXPONENT", "FLOAT", "HEX", "NAME", "TEXT_MARK",
"TEXT",
];
EoLexer._LITERAL_NAMES = [
undefined, undefined, undefined, "'Q'", "'QQ'", "'*'", "'!'", "':'", "'>'",
"'$'", "'+'", "'-'", "'?'", "' '", "'.'", "'['", "']'", "'('", "')'",
"'@'", "'^'", "'#'", "'~'", "'''",
];
EoLexer._SYMBOLIC_NAMES = [
undefined, "COMMENTARY", "META", "ROOT", "HOME", "STAR", "CONST", "COLON",
"ARROW", "XI", "PLUS", "MINUS", "QUESTION", "SPACE", "DOT", "LSQ", "RSQ",
"LB", "RB", "PHI", "RHO", "HASH", "TILDE", "APOSTROPHE", "EOL", "BYTES",
"STRING", "INT", "FLOAT", "HEX", "NAME", "TEXT",
];
EoLexer.VOCABULARY = new VocabularyImpl_1.VocabularyImpl(EoLexer._LITERAL_NAMES, EoLexer._SYMBOLIC_NAMES, []);
EoLexer._serializedATN = "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x02!\u0134\b\x01" +
"\x04\x02\t\x02\x04\x03\t\x03\x04\x04\t\x04\x04\x05\t\x05\x04\x06\t\x06" +
"\x04\x07\t\x07\x04\b\t\b\x04\t\t\t\x04\n\t\n\x04\v\t\v\x04\f\t\f\x04\r" +
"\t\r\x04\x0E\t\x0E\x04\x0F\t\x0F\x04\x10\t\x10\x04\x11\t\x11\x04\x12\t" +
"\x12\x04\x13\t\x13\x04\x14\t\x14\x04\x15\t\x15\x04\x16\t\x16\x04\x17\t" +
"\x17\x04\x18\t\x18\x04\x19\t\x19\x04\x1A\t\x1A\x04\x1B\t\x1B\x04\x1C\t" +
"\x1C\x04\x1D\t\x1D\x04\x1E\t\x1E\x04\x1F\t\x1F\x04 \t \x04!\t!\x04\"\t" +
"\"\x04#\t#\x04$\t$\x04%\t%\x04&\t&\x04\'\t\'\x04(\t(\x04)\t)\x03\x02\x03" +
"\x02\x03\x02\x07\x02W\n\x02\f\x02\x0E\x02Z\v\x02\x03\x02\x03\x02\x05\x02" +
"^\n\x02\x03\x03\x03\x03\x03\x03\x03\x03\x06\x03d\n\x03\r\x03\x0E\x03e" +
"\x07\x03h\n\x03\f\x03\x0E\x03k\v\x03\x03\x04\x03\x04\x03\x05\x03\x05\x03" +
"\x05\x03\x06\x03\x06\x03\x07\x03\x07\x03\b\x03\b\x03\t\x03\t\x03\n\x03" +
"\n\x03\v\x03\v\x03\f\x03\f\x03\r\x03\r\x03\x0E\x03\x0E\x03\x0F\x03\x0F" +
"\x03\x10\x03\x10\x03\x11\x03\x11\x03\x12\x03\x12\x03\x13\x03\x13\x03\x14" +
"\x03\x14\x03\x15\x03\x15\x03\x16\x03\x16\x03\x17\x03\x17\x03\x18\x03\x18" +
"\x03\x19\x03\x19\x03\x19\x03\x1A\x03\x1A\x03\x1A\x05\x1A\x9E\n\x1A\x03" +
"\x1B\x03\x1B\x07\x1B\xA2\n\x1B\f\x1B\x0E\x1B\xA5\v\x1B\x03\x1C\x03\x1C" +
"\x03\x1C\x03\x1D\x03\x1D\x03\x1D\x03\x1E\x03\x1E\x03\x1E\x03\x1E\x06\x1E" +
"\xB1\n\x1E\r\x1E\x0E\x1E\xB2\x03\x1F\x03\x1F\x03\x1F\x03\x1F\x03\x1F\x03" +
"\x1F\x03\x1F\x03\x1F\x03\x1F\x07\x1F\xBE\n\x1F\f\x1F\x0E\x1F\xC1\v\x1F" +
"\x05\x1F\xC3\n\x1F\x03 \x03 \x03 \x03 \x05 \xC9\n \x03 \x05 \xCC\n \x03" +
" \x03 \x03 \x06 \xD1\n \r \x0E \xD2\x03 \x03 \x03 \x05 \xD8\n \x03!\x03" +
"!\x03!\x07!\xDD\n!\f!\x0E!\xE0\v!\x03!\x03!\x03\"\x03\"\x03#\x03#\x05" +
"#\xE8\n#\x03#\x03#\x05#\xEC\n#\x03#\x03#\x07#\xF0\n#\f#\x0E#\xF3\v#\x05" +
"#\xF5\n#\x03$\x03$\x03$\x05$\xFA\n$\x03$\x06$\xFD\n$\r$\x0E$\xFE\x03%" +
"\x03%\x05%\u0103\n%\x03%\x06%\u0106\n%\r%\x0E%\u0107\x03%\x03%\x06%\u010C" +
"\n%\r%\x0E%\u010D\x03%\x05%\u0111\n%\x03&\x03&\x03&\x03&\x06&\u0117\n" +
"&\r&\x0E&\u0118\x03\'\x03\'\x07\'\u011D\n\'\f\'\x0E\'\u0120\v\'\x03(\x03" +
"(\x03(\x03(\x03)\x03)\x03)\x03)\x05)\u012A\n)\x03)\x03)\x07)\u012E\n)" +
"\f)\x0E)\u0131\v)\x03)\x03)\x03\u012F\x02\x02*\x03\x02\x03\x05\x02\x04" +
"\x07\x02\x05\t\x02\x06\v\x02\x07\r\x02\b\x0F\x02\t\x11\x02\n\x13\x02\v" +
"\x15\x02\f\x17\x02\r\x19\x02\x0E\x1B\x02\x0F\x1D\x02\x10\x1F\x02\x11!" +
"\x02\x12#\x02\x13%\x02\x14\'\x02\x15)\x02\x16+\x02\x17-\x02\x18/\x02\x19" +
"1\x02\x023\x02\x025\x02\x1A7\x02\x029\x02\x02;\x02\x02=\x02\x1B?\x02\x02" +
"A\x02\x1CC\x02\x02E\x02\x1DG\x02\x02I\x02\x1EK\x02\x1FM\x02 O\x02\x02" +
"Q\x02!\x03\x02\x0F\x04\x02\f\f\x0F\x0F\x05\x02\v\f\x0F\x0F\"\"\x04\x02" +
"2;CH\n\x02$$))^^ddhhppttvv\x03\x0225\x03\x0229\x06\x02\f\f\x0F\x0F$$^" +
"^\x03\x023;\x03\x022;\x04\x02GGgg\x05\x022;CHch\x03\x02c|\x03\x02^^\x03" +
"\x0E\x02\v\x02\f\x02\x0F\x02\x0F\x02\"\x02#\x02)\x02+\x02.\x02.\x020\x02" +
"0\x02<\x02=\x02A\x02A\x02]\x02]\x02_\x02_\x02}\x02\x7F\x02\uF337\x03\uF337" +
"\x03\u014D\x02\x03\x03\x02\x02\x02\x02\x05\x03\x02\x02\x02\x02\x07\x03" +
"\x02\x02\x02\x02\t\x03\x02\x02\x02\x02\v\x03\x02\x02\x02\x02\r\x03\x02" +
"\x02\x02\x02\x0F\x03\x02\x02\x02\x02\x11\x03\x02\x02\x02\x02\x13\x03\x02" +
"\x02\x02\x02\x15\x03\x02\x02\x02\x02\x17\x03\x02\x02\x02\x02\x19\x03\x02" +
"\x02\x02\x02\x1B\x03\x02\x02\x02\x02\x1D\x03\x02\x02\x02\x02\x1F\x03\x02" +
"\x02\x02\x02!\x03\x02\x02\x02\x02#\x03\x02\x02\x02\x02%\x03\x02\x02\x02" +
"\x02\'\x03\x02\x02\x02\x02)\x03\x02\x02\x02\x02+\x03\x02\x02\x02\x02-" +
"\x03\x02\x02\x02\x02/\x03\x02\x02\x02\x025\x03\x02\x02\x02\x02=\x03\x02" +
"\x02\x02\x02A\x03\x02\x02\x02\x02E\x03\x02\x02\x02\x02I\x03\x02\x02\x02" +
"\x02K\x03\x02\x02\x02\x02M\x03\x02\x02\x02\x02Q\x03\x02\x02\x02\x03]\x03" +
"\x02\x02\x02\x05_\x03\x02\x02\x02\x07l\x03\x02\x02\x02\tn\x03\x02\x02" +
"\x02\vq\x03\x02\x02\x02\rs\x03\x02\x02\x02\x0Fu\x03\x02\x02\x02\x11w\x03" +
"\x02\x02\x02\x13y\x03\x02\x02\x02\x15{\x03\x02\x02\x02\x17}\x03\x02\x02" +
"\x02\x19\x7F\x03\x02\x02\x02\x1B\x81\x03\x02\x02\x02\x1D\x83\x03\x02\x02" +
"\x02\x1F\x85\x03\x02\x02\x02!\x87\x03\x02\x02\x02#\x89\x03\x02\x02\x02" +
"%\x8B\x03\x02\x02\x02\'\x8D\x03\x02\x02\x02)\x8F\x03\x02\x02\x02+\x91" +
"\x03\x02\x02\x02-\x93\x03\x02\x02\x02/\x95\x03\x02\x02\x021\x97\x03\x02" +
"\x02\x023\x9D\x03\x02\x02\x025\x9F\x03\x02\x02\x027\xA6\x03\x02\x02\x02" +
"9\xA9\x03\x02\x02\x02;\xAC\x03\x02\x02\x02=\xC2\x03\x02\x02\x02?\xD7\x03" +
"\x02\x02\x02A\xD9\x03\x02\x02\x02C\xE3\x03\x02\x02\x02E\xE7\x03\x02\x02" +
"\x02G\xF6\x03\x02\x02\x02I\u0102\x03\x02\x02\x02K\u0112\x03\x02\x02\x02" +
"M\u011A\x03\x02\x02\x02O\u0121\x03\x02\x02\x02Q\u0125\x03\x02\x02\x02" +
"S^\x05+\x16\x02TX\x05+\x16\x02UW\n\x02\x02\x02VU\x03\x02\x02\x02WZ\x03" +
"\x02\x02\x02XV\x03\x02\x02\x02XY\x03\x02\x02\x02Y[\x03\x02\x02\x02ZX\x03" +
"\x02\x02\x02[\\\n\x03\x02\x02\\^\x03\x02\x02\x02]S\x03\x02\x02\x02]T\x03" +
"\x02\x02\x02^\x04\x03\x02\x02\x02_`\x05\x15\v\x02`i\x05M\'\x02ac\x05\x1B" +
"\x0E\x02bd\n\x03\x02\x02cb\x03\x02\x02\x02de\x03\x02\x02\x02ec\x03\x02" +
"\x02\x02ef\x03\x02\x02\x02fh\x03\x02\x02\x02ga\x03\x02\x02\x02hk\x03\x02" +
"\x02\x02ig\x03\x02\x02\x02ij\x03\x02\x02\x02j\x06\x03\x02\x02\x02ki\x03" +
"\x02\x02\x02lm\x07S\x02\x02m\b\x03\x02\x02\x02no\x07S\x02\x02op\x07S\x02" +
"\x02p\n\x03\x02\x02\x02qr\x07,\x02\x02r\f\x03\x02\x02\x02st\x07#\x02\x02" +
"t\x0E\x03\x02\x02\x02uv\x07<\x02\x02v\x10\x03\x02\x02\x02wx\x07@\x02\x02" +
"x\x12\x03\x02\x02\x02yz\x07&\x02\x02z\x14\x03\x02\x02\x02{|\x07-\x02\x02" +
"|\x16\x03\x02\x02\x02}~\x07/\x02\x02~\x18\x03\x02\x02\x02\x7F\x80\x07" +
"A\x02\x02\x80\x1A\x03\x02\x02\x02\x81\x82\x07\"\x02\x02\x82\x1C\x03\x02" +
"\x02\x02\x83\x84\x070\x02\x02\x84\x1E\x03\x02\x02\x02\x85\x86\x07]\x02" +
"\x02\x86 \x03\x02\x02\x02\x87\x88\x07_\x02\x02\x88\"\x03\x02\x02\x02\x89" +
"\x8A\x07*\x02\x02\x8A$\x03\x02\x02\x02\x8B\x8C\x07+\x02\x02\x8C&\x03\x02" +
"\x02\x02\x8D\x8E\x07B\x02\x02\x8E(\x03\x02\x02\x02\x8F\x90\x07`\x02\x02" +
"\x90*\x03\x02\x02\x02\x91\x92\x07%\x02\x02\x92,\x03\x02\x02\x02\x93\x94" +
"\x07\x80\x02\x02\x94.\x03\x02\x02\x02\x95\x96\x07)\x02\x02\x960\x03\x02" +
"\x02\x02\x97\x98\x05\x1B\x0E\x02\x98\x99\x05\x1B\x0E\x02\x992\x03\x02" +
"\x02\x02\x9A\x9E\x07\f\x02\x02\x9B\x9C\x07\x0F\x02\x02\x9C\x9E\x07\f\x02" +
"\x02\x9D\x9A\x03\x02\x02\x02\x9D\x9B\x03\x02\x02\x02\x9E4\x03\x02\x02" +
"\x02\x9F\xA3\x053\x1A\x02\xA0\xA2\x051\x19\x02\xA1\xA0\x03\x02\x02\x02" +
"\xA2\xA5\x03\x02\x02\x02\xA3\xA1\x03\x02\x02\x02\xA3\xA4\x03\x02\x02\x02" +
"\xA46\x03\x02\x02\x02\xA5\xA3\x03\x02\x02\x02\xA6\xA7\t\x04\x02\x02\xA7" +
"\xA8\t\x04\x02\x02\xA88\x03\x02\x02\x02\xA9\xAA\x05\x17\f\x02\xAA\xAB" +
"\x05\x17\f\x02\xAB:\x03\x02\x02\x02\xAC\xB0\x057\x1C\x02\xAD\xAE\x05\x17" +
"\f\x02\xAE\xAF\x057\x1C\x02\xAF\xB1\x03\x02\x02\x02\xB0\xAD\x03\x02\x02" +
"\x02\xB1\xB2\x03\x02\x02\x02\xB2\xB0\x03\x02\x02\x02\xB2\xB3\x03\x02\x02" +
"\x02\xB3<\x03\x02\x02\x02\xB4\xC3\x059\x1D\x02\xB5\xB6\x057\x1C\x02\xB6" +
"\xB7\x05\x17\f\x02\xB7\xC3\x03\x02\x02\x02\xB8\xBF\x05;\x1E\x02\xB9\xBA" +
"\x05\x17\f\x02\xBA\xBB\x055\x1B\x02\xBB\xBC\x05;\x1E\x02\xBC\xBE\x03\x02" +
"\x02\x02\xBD\xB9\x03\x02\x02\x02\xBE\xC1\x03\x02\x02\x02\xBF\xBD\x03\x02" +
"\x02\x02\xBF\xC0\x03\x02\x02\x02\xC0\xC3\x03\x02\x02\x02\xC1\xBF\x03\x02" +
"\x02\x02\xC2\xB4\x03\x02\x02\x02\xC2\xB5\x03\x02\x02\x02\xC2\xB8\x03\x02" +
"\x02\x02\xC3>\x03\x02\x02\x02\xC4\xC5\x07^\x02\x02\xC5\xD8\t\x05\x02\x02" +
"\xC6\xCB\x07^\x02\x02\xC7\xC9\t\x06\x02\x02\xC8\xC7\x03\x02\x02\x02\xC8" +
"\xC9\x03\x02\x02\x02\xC9\xCA\x03\x02\x02\x02\xCA\xCC\t\x07\x02\x02\xCB" +
"\xC8\x03\x02\x02\x02\xCB\xCC\x03\x02\x02\x02\xCC\xCD\x03\x02\x02\x02\xCD" +
"\xD8\t\x07\x02\x02\xCE\xD0\x07^\x02\x02\xCF\xD1\x07w\x02\x02\xD0\xCF\x03" +
"\x02\x02\x02\xD1\xD2\x03\x02\x02\x02\xD2\xD0\x03\x02\x02\x02\xD2\xD3\x03" +
"\x02\x02\x02\xD3\xD4\x03\x02\x02\x02\xD4\xD5\x057\x1C\x02\xD5\xD6\x05" +
"7\x1C\x02\xD6\xD8\x03\x02\x02\x02\xD7\xC4\x03\x02\x02\x02\xD7\xC6\x03" +
"\x02\x02\x02\xD7\xCE\x03\x02\x02\x02\xD8@\x03\x02\x02\x02\xD9\xDE\x07" +
"$\x02\x02\xDA\xDD\n\b\x02\x02\xDB\xDD\x05? \x02\xDC\xDA\x03\x02\x02\x02" +
"\xDC\xDB\x03\x02\x02\x02\xDD\xE0\x03\x02\x02\x02\xDE\xDC\x03\x02\x02\x02" +
"\xDE\xDF\x03\x02\x02\x02\xDF\xE1\x03\x02\x02\x02\xE0\xDE\x03\x02\x02\x02" +
"\xE1\xE2\x07$\x02\x02\xE2B\x03\x02\x02\x02\xE3\xE4\x072\x02\x02\xE4D\x03" +
"\x02\x02\x02\xE5\xE8\x05\x15\v\x02\xE6\xE8\x05\x17\f\x02\xE7\xE5\x03\x02" +
"\x02\x02\xE7\xE6\x03\x02\x02\x02\xE7\xE8\x03\x02\x02\x02\xE8\xF4\x03\x02" +
"\x02\x02\xE9\xF5\x05C\"\x02\xEA\xEC\x05C\"\x02\xEB\xEA\x03\x02\x02\x02" +
"\xEB\xEC\x03\x02\x02\x02\xEC\xED\x03\x02\x02\x02\xED\xF1\t\t\x02\x02\xEE" +
"\xF0\t\n\x02\x02\xEF\xEE\x03\x02\x02\x02\xF0\xF3\x03\x02\x02\x02\xF1\xEF" +
"\x03\x02\x02\x02\xF1\xF2\x03\x02\x02\x02\xF2\xF5\x03\x02\x02\x02\xF3\xF1" +
"\x03\x02\x02\x02\xF4\xE9\x03\x02\x02\x02\xF4\xEB\x03\x02\x02\x02\xF5F" +
"\x03\x02\x02\x02\xF6\xF9\t\v\x02\x02\xF7\xFA\x05\x15\v\x02\xF8\xFA\x05" +
"\x17\f\x02\xF9\xF7\x03\x02\x02\x02\xF9\xF8\x03\x02\x02\x02\xF9\xFA\x03" +
"\x02\x02\x02\xFA\xFC\x03\x02\x02\x02\xFB\xFD\x042;\x02\xFC\xFB\x03\x02" +
"\x02\x02\xFD\xFE\x03\x02\x02\x02\xFE\xFC\x03\x02\x02\x02\xFE\xFF\x03\x02" +
"\x02\x02\xFFH\x03\x02\x02\x02\u0100\u0103\x05\x15\v\x02\u0101\u0103\x05" +
"\x17\f\x02\u0102\u0100\x03\x02\x02\x02\u0102\u0101\x03\x02\x02\x02\u0102" +
"\u0103\x03\x02\x02\x02\u0103\u0105\x03\x02\x02\x02\u0104\u0106\t\n\x02" +
"\x02\u0105\u0104\x03\x02\x02\x02\u0106\u0107\x03\x02\x02\x02\u0107\u0105" +
"\x03\x02\x02\x02\u0107\u0108\x03\x02\x02\x02\u0108\u0109\x03\x02\x02\x02" +
"\u0109\u010B\x05\x1D\x0F\x02\u010A\u010C\t\n\x02\x02\u010B\u010A\x03\x02" +
"\x02\x02\u010C\u010D\x03\x02\x02\x02\u010D\u010B\x03\x02\x02\x02\u010D" +
"\u010E\x03\x02\x02\x02\u010E\u0110\x03\x02\x02\x02\u010F\u0111\x05G$\x02" +
"\u0110\u010F\x03\x02\x02\x02\u0110\u0111\x03\x02\x02\x02\u0111J\x03\x02" +
"\x02\x02\u0112\u0113\x072\x02\x02\u0113\u0114\x07z\x02\x02\u0114\u0116" +
"\x03\x02\x02\x02\u0115\u0117\t\f\x02\x02\u0116\u0115\x03\x02\x02\x02\u0117" +
"\u0118\x03\x02\x02\x02\u0118\u0116\x03\x02\x02\x02\u0118\u0119\x03\x02" +
"\x02\x02\u0119L\x03\x02\x02\x02\u011A\u011E\t\r\x02\x02\u011B\u011D\n" +
"\x0F\x02\x02\u011C\u011B\x03\x02\x02\x02\u011D\u0120\x03\x02\x02\x02\u011E" +
"\u011C\x03\x02\x02\x02\u011E\u011F\x03\x02\x02\x02\u011FN\x03\x02\x02" +
"\x02\u0120\u011E\x03\x02\x02\x02\u0121\u0122\x07$\x02\x02\u0122\u0123" +
"\x07$\x02\x02\u0123\u0124\x07$\x02\x02\u0124P\x03\x02\x02\x02\u0125\u0129" +
"\x05O(\x02\u0126\u012A\x07\f\x02\x02\u0127\u0128\x07\x0F\x02\x02\u0128" +
"\u012A\x07\f\x02\x02\u0129\u0126\x03\x02\x02\x02\u0129\u0127\x03\x02\x02" +
"\x02\u012A\u012F\x03\x02\x02\x02\u012B\u012E\n\x0E\x02\x02\u012C\u012E" +
"\x05? \x02\u012D\u012B\x03\x02\x02\x02\u012D\u012C\x03\x02\x02\x02\u012E" +
"\u0131\x03\x02\x02\x02\u012F\u0130\x03\x02\x02\x02\u012F\u012D\x03\x02" +
"\x02\x02\u0130\u0132\x03\x02\x02\x02\u0131\u012F\x03\x02\x02\x02\u0132" +
"\u0133\x05O(\x02\u0133R\x03\x02\x02\x02!\x02X]ei\x9D\xA3\xB2\xBF\xC2\xC8" +
"\xCB\xD2\xD7\xDC\xDE\xE7\xEB\xF1\xF4\xF9\xFE\u0102\u0107\u010D\u0110\u0118" +
"\u011E\u0129\u012D\u012F\x02";
//# sourceMappingURL=EoLexer.js.map
/***/ }),
/***/ 5001:
/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
"use strict";
// Generated from Eo.g4 by ANTLR 4.9.0-SNAPSHOT
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.VapplicationArgBoundNextContext = exports.VapplicationArgBoundCurrentContext = exports.VapplicationArgBoundContext = exports.VapplicationArgsSpecificContext = exports.VapplicationArgsReversedContext = exports.VapplicationArgsContext = exports.CompactArrayContext = exports.VapplicationHeadContext = exports.TvapplicationContext = exports.VapplicationContext = exports.HapplicationArgScopedContext = exports.HapplicationArgContext = exports.HapplicationReversedFirstContext = exports.HapplicationTailContext = exports.HapplicationTailScopedContext = exports.HapplicationArgUnboundContext = exports.ApplicableContext = exports.HapplicationHeadExtendedContext = exports.HapplicationHeadContext = exports.HapplicationReversedContext = exports.AphiContext = exports.OnlyAphiContext = exports.HapplicationExtendedContext = exports.HapplicationReversedHeadContext = exports.HapplicationContext = exports.TapplicationContext = exports.ApplicationContext = exports.VoidContext = exports.VoidsContext = exports.TestsContext = exports.InnersContext = exports.InnersOrEolContext = exports.TestsOrEolContext = exports.TformationContext = exports.FormationContext = exports.AtomContext = exports.JustContext = exports.TmasterBodyContext = exports.MasterBodyContext = exports.SubMasterContext = exports.TsubMasterContext = exports.TboundContext = exports.BoundContext = exports.ObjectContext = exports.CommentOptionalContext = exports.CommentContext = exports.MetasContext = exports.EopContext = exports.ProgramContext = exports.EoParser = void 0;
exports.DataContext = exports.AsContext = exports.ScopeContext = exports.ArrowContext = exports.SuffixContext = exports.TarrowContext = exports.TnameContext = exports.OnameContext = exports.OnameOrTnameContext = exports.FnameContext = exports.AnameContext = exports.ReversedContext = exports.FinisherContext = exports.BeginnerContext = exports.MethodTailContext = exports.VmethodHeadVapplicationContext = exports.VmethodHeadApplicationTailContext = exports.VmethodHeadContext = exports.VmethodContext = exports.HmethodContext = exports.MethodContext = exports.HanonymInnerContext = exports.OnlyphiTailContext = exports.OnlyphiContext = exports.HanonymContext = exports.HformationContext = exports.FormationNamedContext = exports.VapplicationArgUnboundNextContext = exports.VapplicationArgUnboundCurrentContext = exports.VapplicationArgUnboundContext = void 0;
const ATN_1 = __nccwpck_require__(9171);
const ATNDeserializer_1 = __nccwpck_require__(3264);
const FailedPredicateException_1 = __nccwpck_require__(6713);
const NoViableAltException_1 = __nccwpck_require__(3372);
const Parser_1 = __nccwpck_require__(8429);
const ParserRuleContext_1 = __nccwpck_require__(9412);
const ParserATNSimulator_1 = __nccwpck_require__(5674);
const RecognitionException_1 = __nccwpck_require__(7122);
const Token_1 = __nccwpck_require__(1701);
const VocabularyImpl_1 = __nccwpck_require__(9496);
const Utils = __nccwpck_require__(556);
class EoParser extends Parser_1.Parser {
// @Override
// @NotNull
get vocabulary() {
return EoParser.VOCABULARY;
}
// tslint:enable:no-trailing-whitespace
// @Override
get grammarFileName() { return "Eo.g4"; }
// @Override
get ruleNames() { return EoParser.ruleNames; }
// @Override
get serializedATN() { return EoParser._serializedATN; }
createFailedPredicateException(predicate, message) {
return new FailedPredicateException_1.FailedPredicateException(this, predicate, message);
}
constructor(input) {
super(input);
this._interp = new ParserATNSimulator_1.ParserATNSimulator(EoParser._ATN, this);
}
// @RuleVersion(0)
program() {
let _localctx = new ProgramContext(this._ctx, this.state);
this.enterRule(_localctx, 0, EoParser.RULE_program);
let _la;
try {
this.enterOuterAlt(_localctx, 1);
{
this.state = 159;
this._errHandler.sync(this);
_la = this._input.LA(1);
if (_la === EoParser.META) {
{
this.state = 158;
this.metas();
}
}
this.state = 161;
this.object();
this.state = 162;
this.match(EoParser.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)
eop() {
let _localctx = new EopContext(this._ctx, this.state);
this.enterRule(_localctx, 2, EoParser.RULE_eop);
try {
this.enterOuterAlt(_localctx, 1);
{
this.state = 164;
this.match(EoParser.EOL);
this.state = 165;
this.match(EoParser.EOL);
}
}
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)
metas() {
let _localctx = new MetasContext(this._ctx, this.state);
this.enterRule(_localctx, 4, EoParser.RULE_metas);
try {
let _alt;
this.enterOuterAlt(_localctx, 1);
{
this.state = 171;
this._errHandler.sync(this);
_alt = this.interpreter.adaptivePredict(this._input, 1, this._ctx);
while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
if (_alt === 1) {
{
{
this.state = 167;
this.match(EoParser.META);
this.state = 168;
this.match(EoParser.EOL);
}
}
}
this.state = 173;
this._errHandler.sync(this);
_alt = this.interpreter.adaptivePredict(this._input, 1, this._ctx);
}
this.state = 174;
this.match(EoParser.META);
this.state = 175;
this.eop();
}
}
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)
comment() {
let _localctx = new CommentContext(this._ctx, this.state);
this.enterRule(_localctx, 6, EoParser.RULE_comment);
try {
this.enterOuterAlt(_localctx, 1);
{
this.state = 177;
this.match(EoParser.COMMENTARY);
this.state = 178;
this.match(EoParser.EOL);
}
}
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)
commentOptional() {
let _localctx = new CommentOptionalContext(this._ctx, this.state);
this.enterRule(_localctx, 8, EoParser.RULE_commentOptional);
try {
let _alt;
this.enterOuterAlt(_localctx, 1);
{
this.state = 183;
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) {
{
{
this.state = 180;
this.comment();
}
}
}
this.state = 185;
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.exitRule();
}
return _localctx;
}
// @RuleVersion(0)
object() {
let _localctx = new ObjectContext(this._ctx, this.state);
this.enterRule(_localctx, 10, EoParser.RULE_object);
try {
this.state = 190;
this._errHandler.sync(this);
switch (this.interpreter.adaptivePredict(this._input, 3, this._ctx)) {
case 1:
this.enterOuterAlt(_localctx, 1);
{
this.state = 186;
this.commentOptional();
this.state = 187;
this.masterBody();
}
break;
case 2:
this.enterOuterAlt(_localctx, 2);
{
this.state = 189;
this.bound();
}
break;
}
}
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)
bound() {
let _localctx = new BoundContext(this._ctx, this.state);
this.enterRule(_localctx, 12, EoParser.RULE_bound);
try {
this.enterOuterAlt(_localctx, 1);
{
this.state = 192;
this.commentOptional();
this.state = 204;
this._errHandler.sync(this);
switch (this.interpreter.adaptivePredict(this._input, 6, this._ctx)) {
case 1:
{
this.state = 193;
this.application();
}
break;
case 2:
{
{
this.state = 196;
this._errHandler.sync(this);
switch (this.interpreter.adaptivePredict(this._input, 4, this._ctx)) {
case 1:
{
this.state = 194;
this.method();
}
break;
case 2:
{
this.state = 195;
this.just();
}
break;
}
this.state = 200;
this._errHandler.sync(this);
switch (this.interpreter.adaptivePredict(this._input, 5, this._ctx)) {
case 1:
{
this.state = 198;
this.onameOrTname();
}
break;
case 2:
{
this.state = 199;
this.aphi();
}
break;
}
}
this.state = 202;
this.match(EoParser.EOL);
}
break;
}
}
}
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)
tbound() {
let _localctx = new TboundContext(this._ctx, this.state);
this.enterRule(_localctx, 14, EoParser.RULE_tbound);
try {
this.enterOuterAlt(_localctx, 1);
{
this.state = 206;
this.commentOptional();
this.state = 216;
this._errHandler.sync(this);
switch (this.interpreter.adaptivePredict(this._input, 8, this._ctx)) {
case 1:
{
this.state = 207;
this.tapplication();
}
break;
case 2:
{
{
this.state = 210;
this._errHandler.sync(this);
switch (this.interpreter.adaptivePredict(this._input, 7, this._ctx)) {
case 1:
{
this.state = 208;
this.method();
}
break;
case 2:
{
this.state = 209;
this.just();
}
break;
}
this.state = 212;
this.tname();
}
this.state = 214;
this.match(EoParser.EOL);
}
break;
}
}
}
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)
tsubMaster() {
let _localctx = new TsubMasterContext(this._ctx, this.state);
this.enterRule(_localctx, 16, EoParser.RULE_tsubMaster);
try {
this.enterOuterAlt(_localctx, 1);
{
this.state = 218;
this.commentOptional();
this.state = 219;
this.tmasterBody();
}
}
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)
subMaster() {
let _localctx = new SubMasterContext(this._ctx, this.state);
this.enterRule(_localctx, 18, EoParser.RULE_subMaster);
try {
this.enterOuterAlt(_localctx, 1);
{
this.state = 221;
this.commentOptional();
this.state = 222;
this.masterBody();
}
}
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)
masterBody() {
let _localctx = new MasterBodyContext(this._ctx, this.state);
this.enterRule(_localctx, 20, EoParser.RULE_masterBody);
try {
this.state = 232;
this._errHandler.sync(this);
switch (this.interpreter.adaptivePredict(this._input, 10, this._ctx)) {
case 1:
this.enterOuterAlt(_localctx, 1);
{
this.state = 224;
this.formation();
}
break;
case 2:
this.enterOuterAlt(_localctx, 2);
{
this.state = 230;
this._errHandler.sync(this);
switch (this.interpreter.adaptivePredict(this._input, 9, this._ctx)) {
case 1:
{
this.state = 225;
this.atom();
}
break;
case 2:
{
this.state = 226;
this.hanonym();
this.state = 227;
this.onameOrTname();
this.state = 228;
this.match(EoParser.EOL);
}
break;
}
}
break;
}
}
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)
tmasterBody() {
let _localctx = new TmasterBodyContext(this._ctx, this.state);
this.enterRule(_localctx, 22, EoParser.RULE_tmasterBody);
try {
this.state = 242;
this._errHandler.sync(this);
switch (this.interpreter.adaptivePredict(this._input, 12, this._ctx)) {
case 1:
this.enterOuterAlt(_localctx, 1);
{
this.state = 234;
this.tformation();
}
break;
case 2:
this.enterOuterAlt(_localctx, 2);
{
this.state = 240;
this._errHandler.sync(this);
switch (this.interpreter.adaptivePredict(this._input, 11, this._ctx)) {
case 1:
{
this.state = 235;
this.atom();
}
break;
case 2:
{
this.state = 236;
this.hanonym();
{
this.state = 237;
this.tname();
}
this.state = 238;
this.match(EoParser.EOL);
}
break;
}
}
break;
}
}
catch (re) {
if (re instanceof RecognitionException_1.RecognitionException) {