UNPKG

chevrotain

Version:

Chevrotain is a high performance fault tolerant javascript parsing DSL for building recursive decent parsers

341 lines 14.3 kB
import { contains, values } from "../../../utils/utils"; import { isRecognitionException } from "../../exceptions_public"; import { DEFAULT_RULE_CONFIG, ParserDefinitionErrorType } from "../parser"; import { defaultGrammarValidatorErrorProvider } from "../../errors_public"; import { validateRuleIsOverridden } from "../../grammar/checks"; import { serializeGrammar } from "../../grammar/gast/gast_public"; /** * This trait is responsible for implementing the public API * for defining Chevrotain parsers, i.e: * - CONSUME * - RULE * - OPTION * - ... */ var RecognizerApi = /** @class */ (function () { function RecognizerApi() { } RecognizerApi.prototype.ACTION = function (impl) { return impl.call(this); }; RecognizerApi.prototype.consume = function (idx, tokType, options) { return this.consumeInternal(tokType, idx, options); }; RecognizerApi.prototype.subrule = function (idx, ruleToCall, options) { return this.subruleInternal(ruleToCall, idx, options); }; RecognizerApi.prototype.option = function (idx, actionORMethodDef) { return this.optionInternal(actionORMethodDef, idx); }; RecognizerApi.prototype.or = function (idx, altsOrOpts) { return this.orInternal(altsOrOpts, idx); }; RecognizerApi.prototype.many = function (idx, actionORMethodDef) { return this.manyInternal(idx, actionORMethodDef); }; RecognizerApi.prototype.atLeastOne = function (idx, actionORMethodDef) { return this.atLeastOneInternal(idx, actionORMethodDef); }; RecognizerApi.prototype.CONSUME = function (tokType, options) { return this.consumeInternal(tokType, 0, options); }; RecognizerApi.prototype.CONSUME1 = function (tokType, options) { return this.consumeInternal(tokType, 1, options); }; RecognizerApi.prototype.CONSUME2 = function (tokType, options) { return this.consumeInternal(tokType, 2, options); }; RecognizerApi.prototype.CONSUME3 = function (tokType, options) { return this.consumeInternal(tokType, 3, options); }; RecognizerApi.prototype.CONSUME4 = function (tokType, options) { return this.consumeInternal(tokType, 4, options); }; RecognizerApi.prototype.CONSUME5 = function (tokType, options) { return this.consumeInternal(tokType, 5, options); }; RecognizerApi.prototype.CONSUME6 = function (tokType, options) { return this.consumeInternal(tokType, 6, options); }; RecognizerApi.prototype.CONSUME7 = function (tokType, options) { return this.consumeInternal(tokType, 7, options); }; RecognizerApi.prototype.CONSUME8 = function (tokType, options) { return this.consumeInternal(tokType, 8, options); }; RecognizerApi.prototype.CONSUME9 = function (tokType, options) { return this.consumeInternal(tokType, 9, options); }; RecognizerApi.prototype.SUBRULE = function (ruleToCall, options) { return this.subruleInternal(ruleToCall, 0, options); }; RecognizerApi.prototype.SUBRULE1 = function (ruleToCall, options) { return this.subruleInternal(ruleToCall, 1, options); }; RecognizerApi.prototype.SUBRULE2 = function (ruleToCall, options) { return this.subruleInternal(ruleToCall, 2, options); }; RecognizerApi.prototype.SUBRULE3 = function (ruleToCall, options) { return this.subruleInternal(ruleToCall, 3, options); }; RecognizerApi.prototype.SUBRULE4 = function (ruleToCall, options) { return this.subruleInternal(ruleToCall, 4, options); }; RecognizerApi.prototype.SUBRULE5 = function (ruleToCall, options) { return this.subruleInternal(ruleToCall, 5, options); }; RecognizerApi.prototype.SUBRULE6 = function (ruleToCall, options) { return this.subruleInternal(ruleToCall, 6, options); }; RecognizerApi.prototype.SUBRULE7 = function (ruleToCall, options) { return this.subruleInternal(ruleToCall, 7, options); }; RecognizerApi.prototype.SUBRULE8 = function (ruleToCall, options) { return this.subruleInternal(ruleToCall, 8, options); }; RecognizerApi.prototype.SUBRULE9 = function (ruleToCall, options) { return this.subruleInternal(ruleToCall, 9, options); }; RecognizerApi.prototype.OPTION = function (actionORMethodDef) { return this.optionInternal(actionORMethodDef, 0); }; RecognizerApi.prototype.OPTION1 = function (actionORMethodDef) { return this.optionInternal(actionORMethodDef, 1); }; RecognizerApi.prototype.OPTION2 = function (actionORMethodDef) { return this.optionInternal(actionORMethodDef, 2); }; RecognizerApi.prototype.OPTION3 = function (actionORMethodDef) { return this.optionInternal(actionORMethodDef, 3); }; RecognizerApi.prototype.OPTION4 = function (actionORMethodDef) { return this.optionInternal(actionORMethodDef, 4); }; RecognizerApi.prototype.OPTION5 = function (actionORMethodDef) { return this.optionInternal(actionORMethodDef, 5); }; RecognizerApi.prototype.OPTION6 = function (actionORMethodDef) { return this.optionInternal(actionORMethodDef, 6); }; RecognizerApi.prototype.OPTION7 = function (actionORMethodDef) { return this.optionInternal(actionORMethodDef, 7); }; RecognizerApi.prototype.OPTION8 = function (actionORMethodDef) { return this.optionInternal(actionORMethodDef, 8); }; RecognizerApi.prototype.OPTION9 = function (actionORMethodDef) { return this.optionInternal(actionORMethodDef, 9); }; RecognizerApi.prototype.OR = function (altsOrOpts) { return this.orInternal(altsOrOpts, 0); }; RecognizerApi.prototype.OR1 = function (altsOrOpts) { return this.orInternal(altsOrOpts, 1); }; RecognizerApi.prototype.OR2 = function (altsOrOpts) { return this.orInternal(altsOrOpts, 2); }; RecognizerApi.prototype.OR3 = function (altsOrOpts) { return this.orInternal(altsOrOpts, 3); }; RecognizerApi.prototype.OR4 = function (altsOrOpts) { return this.orInternal(altsOrOpts, 4); }; RecognizerApi.prototype.OR5 = function (altsOrOpts) { return this.orInternal(altsOrOpts, 5); }; RecognizerApi.prototype.OR6 = function (altsOrOpts) { return this.orInternal(altsOrOpts, 6); }; RecognizerApi.prototype.OR7 = function (altsOrOpts) { return this.orInternal(altsOrOpts, 7); }; RecognizerApi.prototype.OR8 = function (altsOrOpts) { return this.orInternal(altsOrOpts, 8); }; RecognizerApi.prototype.OR9 = function (altsOrOpts) { return this.orInternal(altsOrOpts, 9); }; RecognizerApi.prototype.MANY = function (actionORMethodDef) { this.manyInternal(0, actionORMethodDef); }; RecognizerApi.prototype.MANY1 = function (actionORMethodDef) { this.manyInternal(1, actionORMethodDef); }; RecognizerApi.prototype.MANY2 = function (actionORMethodDef) { this.manyInternal(2, actionORMethodDef); }; RecognizerApi.prototype.MANY3 = function (actionORMethodDef) { this.manyInternal(3, actionORMethodDef); }; RecognizerApi.prototype.MANY4 = function (actionORMethodDef) { this.manyInternal(4, actionORMethodDef); }; RecognizerApi.prototype.MANY5 = function (actionORMethodDef) { this.manyInternal(5, actionORMethodDef); }; RecognizerApi.prototype.MANY6 = function (actionORMethodDef) { this.manyInternal(6, actionORMethodDef); }; RecognizerApi.prototype.MANY7 = function (actionORMethodDef) { this.manyInternal(7, actionORMethodDef); }; RecognizerApi.prototype.MANY8 = function (actionORMethodDef) { this.manyInternal(8, actionORMethodDef); }; RecognizerApi.prototype.MANY9 = function (actionORMethodDef) { this.manyInternal(9, actionORMethodDef); }; RecognizerApi.prototype.MANY_SEP = function (options) { this.manySepFirstInternal(0, options); }; RecognizerApi.prototype.MANY_SEP1 = function (options) { this.manySepFirstInternal(1, options); }; RecognizerApi.prototype.MANY_SEP2 = function (options) { this.manySepFirstInternal(2, options); }; RecognizerApi.prototype.MANY_SEP3 = function (options) { this.manySepFirstInternal(3, options); }; RecognizerApi.prototype.MANY_SEP4 = function (options) { this.manySepFirstInternal(4, options); }; RecognizerApi.prototype.MANY_SEP5 = function (options) { this.manySepFirstInternal(5, options); }; RecognizerApi.prototype.MANY_SEP6 = function (options) { this.manySepFirstInternal(6, options); }; RecognizerApi.prototype.MANY_SEP7 = function (options) { this.manySepFirstInternal(7, options); }; RecognizerApi.prototype.MANY_SEP8 = function (options) { this.manySepFirstInternal(8, options); }; RecognizerApi.prototype.MANY_SEP9 = function (options) { this.manySepFirstInternal(9, options); }; RecognizerApi.prototype.AT_LEAST_ONE = function (actionORMethodDef) { this.atLeastOneInternal(0, actionORMethodDef); }; RecognizerApi.prototype.AT_LEAST_ONE1 = function (actionORMethodDef) { return this.atLeastOneInternal(1, actionORMethodDef); }; RecognizerApi.prototype.AT_LEAST_ONE2 = function (actionORMethodDef) { this.atLeastOneInternal(2, actionORMethodDef); }; RecognizerApi.prototype.AT_LEAST_ONE3 = function (actionORMethodDef) { this.atLeastOneInternal(3, actionORMethodDef); }; RecognizerApi.prototype.AT_LEAST_ONE4 = function (actionORMethodDef) { this.atLeastOneInternal(4, actionORMethodDef); }; RecognizerApi.prototype.AT_LEAST_ONE5 = function (actionORMethodDef) { this.atLeastOneInternal(5, actionORMethodDef); }; RecognizerApi.prototype.AT_LEAST_ONE6 = function (actionORMethodDef) { this.atLeastOneInternal(6, actionORMethodDef); }; RecognizerApi.prototype.AT_LEAST_ONE7 = function (actionORMethodDef) { this.atLeastOneInternal(7, actionORMethodDef); }; RecognizerApi.prototype.AT_LEAST_ONE8 = function (actionORMethodDef) { this.atLeastOneInternal(8, actionORMethodDef); }; RecognizerApi.prototype.AT_LEAST_ONE9 = function (actionORMethodDef) { this.atLeastOneInternal(9, actionORMethodDef); }; RecognizerApi.prototype.AT_LEAST_ONE_SEP = function (options) { this.atLeastOneSepFirstInternal(0, options); }; RecognizerApi.prototype.AT_LEAST_ONE_SEP1 = function (options) { this.atLeastOneSepFirstInternal(1, options); }; RecognizerApi.prototype.AT_LEAST_ONE_SEP2 = function (options) { this.atLeastOneSepFirstInternal(2, options); }; RecognizerApi.prototype.AT_LEAST_ONE_SEP3 = function (options) { this.atLeastOneSepFirstInternal(3, options); }; RecognizerApi.prototype.AT_LEAST_ONE_SEP4 = function (options) { this.atLeastOneSepFirstInternal(4, options); }; RecognizerApi.prototype.AT_LEAST_ONE_SEP5 = function (options) { this.atLeastOneSepFirstInternal(5, options); }; RecognizerApi.prototype.AT_LEAST_ONE_SEP6 = function (options) { this.atLeastOneSepFirstInternal(6, options); }; RecognizerApi.prototype.AT_LEAST_ONE_SEP7 = function (options) { this.atLeastOneSepFirstInternal(7, options); }; RecognizerApi.prototype.AT_LEAST_ONE_SEP8 = function (options) { this.atLeastOneSepFirstInternal(8, options); }; RecognizerApi.prototype.AT_LEAST_ONE_SEP9 = function (options) { this.atLeastOneSepFirstInternal(9, options); }; RecognizerApi.prototype.RULE = function (name, implementation, config) { if (config === void 0) { config = DEFAULT_RULE_CONFIG; } if (contains(this.definedRulesNames, name)) { var errMsg = defaultGrammarValidatorErrorProvider.buildDuplicateRuleNameError({ topLevelRule: name, grammarName: this.className }); var error = { message: errMsg, type: ParserDefinitionErrorType.DUPLICATE_RULE_NAME, ruleName: name }; this.definitionErrors.push(error); } this.definedRulesNames.push(name); var ruleImplementation = this.defineRule(name, implementation, config); this[name] = ruleImplementation; return ruleImplementation; }; RecognizerApi.prototype.OVERRIDE_RULE = function (name, impl, config) { if (config === void 0) { config = DEFAULT_RULE_CONFIG; } var ruleErrors = []; ruleErrors = ruleErrors.concat(validateRuleIsOverridden(name, this.definedRulesNames, this.className)); this.definitionErrors.push.apply(this.definitionErrors, ruleErrors); // mutability for the win var ruleImplementation = this.defineRule(name, impl, config); this[name] = ruleImplementation; return ruleImplementation; }; RecognizerApi.prototype.BACKTRACK = function (grammarRule, args) { return function () { // save org state this.isBackTrackingStack.push(1); var orgState = this.saveRecogState(); try { grammarRule.apply(this, args); // if no exception was thrown we have succeed parsing the rule. return true; } catch (e) { if (isRecognitionException(e)) { return false; } else { throw e; } } finally { this.reloadRecogState(orgState); this.isBackTrackingStack.pop(); } }; }; // GAST export APIs RecognizerApi.prototype.getGAstProductions = function () { return this.gastProductionsCache; }; RecognizerApi.prototype.getSerializedGastProductions = function () { return serializeGrammar(values(this.gastProductionsCache)); }; return RecognizerApi; }()); export { RecognizerApi }; //# sourceMappingURL=recognizer_api.js.map