forked from olcxjas-softworks/LarpixClient
Add capacitorjs runtime
This commit is contained in:
parent
d0ece489ee
commit
f90c0e6c40
8362 changed files with 1502407 additions and 1 deletions
109
node_modules/chevrotain/lib/src/parse/parser/traits/looksahead.js
generated
vendored
Normal file
109
node_modules/chevrotain/lib/src/parse/parser/traits/looksahead.js
generated
vendored
Normal file
|
|
@ -0,0 +1,109 @@
|
|||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.LooksAhead = void 0;
|
||||
var lookahead_1 = require("../../grammar/lookahead");
|
||||
var utils_1 = require("../../../utils/utils");
|
||||
var parser_1 = require("../parser");
|
||||
var keys_1 = require("../../grammar/keys");
|
||||
var gast_1 = require("../../grammar/gast/gast");
|
||||
/**
|
||||
* Trait responsible for the lookahead related utilities and optimizations.
|
||||
*/
|
||||
var LooksAhead = /** @class */ (function () {
|
||||
function LooksAhead() {
|
||||
}
|
||||
LooksAhead.prototype.initLooksAhead = function (config) {
|
||||
this.dynamicTokensEnabled = utils_1.has(config, "dynamicTokensEnabled")
|
||||
? config.dynamicTokensEnabled
|
||||
: parser_1.DEFAULT_PARSER_CONFIG.dynamicTokensEnabled;
|
||||
this.maxLookahead = utils_1.has(config, "maxLookahead")
|
||||
? config.maxLookahead
|
||||
: parser_1.DEFAULT_PARSER_CONFIG.maxLookahead;
|
||||
/* istanbul ignore next - Using plain array as dictionary will be tested on older node.js versions and IE11 */
|
||||
this.lookAheadFuncsCache = utils_1.isES2015MapSupported() ? new Map() : [];
|
||||
// Performance optimization on newer engines that support ES6 Map
|
||||
// For larger Maps this is slightly faster than using a plain object (array in our case).
|
||||
/* istanbul ignore else - The else branch will be tested on older node.js versions and IE11 */
|
||||
if (utils_1.isES2015MapSupported()) {
|
||||
this.getLaFuncFromCache = this.getLaFuncFromMap;
|
||||
this.setLaFuncCache = this.setLaFuncCacheUsingMap;
|
||||
}
|
||||
else {
|
||||
this.getLaFuncFromCache = this.getLaFuncFromObj;
|
||||
this.setLaFuncCache = this.setLaFuncUsingObj;
|
||||
}
|
||||
};
|
||||
LooksAhead.prototype.preComputeLookaheadFunctions = function (rules) {
|
||||
var _this = this;
|
||||
utils_1.forEach(rules, function (currRule) {
|
||||
_this.TRACE_INIT(currRule.name + " Rule Lookahead", function () {
|
||||
var _a = gast_1.collectMethods(currRule), alternation = _a.alternation, repetition = _a.repetition, option = _a.option, repetitionMandatory = _a.repetitionMandatory, repetitionMandatoryWithSeparator = _a.repetitionMandatoryWithSeparator, repetitionWithSeparator = _a.repetitionWithSeparator;
|
||||
utils_1.forEach(alternation, function (currProd) {
|
||||
var prodIdx = currProd.idx === 0 ? "" : currProd.idx;
|
||||
_this.TRACE_INIT("" + gast_1.getProductionDslName(currProd) + prodIdx, function () {
|
||||
var laFunc = lookahead_1.buildLookaheadFuncForOr(currProd.idx, currRule, currProd.maxLookahead || _this.maxLookahead, currProd.hasPredicates, _this.dynamicTokensEnabled, _this.lookAheadBuilderForAlternatives);
|
||||
var key = keys_1.getKeyForAutomaticLookahead(_this.fullRuleNameToShort[currRule.name], keys_1.OR_IDX, currProd.idx);
|
||||
_this.setLaFuncCache(key, laFunc);
|
||||
});
|
||||
});
|
||||
utils_1.forEach(repetition, function (currProd) {
|
||||
_this.computeLookaheadFunc(currRule, currProd.idx, keys_1.MANY_IDX, lookahead_1.PROD_TYPE.REPETITION, currProd.maxLookahead, gast_1.getProductionDslName(currProd));
|
||||
});
|
||||
utils_1.forEach(option, function (currProd) {
|
||||
_this.computeLookaheadFunc(currRule, currProd.idx, keys_1.OPTION_IDX, lookahead_1.PROD_TYPE.OPTION, currProd.maxLookahead, gast_1.getProductionDslName(currProd));
|
||||
});
|
||||
utils_1.forEach(repetitionMandatory, function (currProd) {
|
||||
_this.computeLookaheadFunc(currRule, currProd.idx, keys_1.AT_LEAST_ONE_IDX, lookahead_1.PROD_TYPE.REPETITION_MANDATORY, currProd.maxLookahead, gast_1.getProductionDslName(currProd));
|
||||
});
|
||||
utils_1.forEach(repetitionMandatoryWithSeparator, function (currProd) {
|
||||
_this.computeLookaheadFunc(currRule, currProd.idx, keys_1.AT_LEAST_ONE_SEP_IDX, lookahead_1.PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR, currProd.maxLookahead, gast_1.getProductionDslName(currProd));
|
||||
});
|
||||
utils_1.forEach(repetitionWithSeparator, function (currProd) {
|
||||
_this.computeLookaheadFunc(currRule, currProd.idx, keys_1.MANY_SEP_IDX, lookahead_1.PROD_TYPE.REPETITION_WITH_SEPARATOR, currProd.maxLookahead, gast_1.getProductionDslName(currProd));
|
||||
});
|
||||
});
|
||||
});
|
||||
};
|
||||
LooksAhead.prototype.computeLookaheadFunc = function (rule, prodOccurrence, prodKey, prodType, prodMaxLookahead, dslMethodName) {
|
||||
var _this = this;
|
||||
this.TRACE_INIT("" + dslMethodName + (prodOccurrence === 0 ? "" : prodOccurrence), function () {
|
||||
var laFunc = lookahead_1.buildLookaheadFuncForOptionalProd(prodOccurrence, rule, prodMaxLookahead || _this.maxLookahead, _this.dynamicTokensEnabled, prodType, _this.lookAheadBuilderForOptional);
|
||||
var key = keys_1.getKeyForAutomaticLookahead(_this.fullRuleNameToShort[rule.name], prodKey, prodOccurrence);
|
||||
_this.setLaFuncCache(key, laFunc);
|
||||
});
|
||||
};
|
||||
LooksAhead.prototype.lookAheadBuilderForOptional = function (alt, tokenMatcher, dynamicTokensEnabled) {
|
||||
return lookahead_1.buildSingleAlternativeLookaheadFunction(alt, tokenMatcher, dynamicTokensEnabled);
|
||||
};
|
||||
LooksAhead.prototype.lookAheadBuilderForAlternatives = function (alts, hasPredicates, tokenMatcher, dynamicTokensEnabled) {
|
||||
return lookahead_1.buildAlternativesLookAheadFunc(alts, hasPredicates, tokenMatcher, dynamicTokensEnabled);
|
||||
};
|
||||
// this actually returns a number, but it is always used as a string (object prop key)
|
||||
LooksAhead.prototype.getKeyForAutomaticLookahead = function (dslMethodIdx, occurrence) {
|
||||
var currRuleShortName = this.getLastExplicitRuleShortName();
|
||||
return keys_1.getKeyForAutomaticLookahead(currRuleShortName, dslMethodIdx, occurrence);
|
||||
};
|
||||
/* istanbul ignore next */
|
||||
LooksAhead.prototype.getLaFuncFromCache = function (key) {
|
||||
return undefined;
|
||||
};
|
||||
LooksAhead.prototype.getLaFuncFromMap = function (key) {
|
||||
return this.lookAheadFuncsCache.get(key);
|
||||
};
|
||||
/* istanbul ignore next - Using plain array as dictionary will be tested on older node.js versions and IE11 */
|
||||
LooksAhead.prototype.getLaFuncFromObj = function (key) {
|
||||
return this.lookAheadFuncsCache[key];
|
||||
};
|
||||
/* istanbul ignore next */
|
||||
LooksAhead.prototype.setLaFuncCache = function (key, value) { };
|
||||
LooksAhead.prototype.setLaFuncCacheUsingMap = function (key, value) {
|
||||
this.lookAheadFuncsCache.set(key, value);
|
||||
};
|
||||
/* istanbul ignore next - Using plain array as dictionary will be tested on older node.js versions and IE11 */
|
||||
LooksAhead.prototype.setLaFuncUsingObj = function (key, value) {
|
||||
this.lookAheadFuncsCache[key] = value;
|
||||
};
|
||||
return LooksAhead;
|
||||
}());
|
||||
exports.LooksAhead = LooksAhead;
|
||||
//# sourceMappingURL=looksahead.js.map
|
||||
Loading…
Add table
Add a link
Reference in a new issue