occam-parsers 23.3.77 → 23.3.78
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/lib/constants.js +12 -7
- package/lib/definition.js +11 -19
- package/lib/frame.js +3 -3
- package/lib/node/bnf/precedence.js +46 -5
- package/lib/node/nonTerminal.js +9 -27
- package/lib/part/nonTerminal/isolatedPart.js +3 -3
- package/lib/partChoice.js +2 -10
- package/lib/precedence.js +81 -0
- package/lib/utilities/parseTree.js +6 -15
- package/lib/utilities/string.js +3 -4
- package/package.json +1 -1
- package/src/constants.js +6 -2
- package/src/definition.js +20 -28
- package/src/frame.js +2 -2
- package/src/node/bnf/precedence.js +6 -4
- package/src/node/nonTerminal.js +8 -39
- package/src/part/nonTerminal/isolatedPart.js +2 -2
- package/src/partChoice.js +6 -18
- package/src/precedence.js +96 -0
- package/src/utilities/parseTree.js +10 -17
- package/src/utilities/string.js +1 -3
package/lib/constants.js
CHANGED
|
@@ -18,17 +18,22 @@ _export(exports, {
|
|
|
18
18
|
get ESCAPED_DOUBLE_QUOTE () {
|
|
19
19
|
return ESCAPED_DOUBLE_QUOTE;
|
|
20
20
|
},
|
|
21
|
-
get
|
|
22
|
-
return
|
|
21
|
+
get MINUS_CHARACTER () {
|
|
22
|
+
return MINUS_CHARACTER;
|
|
23
23
|
},
|
|
24
|
-
get
|
|
25
|
-
return
|
|
24
|
+
get SPACE_CHARACTER () {
|
|
25
|
+
return SPACE_CHARACTER;
|
|
26
|
+
},
|
|
27
|
+
get TRANSPARENT_PRECEDENCE_STRENGTH () {
|
|
28
|
+
return TRANSPARENT_PRECEDENCE_STRENGTH;
|
|
26
29
|
}
|
|
27
30
|
});
|
|
31
|
+
const _necessary = require("necessary");
|
|
32
|
+
const { SPACE_CHARACTER } = _necessary.characters;
|
|
28
33
|
const EMPTY_STRING = "";
|
|
34
|
+
const MINUS_CHARACTER = "-";
|
|
29
35
|
const ESCAPED_BACKSLASH = "\\";
|
|
30
|
-
const ISOLATED_PRECEDENCE = -1;
|
|
31
36
|
const ESCAPED_DOUBLE_QUOTE = "\"";
|
|
32
|
-
const
|
|
37
|
+
const TRANSPARENT_PRECEDENCE_STRENGTH = 0;
|
|
33
38
|
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25zdGFudHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGNoYXJhY3RlcnMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5cbmV4cG9ydCBjb25zdCB7IFNQQUNFX0NIQVJBQ1RFUiB9ID0gY2hhcmFjdGVycztcblxuZXhwb3J0IGNvbnN0IEVNUFRZX1NUUklORyA9IFwiXCI7XG5leHBvcnQgY29uc3QgTUlOVVNfQ0hBUkFDVEVSID0gXCItXCI7XG5leHBvcnQgY29uc3QgRVNDQVBFRF9CQUNLU0xBU0ggPVwiXFxcXFwiO1xuZXhwb3J0IGNvbnN0IEVTQ0FQRURfRE9VQkxFX1FVT1RFID0gXCJcXFwiXCI7XG5leHBvcnQgY29uc3QgVFJBTlNQQVJFTlRfUFJFQ0VERU5DRV9TVFJFTkdUSCA9IDA7XG4iXSwibmFtZXMiOlsiRU1QVFlfU1RSSU5HIiwiRVNDQVBFRF9CQUNLU0xBU0giLCJFU0NBUEVEX0RPVUJMRV9RVU9URSIsIk1JTlVTX0NIQVJBQ1RFUiIsIlNQQUNFX0NIQVJBQ1RFUiIsIlRSQU5TUEFSRU5UX1BSRUNFREVOQ0VfU1RSRU5HVEgiLCJjaGFyYWN0ZXJzIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUFNYUE7ZUFBQUE7O1FBRUFDO2VBQUFBOztRQUNBQztlQUFBQTs7UUFGQUM7ZUFBQUE7O1FBSEVDO2VBQUFBOztRQU1GQztlQUFBQTs7OzJCQVJjO0FBRXBCLE1BQU0sRUFBRUQsZUFBZSxFQUFFLEdBQUdFLHFCQUFVO0FBRXRDLE1BQU1OLGVBQWU7QUFDckIsTUFBTUcsa0JBQWtCO0FBQ3hCLE1BQU1GLG9CQUFtQjtBQUN6QixNQUFNQyx1QkFBdUI7QUFDN0IsTUFBTUcsa0NBQWtDIn0=
|
package/lib/definition.js
CHANGED
|
@@ -8,11 +8,10 @@ Object.defineProperty(exports, "default", {
|
|
|
8
8
|
return Definition;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
-
const _necessary = require("necessary");
|
|
12
11
|
const _frame = /*#__PURE__*/ _interop_require_wildcard(require("./frame"));
|
|
12
|
+
const _constants = require("./constants");
|
|
13
13
|
const _linear = require("./utilities/linear");
|
|
14
14
|
const _branching = require("./utilities/branching");
|
|
15
|
-
const _constants = require("./constants");
|
|
16
15
|
function _getRequireWildcardCache(nodeInterop) {
|
|
17
16
|
if (typeof WeakMap !== "function") return null;
|
|
18
17
|
var cacheBabelInterop = new WeakMap();
|
|
@@ -54,7 +53,6 @@ function _interop_require_wildcard(obj, nodeInterop) {
|
|
|
54
53
|
}
|
|
55
54
|
return newObj;
|
|
56
55
|
}
|
|
57
|
-
const { SPACE_CHARACTER } = _necessary.characters;
|
|
58
56
|
class Definition {
|
|
59
57
|
constructor(parts, precedence){
|
|
60
58
|
this.parts = parts;
|
|
@@ -100,21 +98,7 @@ class Definition {
|
|
|
100
98
|
return frame;
|
|
101
99
|
}
|
|
102
100
|
asString() {
|
|
103
|
-
|
|
104
|
-
const partsString = this.parts.reduce((partsString, part)=>{
|
|
105
|
-
const partString = part.asString();
|
|
106
|
-
if (partsString === _constants.EMPTY_STRING) {
|
|
107
|
-
partsString = partString; ///
|
|
108
|
-
} else {
|
|
109
|
-
partsString = `${partsString} ${partString}`;
|
|
110
|
-
}
|
|
111
|
-
return partsString;
|
|
112
|
-
}, _constants.EMPTY_STRING);
|
|
113
|
-
string = partsString; ///
|
|
114
|
-
if (this.precedence !== null) {
|
|
115
|
-
const precedence = this.precedence === _constants.TRANSPARENT_PRECEDENCE ? SPACE_CHARACTER : this.precedence;
|
|
116
|
-
string = `${string} (${precedence})`;
|
|
117
|
-
}
|
|
101
|
+
const partsString = partsStringFromParts(this.parts), precedenceString = this.precedence !== null ? this.precedence.asString() : _constants.EMPTY_STRING, string = `${partsString}${precedenceString}`;
|
|
118
102
|
return string;
|
|
119
103
|
}
|
|
120
104
|
static fromParts(Class, parts) {
|
|
@@ -135,6 +119,14 @@ class Definition {
|
|
|
135
119
|
return definition;
|
|
136
120
|
}
|
|
137
121
|
}
|
|
122
|
+
function partsStringFromParts(parts) {
|
|
123
|
+
const partsString = parts.reduce((partsString, part)=>{
|
|
124
|
+
const partString = part.asString();
|
|
125
|
+
partsString = partsString !== null ? `${partsString} ${partString}` : partString; ///
|
|
126
|
+
return partsString;
|
|
127
|
+
}, null);
|
|
128
|
+
return partsString;
|
|
129
|
+
}
|
|
138
130
|
function nonTerminalNodeFromRuleDefinitionFrameAndState(rule, definition, frame, state) {
|
|
139
131
|
let nonTerminalNode;
|
|
140
132
|
const opacity = rule.getOpacity(), ruleName = rule.getName(), childNodes = frame.getChildNodes(), precedence = frame.getPrecedence(definition), NonTerminalNode = rule.NonTerminalNodeFromRuleName(ruleName, state);
|
|
@@ -143,4 +135,4 @@ function nonTerminalNodeFromRuleDefinitionFrameAndState(rule, definition, frame,
|
|
|
143
135
|
return nonTerminalNode;
|
|
144
136
|
}
|
|
145
137
|
|
|
146
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
138
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kZWZpbml0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgRnJhbWUgZnJvbSBcIi4vZnJhbWVcIjtcblxuaW1wb3J0IHsgZW1wdHlGcmFtZSB9IGZyb20gXCIuL2ZyYW1lXCI7XG5pbXBvcnQgeyBFTVBUWV9TVFJJTkcgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IGV2ZXJ5IGFzIGxpbmVhckV2ZXJ5ICB9IGZyb20gXCIuL3V0aWxpdGllcy9saW5lYXJcIjtcbmltcG9ydCB7IGV2ZXJ5IGFzIGJyYW5jaGluZ0V2ZXJ5ICB9IGZyb20gXCIuL3V0aWxpdGllcy9icmFuY2hpbmdcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGVmaW5pdGlvbiB7XG4gIGNvbnN0cnVjdG9yKHBhcnRzLCBwcmVjZWRlbmNlKSB7XG4gICAgdGhpcy5wYXJ0cyA9IHBhcnRzO1xuICAgIHRoaXMucHJlY2VkZW5jZSA9IHByZWNlZGVuY2U7XG4gIH1cblxuICBnZXRQYXJ0cygpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJ0cztcbiAgfVxuXG4gIGdldFByZWNlZGVuY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJlY2VkZW5jZTtcbiAgfVxuXG4gIGlzQ29uc3VtaW5nKHJ1bGVNYXAsIHZpc2l0ZWRSdWxlcyA9IFtdLCBjaGVja0ZvckN1dFBhcnRzID0gZmFsc2UpIHtcbiAgICBjb25zdCBjb25zdW1pbmcgPSB0aGlzLnBhcnRzLnNvbWUoKHBhcnQpID0+IHtcbiAgICAgIGNvbnN0IGNvbnN1bWluZyA9IHBhcnQuaXNDb25zdW1pbmcocnVsZU1hcCwgdmlzaXRlZFJ1bGVzLCBjaGVja0ZvckN1dFBhcnRzKTtcblxuICAgICAgaWYgKGNvbnN1bWluZykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBjb25zdW1pbmc7XG4gIH1cblxuICBwYXJzZShydWxlLCBmcmFtZSwgc3RhdGUsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBzYXZlZEZyYW1lID0gZnJhbWUsIC8vL1xuICAgICAgICAgIGJyYW5jaGluZyA9IHN0YXRlLmlzQnJhbmNoaW5nKCksXG4gICAgICAgICAgZXZlcnkgPSBicmFuY2hpbmcgP1xuICAgICAgICAgICAgICAgICAgICBicmFuY2hpbmdFdmVyeSA6XG4gICAgICAgICAgICAgICAgICAgICAgbGluZWFyRXZlcnk7XG5cbiAgICByZXR1cm4gZXZlcnkodGhpcy5wYXJ0cywgKHBhcnQsIGZyYW1lLCBzdGF0ZSwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIHBhcnQucGFyc2UoZnJhbWUsIHN0YXRlLCBmb3J3YXJkLCBiYWNrKTtcbiAgICB9LCBlbXB0eUZyYW1lLCBzdGF0ZSwgKGZyYW1lLCBzdGF0ZSwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgZGVmaW5pdGlvbiA9IHRoaXM7ICAvLy9cblxuICAgICAgZnJhbWUgPSB0aGlzLmNvbXBvc2UocnVsZSwgZGVmaW5pdGlvbiwgc2F2ZWRGcmFtZSwgZnJhbWUsIHN0YXRlKTsgIC8vL1xuXG4gICAgICBpZiAoZnJhbWUgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZvcndhcmQoZnJhbWUsIHN0YXRlLCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIGNvbXBvc2UocnVsZSwgZGVmaW5pdGlvbiwgc2F2ZWRGcmFtZSwgZnJhbWUsIHN0YXRlKSB7XG4gICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gbm9uVGVybWluYWxOb2RlRnJvbVJ1bGVEZWZpbml0aW9uRnJhbWVBbmRTdGF0ZShydWxlLCBkZWZpbml0aW9uLCBmcmFtZSwgc3RhdGUpLFxuICAgICAgICAgIGludmFsaWQgPSBub25UZXJtaW5hbE5vZGUuaXNJbnZhbGlkKCk7XG5cbiAgICBpZiAoaW52YWxpZCkge1xuICAgICAgZnJhbWUgPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjaGlsZE5vZGUgPSBub25UZXJtaW5hbE5vZGU7ICAvLy9cblxuICAgICAgZnJhbWUgPSBGcmFtZS5mcm9tQ2hpbGROb2RlKGNoaWxkTm9kZSk7IC8vL1xuXG4gICAgICBmcmFtZSA9IHNhdmVkRnJhbWUubWVyZ2UoZnJhbWUpOyAvLy9cbiAgICB9XG5cbiAgICByZXR1cm4gZnJhbWU7XG4gIH1cblxuICBhc1N0cmluZygpIHtcbiAgICBjb25zdCBwYXJ0c1N0cmluZyA9IHBhcnRzU3RyaW5nRnJvbVBhcnRzKHRoaXMucGFydHMpLFxuICAgICAgICAgIHByZWNlZGVuY2VTdHJpbmcgPSAodGhpcy5wcmVjZWRlbmNlICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmVjZWRlbmNlLmFzU3RyaW5nKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1QVFlfU1RSSU5HLFxuICAgICAgICAgIHN0cmluZyA9IGAke3BhcnRzU3RyaW5nfSR7cHJlY2VkZW5jZVN0cmluZ31gO1xuXG4gICAgcmV0dXJuIHN0cmluZztcbiAgfVxuXG4gIHN0YXRpYyBmcm9tUGFydHMoQ2xhc3MsIHBhcnRzKSB7XG4gICAgaWYgKHBhcnRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHBhcnRzID0gQ2xhc3M7ICAvLy9cblxuICAgICAgQ2xhc3MgPSBEZWZpbml0aW9uOyAvLy9cbiAgICB9XG5cbiAgICBjb25zdCBwcmVjZWRlbmNlID0gbnVsbCxcbiAgICAgICAgICBkZWZpbml0aW9uID0gbmV3IENsYXNzKHBhcnRzLCBwcmVjZWRlbmNlKTtcblxuICAgIHJldHVybiBkZWZpbml0aW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21QYXJ0c0FuZFByZWNlZGVuY2UoQ2xhc3MsIHBhcnRzLCBwcmVjZWRlbmNlKSB7XG4gICAgaWYgKHByZWNlZGVuY2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcHJlY2VkZW5jZSA9IHBhcnRzOyAvLy9cblxuICAgICAgcGFydHMgPSBDbGFzczsgIC8vL1xuXG4gICAgICBDbGFzcyA9IERlZmluaXRpb247IC8vL1xuICAgIH1cblxuICAgIGNvbnN0IGRlZmluaXRpb24gPSBuZXcgQ2xhc3MocGFydHMsIHByZWNlZGVuY2UpO1xuXG4gICAgcmV0dXJuIGRlZmluaXRpb247XG4gIH1cbn1cblxuZnVuY3Rpb24gcGFydHNTdHJpbmdGcm9tUGFydHMocGFydHMpIHtcbiAgY29uc3QgcGFydHNTdHJpbmcgPSBwYXJ0cy5yZWR1Y2UoKHBhcnRzU3RyaW5nLCBwYXJ0KSA9PiB7XG4gICAgY29uc3QgcGFydFN0cmluZyA9IHBhcnQuYXNTdHJpbmcoKTtcblxuICAgIHBhcnRzU3RyaW5nID0gKHBhcnRzU3RyaW5nICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgIGAke3BhcnRzU3RyaW5nfSAke3BhcnRTdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgcGFydFN0cmluZzsgLy8vXG5cbiAgICByZXR1cm4gcGFydHNTdHJpbmc7XG4gIH0sIG51bGwpO1xuXG4gIHJldHVybiBwYXJ0c1N0cmluZztcbn1cblxuZnVuY3Rpb24gbm9uVGVybWluYWxOb2RlRnJvbVJ1bGVEZWZpbml0aW9uRnJhbWVBbmRTdGF0ZShydWxlLCBkZWZpbml0aW9uLCBmcmFtZSwgc3RhdGUpIHtcbiAgbGV0IG5vblRlcm1pbmFsTm9kZTtcblxuICBjb25zdCBvcGFjaXR5ID0gcnVsZS5nZXRPcGFjaXR5KCksXG4gICAgICAgIHJ1bGVOYW1lID0gcnVsZS5nZXROYW1lKCksXG4gICAgICAgIGNoaWxkTm9kZXMgPSBmcmFtZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgIHByZWNlZGVuY2UgPSBmcmFtZS5nZXRQcmVjZWRlbmNlKGRlZmluaXRpb24pLFxuICAgICAgICBOb25UZXJtaW5hbE5vZGUgPSBydWxlLk5vblRlcm1pbmFsTm9kZUZyb21SdWxlTmFtZShydWxlTmFtZSwgc3RhdGUpO1xuXG4gIG5vblRlcm1pbmFsTm9kZSA9IE5vblRlcm1pbmFsTm9kZS5mcm9tUnVsZU5hbWVDaGlsZE5vZGVzUHJlY2VkZW5jZUFuZE9wYWNpdHkocnVsZU5hbWUsIGNoaWxkTm9kZXMsIHByZWNlZGVuY2UsIG9wYWNpdHkpO1xuXG4gIG5vblRlcm1pbmFsTm9kZSA9IG5vblRlcm1pbmFsTm9kZS5yZXdyaXRlKHN0YXRlKTtcblxuICByZXR1cm4gbm9uVGVybWluYWxOb2RlO1xufVxuIl0sIm5hbWVzIjpbIkRlZmluaXRpb24iLCJwYXJ0cyIsInByZWNlZGVuY2UiLCJnZXRQYXJ0cyIsImdldFByZWNlZGVuY2UiLCJpc0NvbnN1bWluZyIsInJ1bGVNYXAiLCJ2aXNpdGVkUnVsZXMiLCJjaGVja0ZvckN1dFBhcnRzIiwiY29uc3VtaW5nIiwic29tZSIsInBhcnQiLCJwYXJzZSIsInJ1bGUiLCJmcmFtZSIsInN0YXRlIiwiZm9yd2FyZCIsImJhY2siLCJzYXZlZEZyYW1lIiwiYnJhbmNoaW5nIiwiaXNCcmFuY2hpbmciLCJldmVyeSIsImJyYW5jaGluZ0V2ZXJ5IiwibGluZWFyRXZlcnkiLCJlbXB0eUZyYW1lIiwiZGVmaW5pdGlvbiIsImNvbXBvc2UiLCJub25UZXJtaW5hbE5vZGUiLCJub25UZXJtaW5hbE5vZGVGcm9tUnVsZURlZmluaXRpb25GcmFtZUFuZFN0YXRlIiwiaW52YWxpZCIsImlzSW52YWxpZCIsImNoaWxkTm9kZSIsIkZyYW1lIiwiZnJvbUNoaWxkTm9kZSIsIm1lcmdlIiwiYXNTdHJpbmciLCJwYXJ0c1N0cmluZyIsInBhcnRzU3RyaW5nRnJvbVBhcnRzIiwicHJlY2VkZW5jZVN0cmluZyIsIkVNUFRZX1NUUklORyIsInN0cmluZyIsImZyb21QYXJ0cyIsIkNsYXNzIiwidW5kZWZpbmVkIiwiZnJvbVBhcnRzQW5kUHJlY2VkZW5jZSIsInJlZHVjZSIsInBhcnRTdHJpbmciLCJvcGFjaXR5IiwiZ2V0T3BhY2l0eSIsInJ1bGVOYW1lIiwiZ2V0TmFtZSIsImNoaWxkTm9kZXMiLCJnZXRDaGlsZE5vZGVzIiwiTm9uVGVybWluYWxOb2RlIiwiTm9uVGVybWluYWxOb2RlRnJvbVJ1bGVOYW1lIiwiZnJvbVJ1bGVOYW1lQ2hpbGROb2Rlc1ByZWNlZGVuY2VBbmRPcGFjaXR5IiwicmV3cml0ZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBU0E7OztlQUFxQkE7OzsrREFQSDsyQkFHVzt3QkFDUzsyQkFDRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTFCLE1BQU1BO0lBQ25CLFlBQVlDLEtBQUssRUFBRUMsVUFBVSxDQUFFO1FBQzdCLElBQUksQ0FBQ0QsS0FBSyxHQUFHQTtRQUNiLElBQUksQ0FBQ0MsVUFBVSxHQUFHQTtJQUNwQjtJQUVBQyxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUNGLEtBQUs7SUFDbkI7SUFFQUcsZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUNGLFVBQVU7SUFDeEI7SUFFQUcsWUFBWUMsT0FBTyxFQUFFQyxlQUFlLEVBQUUsRUFBRUMsbUJBQW1CLEtBQUssRUFBRTtRQUNoRSxNQUFNQyxZQUFZLElBQUksQ0FBQ1IsS0FBSyxDQUFDUyxJQUFJLENBQUMsQ0FBQ0M7WUFDakMsTUFBTUYsWUFBWUUsS0FBS04sV0FBVyxDQUFDQyxTQUFTQyxjQUFjQztZQUUxRCxJQUFJQyxXQUFXO2dCQUNiLE9BQU87WUFDVDtRQUNGO1FBRUEsT0FBT0E7SUFDVDtJQUVBRyxNQUFNQyxJQUFJLEVBQUVDLEtBQUssRUFBRUMsS0FBSyxFQUFFQyxPQUFPLEVBQUVDLElBQUksRUFBRTtRQUN2QyxNQUFNQyxhQUFhSixPQUNiSyxZQUFZSixNQUFNSyxXQUFXLElBQzdCQyxRQUFRRixZQUNFRyxnQkFBYyxHQUNaQyxhQUFXO1FBRTdCLE9BQU9GLE1BQU0sSUFBSSxDQUFDcEIsS0FBSyxFQUFFLENBQUNVLE1BQU1HLE9BQU9DLE9BQU9DLFNBQVNDO1lBQ3JELE9BQU9OLEtBQUtDLEtBQUssQ0FBQ0UsT0FBT0MsT0FBT0MsU0FBU0M7UUFDM0MsR0FBR08saUJBQVUsRUFBRVQsT0FB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
|
package/lib/frame.js
CHANGED
|
@@ -17,7 +17,7 @@ _export(exports, {
|
|
|
17
17
|
}
|
|
18
18
|
});
|
|
19
19
|
const _necessary = require("necessary");
|
|
20
|
-
const
|
|
20
|
+
const _precedence = require("./precedence");
|
|
21
21
|
const { first } = _necessary.arrayUtilities;
|
|
22
22
|
class Frame {
|
|
23
23
|
constructor(childNodes, precedence){
|
|
@@ -48,7 +48,7 @@ class Frame {
|
|
|
48
48
|
this.precedence = precedence;
|
|
49
49
|
}
|
|
50
50
|
isIsolated() {
|
|
51
|
-
const isolated = this.precedence ===
|
|
51
|
+
const isolated = this.precedence === _precedence.isolatedPrecedence;
|
|
52
52
|
return isolated;
|
|
53
53
|
}
|
|
54
54
|
getNode() {
|
|
@@ -89,4 +89,4 @@ class Frame {
|
|
|
89
89
|
}
|
|
90
90
|
const emptyFrame = Frame.fromNothing();
|
|
91
91
|
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9mcmFtZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5pbXBvcnQgeyBpc29sYXRlZFByZWNlZGVuY2UgfSBmcm9tIFwiLi9wcmVjZWRlbmNlXCI7XG5cbmNvbnN0IHsgZmlyc3QgfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGcmFtZSB7XG4gIGNvbnN0cnVjdG9yKGNoaWxkTm9kZXMsIHByZWNlZGVuY2UpIHtcbiAgICB0aGlzLmNoaWxkTm9kZXMgPSBjaGlsZE5vZGVzO1xuICAgIHRoaXMucHJlY2VkZW5jZSA9IHByZWNlZGVuY2U7XG4gIH1cblxuICBnZXRDaGlsZE5vZGVzKCkge1xuICAgIHJldHVybiB0aGlzLmNoaWxkTm9kZXM7XG4gIH1cblxuICBnZXRQcmVjZWRlbmNlKGRlZmluaXRpb24gPSBudWxsKSB7XG4gICAgbGV0IHByZWNlZGVuY2U7XG5cbiAgICBpZiAoZGVmaW5pdGlvbiA9PT0gbnVsbCkge1xuICAgICAgcHJlY2VkZW5jZSA9IHRoaXMucHJlY2VkZW5jZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgaXNvbGF0ZWQgPSB0aGlzLmlzSXNvbGF0ZWQoKTtcblxuICAgICAgaWYgKGlzb2xhdGVkKSB7XG4gICAgICAgIHByZWNlZGVuY2UgPSBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJlY2VkZW5jZSA9ICh0aGlzLnByZWNlZGVuY2UgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJlY2VkZW5jZSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluaXRpb24uZ2V0UHJlY2VkZW5jZSgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBwcmVjZWRlbmNlO1xuICB9XG5cbiAgc2V0Q2hpbGROb2RlcyhjaGlsZE5vZGVzKSB7XG4gICAgdGhpcy5jaGlsZE5vZGVzID0gY2hpbGROb2RlcztcbiAgfVxuXG4gIHNldFByZWNlZGVuY2UocHJlY2VkZW5jZSkge1xuICAgIHRoaXMucHJlY2VkZW5jZSA9IHByZWNlZGVuY2U7XG4gIH1cblxuICBpc0lzb2xhdGVkKCkge1xuICAgIGNvbnN0IGlzb2xhdGVkID0gKHRoaXMucHJlY2VkZW5jZSA9PT0gaXNvbGF0ZWRQcmVjZWRlbmNlKTtcblxuICAgIHJldHVybiBpc29sYXRlZDtcbiAgfVxuXG4gIGdldE5vZGUoKSB7XG4gICAgbGV0IG5vZGUgPSBudWxsO1xuXG4gICAgY29uc3QgY2hpbGROb2Rlc0xlbmd0aCA9IHRoaXMuY2hpbGROb2Rlcy5sZW5ndGg7XG5cbiAgICBpZiAoY2hpbGROb2Rlc0xlbmd0aCA9PT0gMSkge1xuICAgICAgY29uc3QgZmlyc3RDaGlsZE5vZGUgPSBmaXJzdCh0aGlzLmNoaWxkTm9kZXMpO1xuXG4gICAgICBub2RlID0gZmlyc3RDaGlsZE5vZGU7ICAvLy9cbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIG1lcmdlKGZyYW1lKSB7XG4gICAgbGV0IGNoaWxkTm9kZXMsXG4gICAgICAgIHByZWNlZGVuY2U7XG5cbiAgICBjaGlsZE5vZGVzID0gZnJhbWUuZ2V0Q2hpbGROb2RlcygpO1xuXG4gICAgcHJlY2VkZW5jZSA9IGZyYW1lLmdldFByZWNlZGVuY2UoKTtcblxuICAgIGNoaWxkTm9kZXMgPSBbICAvLy9cbiAgICAgIC4uLnRoaXMuY2hpbGROb2RlcyxcbiAgICAgIC4uLmNoaWxkTm9kZXNcbiAgICBdO1xuXG4gICAgcHJlY2VkZW5jZSA9IHByZWNlZGVuY2UgfHwgdGhpcy5wcmVjZWRlbmNlOyAvLy9cblxuICAgIGZyYW1lID0gbmV3IEZyYW1lKGNoaWxkTm9kZXMsIHByZWNlZGVuY2UpO1xuXG4gICAgcmV0dXJuIGZyYW1lO1xuICB9XG5cbiAgc3RhdGljIGZyb21Ob3RoaW5nKCkge1xuICAgIGNvbnN0IGNoaWxkTm9kZXMgPSBbXSxcbiAgICAgICAgICBwcmVjZWRlbmNlID0gbnVsbCxcbiAgICAgICAgICBmcmFtZSA9IG5ldyBGcmFtZShjaGlsZE5vZGVzLCBwcmVjZWRlbmNlKTtcblxuICAgIHJldHVybiBmcmFtZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tQ2hpbGROb2RlKGNoaWxkTm9kZSkge1xuICAgIGNvbnN0IGNoaWxkTm9kZXMgPSBbXG4gICAgICAgICAgICBjaGlsZE5vZGVcbiAgICAgICAgICBdLFxuICAgICAgICAgIHByZWNlZGVuY2UgPSBudWxsLFxuICAgICAgICAgIGZyYW1lID0gbmV3IEZyYW1lKGNoaWxkTm9kZXMsIHByZWNlZGVuY2UpO1xuXG4gICAgcmV0dXJuIGZyYW1lO1xuICB9XG5cbiAgc3RhdGljIGZyb21DaGlsZE5vZGVzQW5kUHJlY2VkZW5jZShjaGlsZE5vZGVzLCBwcmVjZWRlbmNlKSB7XG4gICAgY29uc3QgZnJhbWUgPSBuZXcgRnJhbWUoY2hpbGROb2RlcywgcHJlY2VkZW5jZSk7XG5cbiAgICByZXR1cm4gZnJhbWU7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGVtcHR5RnJhbWUgPSBGcmFtZS5mcm9tTm90aGluZygpOyJdLCJuYW1lcyI6WyJGcmFtZSIsImVtcHR5RnJhbWUiLCJmaXJzdCIsImFycmF5VXRpbGl0aWVzIiwiY2hpbGROb2RlcyIsInByZWNlZGVuY2UiLCJnZXRDaGlsZE5vZGVzIiwiZ2V0UHJlY2VkZW5jZSIsImRlZmluaXRpb24iLCJpc29sYXRlZCIsImlzSXNvbGF0ZWQiLCJzZXRDaGlsZE5vZGVzIiwic2V0UHJlY2VkZW5jZSIsImlzb2xhdGVkUHJlY2VkZW5jZSIsImdldE5vZGUiLCJub2RlIiwiY2hpbGROb2Rlc0xlbmd0aCIsImxlbmd0aCIsImZpcnN0Q2hpbGROb2RlIiwibWVyZ2UiLCJmcmFtZSIsImZyb21Ob3RoaW5nIiwiZnJvbUNoaWxkTm9kZSIsImNoaWxkTm9kZSIsImZyb21DaGlsZE5vZGVzQW5kUHJlY2VkZW5jZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBT0E7ZUFBcUJBOztRQXVHUkM7ZUFBQUE7OzsyQkE1R2tCOzRCQUNJO0FBRW5DLE1BQU0sRUFBRUMsS0FBSyxFQUFFLEdBQUdDLHlCQUFjO0FBRWpCLE1BQU1IO0lBQ25CLFlBQVlJLFVBQVUsRUFBRUMsVUFBVSxDQUFFO1FBQ2xDLElBQUksQ0FBQ0QsVUFBVSxHQUFHQTtRQUNsQixJQUFJLENBQUNDLFVBQVUsR0FBR0E7SUFDcEI7SUFFQUMsZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUNGLFVBQVU7SUFDeEI7SUFFQUcsY0FBY0MsYUFBYSxJQUFJLEVBQUU7UUFDL0IsSUFBSUg7UUFFSixJQUFJRyxlQUFlLE1BQU07WUFDdkJILGFBQWEsSUFBSSxDQUFDQSxVQUFVO1FBQzlCLE9BQU87WUFDTCxNQUFNSSxXQUFXLElBQUksQ0FBQ0MsVUFBVTtZQUVoQyxJQUFJRCxVQUFVO2dCQUNaSixhQUFhO1lBQ2YsT0FBTztnQkFDTEEsYUFBYSxBQUFDLElBQUksQ0FBQ0EsVUFBVSxLQUFLLE9BQ2xCLElBQUksQ0FBQ0EsVUFBVSxHQUNiRyxXQUFXRCxhQUFhO1lBQzVDO1FBQ0Y7UUFFQSxPQUFPRjtJQUNUO0lBRUFNLGNBQWNQLFVBQVUsRUFBRTtRQUN4QixJQUFJLENBQUNBLFVBQVUsR0FBR0E7SUFDcEI7SUFFQVEsY0FBY1AsVUFBVSxFQUFFO1FBQ3hCLElBQUksQ0FBQ0EsVUFBVSxHQUFHQTtJQUNwQjtJQUVBSyxhQUFhO1FBQ1gsTUFBTUQsV0FBWSxJQUFJLENBQUNKLFVBQVUsS0FBS1EsOEJBQWtCO1FBRXhELE9BQU9KO0lBQ1Q7SUFFQUssVUFBVTtRQUNSLElBQUlDLE9BQU87UUFFWCxNQUFNQyxtQkFBbUIsSUFBSSxDQUFDWixVQUFVLENBQUNhLE1BQU07UUFFL0MsSUFBSUQscUJBQXFCLEdBQUc7WUFDMUIsTUFBTUUsaUJBQWlCaEIsTUFBTSxJQUFJLENBQUNFLFVBQVU7WUFFNUNXLE9BQU9HLGdCQUFpQixHQUFHO1FBQzdCO1FBRUEsT0FBT0g7SUFDVDtJQUVBSSxNQUFNQyxLQUFLLEVBQUU7UUFDWCxJQUFJaEIsWUFDQUM7UUFFSkQsYUFBYWdCLE1BQU1kLGFBQWE7UUFFaENELGFBQWFlLE1BQU1iLGFBQWE7UUFFaENILGFBQWE7ZUFDUixJQUFJLENBQUNBLFVBQVU7ZUFDZkE7U0FDSjtRQUVEQyxhQUFhQSxjQUFjLElBQUksQ0FBQ0EsVUFBVSxFQUFFLEdBQUc7UUFFL0NlLFFBQVEsSUFBSXBCLE1BQU1JLFlBQVlDO1FBRTlCLE9BQU9lO0lBQ1Q7SUFFQSxPQUFPQyxjQUFjO1FBQ25CLE1BQU1qQixhQUFhLEVBQUUsRUFDZkMsYUFBYSxNQUNiZSxRQUFRLElBQUlwQixNQUFNSSxZQUFZQztRQUVwQyxPQUFPZTtJQUNUO0lBRUEsT0FBT0UsY0FBY0MsU0FBUyxFQUFFO1FBQzlCLE1BQU1uQixhQUFhO1lBQ1htQjtTQUNELEVBQ0RsQixhQUFhLE1BQ2JlLFFBQVEsSUFBSXBCLE1BQU1JLFlBQVlDO1FBRXBDLE9BQU9lO0lBQ1Q7SUFFQSxPQUFPSSw0QkFBNEJwQixVQUFVLEVBQUVDLFVBQVUsRUFBRTtRQUN6RCxNQUFNZSxRQUFRLElBQUlwQixNQUFNSSxZQUFZQztRQUVwQyxPQUFPZTtJQUNUO0FBQ0Y7QUFFTyxNQUFNbkIsYUFBYUQsTUFBTXFCLFdBQVcifQ==
|
|
@@ -9,21 +9,62 @@ Object.defineProperty(exports, "default", {
|
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
11
|
const _necessary = require("necessary");
|
|
12
|
+
const _precedence = /*#__PURE__*/ _interop_require_wildcard(require("../../precedence"));
|
|
12
13
|
const _nonTerminal = /*#__PURE__*/ _interop_require_default(require("../../node/nonTerminal"));
|
|
13
|
-
const _constants = require("../../constants");
|
|
14
14
|
function _interop_require_default(obj) {
|
|
15
15
|
return obj && obj.__esModule ? obj : {
|
|
16
16
|
default: obj
|
|
17
17
|
};
|
|
18
18
|
}
|
|
19
|
+
function _getRequireWildcardCache(nodeInterop) {
|
|
20
|
+
if (typeof WeakMap !== "function") return null;
|
|
21
|
+
var cacheBabelInterop = new WeakMap();
|
|
22
|
+
var cacheNodeInterop = new WeakMap();
|
|
23
|
+
return (_getRequireWildcardCache = function(nodeInterop) {
|
|
24
|
+
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
25
|
+
})(nodeInterop);
|
|
26
|
+
}
|
|
27
|
+
function _interop_require_wildcard(obj, nodeInterop) {
|
|
28
|
+
if (!nodeInterop && obj && obj.__esModule) {
|
|
29
|
+
return obj;
|
|
30
|
+
}
|
|
31
|
+
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
|
32
|
+
return {
|
|
33
|
+
default: obj
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
var cache = _getRequireWildcardCache(nodeInterop);
|
|
37
|
+
if (cache && cache.has(obj)) {
|
|
38
|
+
return cache.get(obj);
|
|
39
|
+
}
|
|
40
|
+
var newObj = {
|
|
41
|
+
__proto__: null
|
|
42
|
+
};
|
|
43
|
+
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
44
|
+
for(var key in obj){
|
|
45
|
+
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
46
|
+
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
|
47
|
+
if (desc && (desc.get || desc.set)) {
|
|
48
|
+
Object.defineProperty(newObj, key, desc);
|
|
49
|
+
} else {
|
|
50
|
+
newObj[key] = obj[key];
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
newObj.default = obj;
|
|
55
|
+
if (cache) {
|
|
56
|
+
cache.set(obj, newObj);
|
|
57
|
+
}
|
|
58
|
+
return newObj;
|
|
59
|
+
}
|
|
19
60
|
const { second } = _necessary.arrayUtilities;
|
|
20
61
|
class PrecedenceBNFNode extends _nonTerminal.default {
|
|
21
62
|
getPrecedence() {
|
|
22
|
-
let precedence =
|
|
63
|
+
let precedence = _precedence.transparentPrecedence;
|
|
23
64
|
const multiplicity = this.getMultiplicity();
|
|
24
65
|
if (multiplicity === 3) {
|
|
25
|
-
const childNodes = this.getChildNodes(), secondChildNode = second(childNodes), terminalNode = secondChildNode, content = terminalNode.getContent();
|
|
26
|
-
precedence =
|
|
66
|
+
const childNodes = this.getChildNodes(), secondChildNode = second(childNodes), terminalNode = secondChildNode, content = terminalNode.getContent(), number = Number(content);
|
|
67
|
+
precedence = _precedence.default.fromNumber(number);
|
|
27
68
|
}
|
|
28
69
|
return precedence;
|
|
29
70
|
}
|
|
@@ -32,4 +73,4 @@ class PrecedenceBNFNode extends _nonTerminal.default {
|
|
|
32
73
|
}
|
|
33
74
|
}
|
|
34
75
|
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ub2RlL2JuZi9wcmVjZWRlbmNlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IFByZWNlZGVuY2UgZnJvbSBcIi4uLy4uL3ByZWNlZGVuY2VcIjtcbmltcG9ydCBOb25UZXJtaW5hbE5vZGUgZnJvbSBcIi4uLy4uL25vZGUvbm9uVGVybWluYWxcIjtcblxuaW1wb3J0IHsgdHJhbnNwYXJlbnRQcmVjZWRlbmNlIH0gZnJvbSBcIi4uLy4uL3ByZWNlZGVuY2VcIjtcblxuY29uc3QgeyBzZWNvbmQgfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQcmVjZWRlbmNlQk5GTm9kZSBleHRlbmRzIE5vblRlcm1pbmFsTm9kZSB7XG4gIGdldFByZWNlZGVuY2UoKSB7XG4gICAgbGV0IHByZWNlZGVuY2UgPSB0cmFuc3BhcmVudFByZWNlZGVuY2U7XG5cbiAgICBjb25zdCBtdWx0aXBsaWNpdHkgPSB0aGlzLmdldE11bHRpcGxpY2l0eSgpO1xuXG4gICAgaWYgKG11bHRpcGxpY2l0eSA9PT0gMykge1xuICAgICAgY29uc3QgY2hpbGROb2RlcyA9IHRoaXMuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICAgICAgc2Vjb25kQ2hpbGROb2RlID0gc2Vjb25kKGNoaWxkTm9kZXMpLFxuICAgICAgICAgICAgdGVybWluYWxOb2RlID0gc2Vjb25kQ2hpbGROb2RlLCAgLy8vXG4gICAgICAgICAgICBjb250ZW50ID0gdGVybWluYWxOb2RlLmdldENvbnRlbnQoKSxcbiAgICAgICAgICAgIG51bWJlciA9IE51bWJlcihjb250ZW50KTtcblxuICAgICAgcHJlY2VkZW5jZSA9IFByZWNlZGVuY2UuZnJvbU51bWJlcihudW1iZXIpO1xuICAgIH1cblxuICAgIHJldHVybiBwcmVjZWRlbmNlO1xuICB9XG5cbiAgc3RhdGljIGZyb21SdWxlTmFtZUNoaWxkTm9kZXNQcmVjZWRlbmNlQW5kT3BhY2l0eShydWxlTmFtZSwgY2hpbGROb2RlcywgcHJlY2VkZW5jZSwgb3BhY2l0eSkgeyByZXR1cm4gTm9uVGVybWluYWxOb2RlLmZyb21SdWxlTmFtZUNoaWxkTm9kZXNQcmVjZWRlbmNlQW5kT3BhY2l0eShQcmVjZWRlbmNlQk5GTm9kZSwgcnVsZU5hbWUsIGNoaWxkTm9kZXMsIHByZWNlZGVuY2UsIG9wYWNpdHkpOyB9XG59XG4iXSwibmFtZXMiOlsiUHJlY2VkZW5jZUJORk5vZGUiLCJzZWNvbmQiLCJhcnJheVV0aWxpdGllcyIsIk5vblRlcm1pbmFsTm9kZSIsImdldFByZWNlZGVuY2UiLCJwcmVjZWRlbmNlIiwidHJhbnNwYXJlbnRQcmVjZWRlbmNlIiwibXVsdGlwbGljaXR5IiwiZ2V0TXVsdGlwbGljaXR5IiwiY2hpbGROb2RlcyIsImdldENoaWxkTm9kZXMiLCJzZWNvbmRDaGlsZE5vZGUiLCJ0ZXJtaW5hbE5vZGUiLCJjb250ZW50IiwiZ2V0Q29udGVudCIsIm51bWJlciIsIk51bWJlciIsIlByZWNlZGVuY2UiLCJmcm9tTnVtYmVyIiwiZnJvbVJ1bGVOYW1lQ2hpbGROb2Rlc1ByZWNlZGVuY2VBbmRPcGFjaXR5IiwicnVsZU5hbWUiLCJvcGFjaXR5Il0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFXQTs7O2VBQXFCQTs7OzJCQVRVO29FQUVSO29FQUNLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUk1QixNQUFNLEVBQUVDLE1BQU0sRUFBRSxHQUFHQyx5QkFBYztBQUVsQixNQUFNRiwwQkFBMEJHLG9CQUFlO0lBQzVEQyxnQkFBZ0I7UUFDZCxJQUFJQyxhQUFhQyxpQ0FBcUI7UUFFdEMsTUFBTUMsZUFBZSxJQUFJLENBQUNDLGVBQWU7UUFFekMsSUFBSUQsaUJBQWlCLEdBQUc7WUFDdEIsTUFBTUUsYUFBYSxJQUFJLENBQUNDLGFBQWEsSUFDL0JDLGtCQUFrQlYsT0FBT1EsYUFDekJHLGVBQWVELGlCQUNmRSxVQUFVRCxhQUFhRSxVQUFVLElBQ2pDQyxTQUFTQyxPQUFPSDtZQUV0QlIsYUFBYVksbUJBQVUsQ0FBQ0MsVUFBVSxDQUFDSDtRQUNyQztRQUVBLE9BQU9WO0lBQ1Q7SUFFQSxPQUFPYywyQ0FBMkNDLFFBQVEsRUFBRVgsVUFBVSxFQUFFSixVQUFVLEVBQUVnQixPQUFPLEVBQUU7UUFBRSxPQUFPbEIsb0JBQWUsQ0FBQ2dCLDBDQUEwQyxDQUFDbkIsbUJBQW1Cb0IsVUFBVVgsWUFBWUosWUFBWWdCO0lBQVU7QUFDbE8ifQ==
|
package/lib/node/nonTerminal.js
CHANGED
|
@@ -12,7 +12,7 @@ const _necessary = require("necessary");
|
|
|
12
12
|
const _occamlexers = require("occam-lexers");
|
|
13
13
|
const _node = /*#__PURE__*/ _interop_require_default(require("../mixins/node"));
|
|
14
14
|
const _nonTerminalNode = /*#__PURE__*/ _interop_require_default(require("../parseTree/nonTerminalNode"));
|
|
15
|
-
const
|
|
15
|
+
const _precedence = require("../precedence");
|
|
16
16
|
function _interop_require_default(obj) {
|
|
17
17
|
return obj && obj.__esModule ? obj : {
|
|
18
18
|
default: obj
|
|
@@ -109,18 +109,10 @@ class NonTerminalNode {
|
|
|
109
109
|
});
|
|
110
110
|
return significantTokens;
|
|
111
111
|
}
|
|
112
|
-
getAssociativity() {
|
|
113
|
-
const associativity = Math.sign(this.precedence);
|
|
114
|
-
return associativity;
|
|
115
|
-
}
|
|
116
112
|
getMultiplicity() {
|
|
117
113
|
const childNodesLength = this.childNodes.length, multiplicity = childNodesLength; ///
|
|
118
114
|
return multiplicity;
|
|
119
115
|
}
|
|
120
|
-
getStrength() {
|
|
121
|
-
const strength = Math.abs(this.precedence);
|
|
122
|
-
return strength;
|
|
123
|
-
}
|
|
124
116
|
isSingular() {
|
|
125
117
|
const multiplicity = this.getMultiplicity(), singular = multiplicity === 1;
|
|
126
118
|
return singular;
|
|
@@ -145,40 +137,30 @@ class NonTerminalNode {
|
|
|
145
137
|
}
|
|
146
138
|
return unprecedented;
|
|
147
139
|
}
|
|
148
|
-
comparePrecedence(
|
|
140
|
+
comparePrecedence(precedence, first, last) {
|
|
149
141
|
let precedenceCompares;
|
|
150
142
|
if (false) {
|
|
151
143
|
///
|
|
152
144
|
} else if (this.precedence === null) {
|
|
153
145
|
precedenceCompares = false;
|
|
154
|
-
} else if (this.precedence ===
|
|
146
|
+
} else if (this.precedence === _precedence.transparentPrecedence) {
|
|
155
147
|
precedenceCompares = this.childNodes.some((childNode)=>{
|
|
156
|
-
const childNodePrecedenceCompares = childNode.comparePrecedence(
|
|
148
|
+
const childNodePrecedenceCompares = childNode.comparePrecedence(precedence, first, last);
|
|
157
149
|
if (childNodePrecedenceCompares) {
|
|
158
150
|
return true;
|
|
159
151
|
}
|
|
160
152
|
});
|
|
161
153
|
} else {
|
|
162
|
-
|
|
163
|
-
strength = this.getStrength();
|
|
164
|
-
if (false) {
|
|
165
|
-
///
|
|
166
|
-
} else if (first) {
|
|
167
|
-
precedenceCompares = parentAssociativity < 0 ? strength < parentStrength : strength <= parentStrength;
|
|
168
|
-
} else if (last) {
|
|
169
|
-
precedenceCompares = parentAssociativity < 0 ? strength <= parentStrength : strength < parentStrength;
|
|
170
|
-
} else {
|
|
171
|
-
precedenceCompares = strength < parentStrength;
|
|
172
|
-
}
|
|
154
|
+
precedenceCompares = this.precedence.compare(precedence, first, last);
|
|
173
155
|
}
|
|
174
156
|
return precedenceCompares;
|
|
175
157
|
}
|
|
176
158
|
compareChildNodesPrecedence() {
|
|
177
159
|
let childNodesPrecedenceCompares = false;
|
|
178
|
-
if (this.precedence !== null && this.precedence !==
|
|
179
|
-
const multiplicity = this.getMultiplicity(), lastIndex = multiplicity - 1, firstIndex = 0
|
|
160
|
+
if (this.precedence !== null && this.precedence !== _precedence.transparentPrecedence) {
|
|
161
|
+
const multiplicity = this.getMultiplicity(), lastIndex = multiplicity - 1, firstIndex = 0;
|
|
180
162
|
childNodesPrecedenceCompares = this.childNodes.some((childNode, index)=>{
|
|
181
|
-
const last = index === lastIndex, first = index === firstIndex, childNodePrecedenceCompares = childNode.comparePrecedence(
|
|
163
|
+
const last = index === lastIndex, first = index === firstIndex, childNodePrecedenceCompares = childNode.comparePrecedence(this.precedence, first, last);
|
|
182
164
|
if (childNodePrecedenceCompares) {
|
|
183
165
|
return true;
|
|
184
166
|
}
|
|
@@ -256,4 +238,4 @@ function cloneChildNodes(childNodes) {
|
|
|
256
238
|
return childNodes;
|
|
257
239
|
}
|
|
258
240
|
|
|
259
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ub2RlL25vblRlcm1pbmFsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcbmltcG9ydCB7IHNwZWNpYWxTeW1ib2xzIH0gZnJvbSBcIm9jY2FtLWxleGVyc1wiO1xuXG5pbXBvcnQgbm9kZU1peGlucyBmcm9tIFwiLi4vbWl4aW5zL25vZGVcIjtcbmltcG9ydCBOb25UZXJtaW5hbE5vZGVQYXJzZVRyZWUgZnJvbSBcIi4uL3BhcnNlVHJlZS9ub25UZXJtaW5hbE5vZGVcIjtcblxuaW1wb3J0IHsgVFJBTlNQQVJFTlRfUFJFQ0VERU5DRSB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcblxuY29uc3QgeyBtYXRjaCB9ID0gYXJyYXlVdGlsaXRpZXMsXG4gICAgICB7IG9wYXF1ZTogb3BhcXVlU3BlY2lhbFN5bWJvbCAsIHNlbWlPcGFxdWU6IHNlbWlPcGFxdWVTcGVjaWFsU3ltYm9sIH0gPSBzcGVjaWFsU3ltYm9scztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTm9uVGVybWluYWxOb2RlIHtcbiAgY29uc3RydWN0b3IocnVsZU5hbWUsIHBhcmVudE5vZGUsIGNoaWxkTm9kZXMsIHByZWNlZGVuY2UsIG9wYWNpdHkpIHtcbiAgICB0aGlzLnJ1bGVOYW1lID0gcnVsZU5hbWU7XG4gICAgdGhpcy5wYXJlbnROb2RlID0gcGFyZW50Tm9kZTtcbiAgICB0aGlzLmNoaWxkTm9kZXMgPSBjaGlsZE5vZGVzO1xuICAgIHRoaXMucHJlY2VkZW5jZSA9IHByZWNlZGVuY2U7XG4gICAgdGhpcy5vcGFjaXR5ID0gb3BhY2l0eTtcbiAgfVxuXG4gIGdldFJ1bGVOYW1lKCkge1xuICAgIHJldHVybiB0aGlzLnJ1bGVOYW1lO1xuICB9XG5cbiAgZ2V0UGFyZW50Tm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnROb2RlO1xuICB9XG5cbiAgZ2V0Q2hpbGROb2RlcygpIHtcbiAgICByZXR1cm4gdGhpcy5jaGlsZE5vZGVzO1xuICB9XG5cbiAgZ2V0UHJlY2VkZW5jZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wcmVjZWRlbmNlO1xuICB9XG5cbiAgZ2V0T3BhY2l0eSgpIHtcbiAgICByZXR1cm4gdGhpcy5vcGFjaXR5O1xuICB9XG5cbiAgc2V0UnVsZU5hbWUocnVsZU5hbWUpIHtcbiAgICB0aGlzLnJ1bGVOYW1lID0gcnVsZU5hbWU7XG4gIH1cblxuICBzZXRQYXJlbnROb2RlKHBhcmVudE5vZGUpIHtcbiAgICB0aGlzLnBhcmVudE5vZGUgPSBwYXJlbnROb2RlO1xuICB9XG5cbiAgc2V0Q2hpbGROb2RlcyhjaGlsZE5vZGVzKSB7XG4gICAgY29uc3Qgc3RhcnRJbmRleCA9IDAsXG4gICAgICAgICAgZGVsZXRlQ291bnQgPSBJbmZpbml0eSxcbiAgICAgICAgICBhZGRlZENoaWxkTm9kZXMgPSBjaGlsZE5vZGVzOyAgLy8vXG5cbiAgICB0aGlzLnNwbGljZUNoaWxkTm9kZXMoc3RhcnRJbmRleCwgZGVsZXRlQ291bnQsIGFkZGVkQ2hpbGROb2Rlcyk7XG4gIH1cblxuICBzZXRQcmVjZWRlbmNlKHByZWNlZGVuY2UpIHtcbiAgICB0aGlzLnByZWNlZGVuY2UgPSBwcmVjZWRlbmNlO1xuICB9XG5cbiAgc2V0T3BhY2l0eShvcGFjaXR5KSB7XG4gICAgdGhpcy5vcGFjaXR5ID0gb3BhY2l0eTtcbiAgfVxuXG4gIGlzT3BhcXVlKCkge1xuICAgIGNvbnN0IG9wYXF1ZSA9ICh0aGlzLm9wYWNpdHkgPT09IG9wYXF1ZVNwZWNpYWxTeW1ib2wpO1xuXG4gICAgcmV0dXJuIG9wYXF1ZTtcbiAgfVxuXG4gIGlzU2VtaU9wYXF1ZSgpIHtcbiAgICBjb25zdCBzZW1pT3BhcXVlID0gKHRoaXMub3BhY2l0eSA9PT0gc2VtaU9wYXF1ZVNwZWNpYWxTeW1ib2wpO1xuXG4gICAgcmV0dXJuIHNlbWlPcGFxdWU7XG4gIH1cblxuICBpc1RyYW5zcGFyZW50KCkge1xuICAgIGNvbnN0IHNlbWlPcGFxdWUgPSAodGhpcy5vcGFjaXR5ID09PSBudWxsKTtcblxuICAgIHJldHVybiBzZW1pT3BhcXVlO1xuICB9XG5cbiAgaXNUZXJtaW5hbE5vZGUoKSB7XG4gICAgY29uc3QgdGVybWluYWxOb2RlID0gZmFsc2U7XG5cbiAgICByZXR1cm4gdGVybWluYWxOb2RlO1xuICB9XG5cbiAgaXNOb25UZXJtaW5hbE5vZGUoKSB7XG4gICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gdHJ1ZTtcblxuICAgIHJldHVybiBub25UZXJtaW5hbE5vZGU7XG4gIH1cblxuICBnZXREZXNjZW5kYW50Tm9kZXMoZGVzY2VuZGFudE5vZGVzKSB7XG4gICAgcmV0dXJuIGRlc2NlbmRhbnROb2RlcztcbiAgfVxuXG4gIGdldEZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4KHRva2Vucykge1xuICAgIGxldCBmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleDtcblxuICAgIHRoaXMuZm9yd2FyZHNTb21lQ2hpbGROb2RlKChjaGlsZE5vZGUpID0+IHtcbiAgICAgIGNvbnN0IG5vZGUgPSBjaGlsZE5vZGU7IC8vL1xuXG4gICAgICBmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCA9IG5vZGUuZ2V0Rmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgodG9rZW5zKTtcblxuICAgICAgaWYgKGZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4ICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4O1xuICB9XG5cbiAgZ2V0TGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCh0b2tlbnMpIHtcbiAgICBsZXQgbGFzdFNpZ25pZmljYW50VG9rZW5JbmRleDtcblxuICAgIHRoaXMuYmFja3dhcmRzU29tZUNoaWxkTm9kZSgoY2hpbGROb2RlKSA9PiB7XG4gICAgICBjb25zdCBub2RlID0gY2hpbGROb2RlOyAvLy9cblxuICAgICAgbGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCA9IG5vZGUuZ2V0TGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCh0b2tlbnMpO1xuXG4gICAgICBpZiAobGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4O1xuICB9XG5cbiAgZ2V0U2lnbmlmaWNhbnRUb2tlbnMoc2lnbmlmaWNhbnRUb2tlbnMgPSBbXSkge1xuICAgIHRoaXMuY2hpbGROb2Rlcy5mb3JFYWNoKChjaGlsZE5vZGUpID0+IHtcbiAgICAgIGNoaWxkTm9kZS5nZXRTaWduaWZpY2FudFRva2VucyhzaWduaWZpY2FudFRva2Vucyk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2lnbmlmaWNhbnRUb2tlbnM7XG4gIH1cblxuICBnZXRBc3NvY2lhdGl2aXR5KCkge1xuICAgIGNvbnN0IGFzc29jaWF0aXZpdHkgPSBNYXRoLnNpZ24odGhpcy5wcmVjZWRlbmNlKTtcblxuICAgIHJldHVybiBhc3NvY2lhdGl2aXR5O1xuICB9XG5cbiAgZ2V0TXVsdGlwbGljaXR5KCkge1xuICAgIGNvbnN0IGNoaWxkTm9kZXNMZW5ndGggPSB0aGlzLmNoaWxkTm9kZXMubGVuZ3RoLFxuICAgICAgICAgIG11bHRpcGxpY2l0eSA9IGNoaWxkTm9kZXNMZW5ndGg7ICAvLy9cblxuICAgIHJldHVybiBtdWx0aXBsaWNpdHk7XG4gIH1cblxuICBnZXRTdHJlbmd0aCgpIHtcbiAgICBjb25zdCBzdHJlbmd0aCA9IE1hdGguYWJzKHRoaXMucHJlY2VkZW5jZSk7XG5cbiAgICByZXR1cm4gc3RyZW5ndGg7XG4gIH1cblxuICBpc1Npbmd1bGFyKCkge1xuICAgIGNvbnN0IG11bHRpcGxpY2l0eSA9IHRoaXMuZ2V0TXVsdGlwbGljaXR5KCksXG4gICAgICAgICAgc2luZ3VsYXIgPSAobXVsdGlwbGljaXR5ID09PSAxKTtcblxuICAgIHJldHVybiBzaW5ndWxhcjtcbiAgfVxuXG4gIGlzSW52YWxpZCgpIHtcbiAgICBsZXQgaW52YWxpZCA9IGZhbHNlO1xuXG4gICAgY29uc3QgZW1wdHkgPSB0aGlzLmlzRW1wdHkoKSxcbiAgICAgICAgICB1bnByZWNlZGVudGVkID0gdGhpcy5pc1VucHJlY2VkZW50ZWQoKTtcblxuICAgIGlmIChlbXB0eSB8fCB1bnByZWNlZGVudGVkKSB7XG4gICAgICBpbnZhbGlkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW52YWxpZDtcbiAgfVxuXG4gIGlzRW1wdHkoKSB7XG4gICAgY29uc3QgbXVsdGlwbGljaXR5ID0gdGhpcy5nZXRNdWx0aXBsaWNpdHkoKSxcbiAgICAgICAgICBlbXB0eSA9IChtdWx0aXBsaWNpdHkgPT09IDApO1xuXG4gICAgcmV0dXJuIGVtcHR5O1xuICB9XG5cbiAgaXNVbnByZWNlZGVudGVkKCkge1xuICAgIGxldCB1bnByZWNlZGVudGVkID0gZmFsc2U7XG5cbiAgICBjb25zdCBjaGlsZE5vZGVzUHJlY2VkZW5jZUNvbXBhcmVzID0gdGhpcy5jb21wYXJlQ2hpbGROb2Rlc1ByZWNlZGVuY2UoKTtcblxuICAgIGlmIChjaGlsZE5vZGVzUHJlY2VkZW5jZUNvbXBhcmVzKSB7XG4gICAgICB1bnByZWNlZGVudGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5wcmVjZWRlbnRlZDtcbiAgfVxuXG4gIGNvbXBhcmVQcmVjZWRlbmNlKGFzc29jaWF0aXZpdHksIHN0cmVuZ3RoLCBmaXJzdCwgbGFzdCkge1xuICAgIGxldCBwcmVjZWRlbmNlQ29tcGFyZXM7XG5cbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIC8vL1xuICAgIH0gZWxzZSBpZiAodGhpcy5wcmVjZWRlbmNlID09PSBudWxsKSB7XG4gICAgICBwcmVjZWRlbmNlQ29tcGFyZXMgPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMucHJlY2VkZW5jZSA9PT0gVFJBTlNQQVJFTlRfUFJFQ0VERU5DRSkge1xuICAgICAgcHJlY2VkZW5jZUNvbXBhcmVzID0gdGhpcy5jaGlsZE5vZGVzLnNvbWUoKGNoaWxkTm9kZSkgPT4ge1xuICAgICAgICBjb25zdCBjaGlsZE5vZGVQcmVjZWRlbmNlQ29tcGFyZXMgPSBjaGlsZE5vZGUuY29tcGFyZVByZWNlZGVuY2UoYXNzb2NpYXRpdml0eSwgc3RyZW5ndGgsIGZpcnN0LCBsYXN0KTtcblxuICAgICAgICBpZiAoY2hpbGROb2RlUHJlY2VkZW5jZUNvbXBhcmVzKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBwYXJlbnRTdHJlbmd0aCA9IHN0cmVuZ3RoLCAgLy8vXG4gICAgICAgICAgICBwYXJlbnRBc3NvY2lhdGl2aXR5ID0gYXNzb2NpYXRpdml0eTsgIC8vL1xuXG4gICAgICBzdHJlbmd0aCA9IHRoaXMuZ2V0U3RyZW5ndGgoKTtcblxuICAgICAgaWYgKGZhbHNlKSB7XG4gICAgICAgIC8vL1xuICAgICAgfSBlbHNlIGlmIChmaXJzdCkge1xuICAgICAgICBwcmVjZWRlbmNlQ29tcGFyZXMgPSAocGFyZW50QXNzb2NpYXRpdml0eSA8IDApID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJlbmd0aCA8IHBhcmVudFN0cmVuZ3RoKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJlbmd0aCA8PSBwYXJlbnRTdHJlbmd0aCk7XG4gICAgICB9IGVsc2UgaWYgKGxhc3QpIHtcbiAgICAgICAgcHJlY2VkZW5jZUNvbXBhcmVzID0gKHBhcmVudEFzc29jaWF0aXZpdHkgPCAwKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmVuZ3RoIDw9IHBhcmVudFN0cmVuZ3RoKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyZW5ndGggPCBwYXJlbnRTdHJlbmd0aCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcmVjZWRlbmNlQ29tcGFyZXMgPSAoc3RyZW5ndGggPCBwYXJlbnRTdHJlbmd0aCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWNlZGVuY2VDb21wYXJlcztcbiAgfVxuXG4gIGNvbXBhcmVDaGlsZE5vZGVzUHJlY2VkZW5jZSgpIHtcbiAgICBsZXQgY2hpbGROb2Rlc1ByZWNlZGVuY2VDb21wYXJlcyA9IGZhbHNlO1xuXG4gICAgaWYgKCh0aGlzLnByZWNlZGVuY2UgIT09IG51bGwpICYmICh0aGlzLnByZWNlZGVuY2UgIT09IFRSQU5TUEFSRU5UX1BSRUNFREVOQ0UpKSB7XG4gICAgICBjb25zdCBtdWx0aXBsaWNpdHkgPSB0aGlzLmdldE11bHRpcGxpY2l0eSgpLFxuICAgICAgICAgICAgbGFzdEluZGV4ID0gKG11bHRpcGxpY2l0eSAtIDEpLFxuICAgICAgICAgICAgZmlyc3RJbmRleCA9IDAsXG4gICAgICAgICAgICBzdHJlbmd0aCA9IHRoaXMuZ2V0U3RyZW5ndGgoKSxcbiAgICAgICAgICAgIGFzc29jaWF0aXZpdHkgPSB0aGlzLmdldEFzc29jaWF0aXZpdHkoKTtcblxuICAgICAgY2hpbGROb2Rlc1ByZWNlZGVuY2VDb21wYXJlcyA9IHRoaXMuY2hpbGROb2Rlcy5zb21lKChjaGlsZE5vZGUsIGluZGV4KSA9PiB7ICAvLy9cbiAgICAgICAgY29uc3QgbGFzdCA9IChpbmRleCA9PT0gbGFzdEluZGV4KSxcbiAgICAgICAgICAgICAgZmlyc3QgPSAoaW5kZXggPT09IGZpcnN0SW5kZXgpLFxuICAgICAgICAgICAgICBjaGlsZE5vZGVQcmVjZWRlbmNlQ29tcGFyZXMgPSBjaGlsZE5vZGUuY29tcGFyZVByZWNlZGVuY2UoYXNzb2NpYXRpdml0eSwgc3RyZW5ndGgsIGZpcnN0LCBsYXN0KTtcblxuICAgICAgICBpZiAoY2hpbGROb2RlUHJlY2VkZW5jZUNvbXBhcmVzKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBjaGlsZE5vZGVzUHJlY2VkZW5jZUNvbXBhcmVzO1xuICB9XG5cbiAgYXNQYXJzZVRyZWUodG9rZW5zKSB7XG4gICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gdGhpcywgIC8vL1xuICAgICAgICAgIG5vblRlcm1pbmFsTm9kZVBhcnNlVHJlZSA9IE5vblRlcm1pbmFsTm9kZVBhcnNlVHJlZS5mcm9tTm9uVGVybWluYWxOb2RlQW5kVG9rZW5zKG5vblRlcm1pbmFsTm9kZSwgdG9rZW5zKSxcbiAgICAgICAgICBwYXJzZVRyZWUgPSBub25UZXJtaW5hbE5vZGVQYXJzZVRyZWU7ICAvLy9cblxuICAgIHJldHVybiBwYXJzZVRyZWU7XG4gIH1cblxuICBtYXRjaChub2RlLCBkZXB0aCA9IEluZmluaXR5LCBleGFjdGx5ID0gZmFsc2UpIHtcbiAgICBsZXQgbWF0Y2hlcyA9IGZhbHNlO1xuXG4gICAgY29uc3Qgbm9kZU5vblRlcm1pbmFsTm9kZSA9IG5vZGUuaXNOb25UZXJtaW5hbE5vZGUoKTtcblxuICAgIGlmIChub2RlTm9uVGVybWluYWxOb2RlKSB7XG4gICAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBub2RlLCAvLy9cbiAgICAgICAgICAgIG5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lID0gbm9uVGVybWluYWxOb2RlLmdldFJ1bGVOYW1lKCk7XG5cbiAgICAgIGlmICh0aGlzLnJ1bGVOYW1lID09PSBub25UZXJtaW5hbE5vZGVSdWxlTmFtZSkge1xuICAgICAgICBjb25zdCBub25UZXJtaW5hbE5vZGVPcGFjaXR5ID0gbm9uVGVybWluYWxOb2RlLmdldE9wYWNpdHkoKTtcblxuICAgICAgICBpZiAodGhpcy5vcGFjaXR5ID09PSBub25UZXJtaW5hbE5vZGVPcGFjaXR5KSB7XG4gICAgICAgICAgY29uc3QgcHJlY2VkZW5jZSA9IHRoaXMuZ2V0UHJlY2VkZW5jZSgpLFxuICAgICAgICAgICAgICAgIG5vblRlcm1pbmFsTm9kZVByZWNlZGVuY2UgPSBub25UZXJtaW5hbE5vZGUuZ2V0UHJlY2VkZW5jZSgpO1xuXG4gICAgICAgICAgaWYgKHByZWNlZGVuY2UgPT09IG5vblRlcm1pbmFsTm9kZVByZWNlZGVuY2UpIHtcbiAgICAgICAgICAgIGRlcHRoLS07XG5cbiAgICAgICAgICAgIGlmIChkZXB0aCA9PT0gMCkge1xuICAgICAgICAgICAgICBtYXRjaGVzID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMgPSBub25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpO1xuXG4gICAgICAgICAgICAgIG1hdGNoZXMgPSBtYXRjaCh0aGlzLmNoaWxkTm9kZXMsIG5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMsIChjaGlsZE5vZGUsIG5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkTm9kZU1hdGNoZXNOb25UZXJtaW5hbE5vZGVDaGlsZE5vZGUgPSBjaGlsZE5vZGUubWF0Y2gobm9uVGVybWluYWxOb2RlQ2hpbGROb2RlLCBkZXB0aCwgZXhhY3RseSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoY2hpbGROb2RlTWF0Y2hlc05vblRlcm1pbmFsTm9kZUNoaWxkTm9kZSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbWF0Y2hlcztcbiAgfVxuXG4gIHJld3JpdGUoc3RhdGUpIHtcbiAgICBjb25zdCByZXdyaXR0ZW5Ob25UZXJtaW5hbE5vZGUgPSB0aGlzOyAgLy8vXG5cbiAgICByZXR1cm4gcmV3cml0dGVuTm9uVGVybWluYWxOb2RlO1xuICB9XG5cbiAgZGVzdHJveSgpIHtcbiAgICB0aGlzLmZvckVhY2hDaGlsZE5vZGUoKGNoaWxkTm9kZSkgPT4ge1xuICAgICAgY2hpbGROb2RlLmRlc3Ryb3koKTtcbiAgICB9KTtcblxuICAgIHRoaXMucGFyZW50Tm9kZSA9IG51bGw7XG5cbiAgICB0aGlzLmNoaWxkTm9kZXMgPSBudWxsO1xuICB9XG5cbiAgY2xvbmUoLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgY29uc3QgQ2xhc3MgPSB0aGlzLmNvbnN0cnVjdG9yLFxuICAgICAgICAgIHBhcmVudE5vZGUgPSBudWxsLFxuICAgICAgICAgIHJ1bGVOYW1lID0gdGhpcy5ydWxlTmFtZSxcbiAgICAgICAgICBjaGlsZE5vZGVzID0gY2xvbmVDaGlsZE5vZGVzKHRoaXMuY2hpbGROb2RlcyksXG4gICAgICAgICAgcHJlY2VkZW5jZSA9IHRoaXMucHJlY2VkZW5jZSxcbiAgICAgICAgICBvcGFjaXR5ID0gdGhpcy5vcGFjaXR5LFxuICAgICAgICAgIG5vblRlcm1pbmFsTm9kZSA9IG5ldyBDbGFzcyhydWxlTmFtZSwgcGFyZW50Tm9kZSwgY2hpbGROb2RlcywgcHJlY2VkZW5jZSwgb3BhY2l0eSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcblxuICAgIG5vblRlcm1pbmFsTm9kZS5zZXRDaGlsZE5vZGVzUGFyZW50Tm9kZSgpO1xuXG4gICAgcmV0dXJuIG5vblRlcm1pbmFsTm9kZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tUnVsZU5hbWVDaGlsZE5vZGVzUHJlY2VkZW5jZUFuZE9wYWNpdHkoQ2xhc3MsIHJ1bGVOYW1lLCBjaGlsZE5vZGVzLCBwcmVjZWRlbmNlLCBvcGFjaXR5LCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBpZiAob3BhY2l0eSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBvcGFjaXR5ID0gcHJlY2VkZW5jZTsgLy8vXG5cbiAgICAgIHByZWNlZGVuY2UgPSBjaGlsZE5vZGVzOyAvLy9cblxuICAgICAgY2hpbGROb2RlcyA9IHJ1bGVOYW1lOyAgLy8vXG5cbiAgICAgIHJ1bGVOYW1lID0gQ2xhc3M7IC8vL1xuXG4gICAgICBDbGFzcyA9IE5vblRlcm1pbmFsTm9kZTsgIC8vL1xuICAgIH1cblxuICAgIGNvbnN0IHBhcmVudE5vZGUgPSBudWxsLFxuICAgICAgICAgIG5vblRlcm1pbmFsTm9kZSA9IG5ldyBDbGFzcyhydWxlTmFtZSwgcGFyZW50Tm9kZSwgY2hpbGROb2RlcywgcHJlY2VkZW5jZSwgb3BhY2l0eSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcblxuICAgIG5vblRlcm1pbmFsTm9kZS5zZXRDaGlsZE5vZGVzUGFyZW50Tm9kZSgpO1xuXG4gICAgcmV0dXJuIG5vblRlcm1pbmFsTm9kZTtcbiAgfVxufVxuXG5PYmplY3QuYXNzaWduKE5vblRlcm1pbmFsTm9kZS5wcm90b3R5cGUsIG5vZGVNaXhpbnMpO1xuXG5mdW5jdGlvbiBjbG9uZUNoaWxkTm9kZXMoY2hpbGROb2Rlcykge1xuICBjaGlsZE5vZGVzID0gY2hpbGROb2Rlcy5tYXAoKGNoaWxkTm9kZSkgPT4geyAgLy8vXG4gICAgY2hpbGROb2RlID0gY2hpbGROb2RlLmNsb25lKCk7ICAvLy9cblxuICAgIHJldHVybiBjaGlsZE5vZGU7XG4gIH0pO1xuXG4gIHJldHVybiBjaGlsZE5vZGVzO1xufVxuIl0sIm5hbWVzIjpbIk5vblRlcm1pbmFsTm9kZSIsIm1hdGNoIiwiYXJyYXlVdGlsaXRpZXMiLCJvcGFxdWUiLCJvcGFxdWVTcGVjaWFsU3ltYm9sIiwic2VtaU9wYXF1ZSIsInNlbWlPcGFxdWVTcGVjaWFsU3ltYm9sIiwic3BlY2lhbFN5bWJvbHMiLCJydWxlTmFtZSIsInBhcmVudE5vZGUiLCJjaGlsZE5vZGVzIiwicHJlY2VkZW5jZSIsIm9wYWNpdHkiLCJnZXRSdWxlTmFtZSIsImdldFBhcmVudE5vZGUiLCJnZXRDaGlsZE5vZGVzIiwiZ2V0UHJlY2VkZW5jZSIsImdldE9wYWNpdHkiLCJzZXRSdWxlTmFtZSIsInNldFBhcmVudE5vZGUiLCJzZXRDaGlsZE5vZGVzIiwic3RhcnRJbmRleCIsImRlbGV0ZUNvdW50IiwiSW5maW5pdHkiLCJhZGRlZENoaWxkTm9kZXMiLCJzcGxpY2VDaGlsZE5vZGVzIiwic2V0UHJlY2VkZW5jZSIsInNldE9wYWNpdHkiLCJpc09wYXF1ZSIsImlzU2VtaU9wYXF1ZSIsImlzVHJhbnNwYXJlbnQiLCJpc1Rlcm1pbmFsTm9kZSIsInRlcm1pbmFsTm9kZSIsImlzTm9uVGVybWluYWxOb2RlIiwibm9uVGVybWluYWxOb2RlIiwiZ2V0RGVzY2VuZGFudE5vZGVzIiwiZGVzY2VuZGFudE5vZGVzIiwiZ2V0Rmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgiLCJ0b2tlbnMiLCJmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCIsImZvcndhcmRzU29tZUNoaWxkTm9kZSIsImNoaWxkTm9kZSIsIm5vZGUiLCJnZXRMYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4IiwibGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCIsImJhY2t3YXJkc1NvbWVDaGlsZE5vZGUiLCJnZXRTaWduaWZpY2FudFRva2VucyIsInNpZ25pZmljYW50VG9rZW5zIiwiZm9yRWFjaCIsImdldEFzc29jaWF0aXZpdHkiLCJhc3NvY2lhdGl2aXR5IiwiTWF0aCIsInNpZ24iLCJnZXRNdWx0aXBsaWNpdHkiLCJjaGlsZE5vZGVzTGVuZ3RoIiwibGVuZ3RoIiwibXVsdGlwbGljaXR5IiwiZ2V0U3RyZW5ndGgiLCJzdHJlbmd0aCIsImFicyIsImlzU2luZ3VsYXIiLCJzaW5ndWxhciIsImlzSW52YWxpZCIsImludmFsaWQiLCJlbXB0eSIsImlzRW1wdHkiLCJ1bnByZWNlZGVudGVkIiwiaXNVbnByZWNlZGVudGVkIiwiY2hpbGROb2Rlc1ByZWNlZGVuY2VDb21wYXJlcyIsImNvbXBhcmVDaGlsZE5vZGVzUHJlY2VkZW5jZSIsImNvbXBhcmVQcmVjZWRlbmNlIiwiZmlyc3QiLCJsYXN0IiwicHJlY2VkZW5jZUNvbXBhcmVzIiwiVFJBTlNQQVJFTlRfUFJFQ0VERU5DRSIsInNvbWUiLCJjaGlsZE5vZGVQcmVjZWRlbmNlQ29tcGFyZXMiLCJwYXJlbnRTdHJlbmd0aCIsInBhcmVudEFzc29jaWF0aXZpdHkiLCJsYXN0SW5kZXgiLCJmaXJzdEluZGV4IiwiaW5kZXgiLCJhc1BhcnNlVHJlZSIsIm5vblRlcm1pbmFsTm9kZVBhcnNlVHJlZSIsIk5vblRlcm1pbmFsTm9kZVBhcnNlVHJlZSIsImZyb21Ob25UZXJtaW5hbE5vZGVBbmRUb2tlbnMiLCJwYXJzZVRyZWUiLCJkZXB0aCIsImV4YWN0bHkiLCJtYXRjaGVzIiwibm9kZU5vblRlcm1pbmFsTm9kZSIsIm5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lIiwibm9uVGVybWluYWxOb2RlT3BhY2l0eSIsIm5vblRlcm1pbmFsTm9kZVByZWNlZGVuY2UiLCJub25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzIiwibm9uVGVybWluYWxOb2RlQ2hpbGROb2RlIiwiY2hpbGROb2RlTWF0Y2hlc05vblRlcm1pbmFsTm9kZUNoaWxkTm9kZSIsInJld3JpdGUiLCJzdGF0ZSIsInJld3JpdHRlbk5vblRlcm1pbmFsTm9kZSIsImRlc3Ryb3kiLCJmb3JFYWNoQ2hpbGROb2RlIiwiY2xvbmUiLCJyZW1haW5pbmdBcmd1bWVudHMiLCJDbGFzcyIsImNsb25lQ2hpbGROb2RlcyIsInNldENoaWxkTm9kZXNQYXJlbnROb2RlIiwiZnJvbVJ1bGVOYW1lQ2hpbGROb2Rlc1ByZWNlZGVuY2VBbmRPcGFjaXR5IiwidW5kZWZpbmVkIiwiT2JqZWN0IiwiYXNzaWduIiwicHJvdG90eXBlIiwibm9kZU1peGlucyIsIm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBYUE7OztlQUFxQkE7OzsyQkFYVTs2QkFDQTs2REFFUjt3RUFDYzsyQkFFRTs7Ozs7O0FBRXZDLE1BQU0sRUFBRUMsS0FBSyxFQUFFLEdBQUdDLHlCQUFjLEVBQzFCLEVBQUVDLFFBQVFDLG1CQUFtQixFQUFHQyxZQUFZQyx1QkFBdUIsRUFBRSxHQUFHQywyQkFBYztBQUU3RSxNQUFNUDtJQUNuQixZQUFZUSxRQUFRLEVBQUVDLFVBQVUsRUFBRUMsVUFBVSxFQUFFQyxVQUFVLEVBQUVDLE9BQU8s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
|
|
241
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ub2RlL25vblRlcm1pbmFsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcbmltcG9ydCB7IHNwZWNpYWxTeW1ib2xzIH0gZnJvbSBcIm9jY2FtLWxleGVyc1wiO1xuXG5pbXBvcnQgbm9kZU1peGlucyBmcm9tIFwiLi4vbWl4aW5zL25vZGVcIjtcbmltcG9ydCBOb25UZXJtaW5hbE5vZGVQYXJzZVRyZWUgZnJvbSBcIi4uL3BhcnNlVHJlZS9ub25UZXJtaW5hbE5vZGVcIjtcblxuaW1wb3J0IHsgdHJhbnNwYXJlbnRQcmVjZWRlbmNlIH0gZnJvbSBcIi4uL3ByZWNlZGVuY2VcIjtcblxuY29uc3QgeyBtYXRjaCB9ID0gYXJyYXlVdGlsaXRpZXMsXG4gICAgICB7IG9wYXF1ZTogb3BhcXVlU3BlY2lhbFN5bWJvbCAsIHNlbWlPcGFxdWU6IHNlbWlPcGFxdWVTcGVjaWFsU3ltYm9sIH0gPSBzcGVjaWFsU3ltYm9scztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTm9uVGVybWluYWxOb2RlIHtcbiAgY29uc3RydWN0b3IocnVsZU5hbWUsIHBhcmVudE5vZGUsIGNoaWxkTm9kZXMsIHByZWNlZGVuY2UsIG9wYWNpdHkpIHtcbiAgICB0aGlzLnJ1bGVOYW1lID0gcnVsZU5hbWU7XG4gICAgdGhpcy5wYXJlbnROb2RlID0gcGFyZW50Tm9kZTtcbiAgICB0aGlzLmNoaWxkTm9kZXMgPSBjaGlsZE5vZGVzO1xuICAgIHRoaXMucHJlY2VkZW5jZSA9IHByZWNlZGVuY2U7XG4gICAgdGhpcy5vcGFjaXR5ID0gb3BhY2l0eTtcbiAgfVxuXG4gIGdldFJ1bGVOYW1lKCkge1xuICAgIHJldHVybiB0aGlzLnJ1bGVOYW1lO1xuICB9XG5cbiAgZ2V0UGFyZW50Tm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnROb2RlO1xuICB9XG5cbiAgZ2V0Q2hpbGROb2RlcygpIHtcbiAgICByZXR1cm4gdGhpcy5jaGlsZE5vZGVzO1xuICB9XG5cbiAgZ2V0UHJlY2VkZW5jZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wcmVjZWRlbmNlO1xuICB9XG5cbiAgZ2V0T3BhY2l0eSgpIHtcbiAgICByZXR1cm4gdGhpcy5vcGFjaXR5O1xuICB9XG5cbiAgc2V0UnVsZU5hbWUocnVsZU5hbWUpIHtcbiAgICB0aGlzLnJ1bGVOYW1lID0gcnVsZU5hbWU7XG4gIH1cblxuICBzZXRQYXJlbnROb2RlKHBhcmVudE5vZGUpIHtcbiAgICB0aGlzLnBhcmVudE5vZGUgPSBwYXJlbnROb2RlO1xuICB9XG5cbiAgc2V0Q2hpbGROb2RlcyhjaGlsZE5vZGVzKSB7XG4gICAgY29uc3Qgc3RhcnRJbmRleCA9IDAsXG4gICAgICAgICAgZGVsZXRlQ291bnQgPSBJbmZpbml0eSxcbiAgICAgICAgICBhZGRlZENoaWxkTm9kZXMgPSBjaGlsZE5vZGVzOyAgLy8vXG5cbiAgICB0aGlzLnNwbGljZUNoaWxkTm9kZXMoc3RhcnRJbmRleCwgZGVsZXRlQ291bnQsIGFkZGVkQ2hpbGROb2Rlcyk7XG4gIH1cblxuICBzZXRQcmVjZWRlbmNlKHByZWNlZGVuY2UpIHtcbiAgICB0aGlzLnByZWNlZGVuY2UgPSBwcmVjZWRlbmNlO1xuICB9XG5cbiAgc2V0T3BhY2l0eShvcGFjaXR5KSB7XG4gICAgdGhpcy5vcGFjaXR5ID0gb3BhY2l0eTtcbiAgfVxuXG4gIGlzT3BhcXVlKCkge1xuICAgIGNvbnN0IG9wYXF1ZSA9ICh0aGlzLm9wYWNpdHkgPT09IG9wYXF1ZVNwZWNpYWxTeW1ib2wpO1xuXG4gICAgcmV0dXJuIG9wYXF1ZTtcbiAgfVxuXG4gIGlzU2VtaU9wYXF1ZSgpIHtcbiAgICBjb25zdCBzZW1pT3BhcXVlID0gKHRoaXMub3BhY2l0eSA9PT0gc2VtaU9wYXF1ZVNwZWNpYWxTeW1ib2wpO1xuXG4gICAgcmV0dXJuIHNlbWlPcGFxdWU7XG4gIH1cblxuICBpc1RyYW5zcGFyZW50KCkge1xuICAgIGNvbnN0IHNlbWlPcGFxdWUgPSAodGhpcy5vcGFjaXR5ID09PSBudWxsKTtcblxuICAgIHJldHVybiBzZW1pT3BhcXVlO1xuICB9XG5cbiAgaXNUZXJtaW5hbE5vZGUoKSB7XG4gICAgY29uc3QgdGVybWluYWxOb2RlID0gZmFsc2U7XG5cbiAgICByZXR1cm4gdGVybWluYWxOb2RlO1xuICB9XG5cbiAgaXNOb25UZXJtaW5hbE5vZGUoKSB7XG4gICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gdHJ1ZTtcblxuICAgIHJldHVybiBub25UZXJtaW5hbE5vZGU7XG4gIH1cblxuICBnZXREZXNjZW5kYW50Tm9kZXMoZGVzY2VuZGFudE5vZGVzKSB7XG4gICAgcmV0dXJuIGRlc2NlbmRhbnROb2RlcztcbiAgfVxuXG4gIGdldEZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4KHRva2Vucykge1xuICAgIGxldCBmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleDtcblxuICAgIHRoaXMuZm9yd2FyZHNTb21lQ2hpbGROb2RlKChjaGlsZE5vZGUpID0+IHtcbiAgICAgIGNvbnN0IG5vZGUgPSBjaGlsZE5vZGU7IC8vL1xuXG4gICAgICBmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCA9IG5vZGUuZ2V0Rmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgodG9rZW5zKTtcblxuICAgICAgaWYgKGZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4ICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4O1xuICB9XG5cbiAgZ2V0TGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCh0b2tlbnMpIHtcbiAgICBsZXQgbGFzdFNpZ25pZmljYW50VG9rZW5JbmRleDtcblxuICAgIHRoaXMuYmFja3dhcmRzU29tZUNoaWxkTm9kZSgoY2hpbGROb2RlKSA9PiB7XG4gICAgICBjb25zdCBub2RlID0gY2hpbGROb2RlOyAvLy9cblxuICAgICAgbGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCA9IG5vZGUuZ2V0TGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCh0b2tlbnMpO1xuXG4gICAgICBpZiAobGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4O1xuICB9XG5cbiAgZ2V0U2lnbmlmaWNhbnRUb2tlbnMoc2lnbmlmaWNhbnRUb2tlbnMgPSBbXSkge1xuICAgIHRoaXMuY2hpbGROb2Rlcy5mb3JFYWNoKChjaGlsZE5vZGUpID0+IHtcbiAgICAgIGNoaWxkTm9kZS5nZXRTaWduaWZpY2FudFRva2VucyhzaWduaWZpY2FudFRva2Vucyk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2lnbmlmaWNhbnRUb2tlbnM7XG4gIH1cblxuICBnZXRNdWx0aXBsaWNpdHkoKSB7XG4gICAgY29uc3QgY2hpbGROb2Rlc0xlbmd0aCA9IHRoaXMuY2hpbGROb2Rlcy5sZW5ndGgsXG4gICAgICAgICAgbXVsdGlwbGljaXR5ID0gY2hpbGROb2Rlc0xlbmd0aDsgIC8vL1xuXG4gICAgcmV0dXJuIG11bHRpcGxpY2l0eTtcbiAgfVxuXG4gIGlzU2luZ3VsYXIoKSB7XG4gICAgY29uc3QgbXVsdGlwbGljaXR5ID0gdGhpcy5nZXRNdWx0aXBsaWNpdHkoKSxcbiAgICAgICAgICBzaW5ndWxhciA9IChtdWx0aXBsaWNpdHkgPT09IDEpO1xuXG4gICAgcmV0dXJuIHNpbmd1bGFyO1xuICB9XG5cbiAgaXNJbnZhbGlkKCkge1xuICAgIGxldCBpbnZhbGlkID0gZmFsc2U7XG5cbiAgICBjb25zdCBlbXB0eSA9IHRoaXMuaXNFbXB0eSgpLFxuICAgICAgICAgIHVucHJlY2VkZW50ZWQgPSB0aGlzLmlzVW5wcmVjZWRlbnRlZCgpO1xuXG4gICAgaWYgKGVtcHR5IHx8IHVucHJlY2VkZW50ZWQpIHtcbiAgICAgIGludmFsaWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBpbnZhbGlkO1xuICB9XG5cbiAgaXNFbXB0eSgpIHtcbiAgICBjb25zdCBtdWx0aXBsaWNpdHkgPSB0aGlzLmdldE11bHRpcGxpY2l0eSgpLFxuICAgICAgICAgIGVtcHR5ID0gKG11bHRpcGxpY2l0eSA9PT0gMCk7XG5cbiAgICByZXR1cm4gZW1wdHk7XG4gIH1cblxuICBpc1VucHJlY2VkZW50ZWQoKSB7XG4gICAgbGV0IHVucHJlY2VkZW50ZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IGNoaWxkTm9kZXNQcmVjZWRlbmNlQ29tcGFyZXMgPSB0aGlzLmNvbXBhcmVDaGlsZE5vZGVzUHJlY2VkZW5jZSgpO1xuXG4gICAgaWYgKGNoaWxkTm9kZXNQcmVjZWRlbmNlQ29tcGFyZXMpIHtcbiAgICAgIHVucHJlY2VkZW50ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiB1bnByZWNlZGVudGVkO1xuICB9XG5cbiAgY29tcGFyZVByZWNlZGVuY2UocHJlY2VkZW5jZSwgZmlyc3QsIGxhc3QpIHtcbiAgICBsZXQgcHJlY2VkZW5jZUNvbXBhcmVzO1xuXG4gICAgaWYgKGZhbHNlKSB7XG4gICAgICAvLy9cbiAgICB9IGVsc2UgaWYgKHRoaXMucHJlY2VkZW5jZSA9PT0gbnVsbCkge1xuICAgICAgcHJlY2VkZW5jZUNvbXBhcmVzID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmICh0aGlzLnByZWNlZGVuY2UgPT09IHRyYW5zcGFyZW50UHJlY2VkZW5jZSkge1xuICAgICAgcHJlY2VkZW5jZUNvbXBhcmVzID0gdGhpcy5jaGlsZE5vZGVzLnNvbWUoKGNoaWxkTm9kZSkgPT4ge1xuICAgICAgICBjb25zdCBjaGlsZE5vZGVQcmVjZWRlbmNlQ29tcGFyZXMgPSBjaGlsZE5vZGUuY29tcGFyZVByZWNlZGVuY2UocHJlY2VkZW5jZSwgZmlyc3QsIGxhc3QpO1xuXG4gICAgICAgIGlmIChjaGlsZE5vZGVQcmVjZWRlbmNlQ29tcGFyZXMpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHByZWNlZGVuY2VDb21wYXJlcyA9IHRoaXMucHJlY2VkZW5jZS5jb21wYXJlKHByZWNlZGVuY2UsIGZpcnN0LCBsYXN0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJlY2VkZW5jZUNvbXBhcmVzO1xuICB9XG5cbiAgY29tcGFyZUNoaWxkTm9kZXNQcmVjZWRlbmNlKCkge1xuICAgIGxldCBjaGlsZE5vZGVzUHJlY2VkZW5jZUNvbXBhcmVzID0gZmFsc2U7XG5cbiAgICBpZiAoKHRoaXMucHJlY2VkZW5jZSAhPT0gbnVsbCkgJiYgKHRoaXMucHJlY2VkZW5jZSAhPT0gdHJhbnNwYXJlbnRQcmVjZWRlbmNlKSkge1xuICAgICAgY29uc3QgbXVsdGlwbGljaXR5ID0gdGhpcy5nZXRNdWx0aXBsaWNpdHkoKSxcbiAgICAgICAgICAgIGxhc3RJbmRleCA9IChtdWx0aXBsaWNpdHkgLSAxKSxcbiAgICAgICAgICAgIGZpcnN0SW5kZXggPSAwO1xuXG4gICAgICBjaGlsZE5vZGVzUHJlY2VkZW5jZUNvbXBhcmVzID0gdGhpcy5jaGlsZE5vZGVzLnNvbWUoKGNoaWxkTm9kZSwgaW5kZXgpID0+IHsgIC8vL1xuICAgICAgICBjb25zdCBsYXN0ID0gKGluZGV4ID09PSBsYXN0SW5kZXgpLFxuICAgICAgICAgICAgICBmaXJzdCA9IChpbmRleCA9PT0gZmlyc3RJbmRleCksXG4gICAgICAgICAgICAgIGNoaWxkTm9kZVByZWNlZGVuY2VDb21wYXJlcyA9IGNoaWxkTm9kZS5jb21wYXJlUHJlY2VkZW5jZSh0aGlzLnByZWNlZGVuY2UsIGZpcnN0LCBsYXN0KTtcblxuICAgICAgICBpZiAoY2hpbGROb2RlUHJlY2VkZW5jZUNvbXBhcmVzKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBjaGlsZE5vZGVzUHJlY2VkZW5jZUNvbXBhcmVzO1xuICB9XG5cbiAgYXNQYXJzZVRyZWUodG9rZW5zKSB7XG4gICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gdGhpcywgIC8vL1xuICAgICAgICAgIG5vblRlcm1pbmFsTm9kZVBhcnNlVHJlZSA9IE5vblRlcm1pbmFsTm9kZVBhcnNlVHJlZS5mcm9tTm9uVGVybWluYWxOb2RlQW5kVG9rZW5zKG5vblRlcm1pbmFsTm9kZSwgdG9rZW5zKSxcbiAgICAgICAgICBwYXJzZVRyZWUgPSBub25UZXJtaW5hbE5vZGVQYXJzZVRyZWU7ICAvLy9cblxuICAgIHJldHVybiBwYXJzZVRyZWU7XG4gIH1cblxuICBtYXRjaChub2RlLCBkZXB0aCA9IEluZmluaXR5LCBleGFjdGx5ID0gZmFsc2UpIHtcbiAgICBsZXQgbWF0Y2hlcyA9IGZhbHNlO1xuXG4gICAgY29uc3Qgbm9kZU5vblRlcm1pbmFsTm9kZSA9IG5vZGUuaXNOb25UZXJtaW5hbE5vZGUoKTtcblxuICAgIGlmIChub2RlTm9uVGVybWluYWxOb2RlKSB7XG4gICAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBub2RlLCAvLy9cbiAgICAgICAgICAgIG5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lID0gbm9uVGVybWluYWxOb2RlLmdldFJ1bGVOYW1lKCk7XG5cbiAgICAgIGlmICh0aGlzLnJ1bGVOYW1lID09PSBub25UZXJtaW5hbE5vZGVSdWxlTmFtZSkge1xuICAgICAgICBjb25zdCBub25UZXJtaW5hbE5vZGVPcGFjaXR5ID0gbm9uVGVybWluYWxOb2RlLmdldE9wYWNpdHkoKTtcblxuICAgICAgICBpZiAodGhpcy5vcGFjaXR5ID09PSBub25UZXJtaW5hbE5vZGVPcGFjaXR5KSB7XG4gICAgICAgICAgY29uc3QgcHJlY2VkZW5jZSA9IHRoaXMuZ2V0UHJlY2VkZW5jZSgpLFxuICAgICAgICAgICAgICAgIG5vblRlcm1pbmFsTm9kZVByZWNlZGVuY2UgPSBub25UZXJtaW5hbE5vZGUuZ2V0UHJlY2VkZW5jZSgpO1xuXG4gICAgICAgICAgaWYgKHByZWNlZGVuY2UgPT09IG5vblRlcm1pbmFsTm9kZVByZWNlZGVuY2UpIHtcbiAgICAgICAgICAgIGRlcHRoLS07XG5cbiAgICAgICAgICAgIGlmIChkZXB0aCA9PT0gMCkge1xuICAgICAgICAgICAgICBtYXRjaGVzID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMgPSBub25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpO1xuXG4gICAgICAgICAgICAgIG1hdGNoZXMgPSBtYXRjaCh0aGlzLmNoaWxkTm9kZXMsIG5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMsIChjaGlsZE5vZGUsIG5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkTm9kZU1hdGNoZXNOb25UZXJtaW5hbE5vZGVDaGlsZE5vZGUgPSBjaGlsZE5vZGUubWF0Y2gobm9uVGVybWluYWxOb2RlQ2hpbGROb2RlLCBkZXB0aCwgZXhhY3RseSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoY2hpbGROb2RlTWF0Y2hlc05vblRlcm1pbmFsTm9kZUNoaWxkTm9kZSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbWF0Y2hlcztcbiAgfVxuXG4gIHJld3JpdGUoc3RhdGUpIHtcbiAgICBjb25zdCByZXdyaXR0ZW5Ob25UZXJtaW5hbE5vZGUgPSB0aGlzOyAgLy8vXG5cbiAgICByZXR1cm4gcmV3cml0dGVuTm9uVGVybWluYWxOb2RlO1xuICB9XG5cbiAgZGVzdHJveSgpIHtcbiAgICB0aGlzLmZvckVhY2hDaGlsZE5vZGUoKGNoaWxkTm9kZSkgPT4ge1xuICAgICAgY2hpbGROb2RlLmRlc3Ryb3koKTtcbiAgICB9KTtcblxuICAgIHRoaXMucGFyZW50Tm9kZSA9IG51bGw7XG5cbiAgICB0aGlzLmNoaWxkTm9kZXMgPSBudWxsO1xuICB9XG5cbiAgY2xvbmUoLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgY29uc3QgQ2xhc3MgPSB0aGlzLmNvbnN0cnVjdG9yLFxuICAgICAgICAgIHBhcmVudE5vZGUgPSBudWxsLFxuICAgICAgICAgIHJ1bGVOYW1lID0gdGhpcy5ydWxlTmFtZSxcbiAgICAgICAgICBjaGlsZE5vZGVzID0gY2xvbmVDaGlsZE5vZGVzKHRoaXMuY2hpbGROb2RlcyksXG4gICAgICAgICAgcHJlY2VkZW5jZSA9IHRoaXMucHJlY2VkZW5jZSxcbiAgICAgICAgICBvcGFjaXR5ID0gdGhpcy5vcGFjaXR5LFxuICAgICAgICAgIG5vblRlcm1pbmFsTm9kZSA9IG5ldyBDbGFzcyhydWxlTmFtZSwgcGFyZW50Tm9kZSwgY2hpbGROb2RlcywgcHJlY2VkZW5jZSwgb3BhY2l0eSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcblxuICAgIG5vblRlcm1pbmFsTm9kZS5zZXRDaGlsZE5vZGVzUGFyZW50Tm9kZSgpO1xuXG4gICAgcmV0dXJuIG5vblRlcm1pbmFsTm9kZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tUnVsZU5hbWVDaGlsZE5vZGVzUHJlY2VkZW5jZUFuZE9wYWNpdHkoQ2xhc3MsIHJ1bGVOYW1lLCBjaGlsZE5vZGVzLCBwcmVjZWRlbmNlLCBvcGFjaXR5LCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBpZiAob3BhY2l0eSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBvcGFjaXR5ID0gcHJlY2VkZW5jZTsgLy8vXG5cbiAgICAgIHByZWNlZGVuY2UgPSBjaGlsZE5vZGVzOyAvLy9cblxuICAgICAgY2hpbGROb2RlcyA9IHJ1bGVOYW1lOyAgLy8vXG5cbiAgICAgIHJ1bGVOYW1lID0gQ2xhc3M7IC8vL1xuXG4gICAgICBDbGFzcyA9IE5vblRlcm1pbmFsTm9kZTsgIC8vL1xuICAgIH1cblxuICAgIGNvbnN0IHBhcmVudE5vZGUgPSBudWxsLFxuICAgICAgICAgIG5vblRlcm1pbmFsTm9kZSA9IG5ldyBDbGFzcyhydWxlTmFtZSwgcGFyZW50Tm9kZSwgY2hpbGROb2RlcywgcHJlY2VkZW5jZSwgb3BhY2l0eSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcblxuICAgIG5vblRlcm1pbmFsTm9kZS5zZXRDaGlsZE5vZGVzUGFyZW50Tm9kZSgpO1xuXG4gICAgcmV0dXJuIG5vblRlcm1pbmFsTm9kZTtcbiAgfVxufVxuXG5PYmplY3QuYXNzaWduKE5vblRlcm1pbmFsTm9kZS5wcm90b3R5cGUsIG5vZGVNaXhpbnMpO1xuXG5mdW5jdGlvbiBjbG9uZUNoaWxkTm9kZXMoY2hpbGROb2Rlcykge1xuICBjaGlsZE5vZGVzID0gY2hpbGROb2Rlcy5tYXAoKGNoaWxkTm9kZSkgPT4geyAgLy8vXG4gICAgY2hpbGROb2RlID0gY2hpbGROb2RlLmNsb25lKCk7ICAvLy9cblxuICAgIHJldHVybiBjaGlsZE5vZGU7XG4gIH0pO1xuXG4gIHJldHVybiBjaGlsZE5vZGVzO1xufVxuIl0sIm5hbWVzIjpbIk5vblRlcm1pbmFsTm9kZSIsIm1hdGNoIiwiYXJyYXlVdGlsaXRpZXMiLCJvcGFxdWUiLCJvcGFxdWVTcGVjaWFsU3ltYm9sIiwic2VtaU9wYXF1ZSIsInNlbWlPcGFxdWVTcGVjaWFsU3ltYm9sIiwic3BlY2lhbFN5bWJvbHMiLCJydWxlTmFtZSIsInBhcmVudE5vZGUiLCJjaGlsZE5vZGVzIiwicHJlY2VkZW5jZSIsIm9wYWNpdHkiLCJnZXRSdWxlTmFtZSIsImdldFBhcmVudE5vZGUiLCJnZXRDaGlsZE5vZGVzIiwiZ2V0UHJlY2VkZW5jZSIsImdldE9wYWNpdHkiLCJzZXRSdWxlTmFtZSIsInNldFBhcmVudE5vZGUiLCJzZXRDaGlsZE5vZGVzIiwic3RhcnRJbmRleCIsImRlbGV0ZUNvdW50IiwiSW5maW5pdHkiLCJhZGRlZENoaWxkTm9kZXMiLCJzcGxpY2VDaGlsZE5vZGVzIiwic2V0UHJlY2VkZW5jZSIsInNldE9wYWNpdHkiLCJpc09wYXF1ZSIsImlzU2VtaU9wYXF1ZSIsImlzVHJhbnNwYXJlbnQiLCJpc1Rlcm1pbmFsTm9kZSIsInRlcm1pbmFsTm9kZSIsImlzTm9uVGVybWluYWxOb2RlIiwibm9uVGVybWluYWxOb2RlIiwiZ2V0RGVzY2VuZGFudE5vZGVzIiwiZGVzY2VuZGFudE5vZGVzIiwiZ2V0Rmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgiLCJ0b2tlbnMiLCJmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCIsImZvcndhcmRzU29tZUNoaWxkTm9kZSIsImNoaWxkTm9kZSIsIm5vZGUiLCJnZXRMYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4IiwibGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCIsImJhY2t3YXJkc1NvbWVDaGlsZE5vZGUiLCJnZXRTaWduaWZpY2FudFRva2VucyIsInNpZ25pZmljYW50VG9rZW5zIiwiZm9yRWFjaCIsImdldE11bHRpcGxpY2l0eSIsImNoaWxkTm9kZXNMZW5ndGgiLCJsZW5ndGgiLCJtdWx0aXBsaWNpdHkiLCJpc1Npbmd1bGFyIiwic2luZ3VsYXIiLCJpc0ludmFsaWQiLCJpbnZhbGlkIiwiZW1wdHkiLCJpc0VtcHR5IiwidW5wcmVjZWRlbnRlZCIsImlzVW5wcmVjZWRlbnRlZCIsImNoaWxkTm9kZXNQcmVjZWRlbmNlQ29tcGFyZXMiLCJjb21wYXJlQ2hpbGROb2Rlc1ByZWNlZGVuY2UiLCJjb21wYXJlUHJlY2VkZW5jZSIsImZpcnN0IiwibGFzdCIsInByZWNlZGVuY2VDb21wYXJlcyIsInRyYW5zcGFyZW50UHJlY2VkZW5jZSIsInNvbWUiLCJjaGlsZE5vZGVQcmVjZWRlbmNlQ29tcGFyZXMiLCJjb21wYXJlIiwibGFzdEluZGV4IiwiZmlyc3RJbmRleCIsImluZGV4IiwiYXNQYXJzZVRyZWUiLCJub25UZXJtaW5hbE5vZGVQYXJzZVRyZWUiLCJOb25UZXJtaW5hbE5vZGVQYXJzZVRyZWUiLCJmcm9tTm9uVGVybWluYWxOb2RlQW5kVG9rZW5zIiwicGFyc2VUcmVlIiwiZGVwdGgiLCJleGFjdGx5IiwibWF0Y2hlcyIsIm5vZGVOb25UZXJtaW5hbE5vZGUiLCJub25UZXJtaW5hbE5vZGVSdWxlTmFtZSIsIm5vblRlcm1pbmFsTm9kZU9wYWNpdHkiLCJub25UZXJtaW5hbE5vZGVQcmVjZWRlbmNlIiwibm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcyIsIm5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZSIsImNoaWxkTm9kZU1hdGNoZXNOb25UZXJtaW5hbE5vZGVDaGlsZE5vZGUiLCJyZXdyaXRlIiwic3RhdGUiLCJyZXdyaXR0ZW5Ob25UZXJtaW5hbE5vZGUiLCJkZXN0cm95IiwiZm9yRWFjaENoaWxkTm9kZSIsImNsb25lIiwicmVtYWluaW5nQXJndW1lbnRzIiwiQ2xhc3MiLCJjbG9uZUNoaWxkTm9kZXMiLCJzZXRDaGlsZE5vZGVzUGFyZW50Tm9kZSIsImZyb21SdWxlTmFtZUNoaWxkTm9kZXNQcmVjZWRlbmNlQW5kT3BhY2l0eSIsInVuZGVmaW5lZCIsIk9iamVjdCIsImFzc2lnbiIsInByb3RvdHlwZSIsIm5vZGVNaXhpbnMiLCJtYXAiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWFBOzs7ZUFBcUJBOzs7MkJBWFU7NkJBQ0E7NkRBRVI7d0VBQ2M7NEJBRUM7Ozs7OztBQUV0QyxNQUFNLEVBQUVDLEtBQUssRUFBRSxHQUFHQyx5QkFBYyxFQUMxQixFQUFFQyxRQUFRQyxtQkFBbUIsRUFBR0MsWUFBWUMsdUJBQXVCLEVBQUUsR0FBR0MsMkJBQWM7QUFFN0UsTUFBTVA7SUFDbkIsWUFBWVEsUUFBUSxFQUFFQyxVQUFVLEVBQUVDLFVBQVUsRUFBRUMsVUFBVSxFQUFFQyxPQUFPLENBQUU7UUFDakUsSUFBSSxDQUFDSixRQUFRLEdBQUdBO1FBQ2hCLElBQUksQ0FBQ0MsVUFBVSxHQUFHQTtRQUNsQixJQUFJLENBQUNDLFVBQVUsR0FBR0E7UUFDbEIsSUFBSSxDQUFDQyxVQUFVLEdBQUdBO1FBQ2xCLElBQUksQ0FBQ0MsT0FBTyxHQUFHQTtJ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
|
|
@@ -10,7 +10,7 @@ Object.defineProperty(exports, "default", {
|
|
|
10
10
|
});
|
|
11
11
|
const _frame = /*#__PURE__*/ _interop_require_default(require("../../frame"));
|
|
12
12
|
const _nonTerminal = /*#__PURE__*/ _interop_require_default(require("../../part/nonTerminal"));
|
|
13
|
-
const
|
|
13
|
+
const _precedence = require("../../precedence");
|
|
14
14
|
const _partTypes = require("../../partTypes");
|
|
15
15
|
function _interop_require_default(obj) {
|
|
16
16
|
return obj && obj.__esModule ? obj : {
|
|
@@ -35,7 +35,7 @@ class IsolatedPartPart extends _nonTerminal.default {
|
|
|
35
35
|
}, back);
|
|
36
36
|
}
|
|
37
37
|
compose(frame) {
|
|
38
|
-
const childNodes = frame.getChildNodes(), precedence =
|
|
38
|
+
const childNodes = frame.getChildNodes(), precedence = _precedence.isolatedPrecedence;
|
|
39
39
|
frame = _frame.default.fromChildNodesAndPrecedence(childNodes, precedence);
|
|
40
40
|
return frame;
|
|
41
41
|
}
|
|
@@ -49,4 +49,4 @@ class IsolatedPartPart extends _nonTerminal.default {
|
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYXJ0L25vblRlcm1pbmFsL2lzb2xhdGVkUGFydC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IEZyYW1lIGZyb20gXCIuLi8uLi9mcmFtZVwiO1xuaW1wb3J0IE5vblRlcm1pbmFsUGFydCBmcm9tIFwiLi4vLi4vcGFydC9ub25UZXJtaW5hbFwiO1xuXG5pbXBvcnQgeyBpc29sYXRlZFByZWNlZGVuY2UgfSBmcm9tIFwiLi4vLi4vcHJlY2VkZW5jZVwiO1xuaW1wb3J0IHsgSXNvbGF0ZWRQYXJ0UGFydFR5cGUgfSBmcm9tIFwiLi4vLi4vcGFydFR5cGVzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIElzb2xhdGVkUGFydFBhcnQgZXh0ZW5kcyBOb25UZXJtaW5hbFBhcnQge1xuICBjb25zdHJ1Y3Rvcih0eXBlLCBwYXJ0KSB7XG4gICAgc3VwZXIodHlwZSk7XG5cbiAgICB0aGlzLnBhcnQgPSBwYXJ0O1xuICB9XG5cbiAgZ2V0UGFydCgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJ0O1xuICB9XG5cbiAgaXNDb25zdW1pbmcocnVsZU1hcCwgdmlzaXRlZFJ1bGVzID0gW10sIGNoZWNrRm9yQ3V0UGFydHMgPSBmYWxzZSkgeyByZXR1cm4gdGhpcy5wYXJ0LmlzQ29uc3VtaW5nKHJ1bGVNYXAsIHZpc2l0ZWRSdWxlcywgY2hlY2tGb3JDdXRQYXJ0cyk7IH1cblxuICBwYXJzZShmcmFtZSwgc3RhdGUsIGZvcndhcmQsIGJhY2spIHtcbiAgICByZXR1cm4gdGhpcy5wYXJ0LnBhcnNlKGZyYW1lLCBzdGF0ZSwgKGZyYW1lLCBzdGF0ZSwgYmFjaykgPT4ge1xuICAgICAgZnJhbWUgPSB0aGlzLmNvbXBvc2UoZnJhbWUpO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChmcmFtZSwgc3RhdGUsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgY29tcG9zZShmcmFtZSkge1xuICAgIGNvbnN0IGNoaWxkTm9kZXMgPSBmcmFtZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgICAgcHJlY2VkZW5jZSA9IGlzb2xhdGVkUHJlY2VkZW5jZTtcblxuICAgIGZyYW1lID0gRnJhbWUuZnJvbUNoaWxkTm9kZXNBbmRQcmVjZWRlbmNlKGNoaWxkTm9kZXMsIHByZWNlZGVuY2UpO1xuXG4gICAgcmV0dXJuIGZyYW1lO1xuICB9XG5cbiAgYXNTdHJpbmcoKSB7XG4gICAgY29uc3QgcGFydFN0cmluZyA9IHRoaXMucGFydC5hc1N0cmluZygpLFxuICAgICAgICAgIHN0cmluZyA9IGAoICR7cGFydFN0cmluZ30gKWA7XG5cbiAgICByZXR1cm4gc3RyaW5nO1xuICB9XG5cbiAgc3RhdGljIGZyb21QYXJ0KHBhcnQpIHtcbiAgICBjb25zdCB0eXBlID0gSXNvbGF0ZWRQYXJ0UGFydFR5cGUsXG4gICAgICAgICAgaXNvbGF0ZWRQYXJ0UGFydCA9IG5ldyBJc29sYXRlZFBhcnRQYXJ0KHR5cGUsIHBhcnQpO1xuXG4gICAgcmV0dXJuIGlzb2xhdGVkUGFydFBhcnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJJc29sYXRlZFBhcnRQYXJ0IiwiTm9uVGVybWluYWxQYXJ0IiwidHlwZSIsInBhcnQiLCJnZXRQYXJ0IiwiaXNDb25zdW1pbmciLCJydWxlTWFwIiwidmlzaXRlZFJ1bGVzIiwiY2hlY2tGb3JDdXRQYXJ0cyIsInBhcnNlIiwiZnJhbWUiLCJzdGF0ZSIsImZvcndhcmQiLCJiYWNrIiwiY29tcG9zZSIsImNoaWxkTm9kZXMiLCJnZXRDaGlsZE5vZGVzIiwicHJlY2VkZW5jZSIsImlzb2xhdGVkUHJlY2VkZW5jZSIsIkZyYW1lIiwiZnJvbUNoaWxkTm9kZXNBbmRQcmVjZWRlbmNlIiwiYXNTdHJpbmciLCJwYXJ0U3RyaW5nIiwic3RyaW5nIiwiZnJvbVBhcnQiLCJJc29sYXRlZFBhcnRQYXJ0VHlwZSIsImlzb2xhdGVkUGFydFBhcnQiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVFBOzs7ZUFBcUJBOzs7OERBTkg7b0VBQ1U7NEJBRU87MkJBQ0U7Ozs7OztBQUV0QixNQUFNQSx5QkFBeUJDLG9CQUFlO0lBQzNELFlBQVlDLElBQUksRUFBRUMsSUFBSSxDQUFFO1FBQ3RCLEtBQUssQ0FBQ0Q7UUFFTixJQUFJLENBQUNDLElBQUksR0FBR0E7SUFDZDtJQUVBQyxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUNELElBQUk7SUFDbEI7SUFFQUUsWUFBWUMsT0FBTyxFQUFFQyxlQUFlLEVBQUUsRUFBRUMsbUJBQW1CLEtBQUssRUFBRTtRQUFFLE9BQU8sSUFBSSxDQUFDTCxJQUFJLENBQUNFLFdBQVcsQ0FBQ0MsU0FBU0MsY0FBY0M7SUFBbUI7SUFFM0lDLE1BQU1DLEtBQUssRUFBRUMsS0FBSyxFQUFFQyxPQUFPLEVBQUVDLElBQUksRUFBRTtRQUNqQyxPQUFPLElBQUksQ0FBQ1YsSUFBSSxDQUFDTSxLQUFLLENBQUNDLE9BQU9DLE9BQU8sQ0FBQ0QsT0FBT0MsT0FBT0U7WUFDbERILFFBQVEsSUFBSSxDQUFDSSxPQUFPLENBQUNKO1lBRXJCLE9BQU9FLFFBQVFGLE9BQU9DLE9BQU9FO1FBQy9CLEdBQUdBO0lBQ0w7SUFFQUMsUUFBUUosS0FBSyxFQUFFO1FBQ2IsTUFBTUssYUFBYUwsTUFBTU0sYUFBYSxJQUNoQ0MsYUFBYUMsOEJBQWtCO1FBRXJDUixRQUFRUyxjQUFLLENBQUNDLDJCQUEyQixDQUFDTCxZQUFZRTtRQUV0RCxPQUFPUDtJQUNUO0lBRUFXLFdBQVc7UUFDVCxNQUFNQyxhQUFhLElBQUksQ0FBQ25CLElBQUksQ0FBQ2tCLFFBQVEsSUFDL0JFLFNBQVMsQ0FBQyxFQUFFLEVBQUVELFdBQVcsRUFBRSxDQUFDO1FBRWxDLE9BQU9DO0lBQ1Q7SUFFQSxPQUFPQyxTQUFTckIsSUFBSSxFQUFFO1FBQ3BCLE1BQU1ELE9BQU91QiwrQkFBb0IsRUFDM0JDLG1CQUFtQixJQUFJMUIsaUJBQWlCRSxNQUFNQztRQUVwRCxPQUFPdUI7SUFDVDtBQUNGIn0=
|
package/lib/partChoice.js
CHANGED
|
@@ -8,7 +8,6 @@ Object.defineProperty(exports, "default", {
|
|
|
8
8
|
return PartChoice;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
-
const _necessary = require("necessary");
|
|
12
11
|
const _frame = /*#__PURE__*/ _interop_require_wildcard(require("./frame"));
|
|
13
12
|
const _constants = require("./constants");
|
|
14
13
|
function _getRequireWildcardCache(nodeInterop) {
|
|
@@ -52,7 +51,6 @@ function _interop_require_wildcard(obj, nodeInterop) {
|
|
|
52
51
|
}
|
|
53
52
|
return newObj;
|
|
54
53
|
}
|
|
55
|
-
const { SPACE_CHARACTER } = _necessary.characters;
|
|
56
54
|
class PartChoice {
|
|
57
55
|
constructor(part, precedence){
|
|
58
56
|
this.part = part;
|
|
@@ -84,13 +82,7 @@ class PartChoice {
|
|
|
84
82
|
return frame;
|
|
85
83
|
}
|
|
86
84
|
asString() {
|
|
87
|
-
|
|
88
|
-
const partString = this.part.asString();
|
|
89
|
-
string = partString; ///
|
|
90
|
-
if (this.precedence !== null) {
|
|
91
|
-
const precedence = this.precedence === _constants.TRANSPARENT_PRECEDENCE ? SPACE_CHARACTER : this.precedence;
|
|
92
|
-
string = `${string} (${precedence})`;
|
|
93
|
-
}
|
|
85
|
+
const partString = this.part.asString(), precedenceString = this.precedence !== null ? this.precedence.asString() : _constants.EMPTY_STRING, string = `${partString}${precedenceString}`;
|
|
94
86
|
return string;
|
|
95
87
|
}
|
|
96
88
|
static fromPart(part) {
|
|
@@ -103,4 +95,4 @@ class PartChoice {
|
|
|
103
95
|
}
|
|
104
96
|
}
|
|
105
97
|
|
|
106
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9wYXJ0Q2hvaWNlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgRnJhbWUgZnJvbSBcIi4vZnJhbWVcIjtcblxuaW1wb3J0IHsgZW1wdHlGcmFtZSB9IGZyb20gXCIuL2ZyYW1lXCI7XG5pbXBvcnQgeyBFTVBUWV9TVFJJTkcgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGFydENob2ljZSB7XG4gIGNvbnN0cnVjdG9yKHBhcnQsIHByZWNlZGVuY2UpIHtcbiAgICB0aGlzLnBhcnQgPSBwYXJ0O1xuICAgIHRoaXMucHJlY2VkZW5jZSA9IHByZWNlZGVuY2U7XG4gIH1cblxuICBnZXRQYXJ0KCkge1xuICAgIHJldHVybiB0aGlzLnBhcnQ7XG4gIH1cblxuICBnZXRQcmVjZWRlbmNlKCkge1xuICAgIHJldHVybiB0aGlzLnByZWNlZGVuY2U7XG4gIH1cblxuICBpc0NvbnN1bWluZyhydWxlTWFwLCB2aXNpdGVkUnVsZXMgPSBbXSkgeyByZXR1cm4gdGhpcy5wYXJ0LmlzQ29uc3VtaW5nKHJ1bGVNYXAsIHZpc2l0ZWRSdWxlcyk7IH1cblxuICBwYXJzZShmcmFtZSwgc3RhdGUsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBzYXZlZEZyYW1lID0gZnJhbWU7IC8vL1xuXG4gICAgcmV0dXJuIHRoaXMucGFydC5wYXJzZShlbXB0eUZyYW1lLCBzdGF0ZSwgKGZyYW1lLCBzdGF0ZSwgYmFjaykgPT4ge1xuICAgICAgZnJhbWUgPSB0aGlzLmNvbXBvc2Uoc2F2ZWRGcmFtZSwgZnJhbWUpO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChmcmFtZSwgc3RhdGUsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgY29tcG9zZShmcmFtZSwgcGFydEZyYW1lKSB7XG4gICAgZnJhbWUgPSBmcmFtZS5tZXJnZShwYXJ0RnJhbWUpO1xuXG4gICAgbGV0IHByZWNlZGVuY2U7XG5cbiAgICBjb25zdCBjaGlsZE5vZGVzID0gZnJhbWUuZ2V0Q2hpbGROb2RlcygpO1xuXG4gICAgcHJlY2VkZW5jZSA9IGZyYW1lLmdldFByZWNlZGVuY2UoKTtcblxuICAgIHByZWNlZGVuY2UgPSBwcmVjZWRlbmNlIHx8IHRoaXMucHJlY2VkZW5jZTsgLy8vXG5cbiAgICBmcmFtZSA9IEZyYW1lLmZyb21DaGlsZE5vZGVzQW5kUHJlY2VkZW5jZShjaGlsZE5vZGVzLCBwcmVjZWRlbmNlKTtcblxuICAgIHJldHVybiBmcmFtZTtcbiAgfVxuXG4gIGFzU3RyaW5nKCkge1xuICAgIGNvbnN0IHBhcnRTdHJpbmcgPSB0aGlzLnBhcnQuYXNTdHJpbmcoKSxcbiAgICAgICAgICBwcmVjZWRlbmNlU3RyaW5nID0gKHRoaXMucHJlY2VkZW5jZSAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByZWNlZGVuY2UuYXNTdHJpbmcoKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1QVFlfU1RSSU5HLFxuICAgICAgICAgIHN0cmluZyA9IGAke3BhcnRTdHJpbmd9JHtwcmVjZWRlbmNlU3RyaW5nfWA7XG5cbiAgICByZXR1cm4gc3RyaW5nO1xuICB9XG5cbiAgc3RhdGljIGZyb21QYXJ0KHBhcnQpIHtcbiAgICBjb25zdCBwcmVjZWRlbmNlID0gbnVsbCxcbiAgICAgICAgICBwYXJ0Q2hvaWNlID0gbmV3IFBhcnRDaG9pY2UocGFydCwgcHJlY2VkZW5jZSk7XG5cbiAgICByZXR1cm4gcGFydENob2ljZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tUGFydEFuZFByZWNlZGVuY2UocGFydCwgcHJlY2VkZW5jZSkge1xuICAgIGNvbnN0IHBhcnRDaG9pY2UgPSBuZXcgUGFydENob2ljZShwYXJ0LCBwcmVjZWRlbmNlKTtcblxuICAgIHJldHVybiBwYXJ0Q2hvaWNlO1xuICB9XG59XG4iXSwibmFtZXMiOlsiUGFydENob2ljZSIsInBhcnQiLCJwcmVjZWRlbmNlIiwiZ2V0UGFydCIsImdldFByZWNlZGVuY2UiLCJpc0NvbnN1bWluZyIsInJ1bGVNYXAiLCJ2aXNpdGVkUnVsZXMiLCJwYXJzZSIsImZyYW1lIiwic3RhdGUiLCJmb3J3YXJkIiwiYmFjayIsInNhdmVkRnJhbWUiLCJlbXB0eUZyYW1lIiwiY29tcG9zZSIsInBhcnRGcmFtZSIsIm1lcmdlIiwiY2hpbGROb2RlcyIsImdldENoaWxkTm9kZXMiLCJGcmFtZSIsImZyb21DaGlsZE5vZGVzQW5kUHJlY2VkZW5jZSIsImFzU3RyaW5nIiwicGFydFN0cmluZyIsInByZWNlZGVuY2VTdHJpbmciLCJFTVBUWV9TVFJJTkciLCJzdHJpbmciLCJmcm9tUGFydCIsInBhcnRDaG9pY2UiLCJmcm9tUGFydEFuZFByZWNlZGVuY2UiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQU9BOzs7ZUFBcUJBOzs7K0RBTEg7MkJBR1c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVkLE1BQU1BO0lBQ25CLFlBQVlDLElBQUksRUFBRUMsVUFBVSxDQUFFO1FBQzVCLElBQUksQ0FBQ0QsSUFBSSxHQUFHQTtRQUNaLElBQUksQ0FBQ0MsVUFBVSxHQUFHQTtJQUNwQjtJQUVBQyxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUNGLElBQUk7SUFDbEI7SUFFQUcsZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUNGLFVBQVU7SUFDeEI7SUFFQUcsWUFBWUMsT0FBTyxFQUFFQyxlQUFlLEVBQUUsRUFBRTtRQUFFLE9BQU8sSUFBSSxDQUFDTixJQUFJLENBQUNJLFdBQVcsQ0FBQ0MsU0FBU0M7SUFBZTtJQUUvRkMsTUFBTUMsS0FBSyxFQUFFQyxLQUFLLEVBQUVDLE9BQU8sRUFBRUMsSUFBSSxFQUFFO1FBQ2pDLE1BQU1DLGFBQWFKLE9BQU8sR0FBRztRQUU3QixPQUFPLElBQUksQ0FBQ1IsSUFBSSxDQUFDTyxLQUFLLENBQUNNLGlCQUFVLEVBQUVKLE9BQU8sQ0FBQ0QsT0FBT0MsT0FBT0U7WUFDdkRILFFBQVEsSUFBSSxDQUFDTSxPQUFPLENBQUNGLFlBQVlKO1lBRWpDLE9BQU9FLFFBQVFGLE9BQU9DLE9BQU9FO1FBQy9CLEdBQUdBO0lBQ0w7SUFFQUcsUUFBUU4sS0FBSyxFQUFFTyxTQUFTLEVBQUU7UUFDeEJQLFFBQVFBLE1BQU1RLEtBQUssQ0FBQ0Q7UUFFcEIsSUFBSWQ7UUFFSixNQUFNZ0IsYUFBYVQsTUFBTVUsYUFBYTtRQUV0Q2pCLGFBQWFPLE1BQU1MLGFBQWE7UUFFaENGLGFBQWFBLGNBQWMsSUFBSSxDQUFDQSxVQUFVLEVBQUUsR0FBRztRQUUvQ08sUUFBUVcsY0FBSyxDQUFDQywyQkFBMkIsQ0FBQ0gsWUFBWWhCO1FBRXRELE9BQU9PO0lBQ1Q7SUFFQWEsV0FBVztRQUNULE1BQU1DLGFBQWEsSUFBSSxDQUFDdEIsSUFBSSxDQUFDcUIsUUFBUSxJQUMvQkUsbUJBQW1CLEFBQUMsSUFBSSxDQUFDdEIsVUFBVSxLQUFLLE9BQ2xCLElBQUksQ0FBQ0EsVUFBVSxDQUFDb0IsUUFBUSxLQUN0QkcsdUJBQVksRUFDcENDLFNBQVMsR0FBR0gsYUFBYUMsa0JBQWtCO1FBRWpELE9BQU9FO0lBQ1Q7SUFFQSxPQUFPQyxTQUFTMUIsSUFBSSxFQUFFO1FBQ3BCLE1BQU1DLGFBQWEsTUFDYjBCLGFBQWEsSUFBSTVCLFdBQVdDLE1BQU1DO1FBRXhDLE9BQU8wQjtJQUNUO0lBRUEsT0FBT0Msc0JBQXNCNUIsSUFBSSxFQUFFQyxVQUFVLEVBQUU7UUFDN0MsTUFBTTBCLGFBQWEsSUFBSTVCLFdBQVdDLE1BQU1DO1FBRXhDLE9BQU8wQjtJQUNUO0FBQ0YifQ==
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
get default () {
|
|
13
|
+
return Precedence;
|
|
14
|
+
},
|
|
15
|
+
get isolatedPrecedence () {
|
|
16
|
+
return isolatedPrecedence;
|
|
17
|
+
},
|
|
18
|
+
get transparentPrecedence () {
|
|
19
|
+
return transparentPrecedence;
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
const _constants = require("./constants");
|
|
23
|
+
class Precedence {
|
|
24
|
+
constructor(strength, associativity){
|
|
25
|
+
this.strength = strength;
|
|
26
|
+
this.associativity = associativity;
|
|
27
|
+
}
|
|
28
|
+
getStrength() {
|
|
29
|
+
return this.strength;
|
|
30
|
+
}
|
|
31
|
+
getAssociativity() {
|
|
32
|
+
return this.associativity;
|
|
33
|
+
}
|
|
34
|
+
isTransparent() {
|
|
35
|
+
const transparent = this.strength === _constants.TRANSPARENT_PRECEDENCE_STRENGTH;
|
|
36
|
+
return transparent;
|
|
37
|
+
}
|
|
38
|
+
compare(precedence, first, last) {
|
|
39
|
+
let compares;
|
|
40
|
+
const strength = precedence.getStrength(), associativity = precedence.getAssociativity();
|
|
41
|
+
if (false) {
|
|
42
|
+
///
|
|
43
|
+
} else if (first) {
|
|
44
|
+
compares = associativity < 0 ? this.strength < strength : this.strength <= strength;
|
|
45
|
+
} else if (last) {
|
|
46
|
+
compares = associativity < 0 ? this.strength <= strength : this.strength < strength;
|
|
47
|
+
} else {
|
|
48
|
+
compares = this.strength < strength;
|
|
49
|
+
}
|
|
50
|
+
return compares;
|
|
51
|
+
}
|
|
52
|
+
asString() {
|
|
53
|
+
let string;
|
|
54
|
+
const transparent = this.isTransparent();
|
|
55
|
+
if (transparent) {
|
|
56
|
+
string = _constants.SPACE_CHARACTER;
|
|
57
|
+
} else {
|
|
58
|
+
const sign = this.associativity < 0 ? _constants.MINUS_CHARACTER : _constants.EMPTY_STRING;
|
|
59
|
+
string = `${sign}${this.strength}`;
|
|
60
|
+
}
|
|
61
|
+
string = ` (${string})`; ///
|
|
62
|
+
return string;
|
|
63
|
+
}
|
|
64
|
+
static fromNumber(number) {
|
|
65
|
+
const strength = Math.abs(number), associativity = Math.sign(number), precedence = new Precedence(strength, associativity);
|
|
66
|
+
return precedence;
|
|
67
|
+
}
|
|
68
|
+
static fromNothing() {
|
|
69
|
+
const strength = null, associativity = null, precedence = new Precedence(strength, associativity);
|
|
70
|
+
return precedence;
|
|
71
|
+
}
|
|
72
|
+
static fromStrength(strength) {
|
|
73
|
+
const associativity = null, precedence = new Precedence(strength, associativity);
|
|
74
|
+
return precedence;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
const strength = _constants.TRANSPARENT_PRECEDENCE_STRENGTH;
|
|
78
|
+
const isolatedPrecedence = Precedence.fromNothing();
|
|
79
|
+
const transparentPrecedence = Precedence.fromStrength(strength);
|
|
80
|
+
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9wcmVjZWRlbmNlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFTVBUWV9TVFJJTkcsIE1JTlVTX0NIQVJBQ1RFUiwgU1BBQ0VfQ0hBUkFDVEVSLCBUUkFOU1BBUkVOVF9QUkVDRURFTkNFX1NUUkVOR1RIIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFByZWNlZGVuY2Uge1xuICBjb25zdHJ1Y3RvcihzdHJlbmd0aCwgYXNzb2NpYXRpdml0eSkge1xuICAgIHRoaXMuc3RyZW5ndGggPSBzdHJlbmd0aDtcbiAgICB0aGlzLmFzc29jaWF0aXZpdHkgPSBhc3NvY2lhdGl2aXR5O1xuICB9XG5cbiAgZ2V0U3RyZW5ndGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RyZW5ndGg7XG4gIH1cblxuICBnZXRBc3NvY2lhdGl2aXR5KCkge1xuICAgIHJldHVybiB0aGlzLmFzc29jaWF0aXZpdHk7XG4gIH1cblxuICBpc1RyYW5zcGFyZW50KCkge1xuICAgIGNvbnN0IHRyYW5zcGFyZW50ID0gKHRoaXMuc3RyZW5ndGggPT09IFRSQU5TUEFSRU5UX1BSRUNFREVOQ0VfU1RSRU5HVEgpO1xuXG4gICAgcmV0dXJuIHRyYW5zcGFyZW50O1xuICB9XG5cbiAgY29tcGFyZShwcmVjZWRlbmNlLCBmaXJzdCwgbGFzdCkge1xuICAgIGxldCBjb21wYXJlcztcblxuICAgIGNvbnN0IHN0cmVuZ3RoID0gcHJlY2VkZW5jZS5nZXRTdHJlbmd0aCgpLFxuICAgICAgICAgIGFzc29jaWF0aXZpdHkgPSBwcmVjZWRlbmNlLmdldEFzc29jaWF0aXZpdHkoKTtcblxuICAgIGlmIChmYWxzZSkge1xuICAgICAgLy8vXG4gICAgfSBlbHNlIGlmIChmaXJzdCkge1xuICAgICAgY29tcGFyZXMgPSAoYXNzb2NpYXRpdml0eSA8IDApID9cbiAgICAgICAgICAgICAgICAgICAodGhpcy5zdHJlbmd0aCA8IHN0cmVuZ3RoKSA6XG4gICAgICAgICAgICAgICAgICAgICAodGhpcy5zdHJlbmd0aCA8PSBzdHJlbmd0aCk7XG4gICAgfSBlbHNlIGlmIChsYXN0KSB7XG4gICAgICBjb21wYXJlcyA9IChhc3NvY2lhdGl2aXR5IDwgMCkgP1xuICAgICAgICAgICAgICAgICAgICh0aGlzLnN0cmVuZ3RoIDw9IHN0cmVuZ3RoKSA6XG4gICAgICAgICAgICAgICAgICAgICAodGhpcy5zdHJlbmd0aCA8IHN0cmVuZ3RoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29tcGFyZXMgPSAodGhpcy5zdHJlbmd0aCA8IHN0cmVuZ3RoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29tcGFyZXM7XG4gIH1cblxuICBhc1N0cmluZygpIHtcbiAgICBsZXQgc3RyaW5nO1xuXG4gICAgY29uc3QgdHJhbnNwYXJlbnQgPSB0aGlzLmlzVHJhbnNwYXJlbnQoKTtcblxuICAgIGlmICh0cmFuc3BhcmVudCkge1xuICAgICAgc3RyaW5nID0gU1BBQ0VfQ0hBUkFDVEVSO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzaWduID0gKHRoaXMuYXNzb2NpYXRpdml0eSA8IDApID9cbiAgICAgICAgICAgICAgICAgICAgICBNSU5VU19DSEFSQUNURVIgOlxuICAgICAgICAgICAgICAgICAgICAgICAgRU1QVFlfU1RSSU5HO1xuXG4gICAgICBzdHJpbmcgPSBgJHtzaWdufSR7dGhpcy5zdHJlbmd0aH1gO1xuICAgIH1cblxuICAgIHN0cmluZyA9IGAgKCR7c3RyaW5nfSlgOyAvLy9cblxuICAgIHJldHVybiBzdHJpbmc7XG4gIH1cblxuICBzdGF0aWMgZnJvbU51bWJlcihudW1iZXIpIHtcbiAgICBjb25zdCBzdHJlbmd0aCA9IE1hdGguYWJzKG51bWJlciksXG4gICAgICAgICAgYXNzb2NpYXRpdml0eSA9IE1hdGguc2lnbihudW1iZXIpLFxuICAgICAgICAgIHByZWNlZGVuY2UgPSBuZXcgUHJlY2VkZW5jZShzdHJlbmd0aCwgYXNzb2NpYXRpdml0eSk7XG5cbiAgICByZXR1cm4gcHJlY2VkZW5jZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tTm90aGluZygpIHtcbiAgICBjb25zdCBzdHJlbmd0aCA9IG51bGwsXG4gICAgICAgICAgYXNzb2NpYXRpdml0eSA9IG51bGwsXG4gICAgICAgICAgcHJlY2VkZW5jZSA9IG5ldyBQcmVjZWRlbmNlKHN0cmVuZ3RoLCBhc3NvY2lhdGl2aXR5KTtcblxuICAgIHJldHVybiBwcmVjZWRlbmNlO1xuICB9XG5cbiAgc3RhdGljIGZyb21TdHJlbmd0aChzdHJlbmd0aCkge1xuICAgIGNvbnN0IGFzc29jaWF0aXZpdHkgPSBudWxsLFxuICAgICAgICAgIHByZWNlZGVuY2UgPSBuZXcgUHJlY2VkZW5jZShzdHJlbmd0aCwgYXNzb2NpYXRpdml0eSk7XG5cbiAgICByZXR1cm4gcHJlY2VkZW5jZTtcbiAgfVxufVxuXG5jb25zdCBzdHJlbmd0aCA9IFRSQU5TUEFSRU5UX1BSRUNFREVOQ0VfU1RSRU5HVEg7XG5cbmV4cG9ydCBjb25zdCBpc29sYXRlZFByZWNlZGVuY2UgPSBQcmVjZWRlbmNlLmZyb21Ob3RoaW5nKCk7XG5cbmV4cG9ydCBjb25zdCB0cmFuc3BhcmVudFByZWNlZGVuY2UgPSBQcmVjZWRlbmNlLmZyb21TdHJlbmd0aChzdHJlbmd0aCk7XG4iXSwibmFtZXMiOlsiUHJlY2VkZW5jZSIsImlzb2xhdGVkUHJlY2VkZW5jZSIsInRyYW5zcGFyZW50UHJlY2VkZW5jZSIsInN0cmVuZ3RoIiwiYXNzb2NpYXRpdml0eSIsImdldFN0cmVuZ3RoIiwiZ2V0QXNzb2NpYXRpdml0eSIsImlzVHJhbnNwYXJlbnQiLCJ0cmFuc3BhcmVudCIsIlRSQU5TUEFSRU5UX1BSRUNFREVOQ0VfU1RSRU5HVEgiLCJjb21wYXJlIiwicHJlY2VkZW5jZSIsImZpcnN0IiwibGFzdCIsImNvbXBhcmVzIiwiYXNTdHJpbmciLCJzdHJpbmciLCJTUEFDRV9DSEFSQUNURVIiLCJzaWduIiwiTUlOVVNfQ0hBUkFDVEVSIiwiRU1QVFlfU1RSSU5HIiwiZnJvbU51bWJlciIsIm51bWJlciIsIk1hdGgiLCJhYnMiLCJmcm9tTm90aGluZyIsImZyb21TdHJlbmd0aCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBSUE7ZUFBcUJBOztRQXlGUkM7ZUFBQUE7O1FBRUFDO2VBQUFBOzs7MkJBN0ZtRjtBQUVqRixNQUFNRjtJQUNuQixZQUFZRyxRQUFRLEVBQUVDLGFBQWEsQ0FBRTtRQUNuQyxJQUFJLENBQUNELFFBQVEsR0FBR0E7UUFDaEIsSUFBSSxDQUFDQyxhQUFhLEdBQUdBO0lBQ3ZCO0lBRUFDLGNBQWM7UUFDWixPQUFPLElBQUksQ0FBQ0YsUUFBUTtJQUN0QjtJQUVBRyxtQkFBbUI7UUFDakIsT0FBTyxJQUFJLENBQUNGLGFBQWE7SUFDM0I7SUFFQUcsZ0JBQWdCO1FBQ2QsTUFBTUMsY0FBZSxJQUFJLENBQUNMLFFBQVEsS0FBS00sMENBQStCO1FBRXRFLE9BQU9EO0lBQ1Q7SUFFQUUsUUFBUUMsVUFBVSxFQUFFQyxLQUFLLEVBQUVDLElBQUksRUFBRTtRQUMvQixJQUFJQztRQUVKLE1BQU1YLFdBQVdRLFdBQVdOLFdBQVcsSUFDakNELGdCQUFnQk8sV0FBV0wsZ0JBQWdCO1FBRWpELElBQUksT0FBTztRQUNULEdBQUc7UUFDTCxPQUFPLElBQUlNLE9BQU87WUFDaEJFLFdBQVcsQUFBQ1YsZ0JBQWdCLElBQ2QsSUFBSSxDQUFDRCxRQUFRLEdBQUdBLFdBQ2QsSUFBSSxDQUFDQSxRQUFRLElBQUlBO1FBQ25DLE9BQU8sSUFBSVUsTUFBTTtZQUNmQyxXQUFXLEFBQUNWLGdCQUFnQixJQUNkLElBQUksQ0FBQ0QsUUFBUSxJQUFJQSxXQUNmLElBQUksQ0FBQ0EsUUFBUSxHQUFHQTtRQUNsQyxPQUFPO1lBQ0xXLFdBQVksSUFBSSxDQUFDWCxRQUFRLEdBQUdBO1FBQzlCO1FBRUEsT0FBT1c7SUFDVDtJQUVBQyxXQUFXO1FBQ1QsSUFBSUM7UUFFSixNQUFNUixjQUFjLElBQUksQ0FBQ0QsYUFBYTtRQUV0QyxJQUFJQyxhQUFhO1lBQ2ZRLFNBQVNDLDBCQUFlO1FBQzFCLE9BQU87WUFDTCxNQUFNQyxPQUFPLEFBQUMsSUFBSSxDQUFDZCxhQUFhLEdBQUcsSUFDbkJlLDBCQUFlLEdBQ2JDLHVCQUFZO1lBRTlCSixTQUFTLEdBQUdFLE9BQU8sSUFBSSxDQUFDZixRQUFRLEVBQUU7UUFDcEM7UUFFQWEsU0FBUyxDQUFDLEVBQUUsRUFBRUEsT0FBTyxDQUFDLENBQUMsRUFBRSxHQUFHO1FBRTVCLE9BQU9BO0lBQ1Q7SUFFQSxPQUFPSyxXQUFXQyxNQUFNLEVBQUU7UUFDeEIsTUFBTW5CLFdBQVdvQixLQUFLQyxHQUFHLENBQUNGLFNBQ3BCbEIsZ0JBQWdCbUIsS0FBS0wsSUFBSSxDQUFDSSxTQUMxQlgsYUFBYSxJQUFJWCxXQUFXRyxVQUFVQztRQUU1QyxPQUFPTztJQUNUO0lBRUEsT0FBT2MsY0FBYztRQUNuQixNQUFNdEIsV0FBVyxNQUNYQyxnQkFBZ0IsTUFDaEJPLGFBQWEsSUFBSVgsV0FBV0csVUFBVUM7UUFFNUMsT0FBT087SUFDVDtJQUVBLE9BQU9lLGFBQWF2QixRQUFRLEVBQUU7UUFDNUIsTUFBTUMsZ0JBQWdCLE1BQ2hCTyxhQUFhLElBQUlYLFdBQVdHLFVBQVVDO1FBRTVDLE9BQU9PO0lBQ1Q7QUFDRjtBQUVBLE1BQU1SLFdBQVdNLDBDQUErQjtBQUV6QyxNQUFNUixxQkFBcUJELFdBQVd5QixXQUFXO0FBRWpELE1BQU12Qix3QkFBd0JGLFdBQVcwQixZQUFZLENBQUN2QiJ9
|
|
@@ -18,8 +18,8 @@ _export(exports, {
|
|
|
18
18
|
});
|
|
19
19
|
const _constants = require("../constants");
|
|
20
20
|
function stringFromStringNonTermionalNodeAndTokens(string, nonTerminalNode, tokens) {
|
|
21
|
-
const node = nonTerminalNode,
|
|
22
|
-
string = `${string}${lineIndexes}${
|
|
21
|
+
const node = nonTerminalNode, lineIndexes = lineIndexesFromNonTerminalNodeAndTokens(nonTerminalNode, tokens), precedenceString = precedenceStringFromNode(node);
|
|
22
|
+
string = `${string}${lineIndexes}${precedenceString}`;
|
|
23
23
|
return string;
|
|
24
24
|
}
|
|
25
25
|
function stringFromStringTerminalNodeAndTokens(string, terminalNode, tokens) {
|
|
@@ -76,18 +76,9 @@ function lineIndexFromTokenIndexAndTokens(tokenIndex, tokens) {
|
|
|
76
76
|
}
|
|
77
77
|
return lineIndex;
|
|
78
78
|
}
|
|
79
|
-
function
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
///
|
|
83
|
-
} else if (precedence === null) {
|
|
84
|
-
precedence = _constants.EMPTY_STRING;
|
|
85
|
-
} else if (precedence === _constants.TRANSPARENT_PRECEDENCE) {
|
|
86
|
-
precedence = ` ( )`;
|
|
87
|
-
} else {
|
|
88
|
-
precedence = ` (${precedence})`;
|
|
89
|
-
}
|
|
90
|
-
return precedence;
|
|
79
|
+
function precedenceStringFromNode(node) {
|
|
80
|
+
const precedence = node.getPrecedence(), precedenceString = precedence !== null ? precedence.asString() : _constants.EMPTY_STRING;
|
|
81
|
+
return precedenceString;
|
|
91
82
|
}
|
|
92
83
|
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvcGFyc2VUcmVlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFTVBUWV9TVFJJTkcgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdGcm9tU3RyaW5nTm9uVGVybWlvbmFsTm9kZUFuZFRva2VucyhzdHJpbmcsIG5vblRlcm1pbmFsTm9kZSwgdG9rZW5zKSB7XG4gIGNvbnN0IG5vZGUgPSBub25UZXJtaW5hbE5vZGUsIC8vL1xuICAgICAgICBsaW5lSW5kZXhlcyA9IGxpbmVJbmRleGVzRnJvbU5vblRlcm1pbmFsTm9kZUFuZFRva2Vucyhub25UZXJtaW5hbE5vZGUsIHRva2VucyksXG4gICAgICAgIHByZWNlZGVuY2VTdHJpbmcgPSBwcmVjZWRlbmNlU3RyaW5nRnJvbU5vZGUobm9kZSk7XG5cbiAgc3RyaW5nID0gYCR7c3RyaW5nfSR7bGluZUluZGV4ZXN9JHtwcmVjZWRlbmNlU3RyaW5nfWA7XG5cbiAgcmV0dXJuIHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ0Zyb21TdHJpbmdUZXJtaW5hbE5vZGVBbmRUb2tlbnMoc3RyaW5nLCB0ZXJtaW5hbE5vZGUsIHRva2Vucykge1xuICBjb25zdCBub2RlID0gdGVybWluYWxOb2RlLCAgLy8vXG4gICAgICAgIGxpbmVJbmRleCA9IGxpbmVJbmRleEZyb21UZXJtaW5hbE5vZGVBbmRUb2tlbnModGVybWluYWxOb2RlLCB0b2tlbnMpO1xuXG4gIHN0cmluZyA9IGAke3N0cmluZ30ke2xpbmVJbmRleH1gO1xuXG4gIHJldHVybiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIGxpbmVJbmRleGVzRnJvbU5vblRlcm1pbmFsTm9kZUFuZFRva2Vucyhub25UZXJtaW5hbE5vZGUsIHRva2Vucykge1xuICBsZXQgbGluZUluZGV4ZXM7XG5cbiAgY29uc3QgZmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXggPSBub25UZXJtaW5hbE5vZGUuZ2V0Rmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgodG9rZW5zKSxcbiAgICAgICAgbGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCA9IG5vblRlcm1pbmFsTm9kZS5nZXRMYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4KHRva2VucyksXG4gICAgICAgIGZpcnN0TGluZUluZGV4ID0gbGluZUluZGV4RnJvbVRva2VuSW5kZXhBbmRUb2tlbnMoZmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgsIHRva2VucyksXG4gICAgICAgIGxhc3RMaW5lSW5kZXggPSBsaW5lSW5kZXhGcm9tVG9rZW5JbmRleEFuZFRva2VucyhsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4LCB0b2tlbnMpO1xuXG4gIGlmIChmaXJzdExpbmVJbmRleCA9PT0gbGFzdExpbmVJbmRleCkge1xuICAgIGNvbnN0IGxpbmVJbmRleCA9IGZpcnN0TGluZUluZGV4OyAvLy9cblxuICAgIGlmIChsaW5lSW5kZXggPT09IG51bGwpIHtcbiAgICAgIGxpbmVJbmRleGVzID0gRU1QVFlfU1RSSU5HO1xuICAgIH0gZWxzZSB7XG4gICAgICBsaW5lSW5kZXhlcyA9IGAgWyR7bGluZUluZGV4fV1gO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIC8vL1xuICAgIH0gZWxzZSBpZiAoZmlyc3RMaW5lSW5kZXggPT09IG51bGwpIHtcbiAgICAgIGxpbmVJbmRleGVzID0gYCBbJHtsYXN0TGluZUluZGV4fV1gO1xuICAgIH0gZWxzZSBpZiAobGFzdExpbmVJbmRleCA9PT0gbnVsbCkge1xuICAgICAgbGluZUluZGV4ZXMgPSBgIFske2ZpcnN0TGluZUluZGV4fV1gO1xuICAgIH0gZWxzZSB7XG4gICAgICBsaW5lSW5kZXhlcyA9IGAgWyR7Zmlyc3RMaW5lSW5kZXh9LSR7bGFzdExpbmVJbmRleH1dYFxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBsaW5lSW5kZXhlcztcbn1cblxuZnVuY3Rpb24gbGluZUluZGV4RnJvbVRlcm1pbmFsTm9kZUFuZFRva2Vucyh0ZXJtaW5hbE5vZGUsIHRva2Vucykge1xuICBsZXQgbGluZUluZGV4O1xuXG4gIGNvbnN0IHNpZ25pZmljYW50VG9rZW5JbmRleCA9IHRlcm1pbmFsTm9kZS5nZXRTaWduaWZpY2FudFRva2VuSW5kZXgodG9rZW5zKTtcblxuICBsaW5lSW5kZXggPSBsaW5lSW5kZXhGcm9tVG9rZW5JbmRleEFuZFRva2VucyhzaWduaWZpY2FudFRva2VuSW5kZXgsIHRva2Vucyk7XG5cbiAgaWYgKGxpbmVJbmRleCA9PT0gbnVsbCkge1xuICAgIGxpbmVJbmRleCA9IEVNUFRZX1NUUklORztcbiAgfSBlbHNlIHtcbiAgICBsaW5lSW5kZXggPSBgIFske2xpbmVJbmRleH1dYDtcbiAgfVxuXG4gIHJldHVybiBsaW5lSW5kZXg7XG59XG5cbmZ1bmN0aW9uIGxpbmVJbmRleEZyb21Ub2tlbkluZGV4QW5kVG9rZW5zKHRva2VuSW5kZXgsIHRva2Vucykge1xuICBsZXQgbGluZUluZGV4ID0gbnVsbDtcblxuICBpZiAodG9rZW5JbmRleCAhPT0gbnVsbCkge1xuICAgIGxpbmVJbmRleCA9IDA7XG5cbiAgICBjb25zdCBzdGFydCA9IDAsXG4gICAgICAgICAgZW5kID0gdG9rZW5JbmRleDtcblxuICAgIHRva2VucyA9IHRva2Vucy5zbGljZShzdGFydCwgZW5kKTsgIC8vL1xuXG4gICAgdG9rZW5zLmZvckVhY2goKHRva2VuKSA9PiB7XG4gICAgICBjb25zdCB0b2tlbkVuZE9mTGluZVRva2VuID0gdG9rZW4uaXNFbmRPZkxpbmVUb2tlbigpO1xuXG4gICAgICBpZiAodG9rZW5FbmRPZkxpbmVUb2tlbikge1xuICAgICAgICBsaW5lSW5kZXgrKztcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBsaW5lSW5kZXg7XG59XG5cbmZ1bmN0aW9uIHByZWNlZGVuY2VTdHJpbmdGcm9tTm9kZShub2RlKSB7XG4gIGNvbnN0IHByZWNlZGVuY2UgPSBub2RlLmdldFByZWNlZGVuY2UoKSxcbiAgICAgICAgcHJlY2VkZW5jZVN0cmluZyA9IChwcmVjZWRlbmNlICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWNlZGVuY2UuYXNTdHJpbmcoKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1QVFlfU1RSSU5HO1xuXG4gIHJldHVybiBwcmVjZWRlbmNlU3RyaW5nO1xufVxuIl0sIm5hbWVzIjpbInN0cmluZ0Zyb21TdHJpbmdOb25UZXJtaW9uYWxOb2RlQW5kVG9rZW5zIiwic3RyaW5nRnJvbVN0cmluZ1Rlcm1pbmFsTm9kZUFuZFRva2VucyIsInN0cmluZyIsIm5vblRlcm1pbmFsTm9kZSIsInRva2VucyIsIm5vZGUiLCJsaW5lSW5kZXhlcyIsImxpbmVJbmRleGVzRnJvbU5vblRlcm1pbmFsTm9kZUFuZFRva2VucyIsInByZWNlZGVuY2VTdHJpbmciLCJwcmVjZWRlbmNlU3RyaW5nRnJvbU5vZGUiLCJ0ZXJtaW5hbE5vZGUiLCJsaW5lSW5kZXgiLCJsaW5lSW5kZXhGcm9tVGVybWluYWxOb2RlQW5kVG9rZW5zIiwiZmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgiLCJnZXRGaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCIsImxhc3RTaWduaWZpY2FudFRva2VuSW5kZXgiLCJnZXRMYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4IiwiZmlyc3RMaW5lSW5kZXgiLCJsaW5lSW5kZXhGcm9tVG9rZW5JbmRleEFuZFRva2VucyIsImxhc3RMaW5lSW5kZXgiLCJFTVBUWV9TVFJJTkciLCJzaWduaWZpY2FudFRva2VuSW5kZXgiLCJnZXRTaWduaWZpY2FudFRva2VuSW5kZXgiLCJ0b2tlbkluZGV4Iiwic3RhcnQiLCJlbmQiLCJzbGljZSIsImZvckVhY2giLCJ0b2tlbiIsInRva2VuRW5kT2ZMaW5lVG9rZW4iLCJpc0VuZE9mTGluZVRva2VuIiwicHJlY2VkZW5jZSIsImdldFByZWNlZGVuY2UiLCJhc1N0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
|
package/lib/utilities/string.js
CHANGED
|
@@ -8,11 +8,10 @@ Object.defineProperty(exports, "marginStringFromMarginWidth", {
|
|
|
8
8
|
return marginStringFromMarginWidth;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
-
const
|
|
12
|
-
const { SPACE_CHARACTER } = _necessary.characters;
|
|
11
|
+
const _constants = require("../constants");
|
|
13
12
|
function marginStringFromMarginWidth(marginWidth) {
|
|
14
|
-
const marginString = SPACE_CHARACTER.repeat(marginWidth);
|
|
13
|
+
const marginString = _constants.SPACE_CHARACTER.repeat(marginWidth);
|
|
15
14
|
return marginString;
|
|
16
15
|
}
|
|
17
16
|
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvc3RyaW5nLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBTUEFDRV9DSEFSQUNURVIgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXJnaW5TdHJpbmdGcm9tTWFyZ2luV2lkdGgobWFyZ2luV2lkdGgpIHtcbiAgY29uc3QgbWFyZ2luU3RyaW5nID0gU1BBQ0VfQ0hBUkFDVEVSLnJlcGVhdChtYXJnaW5XaWR0aCk7XG5cbiAgcmV0dXJuIG1hcmdpblN0cmluZztcbn1cbiJdLCJuYW1lcyI6WyJtYXJnaW5TdHJpbmdGcm9tTWFyZ2luV2lkdGgiLCJtYXJnaW5XaWR0aCIsIm1hcmdpblN0cmluZyIsIlNQQUNFX0NIQVJBQ1RFUiIsInJlcGVhdCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBSWdCQTs7O2VBQUFBOzs7MkJBRmdCO0FBRXpCLFNBQVNBLDRCQUE0QkMsV0FBVztJQUNyRCxNQUFNQyxlQUFlQywwQkFBZSxDQUFDQyxNQUFNLENBQUNIO0lBRTVDLE9BQU9DO0FBQ1QifQ==
|
package/package.json
CHANGED
package/src/constants.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import { characters } from "necessary";
|
|
4
|
+
|
|
5
|
+
export const { SPACE_CHARACTER } = characters;
|
|
6
|
+
|
|
3
7
|
export const EMPTY_STRING = "";
|
|
8
|
+
export const MINUS_CHARACTER = "-";
|
|
4
9
|
export const ESCAPED_BACKSLASH ="\\";
|
|
5
|
-
export const ISOLATED_PRECEDENCE = -1;
|
|
6
10
|
export const ESCAPED_DOUBLE_QUOTE = "\"";
|
|
7
|
-
export const
|
|
11
|
+
export const TRANSPARENT_PRECEDENCE_STRENGTH = 0;
|
package/src/definition.js
CHANGED
|
@@ -1,15 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { characters } from "necessary";
|
|
4
|
-
|
|
5
3
|
import Frame from "./frame";
|
|
6
4
|
|
|
7
5
|
import { emptyFrame } from "./frame";
|
|
6
|
+
import { EMPTY_STRING } from "./constants";
|
|
8
7
|
import { every as linearEvery } from "./utilities/linear";
|
|
9
8
|
import { every as branchingEvery } from "./utilities/branching";
|
|
10
|
-
import { EMPTY_STRING, TRANSPARENT_PRECEDENCE } from "./constants";
|
|
11
|
-
|
|
12
|
-
const { SPACE_CHARACTER } = characters;
|
|
13
9
|
|
|
14
10
|
export default class Definition {
|
|
15
11
|
constructor(parts, precedence) {
|
|
@@ -77,29 +73,11 @@ export default class Definition {
|
|
|
77
73
|
}
|
|
78
74
|
|
|
79
75
|
asString() {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
if (partsString === EMPTY_STRING) {
|
|
86
|
-
partsString = partString; ///
|
|
87
|
-
} else {
|
|
88
|
-
partsString = `${partsString} ${partString}`;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
return partsString;
|
|
92
|
-
}, EMPTY_STRING);
|
|
93
|
-
|
|
94
|
-
string = partsString; ///
|
|
95
|
-
|
|
96
|
-
if (this.precedence !== null) {
|
|
97
|
-
const precedence = (this.precedence === TRANSPARENT_PRECEDENCE) ?
|
|
98
|
-
SPACE_CHARACTER :
|
|
99
|
-
this.precedence;
|
|
100
|
-
|
|
101
|
-
string = `${string} (${precedence})`;
|
|
102
|
-
}
|
|
76
|
+
const partsString = partsStringFromParts(this.parts),
|
|
77
|
+
precedenceString = (this.precedence !== null) ?
|
|
78
|
+
this.precedence.asString() :
|
|
79
|
+
EMPTY_STRING,
|
|
80
|
+
string = `${partsString}${precedenceString}`;
|
|
103
81
|
|
|
104
82
|
return string;
|
|
105
83
|
}
|
|
@@ -132,6 +110,20 @@ export default class Definition {
|
|
|
132
110
|
}
|
|
133
111
|
}
|
|
134
112
|
|
|
113
|
+
function partsStringFromParts(parts) {
|
|
114
|
+
const partsString = parts.reduce((partsString, part) => {
|
|
115
|
+
const partString = part.asString();
|
|
116
|
+
|
|
117
|
+
partsString = (partsString !== null) ?
|
|
118
|
+
`${partsString} ${partString}` :
|
|
119
|
+
partString; ///
|
|
120
|
+
|
|
121
|
+
return partsString;
|
|
122
|
+
}, null);
|
|
123
|
+
|
|
124
|
+
return partsString;
|
|
125
|
+
}
|
|
126
|
+
|
|
135
127
|
function nonTerminalNodeFromRuleDefinitionFrameAndState(rule, definition, frame, state) {
|
|
136
128
|
let nonTerminalNode;
|
|
137
129
|
|
package/src/frame.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { arrayUtilities } from "necessary";
|
|
4
|
-
import {
|
|
4
|
+
import { isolatedPrecedence } from "./precedence";
|
|
5
5
|
|
|
6
6
|
const { first } = arrayUtilities;
|
|
7
7
|
|
|
@@ -44,7 +44,7 @@ export default class Frame {
|
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
isIsolated() {
|
|
47
|
-
const isolated = (this.precedence ===
|
|
47
|
+
const isolated = (this.precedence === isolatedPrecedence);
|
|
48
48
|
|
|
49
49
|
return isolated;
|
|
50
50
|
}
|
|
@@ -2,15 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
import { arrayUtilities } from "necessary";
|
|
4
4
|
|
|
5
|
+
import Precedence from "../../precedence";
|
|
5
6
|
import NonTerminalNode from "../../node/nonTerminal";
|
|
6
7
|
|
|
7
|
-
import {
|
|
8
|
+
import { transparentPrecedence } from "../../precedence";
|
|
8
9
|
|
|
9
10
|
const { second } = arrayUtilities;
|
|
10
11
|
|
|
11
12
|
export default class PrecedenceBNFNode extends NonTerminalNode {
|
|
12
13
|
getPrecedence() {
|
|
13
|
-
let precedence =
|
|
14
|
+
let precedence = transparentPrecedence;
|
|
14
15
|
|
|
15
16
|
const multiplicity = this.getMultiplicity();
|
|
16
17
|
|
|
@@ -18,9 +19,10 @@ export default class PrecedenceBNFNode extends NonTerminalNode {
|
|
|
18
19
|
const childNodes = this.getChildNodes(),
|
|
19
20
|
secondChildNode = second(childNodes),
|
|
20
21
|
terminalNode = secondChildNode, ///
|
|
21
|
-
content = terminalNode.getContent()
|
|
22
|
+
content = terminalNode.getContent(),
|
|
23
|
+
number = Number(content);
|
|
22
24
|
|
|
23
|
-
precedence =
|
|
25
|
+
precedence = Precedence.fromNumber(number);
|
|
24
26
|
}
|
|
25
27
|
|
|
26
28
|
return precedence;
|
package/src/node/nonTerminal.js
CHANGED
|
@@ -6,7 +6,7 @@ import { specialSymbols } from "occam-lexers";
|
|
|
6
6
|
import nodeMixins from "../mixins/node";
|
|
7
7
|
import NonTerminalNodeParseTree from "../parseTree/nonTerminalNode";
|
|
8
8
|
|
|
9
|
-
import {
|
|
9
|
+
import { transparentPrecedence } from "../precedence";
|
|
10
10
|
|
|
11
11
|
const { match } = arrayUtilities,
|
|
12
12
|
{ opaque: opaqueSpecialSymbol , semiOpaque: semiOpaqueSpecialSymbol } = specialSymbols;
|
|
@@ -138,12 +138,6 @@ export default class NonTerminalNode {
|
|
|
138
138
|
return significantTokens;
|
|
139
139
|
}
|
|
140
140
|
|
|
141
|
-
getAssociativity() {
|
|
142
|
-
const associativity = Math.sign(this.precedence);
|
|
143
|
-
|
|
144
|
-
return associativity;
|
|
145
|
-
}
|
|
146
|
-
|
|
147
141
|
getMultiplicity() {
|
|
148
142
|
const childNodesLength = this.childNodes.length,
|
|
149
143
|
multiplicity = childNodesLength; ///
|
|
@@ -151,12 +145,6 @@ export default class NonTerminalNode {
|
|
|
151
145
|
return multiplicity;
|
|
152
146
|
}
|
|
153
147
|
|
|
154
|
-
getStrength() {
|
|
155
|
-
const strength = Math.abs(this.precedence);
|
|
156
|
-
|
|
157
|
-
return strength;
|
|
158
|
-
}
|
|
159
|
-
|
|
160
148
|
isSingular() {
|
|
161
149
|
const multiplicity = this.getMultiplicity(),
|
|
162
150
|
singular = (multiplicity === 1);
|
|
@@ -196,40 +184,23 @@ export default class NonTerminalNode {
|
|
|
196
184
|
return unprecedented;
|
|
197
185
|
}
|
|
198
186
|
|
|
199
|
-
comparePrecedence(
|
|
187
|
+
comparePrecedence(precedence, first, last) {
|
|
200
188
|
let precedenceCompares;
|
|
201
189
|
|
|
202
190
|
if (false) {
|
|
203
191
|
///
|
|
204
192
|
} else if (this.precedence === null) {
|
|
205
193
|
precedenceCompares = false;
|
|
206
|
-
} else if (this.precedence ===
|
|
194
|
+
} else if (this.precedence === transparentPrecedence) {
|
|
207
195
|
precedenceCompares = this.childNodes.some((childNode) => {
|
|
208
|
-
const childNodePrecedenceCompares = childNode.comparePrecedence(
|
|
196
|
+
const childNodePrecedenceCompares = childNode.comparePrecedence(precedence, first, last);
|
|
209
197
|
|
|
210
198
|
if (childNodePrecedenceCompares) {
|
|
211
199
|
return true;
|
|
212
200
|
}
|
|
213
201
|
});
|
|
214
202
|
} else {
|
|
215
|
-
|
|
216
|
-
parentAssociativity = associativity; ///
|
|
217
|
-
|
|
218
|
-
strength = this.getStrength();
|
|
219
|
-
|
|
220
|
-
if (false) {
|
|
221
|
-
///
|
|
222
|
-
} else if (first) {
|
|
223
|
-
precedenceCompares = (parentAssociativity < 0) ?
|
|
224
|
-
(strength < parentStrength) :
|
|
225
|
-
(strength <= parentStrength);
|
|
226
|
-
} else if (last) {
|
|
227
|
-
precedenceCompares = (parentAssociativity < 0) ?
|
|
228
|
-
(strength <= parentStrength) :
|
|
229
|
-
(strength < parentStrength);
|
|
230
|
-
} else {
|
|
231
|
-
precedenceCompares = (strength < parentStrength);
|
|
232
|
-
}
|
|
203
|
+
precedenceCompares = this.precedence.compare(precedence, first, last);
|
|
233
204
|
}
|
|
234
205
|
|
|
235
206
|
return precedenceCompares;
|
|
@@ -238,17 +209,15 @@ export default class NonTerminalNode {
|
|
|
238
209
|
compareChildNodesPrecedence() {
|
|
239
210
|
let childNodesPrecedenceCompares = false;
|
|
240
211
|
|
|
241
|
-
if ((this.precedence !== null) && (this.precedence !==
|
|
212
|
+
if ((this.precedence !== null) && (this.precedence !== transparentPrecedence)) {
|
|
242
213
|
const multiplicity = this.getMultiplicity(),
|
|
243
214
|
lastIndex = (multiplicity - 1),
|
|
244
|
-
firstIndex = 0
|
|
245
|
-
strength = this.getStrength(),
|
|
246
|
-
associativity = this.getAssociativity();
|
|
215
|
+
firstIndex = 0;
|
|
247
216
|
|
|
248
217
|
childNodesPrecedenceCompares = this.childNodes.some((childNode, index) => { ///
|
|
249
218
|
const last = (index === lastIndex),
|
|
250
219
|
first = (index === firstIndex),
|
|
251
|
-
childNodePrecedenceCompares = childNode.comparePrecedence(
|
|
220
|
+
childNodePrecedenceCompares = childNode.comparePrecedence(this.precedence, first, last);
|
|
252
221
|
|
|
253
222
|
if (childNodePrecedenceCompares) {
|
|
254
223
|
return true;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import Frame from "../../frame";
|
|
4
4
|
import NonTerminalPart from "../../part/nonTerminal";
|
|
5
5
|
|
|
6
|
-
import {
|
|
6
|
+
import { isolatedPrecedence } from "../../precedence";
|
|
7
7
|
import { IsolatedPartPartType } from "../../partTypes";
|
|
8
8
|
|
|
9
9
|
export default class IsolatedPartPart extends NonTerminalPart {
|
|
@@ -29,7 +29,7 @@ export default class IsolatedPartPart extends NonTerminalPart {
|
|
|
29
29
|
|
|
30
30
|
compose(frame) {
|
|
31
31
|
const childNodes = frame.getChildNodes(),
|
|
32
|
-
precedence =
|
|
32
|
+
precedence = isolatedPrecedence;
|
|
33
33
|
|
|
34
34
|
frame = Frame.fromChildNodesAndPrecedence(childNodes, precedence);
|
|
35
35
|
|
package/src/partChoice.js
CHANGED
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { characters } from "necessary";
|
|
4
|
-
|
|
5
3
|
import Frame from "./frame";
|
|
6
4
|
|
|
7
5
|
import { emptyFrame } from "./frame";
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
const { SPACE_CHARACTER } = characters;
|
|
6
|
+
import { EMPTY_STRING } from "./constants";
|
|
11
7
|
|
|
12
8
|
export default class PartChoice {
|
|
13
9
|
constructor(part, precedence) {
|
|
@@ -52,19 +48,11 @@ export default class PartChoice {
|
|
|
52
48
|
}
|
|
53
49
|
|
|
54
50
|
asString() {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
if (this.precedence !== null) {
|
|
62
|
-
const precedence = (this.precedence === TRANSPARENT_PRECEDENCE) ?
|
|
63
|
-
SPACE_CHARACTER :
|
|
64
|
-
this.precedence;
|
|
65
|
-
|
|
66
|
-
string = `${string} (${precedence})`;
|
|
67
|
-
}
|
|
51
|
+
const partString = this.part.asString(),
|
|
52
|
+
precedenceString = (this.precedence !== null) ?
|
|
53
|
+
this.precedence.asString() :
|
|
54
|
+
EMPTY_STRING,
|
|
55
|
+
string = `${partString}${precedenceString}`;
|
|
68
56
|
|
|
69
57
|
return string;
|
|
70
58
|
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { EMPTY_STRING, MINUS_CHARACTER, SPACE_CHARACTER, TRANSPARENT_PRECEDENCE_STRENGTH } from "./constants";
|
|
4
|
+
|
|
5
|
+
export default class Precedence {
|
|
6
|
+
constructor(strength, associativity) {
|
|
7
|
+
this.strength = strength;
|
|
8
|
+
this.associativity = associativity;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
getStrength() {
|
|
12
|
+
return this.strength;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
getAssociativity() {
|
|
16
|
+
return this.associativity;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
isTransparent() {
|
|
20
|
+
const transparent = (this.strength === TRANSPARENT_PRECEDENCE_STRENGTH);
|
|
21
|
+
|
|
22
|
+
return transparent;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
compare(precedence, first, last) {
|
|
26
|
+
let compares;
|
|
27
|
+
|
|
28
|
+
const strength = precedence.getStrength(),
|
|
29
|
+
associativity = precedence.getAssociativity();
|
|
30
|
+
|
|
31
|
+
if (false) {
|
|
32
|
+
///
|
|
33
|
+
} else if (first) {
|
|
34
|
+
compares = (associativity < 0) ?
|
|
35
|
+
(this.strength < strength) :
|
|
36
|
+
(this.strength <= strength);
|
|
37
|
+
} else if (last) {
|
|
38
|
+
compares = (associativity < 0) ?
|
|
39
|
+
(this.strength <= strength) :
|
|
40
|
+
(this.strength < strength);
|
|
41
|
+
} else {
|
|
42
|
+
compares = (this.strength < strength);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return compares;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
asString() {
|
|
49
|
+
let string;
|
|
50
|
+
|
|
51
|
+
const transparent = this.isTransparent();
|
|
52
|
+
|
|
53
|
+
if (transparent) {
|
|
54
|
+
string = SPACE_CHARACTER;
|
|
55
|
+
} else {
|
|
56
|
+
const sign = (this.associativity < 0) ?
|
|
57
|
+
MINUS_CHARACTER :
|
|
58
|
+
EMPTY_STRING;
|
|
59
|
+
|
|
60
|
+
string = `${sign}${this.strength}`;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
string = ` (${string})`; ///
|
|
64
|
+
|
|
65
|
+
return string;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
static fromNumber(number) {
|
|
69
|
+
const strength = Math.abs(number),
|
|
70
|
+
associativity = Math.sign(number),
|
|
71
|
+
precedence = new Precedence(strength, associativity);
|
|
72
|
+
|
|
73
|
+
return precedence;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
static fromNothing() {
|
|
77
|
+
const strength = null,
|
|
78
|
+
associativity = null,
|
|
79
|
+
precedence = new Precedence(strength, associativity);
|
|
80
|
+
|
|
81
|
+
return precedence;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
static fromStrength(strength) {
|
|
85
|
+
const associativity = null,
|
|
86
|
+
precedence = new Precedence(strength, associativity);
|
|
87
|
+
|
|
88
|
+
return precedence;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
const strength = TRANSPARENT_PRECEDENCE_STRENGTH;
|
|
93
|
+
|
|
94
|
+
export const isolatedPrecedence = Precedence.fromNothing();
|
|
95
|
+
|
|
96
|
+
export const transparentPrecedence = Precedence.fromStrength(strength);
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { EMPTY_STRING
|
|
3
|
+
import { EMPTY_STRING } from "../constants";
|
|
4
4
|
|
|
5
5
|
export function stringFromStringNonTermionalNodeAndTokens(string, nonTerminalNode, tokens) {
|
|
6
6
|
const node = nonTerminalNode, ///
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
lineIndexes = lineIndexesFromNonTerminalNodeAndTokens(nonTerminalNode, tokens),
|
|
8
|
+
precedenceString = precedenceStringFromNode(node);
|
|
9
9
|
|
|
10
|
-
string = `${string}${lineIndexes}${
|
|
10
|
+
string = `${string}${lineIndexes}${precedenceString}`;
|
|
11
11
|
|
|
12
12
|
return string;
|
|
13
13
|
}
|
|
@@ -91,18 +91,11 @@ function lineIndexFromTokenIndexAndTokens(tokenIndex, tokens) {
|
|
|
91
91
|
return lineIndex;
|
|
92
92
|
}
|
|
93
93
|
|
|
94
|
-
function
|
|
95
|
-
|
|
94
|
+
function precedenceStringFromNode(node) {
|
|
95
|
+
const precedence = node.getPrecedence(),
|
|
96
|
+
precedenceString = (precedence !== null) ?
|
|
97
|
+
precedence.asString() :
|
|
98
|
+
EMPTY_STRING;
|
|
96
99
|
|
|
97
|
-
|
|
98
|
-
///
|
|
99
|
-
} else if (precedence === null) {
|
|
100
|
-
precedence = EMPTY_STRING;
|
|
101
|
-
}else if (precedence === TRANSPARENT_PRECEDENCE) {
|
|
102
|
-
precedence = ` ( )`;
|
|
103
|
-
} else {
|
|
104
|
-
precedence = ` (${precedence})`;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
return precedence;
|
|
100
|
+
return precedenceString;
|
|
108
101
|
}
|
package/src/utilities/string.js
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
const { SPACE_CHARACTER } = characters;
|
|
3
|
+
import { SPACE_CHARACTER } from "../constants";
|
|
6
4
|
|
|
7
5
|
export function marginStringFromMarginWidth(marginWidth) {
|
|
8
6
|
const marginString = SPACE_CHARACTER.repeat(marginWidth);
|