occam-parsers 23.3.13 → 23.3.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/lib/bnf/bnf.js +2 -2
- package/lib/definition/precedence.js +3 -3
- package/lib/node/nonTerminal.js +19 -7
- package/package.json +2 -2
- package/src/bnf/bnf.js +1 -1
- package/src/definition/precedence.js +2 -2
- package/src/node/nonTerminal.js +33 -6
package/README.md
CHANGED
package/lib/bnf/bnf.js
CHANGED
|
@@ -72,7 +72,7 @@ const bnf = `
|
|
|
72
72
|
|
|
73
73
|
stringLiteral ::= [string-literal] ;
|
|
74
74
|
|
|
75
|
-
precedence ::= "(" [
|
|
75
|
+
precedence ::= "(" [integer]? ")" ;
|
|
76
76
|
|
|
77
77
|
endOfLine ::= "<END_OF_LINE>" ;
|
|
78
78
|
|
|
@@ -105,4 +105,4 @@ const bnf = `
|
|
|
105
105
|
`;
|
|
106
106
|
const _default = bnf;
|
|
107
107
|
|
|
108
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ibmYvYm5mLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5jb25zdCBibmYgPSBgXG5cbiAgICAgIGRvY3VtZW50ICAgICAgICAgICAgICAgICA6Oj0gICggcnVsZSB8IGVycm9yICkrIDtcblxuICAgICAgcnVsZSAgICAgICAgICAgICAgICAgICAgIDo6PSAgbmFtZSBvcGFjaXR5TW9kaWZpZXI/IFwiOjo9XCIgZGVmaW5pdGlvbnMgXCI7XCIgO1xuXG4gICAgICBuYW1lICAgICAgICAgICAgICAgICAgICAgOjo9ICBbbmFtZV0gO1xuXG4gICAgICBkZWZpbml0aW9ucyAgICAgICAgICAgICAgOjo9ICBkZWZpbml0aW9uICggXCJ8XCIgZGVmaW5pdGlvbiApKiA7XG5cbiAgICAgIGRlZmluaXRpb24gICAgICAgICAgICAgICA6Oj0gIHBhcnQrIHByZWNlZGVuY2U/IDtcbiBcbiAgICAgIHBhcnQgICAgICAgICAgICAgICAgICAgICA6Oj0gIG5vblRlcm1pbmFsUGFydCBxdWFudGlmaWVyKlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB0ZXJtaW5hbFBhcnQgcXVhbnRpZmllcipcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgO1xuXG4gICAgICBub25UZXJtaW5hbFBhcnQgICAgICAgICAgOjo9ICBjb21taXR0ZWRQYXJ0XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIGlzb2xhdGVkUGFydFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICBjaG9pY2VPZlBhcnRzXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHNlcXVlbmNlT2ZQYXJ0c1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICBydWxlTmFtZSBjb250aW51YXRpb25Nb2RpZmllcj9cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgO1xuXG4gICAgICB0ZXJtaW5hbFBhcnQgICAgICAgICAgICAgOjo9ICBzaWduaWZpY2FudFRva2VuVHlwZVxuICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHJlZ3VsYXJFeHByZXNzaW9uXG4gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICBzdHJpbmdMaXRlcmFsXG4gIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgd2lsZGNhcmRcbiAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICBlcHNpbG9uXG4gIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgZW5kT2ZMaW5lXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIG5vV2hpdGVzcGFjZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgIHNlcXVlbmNlT2ZQYXJ0cyAgICAgICAgICA6Oj0gIFwiKFwiIHBhcnQgcGFydCsgXCIpXCIgO1xuXG4gICAgICBjaG9pY2VPZlBhcnRzICAgICAgICAgICAgOjo9ICBcIihcIiBwYXJ0Q2hvaWNlICggXCJ8XCIgcGFydENob2ljZSApKyBcIilcIiA7XG5cbiAgICAgIGNvbW1pdHRlZFBhcnQgICAgICAgICAgICA6Oj0gIFwiXFxgXCIgcGFydCA7XG5cbiAgICAgIGlzb2xhdGVkUGFydCAgICAgICAgICAgICA6Oj0gIFwiKFwiIHBhcnQgXCIpXCIgO1xuXG4gICAgICBwYXJ0Q2hvaWNlICAgICAgICAgICAgICAgOjo9ICBwYXJ0IHByZWNlZGVuY2U/
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ibmYvYm5mLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5jb25zdCBibmYgPSBgXG5cbiAgICAgIGRvY3VtZW50ICAgICAgICAgICAgICAgICA6Oj0gICggcnVsZSB8IGVycm9yICkrIDtcblxuICAgICAgcnVsZSAgICAgICAgICAgICAgICAgICAgIDo6PSAgbmFtZSBvcGFjaXR5TW9kaWZpZXI/IFwiOjo9XCIgZGVmaW5pdGlvbnMgXCI7XCIgO1xuXG4gICAgICBuYW1lICAgICAgICAgICAgICAgICAgICAgOjo9ICBbbmFtZV0gO1xuXG4gICAgICBkZWZpbml0aW9ucyAgICAgICAgICAgICAgOjo9ICBkZWZpbml0aW9uICggXCJ8XCIgZGVmaW5pdGlvbiApKiA7XG5cbiAgICAgIGRlZmluaXRpb24gICAgICAgICAgICAgICA6Oj0gIHBhcnQrIHByZWNlZGVuY2U/IDtcbiBcbiAgICAgIHBhcnQgICAgICAgICAgICAgICAgICAgICA6Oj0gIG5vblRlcm1pbmFsUGFydCBxdWFudGlmaWVyKlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB0ZXJtaW5hbFBhcnQgcXVhbnRpZmllcipcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgO1xuXG4gICAgICBub25UZXJtaW5hbFBhcnQgICAgICAgICAgOjo9ICBjb21taXR0ZWRQYXJ0XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIGlzb2xhdGVkUGFydFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICBjaG9pY2VPZlBhcnRzXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHNlcXVlbmNlT2ZQYXJ0c1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICBydWxlTmFtZSBjb250aW51YXRpb25Nb2RpZmllcj9cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgO1xuXG4gICAgICB0ZXJtaW5hbFBhcnQgICAgICAgICAgICAgOjo9ICBzaWduaWZpY2FudFRva2VuVHlwZVxuICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHJlZ3VsYXJFeHByZXNzaW9uXG4gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICBzdHJpbmdMaXRlcmFsXG4gIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgd2lsZGNhcmRcbiAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICBlcHNpbG9uXG4gIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgZW5kT2ZMaW5lXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIG5vV2hpdGVzcGFjZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgIHNlcXVlbmNlT2ZQYXJ0cyAgICAgICAgICA6Oj0gIFwiKFwiIHBhcnQgcGFydCsgXCIpXCIgO1xuXG4gICAgICBjaG9pY2VPZlBhcnRzICAgICAgICAgICAgOjo9ICBcIihcIiBwYXJ0Q2hvaWNlICggXCJ8XCIgcGFydENob2ljZSApKyBcIilcIiA7XG5cbiAgICAgIGNvbW1pdHRlZFBhcnQgICAgICAgICAgICA6Oj0gIFwiXFxgXCIgcGFydCA7XG5cbiAgICAgIGlzb2xhdGVkUGFydCAgICAgICAgICAgICA6Oj0gIFwiKFwiIHBhcnQgXCIpXCIgO1xuXG4gICAgICBwYXJ0Q2hvaWNlICAgICAgICAgICAgICAgOjo9ICBwYXJ0IHByZWNlZGVuY2U/IDtcblxuICAgICAgcnVsZU5hbWUgICAgICAgICAgICAgICAgIDo6PSAgW25hbWVdIDtcblxuICAgICAgc2lnbmlmaWNhbnRUb2tlblR5cGUgICAgIDo6PSAgW3R5cGVdIDtcblxuICAgICAgcmVndWxhckV4cHJlc3Npb24gICAgICAgIDo6PSAgW3JlZ3VsYXItZXhwcmVzc2lvbl0gO1xuXG4gICAgICBzdHJpbmdMaXRlcmFsICAgICAgICAgICAgOjo9ICBbc3RyaW5nLWxpdGVyYWxdIDtcblxuICAgICAgcHJlY2VkZW5jZSAgICAgICAgICAgICAgIDo6PSAgXCIoXCIgW2ludGVnZXJdPyBcIilcIiA7XG4gICAgICBcbiAgICAgIGVuZE9mTGluZSAgICAgICAgICAgICAgICA6Oj0gIFwiPEVORF9PRl9MSU5FPlwiIDtcbiAgICAgIFxuICAgICAgd2lsZGNhcmQgICAgICAgICAgICAgICAgIDo6PSAgXCIuXCIgO1xuXG4gICAgICBlcHNpbG9uICAgICAgICAgICAgICAgICAgOjo9ICBcIs61XCIgO1xuXG4gICAgICBub1doaXRlc3BhY2UgICAgICAgICAgICAgOjo9ICBcIjxOT19XSElURVNQQUNFPlwiIDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblxuICAgICAgcXVhbnRpZmllciAgICAgICAgICAgICAgIDo6PSAgb3B0aW9uYWxRdWFudGlmaWVyXG4gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICBvbmVPck1vcmVRdWFudGlmaWVyXG4gIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgemVyb09yTW9yZVF1YW50aWZpZXJcbiAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7XG5cbiAgICAgIG9wYWNpdHlNb2RpZmllciAgICAgICAgICA6Oj0gIDxOT19XSElURVNQQUNFPiggXCIuXCIgfCBcIi4uXCIgKTtcbiAgICAgIFxuICAgICAgY29udGludWF0aW9uTW9kaWZpZXIgICAgIDo6PSAgPE5PX1dISVRFU1BBQ0U+XCIuLi5cIiA7XG5cbiAgICAgIG9wdGlvbmFsUXVhbnRpZmllciAgICAgICA6Oj0gIDxOT19XSElURVNQQUNFPlwiP1wiIDtcblxuICAgICAgb25lT3JNb3JlUXVhbnRpZmllciAgICAgIDo6PSAgPE5PX1dISVRFU1BBQ0U+XCIrXCIgO1xuXG4gICAgICB6ZXJvT3JNb3JlUXVhbnRpZmllciAgICAgOjo9ICA8Tk9fV0hJVEVTUEFDRT5cIipcIiA7XG5cbiAgICAgIGVycm9yLiAgICAgICAgICAgICAgICAgICA6Oj0gIC4gO1xuXG5gO1xuXG5leHBvcnQgZGVmYXVsdCBibmY7XG4iXSwibmFtZXMiOlsiYm5mIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFrR0E7OztlQUFBOzs7QUFoR0EsTUFBTUEsTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBOEZiLENBQUM7TUFFRCxXQUFlQSJ9
|
|
@@ -18,10 +18,10 @@ function _interop_require_default(obj) {
|
|
|
18
18
|
default: obj
|
|
19
19
|
};
|
|
20
20
|
}
|
|
21
|
-
const {
|
|
21
|
+
const { integerType } = _occamlexers.types, { openBracket, closeBracket } = _occamlexers.specialSymbols;
|
|
22
22
|
class PrecedenceDefinition extends _definition.default {
|
|
23
23
|
static fromNothing() {
|
|
24
|
-
const significantTokenType =
|
|
24
|
+
const significantTokenType = integerType, openBracketStringLiteralContent = openBracket, closeBracketStringLiteralContent = closeBracket, openBracketStringLiteralPart = _stringLiteral.default.fromContent(openBracketStringLiteralContent), closeBracketStringLiteralPart = _stringLiteral.default.fromContent(closeBracketStringLiteralContent), numberSignificantTokenTypePart = _significantTokenType.default.fromSignificantTokenType(significantTokenType), optionalNumberSignificantTokenTypePartPart = _optionalPart.default.fromPart(numberSignificantTokenTypePart), parts = [
|
|
25
25
|
openBracketStringLiteralPart,
|
|
26
26
|
optionalNumberSignificantTokenTypePartPart,
|
|
27
27
|
closeBracketStringLiteralPart
|
|
@@ -30,4 +30,4 @@ class PrecedenceDefinition extends _definition.default {
|
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kZWZpbml0aW9uL3ByZWNlZGVuY2UuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IHR5cGVzLCBzcGVjaWFsU3ltYm9scyB9IGZyb20gXCJvY2NhbS1sZXhlcnNcIjtcblxuaW1wb3J0IERlZmluaXRpb24gZnJvbSBcIi4uL2RlZmluaXRpb25cIjtcbmltcG9ydCBPcHRpb25hbFBhcnRQYXJ0IGZyb20gXCIuLi9wYXJ0L25vblRlcm1pbmFsL29wdGlvbmFsUGFydFwiO1xuaW1wb3J0IFN0cmluZ0xpdGVyYWxQYXJ0IGZyb20gXCIuLi9wYXJ0L3Rlcm1pbmFsL3N0cmluZ0xpdGVyYWxcIjtcbmltcG9ydCBTaWduaWZpY2FudFRva2VuVHlwZVBhcnQgZnJvbSBcIi4uL3BhcnQvdGVybWluYWwvc2lnbmlmaWNhbnRUb2tlblR5cGVcIjtcblxuY29uc3QgeyBpbnRlZ2VyVHlwZSB9ID0gdHlwZXMsXG4gICAgICB7IG9wZW5CcmFja2V0LCBjbG9zZUJyYWNrZXQgfSA9IHNwZWNpYWxTeW1ib2xzO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQcmVjZWRlbmNlRGVmaW5pdGlvbiBleHRlbmRzIERlZmluaXRpb24ge1xuICBzdGF0aWMgZnJvbU5vdGhpbmcoKSB7XG4gICAgY29uc3Qgc2lnbmlmaWNhbnRUb2tlblR5cGUgPSBpbnRlZ2VyVHlwZSwgIC8vL1xuICAgICAgICAgIG9wZW5CcmFja2V0U3RyaW5nTGl0ZXJhbENvbnRlbnQgPSBvcGVuQnJhY2tldCwgLy8vXG4gICAgICAgICAgY2xvc2VCcmFja2V0U3RyaW5nTGl0ZXJhbENvbnRlbnQgPSBjbG9zZUJyYWNrZXQsIC8vL1xuICAgICAgICAgIG9wZW5CcmFja2V0U3RyaW5nTGl0ZXJhbFBhcnQgPSBTdHJpbmdMaXRlcmFsUGFydC5mcm9tQ29udGVudChvcGVuQnJhY2tldFN0cmluZ0xpdGVyYWxDb250ZW50KSxcbiAgICAgICAgICBjbG9zZUJyYWNrZXRTdHJpbmdMaXRlcmFsUGFydCA9IFN0cmluZ0xpdGVyYWxQYXJ0LmZyb21Db250ZW50KGNsb3NlQnJhY2tldFN0cmluZ0xpdGVyYWxDb250ZW50KSxcbiAgICAgICAgICBudW1iZXJTaWduaWZpY2FudFRva2VuVHlwZVBhcnQgPSBTaWduaWZpY2FudFRva2VuVHlwZVBhcnQuZnJvbVNpZ25pZmljYW50VG9rZW5UeXBlKHNpZ25pZmljYW50VG9rZW5UeXBlKSxcbiAgICAgICAgICBvcHRpb25hbE51bWJlclNpZ25pZmljYW50VG9rZW5UeXBlUGFydFBhcnQgPSBPcHRpb25hbFBhcnRQYXJ0LmZyb21QYXJ0KG51bWJlclNpZ25pZmljYW50VG9rZW5UeXBlUGFydCksXG4gICAgICAgICAgcGFydHMgPSBbXG4gICAgICAgICAgICBvcGVuQnJhY2tldFN0cmluZ0xpdGVyYWxQYXJ0LFxuICAgICAgICAgICAgb3B0aW9uYWxOdW1iZXJTaWduaWZpY2FudFRva2VuVHlwZVBhcnRQYXJ0LFxuICAgICAgICAgICAgY2xvc2VCcmFja2V0U3RyaW5nTGl0ZXJhbFBhcnRcbiAgICAgICAgICBdLFxuICAgICAgICAgIHByZWNlZGVuY2UgPSBudWxsLFxuICAgICAgICAgIHByZWNlZGVuY2VEZWZpbml0aW9uID0gbmV3IFByZWNlZGVuY2VEZWZpbml0aW9uKHBhcnRzLCBwcmVjZWRlbmNlKTtcblxuICAgIHJldHVybiBwcmVjZWRlbmNlRGVmaW5pdGlvbjtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIlByZWNlZGVuY2VEZWZpbml0aW9uIiwiaW50ZWdlclR5cGUiLCJ0eXBlcyIsIm9wZW5CcmFja2V0IiwiY2xvc2VCcmFja2V0Iiwic3BlY2lhbFN5bWJvbHMiLCJEZWZpbml0aW9uIiwiZnJvbU5vdGhpbmciLCJzaWduaWZpY2FudFRva2VuVHlwZSIsIm9wZW5CcmFja2V0U3RyaW5nTGl0ZXJhbENvbnRlbnQiLCJjbG9zZUJyYWNrZXRTdHJpbmdMaXRlcmFsQ29udGVudCIsIm9wZW5CcmFja2V0U3RyaW5nTGl0ZXJhbFBhcnQiLCJTdHJpbmdMaXRlcmFsUGFydCIsImZyb21Db250ZW50IiwiY2xvc2VCcmFja2V0U3RyaW5nTGl0ZXJhbFBhcnQiLCJudW1iZXJTaWduaWZpY2FudFRva2VuVHlwZVBhcnQiLCJTaWduaWZpY2FudFRva2VuVHlwZVBhcnQiLCJmcm9tU2lnbmlmaWNhbnRUb2tlblR5cGUiLCJvcHRpb25hbE51bWJlclNpZ25pZmljYW50VG9rZW5UeXBlUGFydFBhcnQiLCJPcHRpb25hbFBhcnRQYXJ0IiwiZnJvbVBhcnQiLCJwYXJ0cyIsInByZWNlZGVuY2UiLCJwcmVjZWRlbmNlRGVmaW5pdGlvbiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBWUE7OztlQUFxQkE7Ozs2QkFWaUI7bUVBRWY7cUVBQ007c0VBQ0M7NkVBQ087Ozs7OztBQUVyQyxNQUFNLEVBQUVDLFdBQVcsRUFBRSxHQUFHQyxrQkFBSyxFQUN2QixFQUFFQyxXQUFXLEVBQUVDLFlBQVksRUFBRSxHQUFHQywyQkFBYztBQUVyQyxNQUFNTCw2QkFBNkJNLG1CQUFVO0lBQzFELE9BQU9DLGNBQWM7UUFDbkIsTUFBTUMsdUJBQXVCUCxhQUN2QlEsa0NBQWtDTixhQUNsQ08sbUNBQW1DTixjQUNuQ08sK0JBQStCQyxzQkFBaUIsQ0FBQ0MsV0FBVyxDQUFDSixrQ0FDN0RLLGdDQUFnQ0Ysc0JBQWlCLENBQUNDLFdBQVcsQ0FBQ0gsbUNBQzlESyxpQ0FBaUNDLDZCQUF3QixDQUFDQyx3QkFBd0IsQ0FBQ1QsdUJBQ25GVSw2Q0FBNkNDLHFCQUFnQixDQUFDQyxRQUFRLENBQUNMLGlDQUN2RU0sUUFBUTtZQUNOVjtZQUNBTztZQUNBSjtTQUNELEVBQ0RRLGFBQWEsTUFDYkMsdUJBQXVCLElBQUl2QixxQkFBcUJxQixPQUFPQztRQUU3RCxPQUFPQztJQUNUO0FBQ0YifQ==
|
package/lib/node/nonTerminal.js
CHANGED
|
@@ -137,9 +137,10 @@ class NonTerminalNode {
|
|
|
137
137
|
}
|
|
138
138
|
isUnprecedented() {
|
|
139
139
|
let unprecedented = false;
|
|
140
|
-
if (this.precedence !== null) {
|
|
141
|
-
|
|
142
|
-
|
|
140
|
+
if (this.precedence !== null && this.precedence !== Infinity) {
|
|
141
|
+
const length = this.childNodes.length, lastIndex = length - 1, firstIndex = 0, strength = Math.abs(this.precedence), associativity = Math.sign(this.precedence);
|
|
142
|
+
unprecedented = this.childNodes.some((childNode, index)=>{
|
|
143
|
+
const last = index === lastIndex, first = index === firstIndex, childNodeLowerPrecedence = childNode.isLowerPrecedence(associativity, strength, first, last);
|
|
143
144
|
if (childNodeLowerPrecedence) {
|
|
144
145
|
return true;
|
|
145
146
|
}
|
|
@@ -147,7 +148,7 @@ class NonTerminalNode {
|
|
|
147
148
|
}
|
|
148
149
|
return unprecedented;
|
|
149
150
|
}
|
|
150
|
-
isLowerPrecedence(
|
|
151
|
+
isLowerPrecedence(associativity, strength, first, last) {
|
|
151
152
|
let lowerPrecedence;
|
|
152
153
|
if (false) {
|
|
153
154
|
///
|
|
@@ -155,13 +156,24 @@ class NonTerminalNode {
|
|
|
155
156
|
lowerPrecedence = false;
|
|
156
157
|
} else if (this.precedence === Infinity) {
|
|
157
158
|
lowerPrecedence = this.childNodes.some((childNode)=>{
|
|
158
|
-
const childNodeLowerPrecedence = childNode.isLowerPrecedence(
|
|
159
|
+
const childNodeLowerPrecedence = childNode.isLowerPrecedence(associativity, strength, first, last);
|
|
159
160
|
if (childNodeLowerPrecedence) {
|
|
160
161
|
return true;
|
|
161
162
|
}
|
|
162
163
|
});
|
|
163
164
|
} else {
|
|
164
|
-
|
|
165
|
+
const parentStrength = strength, parentAssociativity = associativity; ///
|
|
166
|
+
strength = Math.abs(this.precedence);
|
|
167
|
+
associativity = Math.sign(this.precedence);
|
|
168
|
+
if (false) {
|
|
169
|
+
///
|
|
170
|
+
} else if (first) {
|
|
171
|
+
lowerPrecedence = parentAssociativity < 0 ? strength < parentStrength : strength <= parentStrength;
|
|
172
|
+
} else if (last) {
|
|
173
|
+
lowerPrecedence = parentAssociativity < 0 ? strength <= parentStrength : strength < parentStrength;
|
|
174
|
+
} else {
|
|
175
|
+
lowerPrecedence = strength < parentStrength;
|
|
176
|
+
}
|
|
165
177
|
}
|
|
166
178
|
return lowerPrecedence;
|
|
167
179
|
}
|
|
@@ -235,4 +247,4 @@ function cloneChildNodes(childNodes) {
|
|
|
235
247
|
return childNodes;
|
|
236
248
|
}
|
|
237
249
|
|
|
238
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ub2RlL25vblRlcm1pbmFsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcbmltcG9ydCB7IHNwZWNpYWxTeW1ib2xzIH0gZnJvbSBcIm9jY2FtLWxleGVyc1wiO1xuXG5pbXBvcnQgbm9kZU1peGlucyBmcm9tIFwiLi4vbWl4aW5zL25vZGVcIjtcbmltcG9ydCBOb25UZXJtaW5hbE5vZGVQYXJzZVRyZWUgZnJvbSBcIi4uL3BhcnNlVHJlZS9ub25UZXJtaW5hbE5vZGVcIjtcblxuY29uc3QgeyBtYXRjaCB9ID0gYXJyYXlVdGlsaXRpZXMsXG4gICAgICB7IG9wYXF1ZTogb3BhcXVlU3BlY2lhbFN5bWJvbCAsIHNlbWlPcGFxdWU6IHNlbWlPcGFxdWVTcGVjaWFsU3ltYm9sIH0gPSBzcGVjaWFsU3ltYm9scztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTm9uVGVybWluYWxOb2RlIHtcbiAgY29uc3RydWN0b3IocnVsZU5hbWUsIHBhcmVudE5vZGUsIGNoaWxkTm9kZXMsIG9wYWNpdHksIHByZWNlZGVuY2UpIHtcbiAgICB0aGlzLnJ1bGVOYW1lID0gcnVsZU5hbWU7XG4gICAgdGhpcy5wYXJlbnROb2RlID0gcGFyZW50Tm9kZTtcbiAgICB0aGlzLmNoaWxkTm9kZXMgPSBjaGlsZE5vZGVzO1xuICAgIHRoaXMub3BhY2l0eSA9IG9wYWNpdHk7XG4gICAgdGhpcy5wcmVjZWRlbmNlID0gcHJlY2VkZW5jZTtcbiAgfVxuXG4gIGdldFJ1bGVOYW1lKCkge1xuICAgIHJldHVybiB0aGlzLnJ1bGVOYW1lO1xuICB9XG5cbiAgZ2V0UGFyZW50Tm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnROb2RlO1xuICB9XG5cbiAgZ2V0Q2hpbGROb2RlcygpIHtcbiAgICByZXR1cm4gdGhpcy5jaGlsZE5vZGVzO1xuICB9XG5cbiAgZ2V0T3BhY2l0eSgpIHtcbiAgICByZXR1cm4gdGhpcy5vcGFjaXR5O1xuICB9XG5cbiAgZ2V0UHJlY2VkZW5jZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wcmVjZWRlbmNlO1xuICB9XG5cbiAgc2V0UnVsZU5hbWUocnVsZU5hbWUpIHtcbiAgICB0aGlzLnJ1bGVOYW1lID0gcnVsZU5hbWU7XG4gIH1cblxuICBzZXRQYXJlbnROb2RlKHBhcmVudE5vZGUpIHtcbiAgICB0aGlzLnBhcmVudE5vZGUgPSBwYXJlbnROb2RlO1xuICB9XG5cbiAgc2V0Q2hpbGROb2RlcyhjaGlsZE5vZGVzKSB7XG4gICAgY29uc3Qgc3RhcnRJbmRleCA9IDAsXG4gICAgICAgICAgZGVsZXRlQ291bnQgPSBJbmZpbml0eSxcbiAgICAgICAgICBhZGRlZENoaWxkTm9kZXMgPSBjaGlsZE5vZGVzOyAgLy8vXG5cbiAgICB0aGlzLnNwbGljZUNoaWxkTm9kZXMoc3RhcnRJbmRleCwgZGVsZXRlQ291bnQsIGFkZGVkQ2hpbGROb2Rlcyk7XG4gIH1cblxuICBzZXRPcGFjaXR5KG9wYWNpdHkpIHtcbiAgICB0aGlzLm9wYWNpdHkgPSBvcGFjaXR5O1xuICB9XG5cbiAgc2V0UHJlY2VkZW5jZShwcmVjZWRlbmNlKSB7XG4gICAgdGhpcy5wcmVjZWRlbmNlID0gcHJlY2VkZW5jZTtcbiAgfVxuXG4gIG51bGxpZnlQcmVjZWRlbmNlKCkge1xuICAgIHRoaXMucHJlY2VkZW5jZSA9IG51bGw7XG4gIH1cblxuICBpc09wYXF1ZSgpIHtcbiAgICBjb25zdCBvcGFxdWUgPSAodGhpcy5vcGFjaXR5ID09PSBvcGFxdWVTcGVjaWFsU3ltYm9sKTtcblxuICAgIHJldHVybiBvcGFxdWU7XG4gIH1cblxuICBpc1NlbWlPcGFxdWUoKSB7XG4gICAgY29uc3Qgc2VtaU9wYXF1ZSA9ICh0aGlzLm9wYWNpdHkgPT09IHNlbWlPcGFxdWVTcGVjaWFsU3ltYm9sKTtcblxuICAgIHJldHVybiBzZW1pT3BhcXVlO1xuICB9XG5cbiAgaXNUcmFuc3BhcmVudCgpIHtcbiAgICBjb25zdCBzZW1pT3BhcXVlID0gKHRoaXMub3BhY2l0eSA9PT0gbnVsbCk7XG5cbiAgICByZXR1cm4gc2VtaU9wYXF1ZTtcbiAgfVxuXG4gIGlzVGVybWluYWxOb2RlKCkge1xuICAgIGNvbnN0IHRlcm1pbmFsTm9kZSA9IGZhbHNlO1xuXG4gICAgcmV0dXJuIHRlcm1pbmFsTm9kZTtcbiAgfVxuXG4gIGlzTm9uVGVybWluYWxOb2RlKCkge1xuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IHRydWU7XG5cbiAgICByZXR1cm4gbm9uVGVybWluYWxOb2RlO1xuICB9XG5cbiAgZ2V0RGVzY2VuZGFudE5vZGVzKGRlc2NlbmRhbnROb2Rlcykge1xuICAgIHJldHVybiBkZXNjZW5kYW50Tm9kZXM7XG4gIH1cblxuICBnZXRGaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCh0b2tlbnMpIHtcbiAgICBsZXQgZmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXg7XG5cbiAgICB0aGlzLmZvcndhcmRzU29tZUNoaWxkTm9kZSgoY2hpbGROb2RlKSA9PiB7XG4gICAgICBjb25zdCBub2RlID0gY2hpbGROb2RlOyAvLy9cblxuICAgICAgZmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXggPSBub2RlLmdldEZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4KHRva2Vucyk7XG5cbiAgICAgIGlmIChmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleDtcbiAgfVxuXG4gIGdldExhc3RTaWduaWZpY2FudFRva2VuSW5kZXgodG9rZW5zKSB7XG4gICAgbGV0IGxhc3RTaWduaWZpY2FudFRva2VuSW5kZXg7XG5cbiAgICB0aGlzLmJhY2t3YXJkc1NvbWVDaGlsZE5vZGUoKGNoaWxkTm9kZSkgPT4ge1xuICAgICAgY29uc3Qgbm9kZSA9IGNoaWxkTm9kZTsgLy8vXG5cbiAgICAgIGxhc3RTaWduaWZpY2FudFRva2VuSW5kZXggPSBub2RlLmdldExhc3RTaWduaWZpY2FudFRva2VuSW5kZXgodG9rZW5zKTtcblxuICAgICAgaWYgKGxhc3RTaWduaWZpY2FudFRva2VuSW5kZXggIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbGFzdFNpZ25pZmljYW50VG9rZW5JbmRleDtcbiAgfVxuXG4gIGdldFNpZ25pZmljYW50VG9rZW5zKHNpZ25pZmljYW50VG9rZW5zID0gW10pIHtcbiAgICB0aGlzLmNoaWxkTm9kZXMuZm9yRWFjaCgoY2hpbGROb2RlKSA9PiB7XG4gICAgICBjaGlsZE5vZGUuZ2V0U2lnbmlmaWNhbnRUb2tlbnMoc2lnbmlmaWNhbnRUb2tlbnMpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNpZ25pZmljYW50VG9rZW5zO1xuICB9XG5cbiAgZ2V0TXVsdGlwbGljaXR5KCkge1xuICAgIGNvbnN0IGNoaWxkTm9kZXNMZW5ndGggPSB0aGlzLmNoaWxkTm9kZXMubGVuZ3RoLFxuICAgICAgICAgIG11bHRpcGxpY2l0eSA9IGNoaWxkTm9kZXNMZW5ndGg7ICAvLy9cblxuICAgIHJldHVybiBtdWx0aXBsaWNpdHk7XG4gIH1cblxuICBpc0VtcHR5KCkge1xuICAgIGNvbnN0IG11bHRpcGxpY2l0eSA9IHRoaXMuZ2V0TXVsdGlwbGljaXR5KCksXG4gICAgICAgICAgZW1wdHkgPSAobXVsdGlwbGljaXR5ID09PSAwKTtcblxuICAgIHJldHVybiBlbXB0eTtcbiAgfVxuXG4gIGlzU2luZ3VsYXIoKSB7XG4gICAgY29uc3QgbXVsdGlwbGljaXR5ID0gdGhpcy5nZXRNdWx0aXBsaWNpdHkoKSxcbiAgICAgICAgICBzaW5ndWxhciA9IChtdWx0aXBsaWNpdHkgPT09IDEpO1xuXG4gICAgcmV0dXJuIHNpbmd1bGFyO1xuICB9XG5cbiAgaXNQYWxhdGFibGUoKSB7XG4gICAgY29uc3QgdW5wYWxhdGFibGUgPSB0aGlzLmlzVW5wYWxhdGFibGUoKSxcbiAgICAgICAgICBwYWxhdGFibGUgPSAhdW5wYWxhdGFibGU7XG5cbiAgICByZXR1cm4gcGFsYXRhYmxlO1xuICB9XG5cbiAgaXNVbnBhbGF0YWJsZSgpIHtcbiAgICBsZXQgdW5wYWxhdGFibGUgPSBmYWxzZTtcblxuICAgIGNvbnN0IGVtcHR5ID0gdGhpcy5pc0VtcHR5KCksXG4gICAgICAgICAgdW5wcmVjZWRlbnRlZCA9IHRoaXMuaXNVbnByZWNlZGVudGVkKCk7XG5cbiAgICBpZiAoZW1wdHkgfHwgdW5wcmVjZWRlbnRlZCkge1xuICAgICAgdW5wYWxhdGFibGUgPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiB1bnBhbGF0YWJsZTtcbiAgfVxuXG4gIGlzVW5wcmVjZWRlbnRlZCgpIHtcbiAgICBsZXQgdW5wcmVjZWRlbnRlZCA9IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMucHJlY2VkZW5jZSAhPT0gbnVsbCkge1xuICAgICAgdW5wcmVjZWRlbnRlZCA9IHRoaXMuY2hpbGROb2Rlcy5zb21lKChjaGlsZE5vZGUpID0+IHsgIC8vL1xuICAgICAgICBjb25zdCBjaGlsZE5vZGVMb3dlclByZWNlZGVuY2UgPSBjaGlsZE5vZGUuaXNMb3dlclByZWNlZGVuY2UodGhpcy5ydWxlTmFtZSwgdGhpcy5wcmVjZWRlbmNlKTtcblxuICAgICAgICBpZiAoY2hpbGROb2RlTG93ZXJQcmVjZWRlbmNlKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB1bnByZWNlZGVudGVkO1xuICB9XG5cbiAgaXNMb3dlclByZWNlZGVuY2UocnVsZU5hbWUsIHByZWNlZGVuY2UpIHtcbiAgICBsZXQgbG93ZXJQcmVjZWRlbmNlO1xuXG4gICAgaWYgKGZhbHNlKSB7XG4gICAgICAvLy9cbiAgICB9IGVsc2UgaWYgKHRoaXMucHJlY2VkZW5jZSA9PT0gbnVsbCkge1xuICAgICAgbG93ZXJQcmVjZWRlbmNlID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmICh0aGlzLnByZWNlZGVuY2UgPT09IEluZmluaXR5KSB7XG4gICAgICBsb3dlclByZWNlZGVuY2UgPSB0aGlzLmNoaWxkTm9kZXMuc29tZSgoY2hpbGROb2RlKSA9PiB7XG4gICAgICAgIGNvbnN0IGNoaWxkTm9kZUxvd2VyUHJlY2VkZW5jZSA9IGNoaWxkTm9kZS5pc0xvd2VyUHJlY2VkZW5jZShydWxlTmFtZSwgcHJlY2VkZW5jZSk7XG5cbiAgICAgICAgaWYgKGNoaWxkTm9kZUxvd2VyUHJlY2VkZW5jZSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG93ZXJQcmVjZWRlbmNlID0gKCh0aGlzLnJ1bGVOYW1lID09PSBydWxlTmFtZSkgJiYgKHRoaXMucHJlY2VkZW5jZSA8IHByZWNlZGVuY2UpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbG93ZXJQcmVjZWRlbmNlO1xuICB9XG5cbiAgYXNQYXJzZVRyZWUodG9rZW5zKSB7XG4gICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gdGhpcywgIC8vL1xuICAgICAgICAgIG5vblRlcm1pbmFsTm9kZVBhcnNlVHJlZSA9IE5vblRlcm1pbmFsTm9kZVBhcnNlVHJlZS5mcm9tTm9uVGVybWluYWxOb2RlQW5kVG9rZW5zKG5vblRlcm1pbmFsTm9kZSwgdG9rZW5zKSxcbiAgICAgICAgICBwYXJzZVRyZWUgPSBub25UZXJtaW5hbE5vZGVQYXJzZVRyZWU7ICAvLy9cblxuICAgIHJldHVybiBwYXJzZVRyZWU7XG4gIH1cblxuICBtYXRjaChub2RlLCBkZXB0aCA9IEluZmluaXR5LCBleGFjdGx5ID0gZmFsc2UpIHtcbiAgICBsZXQgbWF0Y2hlcyA9IGZhbHNlO1xuXG4gICAgY29uc3Qgbm9kZU5vblRlcm1pbmFsTm9kZSA9IG5vZGUuaXNOb25UZXJtaW5hbE5vZGUoKTtcblxuICAgIGlmIChub2RlTm9uVGVybWluYWxOb2RlKSB7XG4gICAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBub2RlLCAvLy9cbiAgICAgICAgICAgIG5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lID0gbm9uVGVybWluYWxOb2RlLmdldFJ1bGVOYW1lKCk7XG5cbiAgICAgIGlmICh0aGlzLnJ1bGVOYW1lID09PSBub25UZXJtaW5hbE5vZGVSdWxlTmFtZSkge1xuICAgICAgICBjb25zdCBub25UZXJtaW5hbE5vZGVPcGFjaXR5ID0gbm9uVGVybWluYWxOb2RlLmdldE9wYWNpdHkoKTtcblxuICAgICAgICBpZiAodGhpcy5vcGFjaXR5ID09PSBub25UZXJtaW5hbE5vZGVPcGFjaXR5KSB7XG4gICAgICAgICAgY29uc3QgcHJlY2VkZW5jZSA9IHRoaXMuZ2V0UHJlY2VkZW5jZSgpLFxuICAgICAgICAgICAgICAgIG5vblRlcm1pbmFsTm9kZVByZWNlZGVuY2UgPSBub25UZXJtaW5hbE5vZGUuZ2V0UHJlY2VkZW5jZSgpO1xuXG4gICAgICAgICAgaWYgKHByZWNlZGVuY2UgPT09IG5vblRlcm1pbmFsTm9kZVByZWNlZGVuY2UpIHtcbiAgICAgICAgICAgIGRlcHRoLS07XG5cbiAgICAgICAgICAgIGlmIChkZXB0aCA9PT0gMCkge1xuICAgICAgICAgICAgICBtYXRjaGVzID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMgPSBub25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpO1xuXG4gICAgICAgICAgICAgIG1hdGNoZXMgPSBtYXRjaCh0aGlzLmNoaWxkTm9kZXMsIG5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMsIChjaGlsZE5vZGUsIG5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkTm9kZU1hdGNoZXNOb25UZXJtaW5hbE5vZGVDaGlsZE5vZGUgPSBjaGlsZE5vZGUubWF0Y2gobm9uVGVybWluYWxOb2RlQ2hpbGROb2RlLCBkZXB0aCwgZXhhY3RseSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoY2hpbGROb2RlTWF0Y2hlc05vblRlcm1pbmFsTm9kZUNoaWxkTm9kZSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbWF0Y2hlcztcbiAgfVxuXG4gIHJld3JpdGUoY29udGV4dCkge1xuICAgIGNvbnN0IHJld3JpdHRlbk5vblRlcm1pbmFsTm9kZSA9IHRoaXM7ICAvLy9cblxuICAgIHJldHVybiByZXdyaXR0ZW5Ob25UZXJtaW5hbE5vZGU7XG4gIH1cblxuICBkZXN0cm95KCkge1xuICAgIHRoaXMuZm9yRWFjaENoaWxkTm9kZSgoY2hpbGROb2RlKSA9PiB7XG4gICAgICBjaGlsZE5vZGUuZGVzdHJveSgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5wYXJlbnROb2RlID0gbnVsbDtcblxuICAgIHRoaXMuY2hpbGROb2RlcyA9IG51bGw7XG4gIH1cblxuICBjbG9uZSguLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBjb25zdCBDbGFzcyA9IHRoaXMuY29uc3RydWN0b3IsXG4gICAgICAgICAgcGFyZW50Tm9kZSA9IG51bGwsXG4gICAgICAgICAgcnVsZU5hbWUgPSB0aGlzLnJ1bGVOYW1lLFxuICAgICAgICAgIGNoaWxkTm9kZXMgPSBjbG9uZUNoaWxkTm9kZXModGhpcy5jaGlsZE5vZGVzKSxcbiAgICAgICAgICBvcGFjaXR5ID0gdGhpcy5vcGFjaXR5LFxuICAgICAgICAgIHByZWNlZGVuY2UgPSB0aGlzLnByZWNlZGVuY2UsXG4gICAgICAgICAgbm9uVGVybWluYWxOb2RlID0gbmV3IENsYXNzKHJ1bGVOYW1lLCBwYXJlbnROb2RlLCBjaGlsZE5vZGVzLCBvcGFjaXR5LCBwcmVjZWRlbmNlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgbm9uVGVybWluYWxOb2RlLnNldENoaWxkTm9kZXNQYXJlbnROb2RlKCk7XG5cbiAgICByZXR1cm4gbm9uVGVybWluYWxOb2RlO1xuICB9XG5cbiAgc3RhdGljIGZyb21SdWxlTmFtZUNoaWxkTm9kZXNPcGFjaXR5QW5kUHJlY2VkZW5jZShDbGFzcywgcnVsZU5hbWUsIGNoaWxkTm9kZXMsIG9wYWNpdHksIHByZWNlZGVuY2UsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGlmIChwcmVjZWRlbmNlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHByZWNlZGVuY2UgPSBvcGFjaXR5OyAvLy9cblxuICAgICAgb3BhY2l0eSA9IGNoaWxkTm9kZXM7IC8vL1xuXG4gICAgICBjaGlsZE5vZGVzID0gcnVsZU5hbWU7ICAvLy9cblxuICAgICAgcnVsZU5hbWUgPSBDbGFzczsgLy8vXG5cbiAgICAgIENsYXNzID0gTm9uVGVybWluYWxOb2RlOyAgLy8vXG4gICAgfVxuXG4gICAgY29uc3QgcGFyZW50Tm9kZSA9IG51bGwsXG4gICAgICAgICAgbm9uVGVybWluYWxOb2RlID0gbmV3IENsYXNzKHJ1bGVOYW1lLCBwYXJlbnROb2RlLCBjaGlsZE5vZGVzLCBvcGFjaXR5LCBwcmVjZWRlbmNlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgbm9uVGVybWluYWxOb2RlLnNldENoaWxkTm9kZXNQYXJlbnROb2RlKCk7XG5cbiAgICByZXR1cm4gbm9uVGVybWluYWxOb2RlO1xuICB9XG59XG5cbk9iamVjdC5hc3NpZ24oTm9uVGVybWluYWxOb2RlLnByb3RvdHlwZSwgbm9kZU1peGlucyk7XG5cbmZ1bmN0aW9uIGNsb25lQ2hpbGROb2RlcyhjaGlsZE5vZGVzKSB7XG4gIGNoaWxkTm9kZXMgPSBjaGlsZE5vZGVzLm1hcCgoY2hpbGROb2RlKSA9PiB7ICAvLy9cbiAgICBjaGlsZE5vZGUgPSBjaGlsZE5vZGUuY2xvbmUoKTsgIC8vL1xuXG4gICAgcmV0dXJuIGNoaWxkTm9kZTtcbiAgfSk7XG5cbiAgcmV0dXJuIGNoaWxkTm9kZXM7XG59XG4iXSwibmFtZXMiOlsiTm9uVGVybWluYWxOb2RlIiwibWF0Y2giLCJhcnJheVV0aWxpdGllcyIsIm9wYXF1ZSIsIm9wYXF1ZVNwZWNpYWxTeW1ib2wiLCJzZW1pT3BhcXVlIiwic2VtaU9wYXF1ZVNwZWNpYWxTeW1ib2wiLCJzcGVjaWFsU3ltYm9scyIsInJ1bGVOYW1lIiwicGFyZW50Tm9kZSIsImNoaWxkTm9kZXMiLCJvcGFjaXR5IiwicHJlY2VkZW5jZSIsImdldFJ1bGVOYW1lIiwiZ2V0UGFyZW50Tm9kZSIsImdldENoaWxkTm9kZXMiLCJnZXRPcGFjaXR5IiwiZ2V0UHJlY2VkZW5jZSIsInNldFJ1bGVOYW1lIiwic2V0UGFyZW50Tm9kZSIsInNldENoaWxkTm9kZXMiLCJzdGFydEluZGV4IiwiZGVsZXRlQ291bnQiLCJJbmZpbml0eSIsImFkZGVkQ2hpbGROb2RlcyIsInNwbGljZUNoaWxkTm9kZXMiLCJzZXRPcGFjaXR5Iiwic2V0UHJlY2VkZW5jZSIsIm51bGxpZnlQcmVjZWRlbmNlIiwiaXNPcGFxdWUiLCJpc1NlbWlPcGFxdWUiLCJpc1RyYW5zcGFyZW50IiwiaXNUZXJtaW5hbE5vZGUiLCJ0ZXJtaW5hbE5vZGUiLCJpc05vblRlcm1pbmFsTm9kZSIsIm5vblRlcm1pbmFsTm9kZSIsImdldERlc2NlbmRhbnROb2RlcyIsImRlc2NlbmRhbnROb2RlcyIsImdldEZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4IiwidG9rZW5zIiwiZmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgiLCJmb3J3YXJkc1NvbWVDaGlsZE5vZGUiLCJjaGlsZE5vZGUiLCJub2RlIiwiZ2V0TGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCIsImxhc3RTaWduaWZpY2FudFRva2VuSW5kZXgiLCJiYWNrd2FyZHNTb21lQ2hpbGROb2RlIiwiZ2V0U2lnbmlmaWNhbnRUb2tlbnMiLCJzaWduaWZpY2FudFRva2VucyIsImZvckVhY2giLCJnZXRNdWx0aXBsaWNpdHkiLCJjaGlsZE5vZGVzTGVuZ3RoIiwibGVuZ3RoIiwibXVsdGlwbGljaXR5IiwiaXNFbXB0eSIsImVtcHR5IiwiaXNTaW5ndWxhciIsInNpbmd1bGFyIiwiaXNQYWxhdGFibGUiLCJ1bnBhbGF0YWJsZSIsImlzVW5wYWxhdGFibGUiLCJwYWxhdGFibGUiLCJ1bnByZWNlZGVudGVkIiwiaXNVbnByZWNlZGVudGVkIiwic29tZSIsImNoaWxkTm9kZUxvd2VyUHJlY2VkZW5jZSIsImlzTG93ZXJQcmVjZWRlbmNlIiwibG93ZXJQcmVjZWRlbmNlIiwiYXNQYXJzZVRyZWUiLCJub25UZXJtaW5hbE5vZGVQYXJzZVRyZWUiLCJOb25UZXJtaW5hbE5vZGVQYXJzZVRyZWUiLCJmcm9tTm9uVGVybWluYWxOb2RlQW5kVG9rZW5zIiwicGFyc2VUcmVlIiwiZGVwdGgiLCJleGFjdGx5IiwibWF0Y2hlcyIsIm5vZGVOb25UZXJtaW5hbE5vZGUiLCJub25UZXJtaW5hbE5vZGVSdWxlTmFtZSIsIm5vblRlcm1pbmFsTm9kZU9wYWNpdHkiLCJub25UZXJtaW5hbE5vZGVQcmVjZWRlbmNlIiwibm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcyIsIm5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZSIsImNoaWxkTm9kZU1hdGNoZXNOb25UZXJtaW5hbE5vZGVDaGlsZE5vZGUiLCJyZXdyaXRlIiwiY29udGV4dCIsInJld3JpdHRlbk5vblRlcm1pbmFsTm9kZSIsImRlc3Ryb3kiLCJmb3JFYWNoQ2hpbGROb2RlIiwiY2xvbmUiLCJyZW1haW5pbmdBcmd1bWVudHMiLCJDbGFzcyIsImNsb25lQ2hpbGROb2RlcyIsInNldENoaWxkTm9kZXNQYXJlbnROb2RlIiwiZnJvbVJ1bGVOYW1lQ2hpbGROb2Rlc09wYWNpdHlBbmRQcmVjZWRlbmNlIiwidW5kZWZpbmVkIiwiT2JqZWN0IiwiYXNzaWduIiwicHJvdG90eXBlIiwibm9kZU1peGlucyIsIm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBV0E7OztlQUFxQkE7OzsyQkFU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
|
|
250
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ub2RlL25vblRlcm1pbmFsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcbmltcG9ydCB7IHNwZWNpYWxTeW1ib2xzIH0gZnJvbSBcIm9jY2FtLWxleGVyc1wiO1xuXG5pbXBvcnQgbm9kZU1peGlucyBmcm9tIFwiLi4vbWl4aW5zL25vZGVcIjtcbmltcG9ydCBOb25UZXJtaW5hbE5vZGVQYXJzZVRyZWUgZnJvbSBcIi4uL3BhcnNlVHJlZS9ub25UZXJtaW5hbE5vZGVcIjtcblxuY29uc3QgeyBtYXRjaCB9ID0gYXJyYXlVdGlsaXRpZXMsXG4gICAgICB7IG9wYXF1ZTogb3BhcXVlU3BlY2lhbFN5bWJvbCAsIHNlbWlPcGFxdWU6IHNlbWlPcGFxdWVTcGVjaWFsU3ltYm9sIH0gPSBzcGVjaWFsU3ltYm9scztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTm9uVGVybWluYWxOb2RlIHtcbiAgY29uc3RydWN0b3IocnVsZU5hbWUsIHBhcmVudE5vZGUsIGNoaWxkTm9kZXMsIG9wYWNpdHksIHByZWNlZGVuY2UpIHtcbiAgICB0aGlzLnJ1bGVOYW1lID0gcnVsZU5hbWU7XG4gICAgdGhpcy5wYXJlbnROb2RlID0gcGFyZW50Tm9kZTtcbiAgICB0aGlzLmNoaWxkTm9kZXMgPSBjaGlsZE5vZGVzO1xuICAgIHRoaXMub3BhY2l0eSA9IG9wYWNpdHk7XG4gICAgdGhpcy5wcmVjZWRlbmNlID0gcHJlY2VkZW5jZTtcbiAgfVxuXG4gIGdldFJ1bGVOYW1lKCkge1xuICAgIHJldHVybiB0aGlzLnJ1bGVOYW1lO1xuICB9XG5cbiAgZ2V0UGFyZW50Tm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnROb2RlO1xuICB9XG5cbiAgZ2V0Q2hpbGROb2RlcygpIHtcbiAgICByZXR1cm4gdGhpcy5jaGlsZE5vZGVzO1xuICB9XG5cbiAgZ2V0T3BhY2l0eSgpIHtcbiAgICByZXR1cm4gdGhpcy5vcGFjaXR5O1xuICB9XG5cbiAgZ2V0UHJlY2VkZW5jZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wcmVjZWRlbmNlO1xuICB9XG5cbiAgc2V0UnVsZU5hbWUocnVsZU5hbWUpIHtcbiAgICB0aGlzLnJ1bGVOYW1lID0gcnVsZU5hbWU7XG4gIH1cblxuICBzZXRQYXJlbnROb2RlKHBhcmVudE5vZGUpIHtcbiAgICB0aGlzLnBhcmVudE5vZGUgPSBwYXJlbnROb2RlO1xuICB9XG5cbiAgc2V0Q2hpbGROb2RlcyhjaGlsZE5vZGVzKSB7XG4gICAgY29uc3Qgc3RhcnRJbmRleCA9IDAsXG4gICAgICAgICAgZGVsZXRlQ291bnQgPSBJbmZpbml0eSxcbiAgICAgICAgICBhZGRlZENoaWxkTm9kZXMgPSBjaGlsZE5vZGVzOyAgLy8vXG5cbiAgICB0aGlzLnNwbGljZUNoaWxkTm9kZXMoc3RhcnRJbmRleCwgZGVsZXRlQ291bnQsIGFkZGVkQ2hpbGROb2Rlcyk7XG4gIH1cblxuICBzZXRPcGFjaXR5KG9wYWNpdHkpIHtcbiAgICB0aGlzLm9wYWNpdHkgPSBvcGFjaXR5O1xuICB9XG5cbiAgc2V0UHJlY2VkZW5jZShwcmVjZWRlbmNlKSB7XG4gICAgdGhpcy5wcmVjZWRlbmNlID0gcHJlY2VkZW5jZTtcbiAgfVxuXG4gIG51bGxpZnlQcmVjZWRlbmNlKCkge1xuICAgIHRoaXMucHJlY2VkZW5jZSA9IG51bGw7XG4gIH1cblxuICBpc09wYXF1ZSgpIHtcbiAgICBjb25zdCBvcGFxdWUgPSAodGhpcy5vcGFjaXR5ID09PSBvcGFxdWVTcGVjaWFsU3ltYm9sKTtcblxuICAgIHJldHVybiBvcGFxdWU7XG4gIH1cblxuICBpc1NlbWlPcGFxdWUoKSB7XG4gICAgY29uc3Qgc2VtaU9wYXF1ZSA9ICh0aGlzLm9wYWNpdHkgPT09IHNlbWlPcGFxdWVTcGVjaWFsU3ltYm9sKTtcblxuICAgIHJldHVybiBzZW1pT3BhcXVlO1xuICB9XG5cbiAgaXNUcmFuc3BhcmVudCgpIHtcbiAgICBjb25zdCBzZW1pT3BhcXVlID0gKHRoaXMub3BhY2l0eSA9PT0gbnVsbCk7XG5cbiAgICByZXR1cm4gc2VtaU9wYXF1ZTtcbiAgfVxuXG4gIGlzVGVybWluYWxOb2RlKCkge1xuICAgIGNvbnN0IHRlcm1pbmFsTm9kZSA9IGZhbHNlO1xuXG4gICAgcmV0dXJuIHRlcm1pbmFsTm9kZTtcbiAgfVxuXG4gIGlzTm9uVGVybWluYWxOb2RlKCkge1xuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IHRydWU7XG5cbiAgICByZXR1cm4gbm9uVGVybWluYWxOb2RlO1xuICB9XG5cbiAgZ2V0RGVzY2VuZGFudE5vZGVzKGRlc2NlbmRhbnROb2Rlcykge1xuICAgIHJldHVybiBkZXNjZW5kYW50Tm9kZXM7XG4gIH1cblxuICBnZXRGaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCh0b2tlbnMpIHtcbiAgICBsZXQgZmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXg7XG5cbiAgICB0aGlzLmZvcndhcmRzU29tZUNoaWxkTm9kZSgoY2hpbGROb2RlKSA9PiB7XG4gICAgICBjb25zdCBub2RlID0gY2hpbGROb2RlOyAvLy9cblxuICAgICAgZmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXggPSBub2RlLmdldEZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4KHRva2Vucyk7XG5cbiAgICAgIGlmIChmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleDtcbiAgfVxuXG4gIGdldExhc3RTaWduaWZpY2FudFRva2VuSW5kZXgodG9rZW5zKSB7XG4gICAgbGV0IGxhc3RTaWduaWZpY2FudFRva2VuSW5kZXg7XG5cbiAgICB0aGlzLmJhY2t3YXJkc1NvbWVDaGlsZE5vZGUoKGNoaWxkTm9kZSkgPT4ge1xuICAgICAgY29uc3Qgbm9kZSA9IGNoaWxkTm9kZTsgLy8vXG5cbiAgICAgIGxhc3RTaWduaWZpY2FudFRva2VuSW5kZXggPSBub2RlLmdldExhc3RTaWduaWZpY2FudFRva2VuSW5kZXgodG9rZW5zKTtcblxuICAgICAgaWYgKGxhc3RTaWduaWZpY2FudFRva2VuSW5kZXggIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbGFzdFNpZ25pZmljYW50VG9rZW5JbmRleDtcbiAgfVxuXG4gIGdldFNpZ25pZmljYW50VG9rZW5zKHNpZ25pZmljYW50VG9rZW5zID0gW10pIHtcbiAgICB0aGlzLmNoaWxkTm9kZXMuZm9yRWFjaCgoY2hpbGROb2RlKSA9PiB7XG4gICAgICBjaGlsZE5vZGUuZ2V0U2lnbmlmaWNhbnRUb2tlbnMoc2lnbmlmaWNhbnRUb2tlbnMpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNpZ25pZmljYW50VG9rZW5zO1xuICB9XG5cbiAgZ2V0TXVsdGlwbGljaXR5KCkge1xuICAgIGNvbnN0IGNoaWxkTm9kZXNMZW5ndGggPSB0aGlzLmNoaWxkTm9kZXMubGVuZ3RoLFxuICAgICAgICAgIG11bHRpcGxpY2l0eSA9IGNoaWxkTm9kZXNMZW5ndGg7ICAvLy9cblxuICAgIHJldHVybiBtdWx0aXBsaWNpdHk7XG4gIH1cblxuICBpc0VtcHR5KCkge1xuICAgIGNvbnN0IG11bHRpcGxpY2l0eSA9IHRoaXMuZ2V0TXVsdGlwbGljaXR5KCksXG4gICAgICAgICAgZW1wdHkgPSAobXVsdGlwbGljaXR5ID09PSAwKTtcblxuICAgIHJldHVybiBlbXB0eTtcbiAgfVxuXG4gIGlzU2luZ3VsYXIoKSB7XG4gICAgY29uc3QgbXVsdGlwbGljaXR5ID0gdGhpcy5nZXRNdWx0aXBsaWNpdHkoKSxcbiAgICAgICAgICBzaW5ndWxhciA9IChtdWx0aXBsaWNpdHkgPT09IDEpO1xuXG4gICAgcmV0dXJuIHNpbmd1bGFyO1xuICB9XG5cbiAgaXNQYWxhdGFibGUoKSB7XG4gICAgY29uc3QgdW5wYWxhdGFibGUgPSB0aGlzLmlzVW5wYWxhdGFibGUoKSxcbiAgICAgICAgICBwYWxhdGFibGUgPSAhdW5wYWxhdGFibGU7XG5cbiAgICByZXR1cm4gcGFsYXRhYmxlO1xuICB9XG5cbiAgaXNVbnBhbGF0YWJsZSgpIHtcbiAgICBsZXQgdW5wYWxhdGFibGUgPSBmYWxzZTtcblxuICAgIGNvbnN0IGVtcHR5ID0gdGhpcy5pc0VtcHR5KCksXG4gICAgICAgICAgdW5wcmVjZWRlbnRlZCA9IHRoaXMuaXNVbnByZWNlZGVudGVkKCk7XG5cbiAgICBpZiAoZW1wdHkgfHwgdW5wcmVjZWRlbnRlZCkge1xuICAgICAgdW5wYWxhdGFibGUgPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiB1bnBhbGF0YWJsZTtcbiAgfVxuXG4gIGlzVW5wcmVjZWRlbnRlZCgpIHtcbiAgICBsZXQgdW5wcmVjZWRlbnRlZCA9IGZhbHNlO1xuXG4gICAgaWYgKCh0aGlzLnByZWNlZGVuY2UgIT09IG51bGwpICYmICh0aGlzLnByZWNlZGVuY2UgIT09IEluZmluaXR5KSl7XG4gICAgICBjb25zdCBsZW5ndGggPSB0aGlzLmNoaWxkTm9kZXMubGVuZ3RoLFxuICAgICAgICAgICAgbGFzdEluZGV4ID0gKGxlbmd0aCAtIDEpLFxuICAgICAgICAgICAgZmlyc3RJbmRleCA9IDAsXG4gICAgICAgICAgICBzdHJlbmd0aCA9IE1hdGguYWJzKHRoaXMucHJlY2VkZW5jZSksXG4gICAgICAgICAgICBhc3NvY2lhdGl2aXR5ID0gTWF0aC5zaWduKHRoaXMucHJlY2VkZW5jZSk7XG5cbiAgICAgIHVucHJlY2VkZW50ZWQgPSB0aGlzLmNoaWxkTm9kZXMuc29tZSgoY2hpbGROb2RlLCBpbmRleCkgPT4geyAgLy8vXG4gICAgICAgIGNvbnN0IGxhc3QgPSAoaW5kZXggPT09IGxhc3RJbmRleCksXG4gICAgICAgICAgICAgIGZpcnN0ID0gKGluZGV4ID09PSBmaXJzdEluZGV4KSxcbiAgICAgICAgICAgICAgY2hpbGROb2RlTG93ZXJQcmVjZWRlbmNlID0gY2hpbGROb2RlLmlzTG93ZXJQcmVjZWRlbmNlKGFzc29jaWF0aXZpdHksIHN0cmVuZ3RoLCBmaXJzdCwgbGFzdCk7XG5cbiAgICAgICAgaWYgKGNoaWxkTm9kZUxvd2VyUHJlY2VkZW5jZSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5wcmVjZWRlbnRlZDtcbiAgfVxuXG4gIGlzTG93ZXJQcmVjZWRlbmNlKGFzc29jaWF0aXZpdHksIHN0cmVuZ3RoLCBmaXJzdCwgbGFzdCkge1xuICAgIGxldCBsb3dlclByZWNlZGVuY2U7XG5cbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIC8vL1xuICAgIH0gZWxzZSBpZiAodGhpcy5wcmVjZWRlbmNlID09PSBudWxsKSB7XG4gICAgICBsb3dlclByZWNlZGVuY2UgPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMucHJlY2VkZW5jZSA9PT0gSW5maW5pdHkpIHtcbiAgICAgIGxvd2VyUHJlY2VkZW5jZSA9IHRoaXMuY2hpbGROb2Rlcy5zb21lKChjaGlsZE5vZGUpID0+IHtcbiAgICAgICAgY29uc3QgY2hpbGROb2RlTG93ZXJQcmVjZWRlbmNlID0gY2hpbGROb2RlLmlzTG93ZXJQcmVjZWRlbmNlKGFzc29jaWF0aXZpdHksIHN0cmVuZ3RoLCBmaXJzdCwgbGFzdCk7XG5cbiAgICAgICAgaWYgKGNoaWxkTm9kZUxvd2VyUHJlY2VkZW5jZSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcGFyZW50U3RyZW5ndGggPSBzdHJlbmd0aCwgIC8vL1xuICAgICAgICAgICAgcGFyZW50QXNzb2NpYXRpdml0eSA9IGFzc29jaWF0aXZpdHk7ICAvLy9cblxuICAgICAgc3RyZW5ndGggPSBNYXRoLmFicyh0aGlzLnByZWNlZGVuY2UpO1xuXG4gICAgICBhc3NvY2lhdGl2aXR5ID0gTWF0aC5zaWduKHRoaXMucHJlY2VkZW5jZSk7XG5cbiAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICAvLy9cbiAgICAgIH0gZWxzZSBpZiAoZmlyc3QpIHtcbiAgICAgICAgbG93ZXJQcmVjZWRlbmNlID0gKHBhcmVudEFzc29jaWF0aXZpdHkgPCAwKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmVuZ3RoIDwgcGFyZW50U3RyZW5ndGgpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJlbmd0aCA8PSBwYXJlbnRTdHJlbmd0aCk7XG4gICAgICB9IGVsc2UgaWYgKGxhc3QpIHtcbiAgICAgICAgbG93ZXJQcmVjZWRlbmNlID0gKHBhcmVudEFzc29jaWF0aXZpdHkgPCAwKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmVuZ3RoIDw9IHBhcmVudFN0cmVuZ3RoKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyZW5ndGggPCBwYXJlbnRTdHJlbmd0aCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsb3dlclByZWNlZGVuY2UgPSAoc3RyZW5ndGggPCBwYXJlbnRTdHJlbmd0aCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGxvd2VyUHJlY2VkZW5jZTtcbiAgfVxuXG4gIGFzUGFyc2VUcmVlKHRva2Vucykge1xuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IHRoaXMsICAvLy9cbiAgICAgICAgICBub25UZXJtaW5hbE5vZGVQYXJzZVRyZWUgPSBOb25UZXJtaW5hbE5vZGVQYXJzZVRyZWUuZnJvbU5vblRlcm1pbmFsTm9kZUFuZFRva2Vucyhub25UZXJtaW5hbE5vZGUsIHRva2VucyksXG4gICAgICAgICAgcGFyc2VUcmVlID0gbm9uVGVybWluYWxOb2RlUGFyc2VUcmVlOyAgLy8vXG5cbiAgICByZXR1cm4gcGFyc2VUcmVlO1xuICB9XG5cbiAgbWF0Y2gobm9kZSwgZGVwdGggPSBJbmZpbml0eSwgZXhhY3RseSA9IGZhbHNlKSB7XG4gICAgbGV0IG1hdGNoZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IG5vZGVOb25UZXJtaW5hbE5vZGUgPSBub2RlLmlzTm9uVGVybWluYWxOb2RlKCk7XG5cbiAgICBpZiAobm9kZU5vblRlcm1pbmFsTm9kZSkge1xuICAgICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gbm9kZSwgLy8vXG4gICAgICAgICAgICBub25UZXJtaW5hbE5vZGVSdWxlTmFtZSA9IG5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpO1xuXG4gICAgICBpZiAodGhpcy5ydWxlTmFtZSA9PT0gbm9uVGVybWluYWxOb2RlUnVsZU5hbWUpIHtcbiAgICAgICAgY29uc3Qgbm9uVGVybWluYWxOb2RlT3BhY2l0eSA9IG5vblRlcm1pbmFsTm9kZS5nZXRPcGFjaXR5KCk7XG5cbiAgICAgICAgaWYgKHRoaXMub3BhY2l0eSA9PT0gbm9uVGVybWluYWxOb2RlT3BhY2l0eSkge1xuICAgICAgICAgIGNvbnN0IHByZWNlZGVuY2UgPSB0aGlzLmdldFByZWNlZGVuY2UoKSxcbiAgICAgICAgICAgICAgICBub25UZXJtaW5hbE5vZGVQcmVjZWRlbmNlID0gbm9uVGVybWluYWxOb2RlLmdldFByZWNlZGVuY2UoKTtcblxuICAgICAgICAgIGlmIChwcmVjZWRlbmNlID09PSBub25UZXJtaW5hbE5vZGVQcmVjZWRlbmNlKSB7XG4gICAgICAgICAgICBkZXB0aC0tO1xuXG4gICAgICAgICAgICBpZiAoZGVwdGggPT09IDApIHtcbiAgICAgICAgICAgICAgbWF0Y2hlcyA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjb25zdCBub25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKTtcblxuICAgICAgICAgICAgICBtYXRjaGVzID0gbWF0Y2godGhpcy5jaGlsZE5vZGVzLCBub25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzLCAoY2hpbGROb2RlLCBub25UZXJtaW5hbE5vZGVDaGlsZE5vZGUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjaGlsZE5vZGVNYXRjaGVzTm9uVGVybWluYWxOb2RlQ2hpbGROb2RlID0gY2hpbGROb2RlLm1hdGNoKG5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZSwgZGVwdGgsIGV4YWN0bHkpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGNoaWxkTm9kZU1hdGNoZXNOb25UZXJtaW5hbE5vZGVDaGlsZE5vZGUpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hdGNoZXM7XG4gIH1cblxuICByZXdyaXRlKGNvbnRleHQpIHtcbiAgICBjb25zdCByZXdyaXR0ZW5Ob25UZXJtaW5hbE5vZGUgPSB0aGlzOyAgLy8vXG5cbiAgICByZXR1cm4gcmV3cml0dGVuTm9uVGVybWluYWxOb2RlO1xuICB9XG5cbiAgZGVzdHJveSgpIHtcbiAgICB0aGlzLmZvckVhY2hDaGlsZE5vZGUoKGNoaWxkTm9kZSkgPT4ge1xuICAgICAgY2hpbGROb2RlLmRlc3Ryb3koKTtcbiAgICB9KTtcblxuICAgIHRoaXMucGFyZW50Tm9kZSA9IG51bGw7XG5cbiAgICB0aGlzLmNoaWxkTm9kZXMgPSBudWxsO1xuICB9XG5cbiAgY2xvbmUoLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgY29uc3QgQ2xhc3MgPSB0aGlzLmNvbnN0cnVjdG9yLFxuICAgICAgICAgIHBhcmVudE5vZGUgPSBudWxsLFxuICAgICAgICAgIHJ1bGVOYW1lID0gdGhpcy5ydWxlTmFtZSxcbiAgICAgICAgICBjaGlsZE5vZGVzID0gY2xvbmVDaGlsZE5vZGVzKHRoaXMuY2hpbGROb2RlcyksXG4gICAgICAgICAgb3BhY2l0eSA9IHRoaXMub3BhY2l0eSxcbiAgICAgICAgICBwcmVjZWRlbmNlID0gdGhpcy5wcmVjZWRlbmNlLFxuICAgICAgICAgIG5vblRlcm1pbmFsTm9kZSA9IG5ldyBDbGFzcyhydWxlTmFtZSwgcGFyZW50Tm9kZSwgY2hpbGROb2Rlcywgb3BhY2l0eSwgcHJlY2VkZW5jZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcblxuICAgIG5vblRlcm1pbmFsTm9kZS5zZXRDaGlsZE5vZGVzUGFyZW50Tm9kZSgpO1xuXG4gICAgcmV0dXJuIG5vblRlcm1pbmFsTm9kZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tUnVsZU5hbWVDaGlsZE5vZGVzT3BhY2l0eUFuZFByZWNlZGVuY2UoQ2xhc3MsIHJ1bGVOYW1lLCBjaGlsZE5vZGVzLCBvcGFjaXR5LCBwcmVjZWRlbmNlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBpZiAocHJlY2VkZW5jZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBwcmVjZWRlbmNlID0gb3BhY2l0eTsgLy8vXG5cbiAgICAgIG9wYWNpdHkgPSBjaGlsZE5vZGVzOyAvLy9cblxuICAgICAgY2hpbGROb2RlcyA9IHJ1bGVOYW1lOyAgLy8vXG5cbiAgICAgIHJ1bGVOYW1lID0gQ2xhc3M7IC8vL1xuXG4gICAgICBDbGFzcyA9IE5vblRlcm1pbmFsTm9kZTsgIC8vL1xuICAgIH1cblxuICAgIGNvbnN0IHBhcmVudE5vZGUgPSBudWxsLFxuICAgICAgICAgIG5vblRlcm1pbmFsTm9kZSA9IG5ldyBDbGFzcyhydWxlTmFtZSwgcGFyZW50Tm9kZSwgY2hpbGROb2Rlcywgb3BhY2l0eSwgcHJlY2VkZW5jZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcblxuICAgIG5vblRlcm1pbmFsTm9kZS5zZXRDaGlsZE5vZGVzUGFyZW50Tm9kZSgpO1xuXG4gICAgcmV0dXJuIG5vblRlcm1pbmFsTm9kZTtcbiAgfVxufVxuXG5PYmplY3QuYXNzaWduKE5vblRlcm1pbmFsTm9kZS5wcm90b3R5cGUsIG5vZGVNaXhpbnMpO1xuXG5mdW5jdGlvbiBjbG9uZUNoaWxkTm9kZXMoY2hpbGROb2Rlcykge1xuICBjaGlsZE5vZGVzID0gY2hpbGROb2Rlcy5tYXAoKGNoaWxkTm9kZSkgPT4geyAgLy8vXG4gICAgY2hpbGROb2RlID0gY2hpbGROb2RlLmNsb25lKCk7ICAvLy9cblxuICAgIHJldHVybiBjaGlsZE5vZGU7XG4gIH0pO1xuXG4gIHJldHVybiBjaGlsZE5vZGVzO1xufVxuIl0sIm5hbWVzIjpbIk5vblRlcm1pbmFsTm9kZSIsIm1hdGNoIiwiYXJyYXlVdGlsaXRpZXMiLCJvcGFxdWUiLCJvcGFxdWVTcGVjaWFsU3ltYm9sIiwic2VtaU9wYXF1ZSIsInNlbWlPcGFxdWVTcGVjaWFsU3ltYm9sIiwic3BlY2lhbFN5bWJvbHMiLCJydWxlTmFtZSIsInBhcmVudE5vZGUiLCJjaGlsZE5vZGVzIiwib3BhY2l0eSIsInByZWNlZGVuY2UiLCJnZXRSdWxlTmFtZSIsImdldFBhcmVudE5vZGUiLCJnZXRDaGlsZE5vZGVzIiwiZ2V0T3BhY2l0eSIsImdldFByZWNlZGVuY2UiLCJzZXRSdWxlTmFtZSIsInNldFBhcmVudE5vZGUiLCJzZXRDaGlsZE5vZGVzIiwic3RhcnRJbmRleCIsImRlbGV0ZUNvdW50IiwiSW5maW5pdHkiLCJhZGRlZENoaWxkTm9kZXMiLCJzcGxpY2VDaGlsZE5vZGVzIiwic2V0T3BhY2l0eSIsInNldFByZWNlZGVuY2UiLCJudWxsaWZ5UHJlY2VkZW5jZSIsImlzT3BhcXVlIiwiaXNTZW1pT3BhcXVlIiwiaXNUcmFuc3BhcmVudCIsImlzVGVybWluYWxOb2RlIiwidGVybWluYWxOb2RlIiwiaXNOb25UZXJtaW5hbE5vZGUiLCJub25UZXJtaW5hbE5vZGUiLCJnZXREZXNjZW5kYW50Tm9kZXMiLCJkZXNjZW5kYW50Tm9kZXMiLCJnZXRGaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCIsInRva2VucyIsImZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4IiwiZm9yd2FyZHNTb21lQ2hpbGROb2RlIiwiY2hpbGROb2RlIiwibm9kZSIsImdldExhc3RTaWduaWZpY2FudFRva2VuSW5kZXgiLCJsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4IiwiYmFja3dhcmRzU29tZUNoaWxkTm9kZSIsImdldFNpZ25pZmljYW50VG9rZW5zIiwic2lnbmlmaWNhbnRUb2tlbnMiLCJmb3JFYWNoIiwiZ2V0TXVsdGlwbGljaXR5IiwiY2hpbGROb2Rlc0xlbmd0aCIsImxlbmd0aCIsIm11bHRpcGxpY2l0eSIsImlzRW1wdHkiLCJlbXB0eSIsImlzU2luZ3VsYXIiLCJzaW5ndWxhciIsImlzUGFsYXRhYmxlIiwidW5wYWxhdGFibGUiLCJpc1VucGFsYXRhYmxlIiwicGFsYXRhYmxlIiwidW5wcmVjZWRlbnRlZCIsImlzVW5wcmVjZWRlbnRlZCIsImxhc3RJbmRleCIsImZpcnN0SW5kZXgiLCJzdHJlbmd0aCIsIk1hdGgiLCJhYnMiLCJhc3NvY2lhdGl2aXR5Iiwic2lnbiIsInNvbWUiLCJpbmRleCIsImxhc3QiLCJmaXJzdCIsImNoaWxkTm9kZUxvd2VyUHJlY2VkZW5jZSIsImlzTG93ZXJQcmVjZWRlbmNlIiwibG93ZXJQcmVjZWRlbmNlIiwicGFyZW50U3RyZW5ndGgiLCJwYXJlbnRBc3NvY2lhdGl2aXR5IiwiYXNQYXJzZVRyZWUiLCJub25UZXJtaW5hbE5vZGVQYXJzZVRyZWUiLCJOb25UZXJtaW5hbE5vZGVQYXJzZVRyZWUiLCJmcm9tTm9uVGVybWluYWxOb2RlQW5kVG9rZW5zIiwicGFyc2VUcmVlIiwiZGVwdGgiLCJleGFjdGx5IiwibWF0Y2hlcyIsIm5vZGVOb25UZXJtaW5hbE5vZGUiLCJub25UZXJtaW5hbE5vZGVSdWxlTmFtZSIsIm5vblRlcm1pbmFsTm9kZU9wYWNpdHkiLCJub25UZXJtaW5hbE5vZGVQcmVjZWRlbmNlIiwibm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcyIsIm5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZSIsImNoaWxkTm9kZU1hdGNoZXNOb25UZXJtaW5hbE5vZGVDaGlsZE5vZGUiLCJyZXdyaXRlIiwiY29udGV4dCIsInJld3JpdHRlbk5vblRlcm1pbmFsTm9kZSIsImRlc3Ryb3kiLCJmb3JFYWNoQ2hpbGROb2RlIiwiY2xvbmUiLCJyZW1haW5pbmdBcmd1bWVudHMiLCJDbGFzcyIsImNsb25lQ2hpbGROb2RlcyIsInNldENoaWxkTm9kZXNQYXJlbnROb2RlIiwiZnJvbVJ1bGVOYW1lQ2hpbGROb2Rlc09wYWNpdHlBbmRQcmVjZWRlbmNlIiwidW5kZWZpbmVkIiwiT2JqZWN0IiwiYXNzaWduIiwicHJvdG90eXBlIiwibm9kZU1peGlucyIsIm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBV0E7OztlQUFxQkE7OzsyQkFUVTs2QkFDQTs2REFFUjt3RUFDYzs7Ozs7O0FBRXJDLE1BQU0sRUFBRUMsS0FBSyxFQUFFLEdBQUdDLHlCQUFjLEVBQzFCLEVBQUVDLFFBQVFDLG1CQUFtQixFQUFHQyxZQUFZQyx1QkFBdUIsRUFBRSxHQUFHQywyQkFBYztBQUU3RSxNQUFNUDtJQUNuQixZQUFZUSxRQUFRLEVBQUVDLFVBQVUsRUFBRUMsVUFBVSxFQUFFQyxPQUFPLEVBQUVDLFVBQVUsQ0FBRTtRQUNqRSxJQUFJLENBQUNKLFFBQVEsR0FBR0E7UUFDaEIsSUFBSSxDQUFDQyxVQUFVLEdBQUdBO1FBQ2xCLElBQUksQ0FBQ0MsVUFBVSxHQUFHQTtRQUNsQixJQUFJLENBQUNDLE9BQU8sR0FBR0E7UUFDZixJQUFJLENBQUNDLFVBQVUsR0FBR0E7SUFDcEI7SUFFQUMsY0FBYztRQUNaLE9BQU8sSUFBSSxDQUFDTCxRQUFRO0lBQ3RCO0lBRUFNLGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxDQUFDTCxVQUFVO0lBQ3hCO0lBRUFNLGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxDQUFDTCxVQUFVO0lBQ3hCO0lBRUFNLGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQ0wsT0FBTztJQUNyQjtJQUVBTSxnQkFBZ0I7UUFDZCxPQUFPLElBQUksQ0FBQ0wsVUFBVTtJQUN4QjtJQUVBTSxZQUFZVixRQUFRLEVBQUU7UUFDcEIsSUFBSSxDQUFDQSxRQUFRLEdBQUdBO0lBQ2xCO0lBRUFXLGNBQWNWLFVBQVUs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
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "occam-parsers",
|
|
3
3
|
"author": "James Smith",
|
|
4
|
-
"version": "23.3.
|
|
4
|
+
"version": "23.3.14",
|
|
5
5
|
"license": "MIT, Anti-996",
|
|
6
6
|
"homepage": "https://github.com/djalbat/occam-parsers",
|
|
7
7
|
"description": "Occam's parsers.",
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"necessary": "^17.7.2",
|
|
14
|
-
"occam-lexers": "^23.3.
|
|
14
|
+
"occam-lexers": "^23.3.12",
|
|
15
15
|
"occam-parsers": "^23.1.152"
|
|
16
16
|
},
|
|
17
17
|
"devDependencies": {
|
package/src/bnf/bnf.js
CHANGED
|
@@ -7,12 +7,12 @@ import OptionalPartPart from "../part/nonTerminal/optionalPart";
|
|
|
7
7
|
import StringLiteralPart from "../part/terminal/stringLiteral";
|
|
8
8
|
import SignificantTokenTypePart from "../part/terminal/significantTokenType";
|
|
9
9
|
|
|
10
|
-
const {
|
|
10
|
+
const { integerType } = types,
|
|
11
11
|
{ openBracket, closeBracket } = specialSymbols;
|
|
12
12
|
|
|
13
13
|
export default class PrecedenceDefinition extends Definition {
|
|
14
14
|
static fromNothing() {
|
|
15
|
-
const significantTokenType =
|
|
15
|
+
const significantTokenType = integerType, ///
|
|
16
16
|
openBracketStringLiteralContent = openBracket, ///
|
|
17
17
|
closeBracketStringLiteralContent = closeBracket, ///
|
|
18
18
|
openBracketStringLiteralPart = StringLiteralPart.fromContent(openBracketStringLiteralContent),
|
package/src/node/nonTerminal.js
CHANGED
|
@@ -184,9 +184,17 @@ export default class NonTerminalNode {
|
|
|
184
184
|
isUnprecedented() {
|
|
185
185
|
let unprecedented = false;
|
|
186
186
|
|
|
187
|
-
if (this.precedence !== null) {
|
|
188
|
-
|
|
189
|
-
|
|
187
|
+
if ((this.precedence !== null) && (this.precedence !== Infinity)){
|
|
188
|
+
const length = this.childNodes.length,
|
|
189
|
+
lastIndex = (length - 1),
|
|
190
|
+
firstIndex = 0,
|
|
191
|
+
strength = Math.abs(this.precedence),
|
|
192
|
+
associativity = Math.sign(this.precedence);
|
|
193
|
+
|
|
194
|
+
unprecedented = this.childNodes.some((childNode, index) => { ///
|
|
195
|
+
const last = (index === lastIndex),
|
|
196
|
+
first = (index === firstIndex),
|
|
197
|
+
childNodeLowerPrecedence = childNode.isLowerPrecedence(associativity, strength, first, last);
|
|
190
198
|
|
|
191
199
|
if (childNodeLowerPrecedence) {
|
|
192
200
|
return true;
|
|
@@ -197,7 +205,7 @@ export default class NonTerminalNode {
|
|
|
197
205
|
return unprecedented;
|
|
198
206
|
}
|
|
199
207
|
|
|
200
|
-
isLowerPrecedence(
|
|
208
|
+
isLowerPrecedence(associativity, strength, first, last) {
|
|
201
209
|
let lowerPrecedence;
|
|
202
210
|
|
|
203
211
|
if (false) {
|
|
@@ -206,14 +214,33 @@ export default class NonTerminalNode {
|
|
|
206
214
|
lowerPrecedence = false;
|
|
207
215
|
} else if (this.precedence === Infinity) {
|
|
208
216
|
lowerPrecedence = this.childNodes.some((childNode) => {
|
|
209
|
-
const childNodeLowerPrecedence = childNode.isLowerPrecedence(
|
|
217
|
+
const childNodeLowerPrecedence = childNode.isLowerPrecedence(associativity, strength, first, last);
|
|
210
218
|
|
|
211
219
|
if (childNodeLowerPrecedence) {
|
|
212
220
|
return true;
|
|
213
221
|
}
|
|
214
222
|
});
|
|
215
223
|
} else {
|
|
216
|
-
|
|
224
|
+
const parentStrength = strength, ///
|
|
225
|
+
parentAssociativity = associativity; ///
|
|
226
|
+
|
|
227
|
+
strength = Math.abs(this.precedence);
|
|
228
|
+
|
|
229
|
+
associativity = Math.sign(this.precedence);
|
|
230
|
+
|
|
231
|
+
if (false) {
|
|
232
|
+
///
|
|
233
|
+
} else if (first) {
|
|
234
|
+
lowerPrecedence = (parentAssociativity < 0) ?
|
|
235
|
+
(strength < parentStrength) :
|
|
236
|
+
(strength <= parentStrength);
|
|
237
|
+
} else if (last) {
|
|
238
|
+
lowerPrecedence = (parentAssociativity < 0) ?
|
|
239
|
+
(strength <= parentStrength) :
|
|
240
|
+
(strength < parentStrength);
|
|
241
|
+
} else {
|
|
242
|
+
lowerPrecedence = (strength < parentStrength);
|
|
243
|
+
}
|
|
217
244
|
}
|
|
218
245
|
|
|
219
246
|
return lowerPrecedence;
|