roll-parser 3.2.2 → 3.3.0
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/CHANGELOG.md +36 -1
- package/README.md +1 -1
- package/dist/lexer/lexer.d.ts +3 -0
- package/dist/lexer/lexer.d.ts.map +1 -1
- package/dist/lexer/lexer.js +30 -8
- package/dist/lexer/lexer.js.map +1 -1
- package/dist/parser/parser.d.ts +11 -1
- package/dist/parser/parser.d.ts.map +1 -1
- package/dist/parser/parser.js +72 -31
- package/dist/parser/parser.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +4 -4
- package/src/lexer/lexer.ts +73 -13
- package/src/parser/parser.ts +135 -33
- package/src/version.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,40 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [3.3.0] - 2026-08-17
|
|
11
|
+
|
|
12
|
+
Error-message work throughout: nine parse and lex errors now name the rule they
|
|
13
|
+
enforce, or the token actually at fault, instead of reporting parser jargon.
|
|
14
|
+
Every error code is unchanged and no notation evaluates differently — nothing
|
|
15
|
+
that parsed before now throws, and nothing that threw before now parses. Code
|
|
16
|
+
that matches on `code` is unaffected; code that matches on `message` is not.
|
|
17
|
+
|
|
18
|
+
### Added
|
|
19
|
+
|
|
20
|
+
- An expression that ends where an operand was required now names what it still owed, instead of reporting a bare unexpected end. `1d` reports `Expected a side count after 'd'`, `1d20 vs` reports `Expected a difficulty class after 'vs'`, `2d6r<` reports `Expected a value after '<'`, and a truncated `2d6>=4f` names the `f` rather than the comparison behind it. The code stays `UNEXPECTED_END`, the position still points past the last token, and empty input still reports `Empty notation` at position 0 ([#327](https://github.com/edloidas/roll-parser/issues/327))
|
|
21
|
+
|
|
22
|
+
### Changed
|
|
23
|
+
|
|
24
|
+
- Demo site: the five failure tints derive from `--failure` through `color-mix` instead of hard-coded `rgba()` literals, so they follow the token in both themes rather than painting the pre-`#322` dark red under the light palette ([#324](https://github.com/edloidas/roll-parser/issues/324))
|
|
25
|
+
|
|
26
|
+
### Fixed
|
|
27
|
+
|
|
28
|
+
- The hint for an identifier that merged two modifiers no longer suggests notation that does not parse. It is gated on both halves being separable modifiers — `flor` and `kx` merely start with one, so every split of them still failed — and the separator is picked by whether the first half takes a count, so the count-less `s`, `sa`, `sd`, `cs` and `cf` split on a space instead of `1`. `4d6khs` now suggests `kh1s`; a round-trip test asserts every hint the lexer emits parses ([#326](https://github.com/edloidas/roll-parser/issues/326))
|
|
29
|
+
- `2d6constructor` reports `Unexpected identifier: 'constructor'` instead of lexing into a token typed with a function. The keyword and separator tables were plain objects, so `constructor` resolved to `Object`'s own; both now have a null prototype ([#326](https://github.com/edloidas/roll-parser/issues/326))
|
|
30
|
+
- `Cannot apply modifier after success counting` is replaced by `Success counting is terminal: it cannot be part of a larger expression`, which holds for all three shapes that reach the rejection — a trailing modifier, arithmetic (`5d6>=5+3`), and meta-operand reuse (`4d(1d6>=3)`). The wording matches the **Pools and checks** callout in `README.md`, which carries the worked rewrites ([#326](https://github.com/edloidas/roll-parser/issues/326))
|
|
31
|
+
- `UNEXPECTED_CHARACTER` appends the code point when the rejected character is not printable ASCII, so a pasted no-break space, zero-width space or BOM reads as `Unexpected character (U+00A0): ' '` rather than an empty pair of quotes. Printable ASCII stays unadorned ([#326](https://github.com/edloidas/roll-parser/issues/326))
|
|
32
|
+
- `Empty @ variable name` is replaced by `@ variable name must start with a letter or '_'`, which was the rule all along — one check rejects a missing name and a wrongly-started one alike, so `@1` and `@力` were being called empty ([#326](https://github.com/edloidas/roll-parser/issues/326))
|
|
33
|
+
- `()` reports `Empty parentheses` at the opener instead of `Unexpected token ')'` at the closer, the way `{}` already did — `parseGrouped` was missing the check `parseGroup` had ([#326](https://github.com/edloidas/roll-parser/issues/326))
|
|
34
|
+
- A count after a modifier that takes none — `2d6s1`, `2d6cs1`, `2d6cf1`, `2d6!0` — reports `This modifier takes no count` instead of `Unexpected infix token '1'`. The digit is not the surprise, the modifier it follows is, and "infix token" is parser jargon. The check resolves down the right spine of binary, unary and versus nodes, so `1+2d6s1` is caught too, and it stops at any closer, so `2d(2d6s)1` keeps the generic wording — the stray token there follows the group, not the modifier inside it. Two juxtaposed values (`2d6 3`) and a modifier that already took a comparison (`2d6cs>5 3`) also keep the generic wording, since those are different mistakes ([#326](https://github.com/edloidas/roll-parser/issues/326), [#327](https://github.com/edloidas/roll-parser/issues/327))
|
|
35
|
+
- `vs` with nothing on its left reports `Versus needs a roll on its left` instead of `Unexpected token 'vs'` ([#326](https://github.com/edloidas/roll-parser/issues/326))
|
|
36
|
+
- Demo site: the palette meets WCAG AA. `--text-dim` and `--failure` were retuned in the dark palette, and `--text-dim`, `--accent`, `--accent-soft`, `--success` and `--failure` in both light blocks, each held on its own hue and measured against `--surface-strong`; the light `--gold-gradient` stops shifted by the same lightness delta as `--accent`, lifting the hero total's leading stop from 2.81 to 3.47 ([#322](https://github.com/edloidas/roll-parser/issues/322))
|
|
37
|
+
- Demo site: `site/404.html` no longer carries a stale `--accent`. Its inline light palette kept the pre-`#322` `#a06b1f` while `style.css` moved on, leaving the `code` span and the link hover/focus colour at 3.88 against the page gradient; `#855512` lifts them to 5.42 ([#322](https://github.com/edloidas/roll-parser/issues/322))
|
|
38
|
+
- Demo site: `--border` meets SC 1.4.11's 3:1 non-text bar on every fill it lands on — 3.37 dark and 3.30 light at the tightest adjacency, up from 1.47 and 1.33 against `--bg`. `.widget:hover` moved from `--accent-soft` to `--accent`, since the soft tint now composites fainter than the resting border and hover read as a de-emphasis ([#323](https://github.com/edloidas/roll-parser/issues/323))
|
|
39
|
+
|
|
40
|
+
### Documentation
|
|
41
|
+
|
|
42
|
+
- The README bundle-size figures match the current emit: `≈13.2 kB` for the full library and `≈6.1 kB` for `{ parse }` ([#326](https://github.com/edloidas/roll-parser/issues/326), [#327](https://github.com/edloidas/roll-parser/issues/327))
|
|
43
|
+
|
|
10
44
|
## [3.2.2] - 2026-08-14
|
|
11
45
|
|
|
12
46
|
### Changed
|
|
@@ -261,7 +295,8 @@ Dice mechanics (Stage 2):
|
|
|
261
295
|
- Dice count safety limit via `maxDice` option (default 10,000), enforced across the whole expression to prevent DoS via additive groups like `5000d6+5000d6` ([#19](https://github.com/edloidas/roll-parser/issues/19))
|
|
262
296
|
- Parser and evaluator correctness: duplicate `kept` modifier entries, implicit modifier count defaulting to 1 (`4d6kh` → `4d6kh1`), `critical` flag suppression when `sides === 1`, negative `--seed` CLI values ([#21](https://github.com/edloidas/roll-parser/issues/21))
|
|
263
297
|
|
|
264
|
-
[Unreleased]: https://github.com/edloidas/roll-parser/compare/v3.
|
|
298
|
+
[Unreleased]: https://github.com/edloidas/roll-parser/compare/v3.3.0...HEAD
|
|
299
|
+
[3.3.0]: https://github.com/edloidas/roll-parser/releases/tag/v3.3.0
|
|
265
300
|
[3.2.2]: https://github.com/edloidas/roll-parser/releases/tag/v3.2.2
|
|
266
301
|
[3.2.1]: https://github.com/edloidas/roll-parser/releases/tag/v3.2.1
|
|
267
302
|
[3.2.0]: https://github.com/edloidas/roll-parser/releases/tag/v3.2.0
|
package/README.md
CHANGED
|
@@ -68,7 +68,7 @@ roll('4d6kh3', { rng: createMockRng([3, 6, 2, 5]) }).total; // 14, every run
|
|
|
68
68
|
- **Safe on untrusted input.** Dice count, explosion depth, reroll depth, and
|
|
69
69
|
parse depth are all bounded, and every failure is a typed error with a stable
|
|
70
70
|
code and a source span.
|
|
71
|
-
- **Small and fast.** ≈
|
|
71
|
+
- **Small and fast.** ≈13.2 kB brotli for the whole library, ≈6.1 kB for just
|
|
72
72
|
`parse`, ≈1.4 kB for `roll-parser/render`, ≈213 B for the testing entry
|
|
73
73
|
point. Zero runtime dependencies, zero
|
|
74
74
|
`node:` imports. A `1d20` round trip takes about 0.5 µs.
|
package/dist/lexer/lexer.d.ts
CHANGED
|
@@ -39,6 +39,9 @@ export declare class LexerError extends RollParserError {
|
|
|
39
39
|
* The offending text — a single character for `UNEXPECTED_CHARACTER` (the
|
|
40
40
|
* whole code point, so astral symbols are not split into surrogates), or
|
|
41
41
|
* the unrecognized word for `UNEXPECTED_IDENTIFIER`.
|
|
42
|
+
*
|
|
43
|
+
* Not guaranteed to appear in `message` — errors that name a rule rather than
|
|
44
|
+
* a character leave it out.
|
|
42
45
|
*/
|
|
43
46
|
readonly character: string;
|
|
44
47
|
constructor(message: string, code: RollParserErrorCode, position: number, character: string, options?: ErrorOptions);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lexer.d.ts","sourceRoot":"","sources":["../../src/lexer/lexer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAiB,eAAe,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,KAAK,KAAK,EAAa,MAAM,aAAa,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,UAAW,SAAQ,eAAe;IAC7C,wEAAwE;IACxE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B
|
|
1
|
+
{"version":3,"file":"lexer.d.ts","sourceRoot":"","sources":["../../src/lexer/lexer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAiB,eAAe,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,KAAK,KAAK,EAAa,MAAM,aAAa,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,UAAW,SAAQ,eAAe;IAC7C,wEAAwE;IACxE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B;;;;;;;OAOG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,YACE,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,mBAAmB,EACzB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,YAAY,EAMvB;CACF;AAsGD;;;;;GAKG;AACH,qBAAa,KAAK;IAChB,OAAO,CAAC,GAAG,CAAK;IAChB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAE/B,YAAY,KAAK,EAAE,MAAM,EAExB;IAED;;OAEG;IACH,QAAQ,IAAI,KAAK,EAAE,CAUlB;IAED;;OAEG;IACH,SAAS,IAAI,KAAK,CAmFjB;IAMD,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,UAAU;IAiBlB;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,cAAc;IAkCtB;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,MAAM;IAuCd,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,KAAK;IAOb,OAAO,CAAC,OAAO;IAMf,OAAO,CAAC,OAAO;IAKf,OAAO,CAAC,OAAO;IAQf,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,aAAa;CAGtB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,EAAE,CAU1C"}
|
package/dist/lexer/lexer.js
CHANGED
|
@@ -4,7 +4,7 @@ export class LexerError extends RollParserError {
|
|
|
4
4
|
position;
|
|
5
5
|
character;
|
|
6
6
|
constructor(message, code, position, character, options) {
|
|
7
|
-
super(
|
|
7
|
+
super(message, code, options);
|
|
8
8
|
this.name = 'LexerError';
|
|
9
9
|
this.position = position;
|
|
10
10
|
this.character = character;
|
|
@@ -16,7 +16,7 @@ const CHAR_UPPER_A = 65;
|
|
|
16
16
|
const CHAR_UPPER_Z = 90;
|
|
17
17
|
const CHAR_LOWER_A = 97;
|
|
18
18
|
const CHAR_LOWER_Z = 122;
|
|
19
|
-
const IDENTIFIER_KEYWORDS = {
|
|
19
|
+
const IDENTIFIER_KEYWORDS = Object.assign(Object.create(null), {
|
|
20
20
|
kh: TokenType.KEEP_HIGH,
|
|
21
21
|
kl: TokenType.KEEP_LOW,
|
|
22
22
|
k: TokenType.KEEP_HIGH,
|
|
@@ -40,14 +40,36 @@ const IDENTIFIER_KEYWORDS = {
|
|
|
40
40
|
sd: TokenType.SORT_DESC,
|
|
41
41
|
cs: TokenType.CRIT_SUCCESS,
|
|
42
42
|
cf: TokenType.CRIT_FAIL,
|
|
43
|
-
};
|
|
43
|
+
});
|
|
44
|
+
const MODIFIER_SEPARATORS = Object.assign(Object.create(null), {
|
|
45
|
+
kh: '1',
|
|
46
|
+
kl: '1',
|
|
47
|
+
k: '1',
|
|
48
|
+
dh: '1',
|
|
49
|
+
dl: '1',
|
|
50
|
+
min: '1',
|
|
51
|
+
max: '1',
|
|
52
|
+
s: ' ',
|
|
53
|
+
sa: ' ',
|
|
54
|
+
sd: ' ',
|
|
55
|
+
cs: ' ',
|
|
56
|
+
cf: ' ',
|
|
57
|
+
});
|
|
58
|
+
function nameCodePoint(codePoint) {
|
|
59
|
+
if (codePoint == null || (codePoint > 0x20 && codePoint < 0x7f))
|
|
60
|
+
return '';
|
|
61
|
+
return ` (U+${codePoint.toString(16).toUpperCase().padStart(4, '0')})`;
|
|
62
|
+
}
|
|
44
63
|
function buildIdentifierHint(identifier) {
|
|
45
64
|
for (let length = identifier.length - 1; length >= 1; length--) {
|
|
46
65
|
const prefix = identifier.slice(0, length);
|
|
47
|
-
|
|
66
|
+
const separator = MODIFIER_SEPARATORS[prefix];
|
|
67
|
+
if (separator == null)
|
|
48
68
|
continue;
|
|
49
69
|
const rest = identifier.slice(length);
|
|
50
|
-
|
|
70
|
+
if (MODIFIER_SEPARATORS[rest] == null)
|
|
71
|
+
continue;
|
|
72
|
+
return ` (did you mean '${prefix}' followed by '${rest}'? write it as '${prefix}${separator}${rest}')`;
|
|
51
73
|
}
|
|
52
74
|
return '';
|
|
53
75
|
}
|
|
@@ -133,7 +155,7 @@ export class Lexer {
|
|
|
133
155
|
default: {
|
|
134
156
|
const codePoint = this.input.codePointAt(startPos);
|
|
135
157
|
const display = codePoint == null ? char : String.fromCodePoint(codePoint);
|
|
136
|
-
throw new LexerError(
|
|
158
|
+
throw new LexerError(`Unexpected character${nameCodePoint(codePoint)}: '${display}'`, 'UNEXPECTED_CHARACTER', startPos, display);
|
|
137
159
|
}
|
|
138
160
|
}
|
|
139
161
|
}
|
|
@@ -175,7 +197,7 @@ export class Lexer {
|
|
|
175
197
|
if (tokenType != null) {
|
|
176
198
|
return this.createTokenAt(tokenType, lower, startPos);
|
|
177
199
|
}
|
|
178
|
-
throw new LexerError(`Unexpected identifier${buildIdentifierHint(lower)}`, 'UNEXPECTED_IDENTIFIER', startPos, lower);
|
|
200
|
+
throw new LexerError(`Unexpected identifier${buildIdentifierHint(lower)}: '${lower}'`, 'UNEXPECTED_IDENTIFIER', startPos, lower);
|
|
179
201
|
}
|
|
180
202
|
scanAt() {
|
|
181
203
|
const startPos = this.pos;
|
|
@@ -196,7 +218,7 @@ export class Lexer {
|
|
|
196
218
|
else {
|
|
197
219
|
const nameStart = this.pos;
|
|
198
220
|
if (this.isAtEnd() || !this.isIdentifierStart(this.peek())) {
|
|
199
|
-
throw new LexerError(
|
|
221
|
+
throw new LexerError(`@ variable name must start with a letter or '_'`, 'UNEXPECTED_CHARACTER', startPos, '@');
|
|
200
222
|
}
|
|
201
223
|
this.advance();
|
|
202
224
|
while (!this.isAtEnd() && this.isIdentifierPart(this.peek())) {
|
package/dist/lexer/lexer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lexer.js","sourceRoot":"","sources":["../../src/lexer/lexer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lexer.js","sourceRoot":"","sources":["../../src/lexer/lexer.ts"],"names":[],"mappings":"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"}
|
package/dist/parser/parser.d.ts
CHANGED
|
@@ -84,6 +84,10 @@ export declare class Parser {
|
|
|
84
84
|
parse(): ASTNode;
|
|
85
85
|
/**
|
|
86
86
|
* Parse an expression with minimum binding power.
|
|
87
|
+
*
|
|
88
|
+
* `pending` is the token that demanded this operand — the `d` of `1d`, the
|
|
89
|
+
* `<` of `2d6r<`. It exists so a truncated notation can name what it was
|
|
90
|
+
* waiting for; `undefined` only at the top of the input.
|
|
87
91
|
*/
|
|
88
92
|
private parseExpression;
|
|
89
93
|
/**
|
|
@@ -169,7 +173,13 @@ export declare class Parser {
|
|
|
169
173
|
private parseSort;
|
|
170
174
|
private parseCritThreshold;
|
|
171
175
|
private parseSuccessCount;
|
|
172
|
-
/**
|
|
176
|
+
/**
|
|
177
|
+
* Parses the `f...` suffix of a success count. Bare `fN` means `f=N`.
|
|
178
|
+
*
|
|
179
|
+
* `token` is the success-count comparison, which the reject calls report
|
|
180
|
+
* against; `failToken` is the `f`, so a truncated `2d6>=4f` names it rather
|
|
181
|
+
* than the comparison behind it.
|
|
182
|
+
*/
|
|
173
183
|
private parseFailThreshold;
|
|
174
184
|
/**
|
|
175
185
|
* Rejects an `f` that reached LED position, which means no success count is
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/parser/parser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAE,KAAK,KAAK,EAAa,MAAM,oBAAoB,CAAC;AAE3D,OAAO,KAAK,EACV,OAAO,EAmBR,MAAM,UAAU,CAAC;AAelB;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,UAAW,SAAQ,eAAe;IAC7C,qEAAqE;IACrE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;IAElC,YACE,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,mBAAmB,EACzB,QAAQ,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,KAAK,EACb,OAAO,CAAC,EAAE,YAAY,EAMvB;CACF;AAuCD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,eAAe,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/parser/parser.ts"],"names":[],"mappings":"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"}
|
package/dist/parser/parser.js
CHANGED
|
@@ -36,6 +36,35 @@ const TOKEN_DISPLAY = {
|
|
|
36
36
|
[TokenType.RBRACE]: `'}'`,
|
|
37
37
|
[TokenType.COMMA]: `','`,
|
|
38
38
|
};
|
|
39
|
+
function isBareCritThreshold(node) {
|
|
40
|
+
const isDefault = (threshold) => threshold === 'default';
|
|
41
|
+
return node.successThresholds.every(isDefault) && node.failThresholds.every(isDefault);
|
|
42
|
+
}
|
|
43
|
+
function rightmostNode(node) {
|
|
44
|
+
let current = node;
|
|
45
|
+
for (;;) {
|
|
46
|
+
switch (current.type) {
|
|
47
|
+
case 'BinaryOp':
|
|
48
|
+
current = current.right;
|
|
49
|
+
break;
|
|
50
|
+
case 'UnaryOp':
|
|
51
|
+
current = current.operand;
|
|
52
|
+
break;
|
|
53
|
+
case 'Versus':
|
|
54
|
+
current = current.dc;
|
|
55
|
+
break;
|
|
56
|
+
default:
|
|
57
|
+
return current;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
function expectedOperand(token) {
|
|
62
|
+
if (token.type === TokenType.DICE)
|
|
63
|
+
return 'a side count';
|
|
64
|
+
if (token.type === TokenType.VS)
|
|
65
|
+
return 'a difficulty class';
|
|
66
|
+
return 'a value';
|
|
67
|
+
}
|
|
39
68
|
const FUNCTION_ARITY = {
|
|
40
69
|
floor: { min: 1, max: 1 },
|
|
41
70
|
ceil: { min: 1, max: 1 },
|
|
@@ -66,22 +95,19 @@ export class Parser {
|
|
|
66
95
|
this.tokens = tokens;
|
|
67
96
|
}
|
|
68
97
|
parse() {
|
|
69
|
-
|
|
70
|
-
throw new ParseError('Unexpected end of input', 'UNEXPECTED_END', this.peek().position);
|
|
71
|
-
}
|
|
72
|
-
const ast = this.parseExpression(0);
|
|
98
|
+
const ast = this.parseExpression(0, undefined);
|
|
73
99
|
if (this.peek().type !== TokenType.EOF) {
|
|
74
100
|
const token = this.peek();
|
|
75
101
|
throw new ParseError(`Unexpected token '${token.value}'`, 'UNEXPECTED_TOKEN', token.position, token);
|
|
76
102
|
}
|
|
77
103
|
return ast;
|
|
78
104
|
}
|
|
79
|
-
parseExpression(minBp) {
|
|
105
|
+
parseExpression(minBp, pending) {
|
|
80
106
|
const entryDepth = this.depth;
|
|
81
107
|
this.depth += 1;
|
|
82
108
|
this.guardDepth();
|
|
83
109
|
try {
|
|
84
|
-
let left = this.parseNud();
|
|
110
|
+
let left = this.parseNud(pending);
|
|
85
111
|
while (this.hasTokens()) {
|
|
86
112
|
const token = this.peek();
|
|
87
113
|
const leftBp = this.getLeftBp(token);
|
|
@@ -103,7 +129,7 @@ export class Parser {
|
|
|
103
129
|
throw new ParseError(`Expression nesting exceeds the maximum depth of ${MAX_PARSE_DEPTH}`, 'MAX_DEPTH_EXCEEDED', this.peek().position, this.peek());
|
|
104
130
|
}
|
|
105
131
|
}
|
|
106
|
-
parseNud() {
|
|
132
|
+
parseNud(pending) {
|
|
107
133
|
const token = this.advance();
|
|
108
134
|
switch (token.type) {
|
|
109
135
|
case TokenType.NUMBER:
|
|
@@ -125,7 +151,11 @@ export class Parser {
|
|
|
125
151
|
case TokenType.AT:
|
|
126
152
|
return this.parseVariable(token);
|
|
127
153
|
case TokenType.EOF:
|
|
128
|
-
throw new ParseError(
|
|
154
|
+
throw new ParseError(pending == null
|
|
155
|
+
? 'Empty notation'
|
|
156
|
+
: `Expected ${expectedOperand(pending)} after '${pending.value}'`, 'UNEXPECTED_END', token.position);
|
|
157
|
+
case TokenType.VS:
|
|
158
|
+
throw new ParseError('Versus needs a roll on its left', 'UNEXPECTED_TOKEN', token.position, token);
|
|
129
159
|
default:
|
|
130
160
|
throw new ParseError(`Unexpected token '${token.value}'`, 'UNEXPECTED_TOKEN', token.position, token);
|
|
131
161
|
}
|
|
@@ -175,8 +205,16 @@ export class Parser {
|
|
|
175
205
|
return this.parseVersus(left, token);
|
|
176
206
|
case TokenType.FAIL:
|
|
177
207
|
return Parser.throwOrphanFailThreshold(token);
|
|
178
|
-
default:
|
|
208
|
+
default: {
|
|
209
|
+
const trailing = rightmostNode(left);
|
|
210
|
+
if (token.type === TokenType.NUMBER &&
|
|
211
|
+
(trailing.type === 'Sort' ||
|
|
212
|
+
(trailing.type === 'Explode' && trailing.threshold == null) ||
|
|
213
|
+
(trailing.type === 'CritThreshold' && isBareCritThreshold(trailing)))) {
|
|
214
|
+
throw new ParseError('This modifier takes no count', 'UNEXPECTED_TOKEN', token.position, token);
|
|
215
|
+
}
|
|
179
216
|
throw new ParseError(`Unexpected infix token '${token.value}'`, 'UNEXPECTED_TOKEN', token.position, token);
|
|
217
|
+
}
|
|
180
218
|
}
|
|
181
219
|
}
|
|
182
220
|
static syntheticLiteral(value, token) {
|
|
@@ -191,7 +229,7 @@ export class Parser {
|
|
|
191
229
|
};
|
|
192
230
|
}
|
|
193
231
|
parseUnaryMinus(token) {
|
|
194
|
-
const operand = this.parseExpression(BP.UNARY);
|
|
232
|
+
const operand = this.parseExpression(BP.UNARY, token);
|
|
195
233
|
this.rejectSuccessCountTarget(operand, token);
|
|
196
234
|
return {
|
|
197
235
|
type: 'UnaryOp',
|
|
@@ -202,7 +240,7 @@ export class Parser {
|
|
|
202
240
|
};
|
|
203
241
|
}
|
|
204
242
|
parsePrefixDice(token) {
|
|
205
|
-
const sides = this.parseExpression(BP.DICE_RIGHT);
|
|
243
|
+
const sides = this.parseExpression(BP.DICE_RIGHT, token);
|
|
206
244
|
this.rejectSuccessCountTarget(sides, token);
|
|
207
245
|
this.rejectVersusMetaOperand(sides, token);
|
|
208
246
|
return {
|
|
@@ -217,7 +255,7 @@ export class Parser {
|
|
|
217
255
|
this.rejectSuccessCountTarget(left, token);
|
|
218
256
|
this.rejectVersusMetaOperand(left, token);
|
|
219
257
|
this.rejectBareDiceChain(left, token);
|
|
220
|
-
const sides = this.parseExpression(BP.DICE_RIGHT);
|
|
258
|
+
const sides = this.parseExpression(BP.DICE_RIGHT, token);
|
|
221
259
|
this.rejectSuccessCountTarget(sides, token);
|
|
222
260
|
this.rejectVersusMetaOperand(sides, token);
|
|
223
261
|
return {
|
|
@@ -269,7 +307,10 @@ export class Parser {
|
|
|
269
307
|
};
|
|
270
308
|
}
|
|
271
309
|
parseGrouped(token) {
|
|
272
|
-
|
|
310
|
+
if (this.peek().type === TokenType.RPAREN) {
|
|
311
|
+
throw new ParseError('Empty parentheses', 'UNEXPECTED_TOKEN', token.position, token);
|
|
312
|
+
}
|
|
313
|
+
const expression = this.parseExpression(0, token);
|
|
273
314
|
const close = this.expect(TokenType.RPAREN);
|
|
274
315
|
return { type: 'Grouped', expression, start: token.position, end: close.end };
|
|
275
316
|
}
|
|
@@ -277,10 +318,10 @@ export class Parser {
|
|
|
277
318
|
if (this.peek().type === TokenType.RBRACE) {
|
|
278
319
|
throw new ParseError('Empty group', 'UNEXPECTED_TOKEN', startToken.position, startToken);
|
|
279
320
|
}
|
|
280
|
-
const expressions = [this.parseExpression(0)];
|
|
321
|
+
const expressions = [this.parseExpression(0, startToken)];
|
|
281
322
|
while (this.peek().type === TokenType.COMMA) {
|
|
282
|
-
this.advance();
|
|
283
|
-
expressions.push(this.parseExpression(0));
|
|
323
|
+
const comma = this.advance();
|
|
324
|
+
expressions.push(this.parseExpression(0, comma));
|
|
284
325
|
}
|
|
285
326
|
if (this.peek().type !== TokenType.RBRACE) {
|
|
286
327
|
const unterminated = this.peek();
|
|
@@ -293,15 +334,15 @@ export class Parser {
|
|
|
293
334
|
return { type: 'Variable', name: token.value, start: token.position, end: token.end };
|
|
294
335
|
}
|
|
295
336
|
parseFunctionCall(token) {
|
|
296
|
-
this.expect(TokenType.LPAREN);
|
|
337
|
+
const open = this.expect(TokenType.LPAREN);
|
|
297
338
|
const args = [];
|
|
298
339
|
if (this.peek().type !== TokenType.RPAREN) {
|
|
299
|
-
const first = this.parseExpression(0);
|
|
340
|
+
const first = this.parseExpression(0, open);
|
|
300
341
|
this.rejectSuccessCountTarget(first, token);
|
|
301
342
|
args.push(first);
|
|
302
343
|
while (this.peek().type === TokenType.COMMA) {
|
|
303
|
-
this.advance();
|
|
304
|
-
const next = this.parseExpression(0);
|
|
344
|
+
const comma = this.advance();
|
|
345
|
+
const next = this.parseExpression(0, comma);
|
|
305
346
|
this.rejectSuccessCountTarget(next, token);
|
|
306
347
|
args.push(next);
|
|
307
348
|
}
|
|
@@ -327,7 +368,7 @@ export class Parser {
|
|
|
327
368
|
this.rejectSuccessCountTarget(left, token);
|
|
328
369
|
const operator = this.getOperatorSymbol(token);
|
|
329
370
|
const rightBp = this.getRightBp(token);
|
|
330
|
-
const right = this.parseExpression(rightBp);
|
|
371
|
+
const right = this.parseExpression(rightBp, token);
|
|
331
372
|
this.rejectSuccessCountTarget(right, token);
|
|
332
373
|
return {
|
|
333
374
|
type: 'BinaryOp',
|
|
@@ -356,7 +397,7 @@ export class Parser {
|
|
|
356
397
|
rejectSuccessCountTarget(target, token) {
|
|
357
398
|
const node = unwrapGrouped(target);
|
|
358
399
|
if (isSuccessCount(node)) {
|
|
359
|
-
throw new ParseError(`
|
|
400
|
+
throw new ParseError(`Success counting is terminal: it cannot be part of a larger expression`, 'INVALID_SUCCESS_COUNT_TARGET', token.position, token);
|
|
360
401
|
}
|
|
361
402
|
}
|
|
362
403
|
rejectGroupTarget(target, token, action, code, singleSubRollPasses = false) {
|
|
@@ -424,7 +465,7 @@ export class Parser {
|
|
|
424
465
|
nextToken === TokenType.LPAREN ||
|
|
425
466
|
nextToken === TokenType.AT;
|
|
426
467
|
const count = hasExplicitCount
|
|
427
|
-
? this.parseExpression(BP.DICE_LEFT)
|
|
468
|
+
? this.parseExpression(BP.DICE_LEFT, token)
|
|
428
469
|
: Parser.syntheticLiteral(1, token);
|
|
429
470
|
this.rejectSuccessCountTarget(count, token);
|
|
430
471
|
this.rejectVersusMetaOperand(count, token);
|
|
@@ -502,7 +543,7 @@ export class Parser {
|
|
|
502
543
|
if (!hasExplicitValue) {
|
|
503
544
|
throw new ParseError(`Expected value after '${token.value}'`, 'EXPECTED_TOKEN', token.position, token);
|
|
504
545
|
}
|
|
505
|
-
const value = this.parseExpression(BP.DICE_LEFT);
|
|
546
|
+
const value = this.parseExpression(BP.DICE_LEFT, token);
|
|
506
547
|
this.rejectSuccessCountTarget(value, token);
|
|
507
548
|
this.rejectVersusMetaOperand(value, token);
|
|
508
549
|
return {
|
|
@@ -583,7 +624,7 @@ export class Parser {
|
|
|
583
624
|
throw new ParseError(`Success counting requires a target whose dice can be counted one face at a time`, 'INVALID_SUCCESS_COUNT_TARGET', token.position, token);
|
|
584
625
|
}
|
|
585
626
|
const operator = this.getCompareOp(token);
|
|
586
|
-
const value = this.parseExpression(BP.DICE_LEFT);
|
|
627
|
+
const value = this.parseExpression(BP.DICE_LEFT, token);
|
|
587
628
|
this.rejectSuccessCountTarget(value, token);
|
|
588
629
|
this.rejectVersusMetaOperand(value, token);
|
|
589
630
|
const start = target.start ?? token.position;
|
|
@@ -591,8 +632,8 @@ export class Parser {
|
|
|
591
632
|
if (this.peek().type !== TokenType.FAIL) {
|
|
592
633
|
return { type: 'SuccessCount', target, threshold: { operator, value }, start, end };
|
|
593
634
|
}
|
|
594
|
-
this.advance();
|
|
595
|
-
const failThreshold = this.parseFailThreshold(token);
|
|
635
|
+
const failToken = this.advance();
|
|
636
|
+
const failThreshold = this.parseFailThreshold(token, failToken);
|
|
596
637
|
return {
|
|
597
638
|
type: 'SuccessCount',
|
|
598
639
|
target,
|
|
@@ -602,10 +643,10 @@ export class Parser {
|
|
|
602
643
|
end: failThreshold.value.end ?? end,
|
|
603
644
|
};
|
|
604
645
|
}
|
|
605
|
-
parseFailThreshold(token) {
|
|
646
|
+
parseFailThreshold(token, failToken) {
|
|
606
647
|
if (this.isComparePointAhead())
|
|
607
648
|
return this.parseComparePoint();
|
|
608
|
-
const failValue = this.parseExpression(BP.DICE_LEFT);
|
|
649
|
+
const failValue = this.parseExpression(BP.DICE_LEFT, failToken);
|
|
609
650
|
this.rejectSuccessCountTarget(failValue, token);
|
|
610
651
|
this.rejectVersusMetaOperand(failValue, token);
|
|
611
652
|
return { operator: '=', value: failValue };
|
|
@@ -622,7 +663,7 @@ export class Parser {
|
|
|
622
663
|
if (leftChain.type === 'Versus') {
|
|
623
664
|
throw new ParseError('Cannot chain versus operators', 'NESTED_VERSUS', token.position, token);
|
|
624
665
|
}
|
|
625
|
-
const dc = this.parseExpression(BP.VS_RIGHT);
|
|
666
|
+
const dc = this.parseExpression(BP.VS_RIGHT, token);
|
|
626
667
|
this.rejectSuccessCountTarget(dc, token);
|
|
627
668
|
return {
|
|
628
669
|
type: 'Versus',
|
|
@@ -644,7 +685,7 @@ export class Parser {
|
|
|
644
685
|
const token = this.peek();
|
|
645
686
|
const operator = this.getCompareOp(token);
|
|
646
687
|
this.advance();
|
|
647
|
-
const value = this.parseExpression(BP.DICE_LEFT);
|
|
688
|
+
const value = this.parseExpression(BP.DICE_LEFT, token);
|
|
648
689
|
this.rejectSuccessCountTarget(value, token);
|
|
649
690
|
this.rejectVersusMetaOperand(value, token);
|
|
650
691
|
return { operator, value };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/parser/parser.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/parser/parser.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAc,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAuB3D,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC3D,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,qBAAqB,EACrB,cAAc,EACd,YAAY,EACZ,oBAAoB,EACpB,eAAe,EACf,oBAAoB,EACpB,aAAa,GACd,MAAM,aAAa,CAAC;AAyBrB,MAAM,OAAO,UAAW,SAAQ,eAAe;IAEpC,QAAQ,CAAS;IAMjB,KAAK,CAAoB;IAElC,YACE,OAAe,EACf,IAAyB,EACzB,QAAgB,EAChB,KAAa,EACb,OAAsB;QAEtB,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AAgBD,MAAM,EAAE,GAAG;IAGT,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,CAAC;IAGX,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,EAAE;IACZ,SAAS,EAAE,EAAE;IACb,QAAQ,EAAE,EAAE;IACZ,SAAS,EAAE,EAAE;IAEb,KAAK,EAAE,EAAE;IACT,QAAQ,EAAE,EAAE;IACZ,SAAS,EAAE,EAAE;IAGb,QAAQ,EAAE,EAAE;IACZ,SAAS,EAAE,EAAE;IACb,UAAU,EAAE,EAAE;CACN,CAAC;AA2BX,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,CAAC;AAQnC,MAAM,aAAa,GAAG;IACpB,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,KAAK;IACzB,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,KAAK;IACzB,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,KAAK;IACzB,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,KAAK;IACzB,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,KAAK;CACoB,CAAC;AAU/C,SAAS,mBAAmB,CAAC,IAAuB;IAClD,MAAM,SAAS,GAAG,CAAC,SAAwB,EAAW,EAAE,CAAC,SAAS,KAAK,SAAS,CAAC;IACjF,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AACzF,CAAC;AAaD,SAAS,aAAa,CAAC,IAAa;IAClC,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,SAAS,CAAC;QACR,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,KAAK,UAAU;gBACb,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;gBACxB,MAAM;YACR,KAAK,SAAS;gBACZ,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;gBAC1B,MAAM;YACR,KAAK,QAAQ;gBACX,OAAO,GAAG,OAAO,CAAC,EAAE,CAAC;gBACrB,MAAM;YACR;gBACE,OAAO,OAAO,CAAC;QACnB,CAAC;IACH,CAAC;AACH,CAAC;AAKD,SAAS,eAAe,CAAC,KAAY;IACnC,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI;QAAE,OAAO,cAAc,CAAC;IACzD,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE;QAAE,OAAO,oBAAoB,CAAC;IAC7D,OAAO,SAAS,CAAC;AACnB,CAAC;AAMD,MAAM,cAAc,GAAiD;IACnE,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;IACzB,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;IACxB,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;IACzB,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;IACvB,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;IACxB,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;IACvB,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,iBAAiB,EAAE;IAC9C,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,iBAAiB,EAAE;CAC/C,CAAC;AAGF,SAAS,WAAW,CAAC,KAAmC;IACtD,IAAI,KAAK,CAAC,GAAG,KAAK,MAAM,CAAC,iBAAiB;QAAE,OAAO,YAAY,KAAK,CAAC,GAAG,EAAE,CAAC;IAC3E,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG;QAAE,OAAO,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;IACnD,OAAO,GAAG,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;AACrC,CAAC;AAGD,MAAM,gBAAgB,GAAuD;IAC3E,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,UAAU;IAC/B,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,UAAU;IACxC,CAAC,SAAS,CAAC,mBAAmB,CAAC,EAAE,aAAa;CAC/C,CAAC;AAQF,MAAM,OAAO,MAAM;IACA,MAAM,CAAU;IACzB,GAAG,GAAG,CAAC,CAAC;IACR,KAAK,GAAG,CAAC,CAAC;IAElB,YAAY,MAAe;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAKD,KAAK;QAGH,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QAE/C,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,GAAG,EAAE,CAAC;YACvC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC1B,MAAM,IAAI,UAAU,CAClB,qBAAqB,KAAK,CAAC,KAAK,GAAG,EACnC,kBAAkB,EAClB,KAAK,CAAC,QAAQ,EACd,KAAK,CACN,CAAC;QACJ,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IASO,eAAe,CAAC,KAAa,EAAE,OAA0B;QAC/D,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;QAC9B,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;QAChB,IAAI,CAAC,UAAU,EAAE,CAAC;QAElB,IAAI,CAAC;YACH,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAElC,OAAO,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;gBACxB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBAErC,IAAI,MAAM,GAAG,KAAK;oBAAE,MAAM;gBAE1B,IAAI,CAAC,OAAO,EAAE,CAAC;gBACf,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAIlC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;gBAChB,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC;QAC1B,CAAC;IACH,CAAC;IAMO,UAAU;QAChB,IAAI,IAAI,CAAC,KAAK,GAAG,eAAe,EAAE,CAAC;YACjC,MAAM,IAAI,UAAU,CAClB,mDAAmD,eAAe,EAAE,EACpE,oBAAoB,EACpB,IAAI,CAAC,IAAI,EAAE,CAAC,QAAQ,EACpB,IAAI,CAAC,IAAI,EAAE,CACZ,CAAC;QACJ,CAAC;IACH,CAAC;IAMO,QAAQ,CAAC,OAA0B;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAE7B,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,SAAS,CAAC,MAAM;gBACnB,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAElC,KAAK,SAAS,CAAC,KAAK;gBAClB,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAErC,KAAK,SAAS,CAAC,IAAI;gBACjB,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAErC,KAAK,SAAS,CAAC,YAAY;gBACzB,OAAO,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;YAE5C,KAAK,SAAS,CAAC,SAAS;gBACtB,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;YAEzC,KAAK,SAAS,CAAC,MAAM;gBACnB,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAElC,KAAK,SAAS,CAAC,MAAM;gBACnB,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAEhC,KAAK,SAAS,CAAC,QAAQ;gBACrB,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAEvC,KAAK,SAAS,CAAC,EAAE;gBACf,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAEnC,KAAK,SAAS,CAAC,GAAG;gBAChB,MAAM,IAAI,UAAU,CAClB,OAAO,IAAI,IAAI;oBACb,CAAC,CAAC,gBAAgB;oBAClB,CAAC,CAAC,YAAY,eAAe,CAAC,OAAO,CAAC,WAAW,OAAO,CAAC,KAAK,GAAG,EACnE,gBAAgB,EAChB,KAAK,CAAC,QAAQ,CACf,CAAC;YAIJ,KAAK,SAAS,CAAC,EAAE;gBACf,MAAM,IAAI,UAAU,CAClB,iCAAiC,EACjC,kBAAkB,EAClB,KAAK,CAAC,QAAQ,EACd,KAAK,CACN,CAAC;YAEJ;gBACE,MAAM,IAAI,UAAU,CAClB,qBAAqB,KAAK,CAAC,KAAK,GAAG,EACnC,kBAAkB,EAClB,KAAK,CAAC,QAAQ,EACd,KAAK,CACN,CAAC;QACN,CAAC;IACH,CAAC;IAMO,QAAQ,CAAC,IAAa,EAAE,KAAY;QAC1C,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,SAAS,CAAC,IAAI;gBACjB,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAE1C,KAAK,SAAS,CAAC,YAAY;gBACzB,OAAO,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAEjD,KAAK,SAAS,CAAC,SAAS;gBACtB,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAE9C,KAAK,SAAS,CAAC,IAAI,CAAC;YACpB,KAAK,SAAS,CAAC,KAAK,CAAC;YACrB,KAAK,SAAS,CAAC,QAAQ,CAAC;YACxB,KAAK,SAAS,CAAC,MAAM,CAAC;YACtB,KAAK,SAAS,CAAC,MAAM,CAAC;YACtB,KAAK,SAAS,CAAC,KAAK;gBAClB,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAEzC,KAAK,SAAS,CAAC,SAAS,CAAC;YACzB,KAAK,SAAS,CAAC,QAAQ,CAAC;YACxB,KAAK,SAAS,CAAC,SAAS,CAAC;YACzB,KAAK,SAAS,CAAC,QAAQ;gBACrB,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAEzC,KAAK,SAAS,CAAC,OAAO,CAAC;YACvB,KAAK,SAAS,CAAC,gBAAgB,CAAC;YAChC,KAAK,SAAS,CAAC,mBAAmB;gBAChC,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAExC,KAAK,SAAS,CAAC,MAAM,CAAC;YACtB,KAAK,SAAS,CAAC,WAAW;gBACxB,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAEvC,KAAK,SAAS,CAAC,QAAQ,CAAC;YACxB,KAAK,SAAS,CAAC,SAAS;gBACtB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAErC,KAAK,SAAS,CAAC,YAAY,CAAC;YAC5B,KAAK,SAAS,CAAC,SAAS;gBACtB,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAE9C,KAAK,SAAS,CAAC,QAAQ;gBAGrB,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAEzC,KAAK,SAAS,CAAC,OAAO,CAAC;YACvB,KAAK,SAAS,CAAC,aAAa,CAAC;YAC7B,KAAK,SAAS,CAAC,IAAI,CAAC;YACpB,KAAK,SAAS,CAAC,UAAU,CAAC;YAC1B,KAAK,SAAS,CAAC,KAAK;gBAClB,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAE7C,KAAK,SAAS,CAAC,EAAE;gBACf,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAEvC,KAAK,SAAS,CAAC,IAAI;gBACjB,OAAO,MAAM,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;YAEhD,SAAS,CAAC;gBAKR,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;gBACrC,IACE,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM;oBAC/B,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM;wBACvB,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,IAAI,QAAQ,CAAC,SAAS,IAAI,IAAI,CAAC;wBAC3D,CAAC,QAAQ,CAAC,IAAI,KAAK,eAAe,IAAI,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,EACvE,CAAC;oBACD,MAAM,IAAI,UAAU,CAClB,8BAA8B,EAC9B,kBAAkB,EAClB,KAAK,CAAC,QAAQ,EACd,KAAK,CACN,CAAC;gBACJ,CAAC;gBACD,MAAM,IAAI,UAAU,CAClB,2BAA2B,KAAK,CAAC,KAAK,GAAG,EACzC,kBAAkB,EAClB,KAAK,CAAC,QAAQ,EACd,KAAK,CACN,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAUO,MAAM,CAAC,gBAAgB,CAAC,KAAa,EAAE,KAAY;QACzD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;IAChF,CAAC;IAEO,YAAY,CAAC,KAAY;QAC/B,OAAO;YACL,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;YACrC,KAAK,EAAE,KAAK,CAAC,QAAQ;YACrB,GAAG,EAAE,KAAK,CAAC,GAAG;SACf,CAAC;IACJ,CAAC;IAEO,eAAe,CAAC,KAAY;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACtD,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC9C,OAAO;YACL,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,GAAG;YACb,OAAO;YACP,KAAK,EAAE,KAAK,CAAC,QAAQ;YACrB,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG;SAC9B,CAAC;IACJ,CAAC;IAEO,eAAe,CAAC,KAAY;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QACzD,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC5C,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC3C,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,KAAK,CAAC;YACxC,KAAK;YACL,KAAK,EAAE,KAAK,CAAC,QAAQ;YACrB,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG;SAC5B,CAAC;IACJ,CAAC;IAEO,cAAc,CAAC,IAAa,EAAE,KAAY;QAChD,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QACzD,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC5C,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC3C,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,IAAI;YACX,KAAK;YACL,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ;YACnC,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG;SAC5B,CAAC;IACJ,CAAC;IAEO,sBAAsB,CAAC,KAAY;QACzC,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,KAAK,CAAC;YACxC,KAAK,EAAE,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC;YAC1C,KAAK,EAAE,KAAK,CAAC,QAAQ;YACrB,GAAG,EAAE,KAAK,CAAC,GAAG;SACf,CAAC;IACJ,CAAC;IAEO,qBAAqB,CAAC,IAAa,EAAE,KAAY;QACvD,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACtC,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC;YAC1C,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ;YACnC,GAAG,EAAE,KAAK,CAAC,GAAG;SACf,CAAC;IACJ,CAAC;IAEO,mBAAmB,CAAC,KAAY;QACtC,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,KAAK,CAAC;YACxC,KAAK,EAAE,KAAK,CAAC,QAAQ;YACrB,GAAG,EAAE,KAAK,CAAC,GAAG;SACf,CAAC;IACJ,CAAC;IAEO,kBAAkB,CAAC,IAAa,EAAE,KAAY;QAGpD,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACtC,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ;YACnC,GAAG,EAAE,KAAK,CAAC,GAAG;SACf,CAAC;IACJ,CAAC;IAEO,YAAY,CAAC,KAAY;QAG/B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC;YAC1C,MAAM,IAAI,UAAU,CAAC,mBAAmB,EAAE,kBAAkB,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACvF,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC5C,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;IAChF,CAAC;IAEO,UAAU,CAAC,UAAiB;QAIlC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC;YAC1C,MAAM,IAAI,UAAU,CAAC,aAAa,EAAE,kBAAkB,EAAE,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC3F,CAAC;QAED,MAAM,WAAW,GAAc,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,KAAK,EAAE,CAAC;YAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YAC7B,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC;YAC1C,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YACjC,MAAM,IAAI,UAAU,CAClB,yCAAyC,EACzC,gBAAgB,EAChB,YAAY,CAAC,QAAQ,EACrB,YAAY,CACb,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAE7B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;IACpF,CAAC;IAEO,aAAa,CAAC,KAAY;QAChC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;IACxF,CAAC;IAEO,iBAAiB,CAAC,KAAY;QAGpC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAE3C,MAAM,IAAI,GAAc,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC;YAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAC5C,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAC5C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjB,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,KAAK,EAAE,CAAC;gBAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBAC5C,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAC3C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAE5C,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAGlB,MAAM,IAAI,UAAU,CAClB,qBAAqB,KAAK,CAAC,KAAK,GAAG,EACnC,kBAAkB,EAClB,KAAK,CAAC,QAAQ,EACd,KAAK,CACN,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;YACvD,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;YACpC,MAAM,IAAI,UAAU,CAClB,aAAa,KAAK,CAAC,KAAK,aAAa,QAAQ,YAAY,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,CAAC,MAAM,EAAE,EAC5H,wBAAwB,EACxB,KAAK,CAAC,QAAQ,EACd,KAAK,CACN,CAAC;QACJ,CAAC;QAED,OAAO;YACL,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,KAAK,CAAC,KAAK;YACjB,IAAI;YACJ,KAAK,EAAE,KAAK,CAAC,QAAQ;YACrB,GAAG,EAAE,KAAK,CAAC,GAAG;SACf,CAAC;IACJ,CAAC;IAEO,aAAa,CAAC,IAAa,EAAE,KAAY;QAC/C,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAE3C,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAEnD,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAE5C,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,QAAQ;YACR,IAAI;YACJ,KAAK;YACL,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ;YACnC,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG;SAC5B,CAAC;IACJ,CAAC;IAUO,mBAAmB,CAAC,IAAa,EAAE,KAAY;QACrD,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,MAAM,CAAC;YACZ,KAAK,UAAU,CAAC;YAChB,KAAK,SAAS,CAAC;YACf,KAAK,QAAQ,CAAC;YACd,KAAK,UAAU,CAAC;YAChB,KAAK,UAAU,CAAC;YAChB,KAAK,MAAM,CAAC;YACZ,KAAK,eAAe;gBAClB,MAAM,IAAI,UAAU,CAClB,oGAAoG,EACpG,sBAAsB,EACtB,KAAK,CAAC,QAAQ,EACd,KAAK,CACN,CAAC;YACJ;gBACE,OAAO;QACX,CAAC;IACH,CAAC;IAEO,wBAAwB,CAAC,MAAe,EAAE,KAAY;QAI5D,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;YAKzB,MAAM,IAAI,UAAU,CAClB,wEAAwE,EACxE,8BAA8B,EAC9B,KAAK,CAAC,QAAQ,EACd,KAAK,CACN,CAAC;QACJ,CAAC;IACH,CAAC;IAgBO,iBAAiB,CACvB,MAAe,EACf,KAAY,EACZ,MAAc,EACd,IAAyB,EACzB,mBAAmB,GAAG,KAAK;QAE3B,MAAM,IAAI,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;YAAE,OAAO;QAClC,IAAI,mBAAmB,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAMzD,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAClC,IAAI,KAAK,IAAI,IAAI,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClD,MAAM,IAAI,UAAU,CAAC,UAAU,MAAM,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAChF,CAAC;YACD,OAAO;QACT,CAAC;QACD,MAAM,IAAI,UAAU,CAAC,UAAU,MAAM,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAChF,CAAC;IAWO,uBAAuB,CAAC,OAAgB,EAAE,KAAY;QAC5D,IAAI,cAAc,CAAC,OAAO,CAAC;YAAE,MAAM,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;IACvE,CAAC;IAQO,MAAM,CAAC,yBAAyB,CAAC,KAAY;QACnD,MAAM,IAAI,UAAU,CAClB,4CAA4C,EAC5C,eAAe,EACf,KAAK,CAAC,QAAQ,EACd,KAAK,CACN,CAAC;IACJ,CAAC;IAEO,kBAAkB,CAAC,MAAe,EAAE,KAAY;QAOtD,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ;YAAE,MAAM,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;QAMpE,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAClC,IAAI,KAAK,IAAI,IAAI,IAAI,cAAc,CAAC,KAAK,CAAC;gBAAE,MAAM,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;QACtF,CAAC;IACH,CAAC;IAEO,aAAa,CAAC,MAAe,EAAE,KAAY;QACjD,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAK7C,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAIvC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,UAAU,CAClB,gDAAgD,EAChD,0BAA0B,EAC1B,KAAK,CAAC,QAAQ,EACd,KAAK,CACN,CAAC;QACJ,CAAC;QAMD,MAAM,IAAI,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAClC,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;gBAKlB,IAAI,SAAS,GAAG,KAAK,CAAC;gBACtB,OAAO,IAAI,EAAE,CAAC;oBACZ,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;oBACxC,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC;wBAAE,MAAM;oBACtE,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;oBACnC,IAAI,IAAI,IAAI,IAAI;wBAAE,MAAM;oBACxB,SAAS,GAAG,IAAI,CAAC;gBACnB,CAAC;gBACD,IAAI,CAAC,wBAAwB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;gBAEhD,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC5B,MAAM,IAAI,UAAU,CAClB,qEAAqE,EACrE,0BAA0B,EAC1B,KAAK,CAAC,QAAQ,EACd,KAAK,CACN,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,IAAI,GACR,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QAE5F,MAAM,QAAQ,GACZ,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,SAAS;YACtE,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,QAAQ,CAAC;QAEf,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC;QACnC,MAAM,gBAAgB,GACpB,SAAS,KAAK,SAAS,CAAC,MAAM;YAC9B,SAAS,KAAK,SAAS,CAAC,MAAM;YAC9B,SAAS,KAAK,SAAS,CAAC,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAY,gBAAgB;YACrC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC;YAC3C,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC5C,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAE3C,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,IAAI;YACJ,QAAQ;YACR,KAAK;YACL,MAAM;YACN,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ;YACrC,GAAG,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG;SAC7D,CAAC;IACJ,CAAC;IAEO,YAAY,CAAC,MAAe,EAAE,KAAY;QAChD,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAI7C,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,wBAAwB,CAAC,CAAC;QAI3E,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,UAAU,CAClB,8CAA8C,EAC9C,wBAAwB,EACxB,KAAK,CAAC,QAAQ,EACd,KAAK,CACN,CAAC;QACJ,CAAC;QAID,IAAI,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,UAAU,CAClB,0BAA0B,EAC1B,wBAAwB,EACxB,KAAK,CAAC,QAAQ,EACd,KAAK,CACN,CAAC;QACJ,CAAC;QAGD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,IAAI,UAAU,CAClB,gCAAgC,EAChC,wBAAwB,EACxB,KAAK,CAAC,QAAQ,EACd,KAAK,CACN,CAAC;QACJ,CAAC;QAID,MAAM,OAAO,GAA2B,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC;QAEtF,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC;QAC7C,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC;YAChC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;QACrE,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAE3C,OAAO;YACL,IAAI,EAAE,SAAS;YACf,OAAO;YACP,MAAM;YACN,SAAS;YACT,KAAK;YACL,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG;SACtC,CAAC;IACJ,CAAC;IAEO,WAAW,CAAC,MAAe,EAAE,KAAY;QAC/C,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAI7C,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,uBAAuB,CAAC,CAAC;QAIzE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,UAAU,CAClB,6CAA6C,EAC7C,uBAAuB,EACvB,KAAK,CAAC,QAAQ,EACd,KAAK,CACN,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC;YAChC,MAAM,IAAI,UAAU,CAClB,uCAAuC,KAAK,CAAC,KAAK,GAAG,EACrD,gBAAgB,EAChB,KAAK,CAAC,QAAQ,EACd,KAAK,CACN,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,WAAW,CAAC;QAClD,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAE3C,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,IAAI;YACJ,SAAS;YACT,MAAM;YACN,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ;YACrC,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG;SACtC,CAAC;IACJ,CAAC;IAEO,aAAa,CAAC,MAAe,EAAE,KAAY;QACjD,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC7C,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAKvC,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,KAAK,CAAC,KAAK,MAAM,EAAE,0BAA0B,CAAC,CAAC;QAI/F,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,UAAU,CAClB,gDAAgD,EAChD,0BAA0B,EAC1B,KAAK,CAAC,QAAQ,EACd,KAAK,CACN,CAAC;QACJ,CAAC;QAID,IAAI,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,UAAU,CAClB,6BAA6B,EAC7B,0BAA0B,EAC1B,KAAK,CAAC,QAAQ,EACd,KAAK,CACN,CAAC;QACJ,CAAC;QAGD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC;QACnC,MAAM,gBAAgB,GACpB,SAAS,KAAK,SAAS,CAAC,MAAM;YAC9B,SAAS,KAAK,SAAS,CAAC,MAAM;YAC9B,SAAS,KAAK,SAAS,CAAC,EAAE,CAAC;QAC7B,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,MAAM,IAAI,UAAU,CAClB,yBAAyB,KAAK,CAAC,KAAK,GAAG,EACvC,gBAAgB,EAChB,KAAK,CAAC,QAAQ,EACd,KAAK,CACN,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACxD,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC5C,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAE3C,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK;YAC5C,KAAK;YACL,MAAM;YACN,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ;YACrC,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG;SAC5B,CAAC;IACJ,CAAC;IAEO,SAAS,CAAC,MAAe,EAAE,KAAY;QAC7C,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC7C,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAKvC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,UAAU,CAClB,2CAA2C,EAC3C,qBAAqB,EACrB,KAAK,CAAC,QAAQ,EACd,KAAK,CACN,CAAC;QACJ,CAAC;QAOD,MAAM,IAAI,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YAC1D,MAAM,IAAI,UAAU,CAClB,0DAA0D,EAC1D,qBAAqB,EACrB,KAAK,CAAC,QAAQ,EACd,KAAK,CACN,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GAAsB,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC;QAIhG,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,KAAK;YACL,MAAM;YACN,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ;YACrC,GAAG,EAAE,KAAK,CAAC,GAAG;SACf,CAAC;IACJ,CAAC;IAEO,kBAAkB,CAAC,MAAe,EAAE,KAAY;QACtD,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC7C,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAOvC,IAAI,CAAC,iBAAiB,CACpB,MAAM,EACN,KAAK,EACL,yBAAyB,EACzB,+BAA+B,EAC/B,IAAI,CACL,CAAC;QAKF,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,UAAU,CAClB,qDAAqD,EACrD,+BAA+B,EAC/B,KAAK,CAAC,QAAQ,EACd,KAAK,CACN,CAAC;QACJ,CAAC;QAKD,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5D,MAAM,IAAI,UAAU,CAClB,sCAAsC,EACtC,+BAA+B,EAC/B,KAAK,CAAC,QAAQ,EACd,KAAK,CACN,CAAC;QACJ,CAAC;QAED,MAAM,SAAS,GAAkB,IAAI,CAAC,mBAAmB,EAAE;YACzD,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC1B,CAAC,CAAC,SAAS,CAAC;QACd,MAAM,GAAG,GAAG,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;QAKrF,IAAI,WAAW,GAAY,MAAM,CAAC;QAClC,OAAO,WAAW,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACtC,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC;QACvC,CAAC;QACD,IAAI,eAAe,CAAC,WAAW,CAAC,EAAE,CAAC;YAGjC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,YAAY,CAAC;YACxD,OAAO;gBACL,GAAG,WAAW;gBACd,iBAAiB,EAAE,SAAS;oBAC1B,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,iBAAiB,EAAE,SAAS,CAAC;oBAC/C,CAAC,CAAC,WAAW,CAAC,iBAAiB;gBACjC,cAAc,EAAE,SAAS;oBACvB,CAAC,CAAC,WAAW,CAAC,cAAc;oBAC5B,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,cAAc,EAAE,SAAS,CAAC;gBAC9C,GAAG;aACJ,CAAC;QACJ,CAAC;QAED,OAAO;YACL,IAAI,EAAE,eAAe;YACrB,iBAAiB,EAAE,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;YAC3E,cAAc,EAAE,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;YACrE,MAAM;YACN,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ;YACrC,GAAG;SACJ,CAAC;IACJ,CAAC;IAEO,iBAAiB,CAAC,MAAe,EAAE,KAAY;QAErD,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAU7C,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;YACvD,MAAM,IAAI,UAAU,CAClB,8CAA8C,EAC9C,8BAA8B,EAC9B,KAAK,CAAC,QAAQ,EACd,KAAK,CACN,CAAC;QACJ,CAAC;QAMD,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,CAAC;QAClF,IAAI,CAAC,eAAe,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,UAAU,CAClB,iFAAiF,EACjF,8BAA8B,EAC9B,KAAK,CAAC,QAAQ,EACd,KAAK,CACN,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAE1C,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACxD,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC5C,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC;QAC7C,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC;QAEnC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;YACxC,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;QACtF,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QACjC,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAEhE,OAAO;YACL,IAAI,EAAE,cAAc;YACpB,MAAM;YACN,SAAS,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;YAC9B,aAAa;YACb,KAAK;YACL,GAAG,EAAE,aAAa,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG;SACpC,CAAC;IACJ,CAAC;IASO,kBAAkB,CAAC,KAAY,EAAE,SAAgB;QACvD,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAAE,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAGhE,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAChE,IAAI,CAAC,wBAAwB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAChD,IAAI,CAAC,uBAAuB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAE/C,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IAC7C,CAAC;IAaO,MAAM,CAAC,wBAAwB,CAAC,KAAY;QAClD,MAAM,IAAI,UAAU,CAClB,iFAAiF,EACjF,kBAAkB,EAClB,KAAK,CAAC,QAAQ,EACd,KAAK,CACN,CAAC;IACJ,CAAC;IAEO,WAAW,CAAC,IAAa,EAAE,KAAY;QAC7C,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAM3C,IAAI,SAAS,GAAY,IAAI,CAAC;QAC9B,OAAO,SAAS,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACpC,SAAS,GAAG,SAAS,CAAC,UAAU,CAAC;QACnC,CAAC;QACD,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAChC,MAAM,IAAI,UAAU,CAAC,+BAA+B,EAAE,eAAe,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAChG,CAAC;QAED,MAAM,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACpD,IAAI,CAAC,wBAAwB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAEzC,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,IAAI;YACV,EAAE;YACF,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ;YACnC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG;SACzB,CAAC;IACJ,CAAC;IASO,mBAAmB;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC;QAC9B,OAAO,CACL,IAAI,KAAK,SAAS,CAAC,OAAO;YAC1B,IAAI,KAAK,SAAS,CAAC,aAAa;YAChC,IAAI,KAAK,SAAS,CAAC,IAAI;YACvB,IAAI,KAAK,SAAS,CAAC,UAAU;YAC7B,IAAI,KAAK,SAAS,CAAC,KAAK,CACzB,CAAC;IACJ,CAAC;IAgBO,iBAAiB;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAE1C,IAAI,CAAC,OAAO,EAAE,CAAC;QAEf,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACxD,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC5C,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAE3C,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC7B,CAAC;IAEO,YAAY,CAAC,KAAY;QAC/B,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,SAAS,CAAC,OAAO;gBACpB,OAAO,GAAG,CAAC;YACb,KAAK,SAAS,CAAC,aAAa;gBAC1B,OAAO,IAAI,CAAC;YACd,KAAK,SAAS,CAAC,IAAI;gBACjB,OAAO,GAAG,CAAC;YACb,KAAK,SAAS,CAAC,UAAU;gBACvB,OAAO,IAAI,CAAC;YACd,KAAK,SAAS,CAAC,KAAK;gBAClB,OAAO,GAAG,CAAC;YACb;gBACE,MAAM,IAAI,UAAU,CAClB,yCAAyC,KAAK,CAAC,KAAK,GAAG,EACvD,gBAAgB,EAChB,KAAK,CAAC,QAAQ,EACd,KAAK,CACN,CAAC;QACN,CAAC;IACH,CAAC;IAMO,iBAAiB,CAAC,KAAY;QACpC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,SAAS,CAAC,IAAI;gBACjB,OAAO,GAAG,CAAC;YACb,KAAK,SAAS,CAAC,KAAK;gBAClB,OAAO,GAAG,CAAC;YACb,KAAK,SAAS,CAAC,QAAQ;gBACrB,OAAO,GAAG,CAAC;YACb,KAAK,SAAS,CAAC,MAAM;gBACnB,OAAO,GAAG,CAAC;YACb,KAAK,SAAS,CAAC,MAAM;gBACnB,OAAO,GAAG,CAAC;YACb,KAAK,SAAS,CAAC,KAAK;gBAClB,OAAO,IAAI,CAAC;YACd;gBACE,MAAM,IAAI,UAAU,CAClB,qBAAqB,KAAK,CAAC,KAAK,GAAG,EACnC,kBAAkB,EAClB,KAAK,CAAC,QAAQ,EACd,KAAK,CACN,CAAC;QACN,CAAC;IACH,CAAC;IAEO,SAAS,CAAC,KAAY;QAC5B,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,SAAS,CAAC,EAAE;gBACf,OAAO,EAAE,CAAC,OAAO,CAAC;YACpB,KAAK,SAAS,CAAC,IAAI,CAAC;YACpB,KAAK,SAAS,CAAC,KAAK;gBAClB,OAAO,EAAE,CAAC,QAAQ,CAAC;YACrB,KAAK,SAAS,CAAC,QAAQ,CAAC;YACxB,KAAK,SAAS,CAAC,MAAM,CAAC;YACtB,KAAK,SAAS,CAAC,MAAM;gBACnB,OAAO,EAAE,CAAC,QAAQ,CAAC;YACrB,KAAK,SAAS,CAAC,KAAK;gBAClB,OAAO,EAAE,CAAC,QAAQ,CAAC;YACrB,KAAK,SAAS,CAAC,IAAI,CAAC;YACpB,KAAK,SAAS,CAAC,YAAY,CAAC;YAC5B,KAAK,SAAS,CAAC,SAAS;gBACtB,OAAO,EAAE,CAAC,SAAS,CAAC;YACtB,KAAK,SAAS,CAAC,SAAS,CAAC;YACzB,KAAK,SAAS,CAAC,QAAQ,CAAC;YACxB,KAAK,SAAS,CAAC,SAAS,CAAC;YACzB,KAAK,SAAS,CAAC,QAAQ,CAAC;YACxB,KAAK,SAAS,CAAC,OAAO,CAAC;YACvB,KAAK,SAAS,CAAC,gBAAgB,CAAC;YAChC,KAAK,SAAS,CAAC,mBAAmB,CAAC;YACnC,KAAK,SAAS,CAAC,MAAM,CAAC;YACtB,KAAK,SAAS,CAAC,WAAW,CAAC;YAC3B,KAAK,SAAS,CAAC,QAAQ,CAAC;YACxB,KAAK,SAAS,CAAC,SAAS,CAAC;YACzB,KAAK,SAAS,CAAC,YAAY,CAAC;YAC5B,KAAK,SAAS,CAAC,SAAS;gBACtB,OAAO,EAAE,CAAC,QAAQ,CAAC;YAIrB,KAAK,SAAS,CAAC,OAAO,CAAC;YACvB,KAAK,SAAS,CAAC,aAAa,CAAC;YAC7B,KAAK,SAAS,CAAC,IAAI,CAAC;YACpB,KAAK,SAAS,CAAC,UAAU,CAAC;YAC1B,KAAK,SAAS,CAAC,KAAK;gBAClB,OAAO,EAAE,CAAC,OAAO,CAAC;YAGpB,KAAK,SAAS,CAAC,QAAQ;gBACrB,OAAO,KAAK,CAAC,KAAK,KAAK,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3E,KAAK,SAAS,CAAC,MAAM,CAAC;YACtB,KAAK,SAAS,CAAC,GAAG,CAAC;YACnB,KAAK,SAAS,CAAC,KAAK,CAAC;YAGrB,KAAK,SAAS,CAAC,MAAM,CAAC;YACtB,KAAK,SAAS,CAAC,MAAM;gBACnB,OAAO,CAAC,CAAC,CAAC;YACZ;gBACE,OAAO,CAAC,CAAC;QACb,CAAC;IACH,CAAC;IAEO,UAAU,CAAC,KAAY;QAC7B,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,SAAS,CAAC,EAAE;gBACf,OAAO,EAAE,CAAC,QAAQ,CAAC;YACrB,KAAK,SAAS,CAAC,IAAI,CAAC;YACpB,KAAK,SAAS,CAAC,KAAK;gBAClB,OAAO,EAAE,CAAC,SAAS,CAAC;YACtB,KAAK,SAAS,CAAC,QAAQ,CAAC;YACxB,KAAK,SAAS,CAAC,MAAM,CAAC;YACtB,KAAK,SAAS,CAAC,MAAM;gBACnB,OAAO,EAAE,CAAC,SAAS,CAAC;YACtB,KAAK,SAAS,CAAC,KAAK;gBAClB,OAAO,EAAE,CAAC,SAAS,CAAC;YACtB,KAAK,SAAS,CAAC,IAAI;gBACjB,OAAO,EAAE,CAAC,UAAU,CAAC;YACvB;gBACE,OAAO,CAAC,CAAC;QACb,CAAC;IACH,CAAC;IAEO,IAAI;QACV,OAAO,CACL,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAC/F,CAAC;IACJ,CAAC;IAEO,OAAO;QACb,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,GAAG,EAAE,CAAC;QACX,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,MAAM,CAAC,IAAqB;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACxB,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;YACrC,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC;YAC/E,MAAM,IAAI,UAAU,CAClB,YAAY,QAAQ,YAAY,GAAG,EAAE,EACrC,gBAAgB,EAChB,KAAK,CAAC,QAAQ,EACd,KAAK,CACN,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAEO,SAAS;QACf,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,GAAG,CAAC;IAC5C,CAAC;CACF;AA+CD,MAAM,UAAU,KAAK,CAAC,QAAgB;IACpC,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC7B,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;IAClC,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC;AACxB,CAAC"}
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const version = "3.
|
|
1
|
+
export declare const version = "3.3.0";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const version = '3.
|
|
1
|
+
export const version = '3.3.0';
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "roll-parser",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.3.0",
|
|
4
4
|
"description": "High-performance dice notation parser for tabletop RPGs. TypeScript-first, runs on Node, Bun, and browsers with zero dependencies.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -102,19 +102,19 @@
|
|
|
102
102
|
{
|
|
103
103
|
"name": "index.js (full library)",
|
|
104
104
|
"path": "dist/index.js",
|
|
105
|
-
"limit": "
|
|
105
|
+
"limit": "13.5 kB"
|
|
106
106
|
},
|
|
107
107
|
{
|
|
108
108
|
"name": "index.js — { parse }",
|
|
109
109
|
"path": "dist/index.js",
|
|
110
110
|
"import": "{ parse }",
|
|
111
|
-
"limit": "6 kB"
|
|
111
|
+
"limit": "6.25 kB"
|
|
112
112
|
},
|
|
113
113
|
{
|
|
114
114
|
"name": "index.js — { roll }",
|
|
115
115
|
"path": "dist/index.js",
|
|
116
116
|
"import": "{ roll }",
|
|
117
|
-
"limit": "
|
|
117
|
+
"limit": "13 kB"
|
|
118
118
|
},
|
|
119
119
|
{
|
|
120
120
|
"name": "render.js — { renderBreakdown }",
|
package/src/lexer/lexer.ts
CHANGED
|
@@ -41,6 +41,9 @@ export class LexerError extends RollParserError {
|
|
|
41
41
|
* The offending text — a single character for `UNEXPECTED_CHARACTER` (the
|
|
42
42
|
* whole code point, so astral symbols are not split into surrogates), or
|
|
43
43
|
* the unrecognized word for `UNEXPECTED_IDENTIFIER`.
|
|
44
|
+
*
|
|
45
|
+
* Not guaranteed to appear in `message` — errors that name a rule rather than
|
|
46
|
+
* a character leave it out.
|
|
44
47
|
*/
|
|
45
48
|
readonly character: string;
|
|
46
49
|
|
|
@@ -51,7 +54,7 @@ export class LexerError extends RollParserError {
|
|
|
51
54
|
character: string,
|
|
52
55
|
options?: ErrorOptions,
|
|
53
56
|
) {
|
|
54
|
-
super(
|
|
57
|
+
super(message, code, options);
|
|
55
58
|
this.name = 'LexerError';
|
|
56
59
|
this.position = position;
|
|
57
60
|
this.character = character;
|
|
@@ -71,8 +74,14 @@ const CHAR_UPPER_Z = 90;
|
|
|
71
74
|
const CHAR_LOWER_A = 97;
|
|
72
75
|
const CHAR_LOWER_Z = 122;
|
|
73
76
|
|
|
74
|
-
/**
|
|
75
|
-
|
|
77
|
+
/**
|
|
78
|
+
* Known identifier keywords mapped to their token types.
|
|
79
|
+
*
|
|
80
|
+
* Null-prototype, because every lookup here is keyed by arbitrary user input.
|
|
81
|
+
* Over a plain object literal `'constructor'` resolves to `Object`'s own, and
|
|
82
|
+
* the identifier leaves the lexer as a token whose `type` is a function.
|
|
83
|
+
*/
|
|
84
|
+
const IDENTIFIER_KEYWORDS: Record<string, TokenType> = Object.assign(Object.create(null), {
|
|
76
85
|
kh: TokenType.KEEP_HIGH,
|
|
77
86
|
kl: TokenType.KEEP_LOW,
|
|
78
87
|
k: TokenType.KEEP_HIGH,
|
|
@@ -96,20 +105,58 @@ const IDENTIFIER_KEYWORDS: Record<string, TokenType> = {
|
|
|
96
105
|
sd: TokenType.SORT_DESC,
|
|
97
106
|
cs: TokenType.CRIT_SUCCESS,
|
|
98
107
|
cf: TokenType.CRIT_FAIL,
|
|
99
|
-
};
|
|
108
|
+
} satisfies Record<string, TokenType>);
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Dice-pool modifiers that maximal munch can merge, mapped to what re-separates
|
|
112
|
+
* them: a count for the ones that take an operand, a space for the ones that do
|
|
113
|
+
* not. Membership doubles as the filter — the keywords left out (`d`, `f`, `r`,
|
|
114
|
+
* `ro`, `vs`, the function names) have no split that parses.
|
|
115
|
+
*/
|
|
116
|
+
// ! `min`/`max` share `TokenType.FUNCTION` with `floor`, so the separator
|
|
117
|
+
// ! cannot be derived from the token type. Null-prototype for the same reason
|
|
118
|
+
// ! as `IDENTIFIER_KEYWORDS` above.
|
|
119
|
+
const MODIFIER_SEPARATORS: Record<string, string> = Object.assign(Object.create(null), {
|
|
120
|
+
kh: '1',
|
|
121
|
+
kl: '1',
|
|
122
|
+
k: '1',
|
|
123
|
+
dh: '1',
|
|
124
|
+
dl: '1',
|
|
125
|
+
min: '1',
|
|
126
|
+
max: '1',
|
|
127
|
+
s: ' ',
|
|
128
|
+
sa: ' ',
|
|
129
|
+
sd: ' ',
|
|
130
|
+
cs: ' ',
|
|
131
|
+
cf: ' ',
|
|
132
|
+
} satisfies Record<string, string>);
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Names a code point the message cannot render — a no-break space, zero-width
|
|
136
|
+
* space or byte-order mark shows as nothing between the quotes. Printable ASCII
|
|
137
|
+
* is legible there already and stays unadorned.
|
|
138
|
+
*/
|
|
139
|
+
function nameCodePoint(codePoint: number | undefined): string {
|
|
140
|
+
if (codePoint == null || (codePoint > 0x20 && codePoint < 0x7f)) return '';
|
|
141
|
+
return ` (U+${codePoint.toString(16).toUpperCase().padStart(4, '0')})`;
|
|
142
|
+
}
|
|
100
143
|
|
|
101
144
|
/**
|
|
102
|
-
* Builds a hint for identifiers that
|
|
103
|
-
*
|
|
104
|
-
*
|
|
105
|
-
*
|
|
145
|
+
* Builds a hint for identifiers that merged two modifiers. Maximal munch joins
|
|
146
|
+
* them when the first takes no count — `4d6khs` lexes as one identifier `khs`
|
|
147
|
+
* instead of `kh` + `s` — so the fix is to re-separate them.
|
|
148
|
+
*
|
|
149
|
+
* Both halves must be separable: `flor` and `kx` start with a keyword but end
|
|
150
|
+
* in something no split can rescue, so they get no hint.
|
|
106
151
|
*/
|
|
107
152
|
function buildIdentifierHint(identifier: string): string {
|
|
108
153
|
for (let length = identifier.length - 1; length >= 1; length--) {
|
|
109
154
|
const prefix = identifier.slice(0, length);
|
|
110
|
-
|
|
155
|
+
const separator = MODIFIER_SEPARATORS[prefix];
|
|
156
|
+
if (separator == null) continue;
|
|
111
157
|
const rest = identifier.slice(length);
|
|
112
|
-
|
|
158
|
+
if (MODIFIER_SEPARATORS[rest] == null) continue;
|
|
159
|
+
return ` (did you mean '${prefix}' followed by '${rest}'? write it as '${prefix}${separator}${rest}')`;
|
|
113
160
|
}
|
|
114
161
|
return '';
|
|
115
162
|
}
|
|
@@ -221,7 +268,12 @@ export class Lexer {
|
|
|
221
268
|
// report the full code point instead of a lone surrogate ('�').
|
|
222
269
|
const codePoint = this.input.codePointAt(startPos);
|
|
223
270
|
const display = codePoint == null ? char : String.fromCodePoint(codePoint);
|
|
224
|
-
throw new LexerError(
|
|
271
|
+
throw new LexerError(
|
|
272
|
+
`Unexpected character${nameCodePoint(codePoint)}: '${display}'`,
|
|
273
|
+
'UNEXPECTED_CHARACTER',
|
|
274
|
+
startPos,
|
|
275
|
+
display,
|
|
276
|
+
);
|
|
225
277
|
}
|
|
226
278
|
}
|
|
227
279
|
}
|
|
@@ -294,7 +346,7 @@ export class Lexer {
|
|
|
294
346
|
}
|
|
295
347
|
|
|
296
348
|
throw new LexerError(
|
|
297
|
-
`Unexpected identifier${buildIdentifierHint(lower)}`,
|
|
349
|
+
`Unexpected identifier${buildIdentifierHint(lower)}: '${lower}'`,
|
|
298
350
|
'UNEXPECTED_IDENTIFIER',
|
|
299
351
|
startPos,
|
|
300
352
|
lower,
|
|
@@ -332,7 +384,15 @@ export class Lexer {
|
|
|
332
384
|
} else {
|
|
333
385
|
const nameStart = this.pos;
|
|
334
386
|
if (this.isAtEnd() || !this.isIdentifierStart(this.peek())) {
|
|
335
|
-
|
|
387
|
+
// Reached by a missing name and by one starting with a digit or a
|
|
388
|
+
// non-ASCII letter alike, so the message names the rule rather than
|
|
389
|
+
// any one of those causes.
|
|
390
|
+
throw new LexerError(
|
|
391
|
+
`@ variable name must start with a letter or '_'`,
|
|
392
|
+
'UNEXPECTED_CHARACTER',
|
|
393
|
+
startPos,
|
|
394
|
+
'@',
|
|
395
|
+
);
|
|
336
396
|
}
|
|
337
397
|
this.advance();
|
|
338
398
|
while (!this.isAtEnd() && this.isIdentifierPart(this.peek())) {
|
package/src/parser/parser.ts
CHANGED
|
@@ -172,6 +172,55 @@ const TOKEN_DISPLAY = {
|
|
|
172
172
|
/** Token types that carry a display symbol and may be passed to `expect()`. */
|
|
173
173
|
type ExpectableToken = keyof typeof TOKEN_DISPLAY;
|
|
174
174
|
|
|
175
|
+
/**
|
|
176
|
+
* True while a crit threshold carries only the bare `cs`/`cf` sentinel, so no
|
|
177
|
+
* comparison was consumed. Emptiness cannot answer this — bare `cs` fills the
|
|
178
|
+
* list with `'default'` rather than leaving it empty.
|
|
179
|
+
*/
|
|
180
|
+
function isBareCritThreshold(node: CritThresholdNode): boolean {
|
|
181
|
+
const isDefault = (threshold: CritThreshold): boolean => threshold === 'default';
|
|
182
|
+
return node.successThresholds.every(isDefault) && node.failThresholds.every(isDefault);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* Follows a node down to the one whose source text the next token abuts.
|
|
187
|
+
*
|
|
188
|
+
* In `1+2d6s1` the sort is already buried under the `+` by the time the stray
|
|
189
|
+
* `1` reaches LED position.
|
|
190
|
+
*
|
|
191
|
+
* ! Only these three descend. Every other node that holds a sub-expression
|
|
192
|
+
* ! closes it first — `(…)`, `{…}`, `f(…)`, and the parenthesized operand of
|
|
193
|
+
* ! `2d(…)` or `4d6kh(…)` all put a delimiter between the child and the stray
|
|
194
|
+
* ! token, so the child is not what that token follows.
|
|
195
|
+
*/
|
|
196
|
+
function rightmostNode(node: ASTNode): ASTNode {
|
|
197
|
+
let current = node;
|
|
198
|
+
for (;;) {
|
|
199
|
+
switch (current.type) {
|
|
200
|
+
case 'BinaryOp':
|
|
201
|
+
current = current.right;
|
|
202
|
+
break;
|
|
203
|
+
case 'UnaryOp':
|
|
204
|
+
current = current.operand;
|
|
205
|
+
break;
|
|
206
|
+
case 'Versus':
|
|
207
|
+
current = current.dc;
|
|
208
|
+
break;
|
|
209
|
+
default:
|
|
210
|
+
return current;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* Names the operand a token was still waiting for when the notation ran out.
|
|
217
|
+
*/
|
|
218
|
+
function expectedOperand(token: Token): string {
|
|
219
|
+
if (token.type === TokenType.DICE) return 'a side count';
|
|
220
|
+
if (token.type === TokenType.VS) return 'a difficulty class';
|
|
221
|
+
return 'a value';
|
|
222
|
+
}
|
|
223
|
+
|
|
175
224
|
/**
|
|
176
225
|
* Arity table for math functions. `min` and `max` are inclusive.
|
|
177
226
|
* `POSITIVE_INFINITY` means unbounded (variadic).
|
|
@@ -220,11 +269,9 @@ export class Parser {
|
|
|
220
269
|
* Parse the token stream into an AST.
|
|
221
270
|
*/
|
|
222
271
|
parse(): ASTNode {
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
const ast = this.parseExpression(0);
|
|
272
|
+
// Nothing has demanded an operand yet, so an immediate EOF is an empty
|
|
273
|
+
// notation rather than a truncated one.
|
|
274
|
+
const ast = this.parseExpression(0, undefined);
|
|
228
275
|
|
|
229
276
|
if (this.peek().type !== TokenType.EOF) {
|
|
230
277
|
const token = this.peek();
|
|
@@ -241,14 +288,18 @@ export class Parser {
|
|
|
241
288
|
|
|
242
289
|
/**
|
|
243
290
|
* Parse an expression with minimum binding power.
|
|
291
|
+
*
|
|
292
|
+
* `pending` is the token that demanded this operand — the `d` of `1d`, the
|
|
293
|
+
* `<` of `2d6r<`. It exists so a truncated notation can name what it was
|
|
294
|
+
* waiting for; `undefined` only at the top of the input.
|
|
244
295
|
*/
|
|
245
|
-
private parseExpression(minBp: number): ASTNode {
|
|
296
|
+
private parseExpression(minBp: number, pending: Token | undefined): ASTNode {
|
|
246
297
|
const entryDepth = this.depth;
|
|
247
298
|
this.depth += 1;
|
|
248
299
|
this.guardDepth();
|
|
249
300
|
|
|
250
301
|
try {
|
|
251
|
-
let left = this.parseNud();
|
|
302
|
+
let left = this.parseNud(pending);
|
|
252
303
|
|
|
253
304
|
while (this.hasTokens()) {
|
|
254
305
|
const token = this.peek();
|
|
@@ -290,7 +341,7 @@ export class Parser {
|
|
|
290
341
|
* NUD - Null Denotation.
|
|
291
342
|
* Handles tokens that appear at the start of an expression (prefix position).
|
|
292
343
|
*/
|
|
293
|
-
private parseNud(): ASTNode {
|
|
344
|
+
private parseNud(pending: Token | undefined): ASTNode {
|
|
294
345
|
const token = this.advance();
|
|
295
346
|
|
|
296
347
|
switch (token.type) {
|
|
@@ -322,7 +373,23 @@ export class Parser {
|
|
|
322
373
|
return this.parseVariable(token);
|
|
323
374
|
|
|
324
375
|
case TokenType.EOF:
|
|
325
|
-
throw new ParseError(
|
|
376
|
+
throw new ParseError(
|
|
377
|
+
pending == null
|
|
378
|
+
? 'Empty notation'
|
|
379
|
+
: `Expected ${expectedOperand(pending)} after '${pending.value}'`,
|
|
380
|
+
'UNEXPECTED_END',
|
|
381
|
+
token.position,
|
|
382
|
+
);
|
|
383
|
+
|
|
384
|
+
// Reaching prefix position means no roll precedes the `vs`, so there is
|
|
385
|
+
// nothing to check against the DC.
|
|
386
|
+
case TokenType.VS:
|
|
387
|
+
throw new ParseError(
|
|
388
|
+
'Versus needs a roll on its left',
|
|
389
|
+
'UNEXPECTED_TOKEN',
|
|
390
|
+
token.position,
|
|
391
|
+
token,
|
|
392
|
+
);
|
|
326
393
|
|
|
327
394
|
default:
|
|
328
395
|
throw new ParseError(
|
|
@@ -398,13 +465,32 @@ export class Parser {
|
|
|
398
465
|
case TokenType.FAIL:
|
|
399
466
|
return Parser.throwOrphanFailThreshold(token);
|
|
400
467
|
|
|
401
|
-
default:
|
|
468
|
+
default: {
|
|
469
|
+
// A bare number after a modifier that took none — `2d6s1`, `2d6!0`.
|
|
470
|
+
// ! Only while the modifier is still empty-handed: past `2d6!>1 2` the
|
|
471
|
+
// ! explode did take its comparison, and the stray number is an
|
|
472
|
+
// ! unrelated juxtaposition that keeps the generic message.
|
|
473
|
+
const trailing = rightmostNode(left);
|
|
474
|
+
if (
|
|
475
|
+
token.type === TokenType.NUMBER &&
|
|
476
|
+
(trailing.type === 'Sort' ||
|
|
477
|
+
(trailing.type === 'Explode' && trailing.threshold == null) ||
|
|
478
|
+
(trailing.type === 'CritThreshold' && isBareCritThreshold(trailing)))
|
|
479
|
+
) {
|
|
480
|
+
throw new ParseError(
|
|
481
|
+
'This modifier takes no count',
|
|
482
|
+
'UNEXPECTED_TOKEN',
|
|
483
|
+
token.position,
|
|
484
|
+
token,
|
|
485
|
+
);
|
|
486
|
+
}
|
|
402
487
|
throw new ParseError(
|
|
403
488
|
`Unexpected infix token '${token.value}'`,
|
|
404
489
|
'UNEXPECTED_TOKEN',
|
|
405
490
|
token.position,
|
|
406
491
|
token,
|
|
407
492
|
);
|
|
493
|
+
}
|
|
408
494
|
}
|
|
409
495
|
}
|
|
410
496
|
|
|
@@ -430,7 +516,7 @@ export class Parser {
|
|
|
430
516
|
}
|
|
431
517
|
|
|
432
518
|
private parseUnaryMinus(token: Token): UnaryOpNode {
|
|
433
|
-
const operand = this.parseExpression(BP.UNARY);
|
|
519
|
+
const operand = this.parseExpression(BP.UNARY, token);
|
|
434
520
|
this.rejectSuccessCountTarget(operand, token);
|
|
435
521
|
return {
|
|
436
522
|
type: 'UnaryOp',
|
|
@@ -442,7 +528,7 @@ export class Parser {
|
|
|
442
528
|
}
|
|
443
529
|
|
|
444
530
|
private parsePrefixDice(token: Token): DiceNode {
|
|
445
|
-
const sides = this.parseExpression(BP.DICE_RIGHT);
|
|
531
|
+
const sides = this.parseExpression(BP.DICE_RIGHT, token);
|
|
446
532
|
this.rejectSuccessCountTarget(sides, token);
|
|
447
533
|
this.rejectVersusMetaOperand(sides, token);
|
|
448
534
|
return {
|
|
@@ -458,7 +544,7 @@ export class Parser {
|
|
|
458
544
|
this.rejectSuccessCountTarget(left, token);
|
|
459
545
|
this.rejectVersusMetaOperand(left, token);
|
|
460
546
|
this.rejectBareDiceChain(left, token);
|
|
461
|
-
const sides = this.parseExpression(BP.DICE_RIGHT);
|
|
547
|
+
const sides = this.parseExpression(BP.DICE_RIGHT, token);
|
|
462
548
|
this.rejectSuccessCountTarget(sides, token);
|
|
463
549
|
this.rejectVersusMetaOperand(sides, token);
|
|
464
550
|
return {
|
|
@@ -517,7 +603,13 @@ export class Parser {
|
|
|
517
603
|
}
|
|
518
604
|
|
|
519
605
|
private parseGrouped(token: Token): GroupedNode {
|
|
520
|
-
|
|
606
|
+
// Mirrors `parseGroup`'s empty check; without it `)` reaches the prefix arm
|
|
607
|
+
// and reports itself, naming the closer rather than the empty construct.
|
|
608
|
+
if (this.peek().type === TokenType.RPAREN) {
|
|
609
|
+
throw new ParseError('Empty parentheses', 'UNEXPECTED_TOKEN', token.position, token);
|
|
610
|
+
}
|
|
611
|
+
|
|
612
|
+
const expression = this.parseExpression(0, token);
|
|
521
613
|
const close = this.expect(TokenType.RPAREN);
|
|
522
614
|
return { type: 'Grouped', expression, start: token.position, end: close.end };
|
|
523
615
|
}
|
|
@@ -530,10 +622,10 @@ export class Parser {
|
|
|
530
622
|
throw new ParseError('Empty group', 'UNEXPECTED_TOKEN', startToken.position, startToken);
|
|
531
623
|
}
|
|
532
624
|
|
|
533
|
-
const expressions: ASTNode[] = [this.parseExpression(0)];
|
|
625
|
+
const expressions: ASTNode[] = [this.parseExpression(0, startToken)];
|
|
534
626
|
while (this.peek().type === TokenType.COMMA) {
|
|
535
|
-
this.advance();
|
|
536
|
-
expressions.push(this.parseExpression(0));
|
|
627
|
+
const comma = this.advance();
|
|
628
|
+
expressions.push(this.parseExpression(0, comma));
|
|
537
629
|
}
|
|
538
630
|
|
|
539
631
|
if (this.peek().type !== TokenType.RBRACE) {
|
|
@@ -557,16 +649,16 @@ export class Parser {
|
|
|
557
649
|
private parseFunctionCall(token: Token): FunctionCallNode {
|
|
558
650
|
// `FUNCTION`, `COMMA`, and `RPAREN` all sit at BP -1, so argument boundaries
|
|
559
651
|
// fall out of the inner `parseExpression(0)` calls terminating on their own.
|
|
560
|
-
this.expect(TokenType.LPAREN);
|
|
652
|
+
const open = this.expect(TokenType.LPAREN);
|
|
561
653
|
|
|
562
654
|
const args: ASTNode[] = [];
|
|
563
655
|
if (this.peek().type !== TokenType.RPAREN) {
|
|
564
|
-
const first = this.parseExpression(0);
|
|
656
|
+
const first = this.parseExpression(0, open);
|
|
565
657
|
this.rejectSuccessCountTarget(first, token);
|
|
566
658
|
args.push(first);
|
|
567
659
|
while (this.peek().type === TokenType.COMMA) {
|
|
568
|
-
this.advance();
|
|
569
|
-
const next = this.parseExpression(0);
|
|
660
|
+
const comma = this.advance();
|
|
661
|
+
const next = this.parseExpression(0, comma);
|
|
570
662
|
this.rejectSuccessCountTarget(next, token);
|
|
571
663
|
args.push(next);
|
|
572
664
|
}
|
|
@@ -610,7 +702,7 @@ export class Parser {
|
|
|
610
702
|
|
|
611
703
|
const operator = this.getOperatorSymbol(token);
|
|
612
704
|
const rightBp = this.getRightBp(token);
|
|
613
|
-
const right = this.parseExpression(rightBp);
|
|
705
|
+
const right = this.parseExpression(rightBp, token);
|
|
614
706
|
|
|
615
707
|
this.rejectSuccessCountTarget(right, token);
|
|
616
708
|
|
|
@@ -659,8 +751,12 @@ export class Parser {
|
|
|
659
751
|
// never hide inside one and widening the set would never match.
|
|
660
752
|
const node = unwrapGrouped(target);
|
|
661
753
|
if (isSuccessCount(node)) {
|
|
754
|
+
// ! Three shapes reach here and only one is a modifier — arithmetic
|
|
755
|
+
// ! (`5d6>=5+3`) and meta-operand reuse (`4d(1d6>=3)`) do too, so the
|
|
756
|
+
// ! message has to stay true of all three. **README.md → Pools and
|
|
757
|
+
// ! checks** carries the worked rewrites.
|
|
662
758
|
throw new ParseError(
|
|
663
|
-
`
|
|
759
|
+
`Success counting is terminal: it cannot be part of a larger expression`,
|
|
664
760
|
'INVALID_SUCCESS_COUNT_TARGET',
|
|
665
761
|
token.position,
|
|
666
762
|
token,
|
|
@@ -820,7 +916,7 @@ export class Parser {
|
|
|
820
916
|
nextToken === TokenType.LPAREN ||
|
|
821
917
|
nextToken === TokenType.AT;
|
|
822
918
|
const count: ASTNode = hasExplicitCount
|
|
823
|
-
? this.parseExpression(BP.DICE_LEFT)
|
|
919
|
+
? this.parseExpression(BP.DICE_LEFT, token)
|
|
824
920
|
: Parser.syntheticLiteral(1, token);
|
|
825
921
|
this.rejectSuccessCountTarget(count, token);
|
|
826
922
|
this.rejectVersusMetaOperand(count, token);
|
|
@@ -982,7 +1078,7 @@ export class Parser {
|
|
|
982
1078
|
);
|
|
983
1079
|
}
|
|
984
1080
|
|
|
985
|
-
const value = this.parseExpression(BP.DICE_LEFT);
|
|
1081
|
+
const value = this.parseExpression(BP.DICE_LEFT, token);
|
|
986
1082
|
this.rejectSuccessCountTarget(value, token);
|
|
987
1083
|
this.rejectVersusMetaOperand(value, token);
|
|
988
1084
|
|
|
@@ -1156,7 +1252,7 @@ export class Parser {
|
|
|
1156
1252
|
|
|
1157
1253
|
const operator = this.getCompareOp(token);
|
|
1158
1254
|
// Threshold binds at `BP.DICE_LEFT` — see `parseComparePoint` TSDoc.
|
|
1159
|
-
const value = this.parseExpression(BP.DICE_LEFT);
|
|
1255
|
+
const value = this.parseExpression(BP.DICE_LEFT, token);
|
|
1160
1256
|
this.rejectSuccessCountTarget(value, token);
|
|
1161
1257
|
this.rejectVersusMetaOperand(value, token);
|
|
1162
1258
|
const start = target.start ?? token.position;
|
|
@@ -1166,8 +1262,8 @@ export class Parser {
|
|
|
1166
1262
|
return { type: 'SuccessCount', target, threshold: { operator, value }, start, end };
|
|
1167
1263
|
}
|
|
1168
1264
|
|
|
1169
|
-
this.advance();
|
|
1170
|
-
const failThreshold = this.parseFailThreshold(token);
|
|
1265
|
+
const failToken = this.advance();
|
|
1266
|
+
const failThreshold = this.parseFailThreshold(token, failToken);
|
|
1171
1267
|
|
|
1172
1268
|
return {
|
|
1173
1269
|
type: 'SuccessCount',
|
|
@@ -1179,12 +1275,18 @@ export class Parser {
|
|
|
1179
1275
|
};
|
|
1180
1276
|
}
|
|
1181
1277
|
|
|
1182
|
-
/**
|
|
1183
|
-
|
|
1278
|
+
/**
|
|
1279
|
+
* Parses the `f...` suffix of a success count. Bare `fN` means `f=N`.
|
|
1280
|
+
*
|
|
1281
|
+
* `token` is the success-count comparison, which the reject calls report
|
|
1282
|
+
* against; `failToken` is the `f`, so a truncated `2d6>=4f` names it rather
|
|
1283
|
+
* than the comparison behind it.
|
|
1284
|
+
*/
|
|
1285
|
+
private parseFailThreshold(token: Token, failToken: Token): ComparePoint {
|
|
1184
1286
|
if (this.isComparePointAhead()) return this.parseComparePoint();
|
|
1185
1287
|
|
|
1186
1288
|
// Same threshold binding as `parseComparePoint` (BP.DICE_LEFT).
|
|
1187
|
-
const failValue = this.parseExpression(BP.DICE_LEFT);
|
|
1289
|
+
const failValue = this.parseExpression(BP.DICE_LEFT, failToken);
|
|
1188
1290
|
this.rejectSuccessCountTarget(failValue, token);
|
|
1189
1291
|
this.rejectVersusMetaOperand(failValue, token);
|
|
1190
1292
|
|
|
@@ -1226,7 +1328,7 @@ export class Parser {
|
|
|
1226
1328
|
throw new ParseError('Cannot chain versus operators', 'NESTED_VERSUS', token.position, token);
|
|
1227
1329
|
}
|
|
1228
1330
|
|
|
1229
|
-
const dc = this.parseExpression(BP.VS_RIGHT);
|
|
1331
|
+
const dc = this.parseExpression(BP.VS_RIGHT, token);
|
|
1230
1332
|
this.rejectSuccessCountTarget(dc, token);
|
|
1231
1333
|
|
|
1232
1334
|
return {
|
|
@@ -1276,7 +1378,7 @@ export class Parser {
|
|
|
1276
1378
|
|
|
1277
1379
|
this.advance();
|
|
1278
1380
|
|
|
1279
|
-
const value = this.parseExpression(BP.DICE_LEFT);
|
|
1381
|
+
const value = this.parseExpression(BP.DICE_LEFT, token);
|
|
1280
1382
|
this.rejectSuccessCountTarget(value, token);
|
|
1281
1383
|
this.rejectVersusMetaOperand(value, token);
|
|
1282
1384
|
|
package/src/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// Generated by `bun run generate:version` from package.json — do not edit.
|
|
2
|
-
export const version = '3.
|
|
2
|
+
export const version = '3.3.0';
|