roll-parser 3.2.1 → 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 +47 -1
- package/README.md +6 -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 +23 -1
- package/dist/parser/parser.d.ts.map +1 -1
- package/dist/parser/parser.js +77 -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 +158 -33
- package/src/version.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,50 @@ 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
|
+
|
|
44
|
+
## [3.2.2] - 2026-08-14
|
|
45
|
+
|
|
46
|
+
### Changed
|
|
47
|
+
|
|
48
|
+
- A failure threshold with no success count to attach to now says so instead of reporting a bare `Unexpected infix token 'f'`. The input that provokes it reads like World of Darkness notation — `3d6!>4f1`, `10d10!>=6f1` — but an explode takes the comparison that follows it as its own trigger, leaving the `f` clause with nothing to modify. The code stays `UNEXPECTED_TOKEN`, and the position still points at the `f` ([#320](https://github.com/edloidas/roll-parser/issues/320))
|
|
49
|
+
|
|
50
|
+
### Documentation
|
|
51
|
+
|
|
52
|
+
- `README.md` gains an "An explode claims the comparison that follows it" gotcha under Arithmetic and precedence, with both rewrites: `(3d6!)>4f1` to count the exploded pool, or `3d6!>4>=5f1` to keep an explode trigger and a success threshold ([#320](https://github.com/edloidas/roll-parser/issues/320))
|
|
53
|
+
|
|
10
54
|
## [3.2.1] - 2026-08-10
|
|
11
55
|
|
|
12
56
|
### Changed
|
|
@@ -251,7 +295,9 @@ Dice mechanics (Stage 2):
|
|
|
251
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))
|
|
252
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))
|
|
253
297
|
|
|
254
|
-
[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
|
|
300
|
+
[3.2.2]: https://github.com/edloidas/roll-parser/releases/tag/v3.2.2
|
|
255
301
|
[3.2.1]: https://github.com/edloidas/roll-parser/releases/tag/v3.2.1
|
|
256
302
|
[3.2.0]: https://github.com/edloidas/roll-parser/releases/tag/v3.2.0
|
|
257
303
|
[3.1.0]: https://github.com/edloidas/roll-parser/releases/tag/v3.1.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.
|
|
@@ -1147,6 +1147,11 @@ total — and the evaluator only flat-sorts.
|
|
|
1147
1147
|
parenthesize for a computed threshold, `1d6!>=(5+2)`. Success counts bind the
|
|
1148
1148
|
same way but are terminal, so `1d6>=5+2` errors outright — write
|
|
1149
1149
|
`1d6>=(5+2)`, or `{1d6>=5}+2` to add to the count itself.
|
|
1150
|
+
- **An explode claims the comparison that follows it.** `3d6!>4` explodes on
|
|
1151
|
+
5 and 6; it is not a success count, so there is nothing for an `f` clause to
|
|
1152
|
+
attach to and `3d6!>4f1` throws `UNEXPECTED_TOKEN`. Parenthesize the explode
|
|
1153
|
+
to count its pool, `(3d6!)>4f1`, or give the count its own threshold,
|
|
1154
|
+
`3d6!>4>=5f1`.
|
|
1150
1155
|
- **Division does not floor.** `7/2` totals `3.5`, not `3` — arithmetic is plain
|
|
1151
1156
|
IEEE-754 throughout. Wrap it when you need an integer: `floor(7/2)` totals `3`.
|
|
1152
1157
|
Operands that must be whole numbers — dice count, dice sides, keep/drop count —
|
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":"AAOA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAc,SAAS,EAAE,MAAM,aAAa,CAAC;AA4BpD,MAAM,OAAO,UAAW,SAAQ,eAAe;IAEpC,QAAQ,CAAS;IAMjB,SAAS,CAAS;IAE3B,YACE,OAAe,EACf,IAAyB,EACzB,QAAgB,EAChB,SAAiB,EACjB,OAAsB;QAEtB,KAAK,CAAC,GAAG,OAAO,MAAM,SAAS,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACnD,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CACF;AAQD,MAAM,YAAY,GAAG,EAAE,CAAC;AACxB,MAAM,YAAY,GAAG,EAAE,CAAC;AACxB,MAAM,YAAY,GAAG,EAAE,CAAC;AACxB,MAAM,YAAY,GAAG,EAAE,CAAC;AACxB,MAAM,YAAY,GAAG,EAAE,CAAC;AACxB,MAAM,YAAY,GAAG,GAAG,CAAC;AAGzB,MAAM,mBAAmB,GAA8B;IACrD,EAAE,EAAE,SAAS,CAAC,SAAS;IACvB,EAAE,EAAE,SAAS,CAAC,QAAQ;IACtB,CAAC,EAAE,SAAS,CAAC,SAAS;IACtB,EAAE,EAAE,SAAS,CAAC,SAAS;IACvB,EAAE,EAAE,SAAS,CAAC,QAAQ;IACtB,CAAC,EAAE,SAAS,CAAC,IAAI;IACjB,CAAC,EAAE,SAAS,CAAC,MAAM;IACnB,EAAE,EAAE,SAAS,CAAC,WAAW;IACzB,CAAC,EAAE,SAAS,CAAC,IAAI;IACjB,EAAE,EAAE,SAAS,CAAC,EAAE;IAChB,KAAK,EAAE,SAAS,CAAC,QAAQ;IACzB,IAAI,EAAE,SAAS,CAAC,QAAQ;IACxB,KAAK,EAAE,SAAS,CAAC,QAAQ;IACzB,GAAG,EAAE,SAAS,CAAC,QAAQ;IACvB,IAAI,EAAE,SAAS,CAAC,QAAQ;IACxB,GAAG,EAAE,SAAS,CAAC,QAAQ;IACvB,GAAG,EAAE,SAAS,CAAC,QAAQ;IACvB,GAAG,EAAE,SAAS,CAAC,QAAQ;IACvB,CAAC,EAAE,SAAS,CAAC,QAAQ;IACrB,EAAE,EAAE,SAAS,CAAC,QAAQ;IACtB,EAAE,EAAE,SAAS,CAAC,SAAS;IACvB,EAAE,EAAE,SAAS,CAAC,YAAY;IAC1B,EAAE,EAAE,SAAS,CAAC,SAAS;CACxB,CAAC;AAQF,SAAS,mBAAmB,CAAC,UAAkB;IAC7C,KAAK,IAAI,MAAM,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;QAC/D,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAC3C,IAAI,mBAAmB,CAAC,MAAM,CAAC,IAAI,IAAI;YAAE,SAAS;QAClD,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACtC,OAAO,mBAAmB,MAAM,kBAAkB,IAAI,sDAAsD,MAAM,IAAI,IAAI,IAAI,CAAC;IACjI,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAQD,MAAM,OAAO,KAAK;IACR,GAAG,GAAG,CAAC,CAAC;IACC,KAAK,CAAS;IAE/B,YAAY,KAAa;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAKD,QAAQ;QACN,MAAM,MAAM,GAAY,EAAE,CAAC;QAE3B,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YAC/B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnB,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,GAAG;gBAAE,MAAM;QAC1C,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAKD,SAAS;QACP,IAAI,CAAC,cAAc,EAAE,CAAC;QAEtB,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAEzB,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;QAC3B,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;QAC/B,CAAC;QAED,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,CAAC;QAED,IAAI,CAAC,OAAO,EAAE,CAAC;QAEf,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,GAAG;gBACN,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC5D,KAAK,GAAG;gBACN,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC7D,KAAK,GAAG;gBACN,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;oBACpB,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;gBAC7D,CAAC;gBACD,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YAChE,KAAK,GAAG;gBACN,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC9D,KAAK,GAAG;gBACN,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC9D,KAAK,GAAG;gBACN,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC7D,KAAK,GAAG;gBACN,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC9D,KAAK,GAAG;gBACN,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC9D,KAAK,GAAG;gBACN,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC7D,KAAK,GAAG;gBACN,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC9D,KAAK,GAAG;gBACN,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC9D,KAAK,GAAG;gBACN,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;oBACpB,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;gBACrE,CAAC;gBACD,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC/D,KAAK,GAAG;gBACN,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;oBACpB,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;gBAClE,CAAC;gBACD,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC5D,KAAK,GAAG;gBACN,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC7D,KAAK,GAAG;gBACN,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;oBACpB,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;gBACxE,CAAC;gBACD,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;oBACvC,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,mBAAmB,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;gBAC3E,CAAC;gBACD,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC/D,SAAS,CAAC;gBAGR,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;gBACnD,MAAM,OAAO,GAAG,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;gBAC3E,MAAM,IAAI,UAAU,CAAC,sBAAsB,EAAE,sBAAsB,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC1F,CAAC;QACH,CAAC;IACH,CAAC;IAMO,cAAc;QACpB,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YACzD,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,CAAC;IACH,CAAC;IAIO,UAAU;QAChB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC;QAE1B,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YACpD,IAAI,CAAC,GAAG,EAAE,CAAC;QACb,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;YAC5E,IAAI,CAAC,GAAG,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;gBACpD,IAAI,CAAC,GAAG,EAAE,CAAC;YACb,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC9F,CAAC;IAcO,cAAc;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC;QAE1B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG,CAAC,EAAE,CAAC;YAC3E,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;YACd,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QACjE,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YACpD,IAAI,CAAC,GAAG,EAAE,CAAC;QACb,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QAEjE,IAAI,KAAK,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YAC5D,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,SAAS,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QACxD,CAAC;QAED,MAAM,IAAI,UAAU,CAClB,wBAAwB,mBAAmB,CAAC,KAAK,CAAC,EAAE,EACpD,uBAAuB,EACvB,QAAQ,EACR,KAAK,CACN,CAAC;IACJ,CAAC;IAcO,MAAM;QACZ,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC;QAC1B,IAAI,CAAC,OAAO,EAAE,CAAC;QAEf,IAAI,IAAY,CAAC;QACjB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;gBACtE,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,CAAC;YACD,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;gBAC1C,MAAM,IAAI,UAAU,CAAC,8BAA8B,EAAE,sBAAsB,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;YAC9F,CAAC;YACD,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YAC7C,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,CAAC;aAAM,CAAC;YACN,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC;YAC3B,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;gBAC3D,MAAM,IAAI,UAAU,CAAC,uBAAuB,EAAE,sBAAsB,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;YACvF,CAAC;YACD,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;gBAC7D,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,CAAC;YACD,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC1D,CAAC;IAEO,IAAI;QACV,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IACpC,CAAC;IAEO,QAAQ;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACxC,CAAC;IAEO,OAAO;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;IACtC,CAAC;IAEO,KAAK,CAAC,QAAgB;QAC5B,IAAI,IAAI,CAAC,OAAO,EAAE;YAAE,OAAO,KAAK,CAAC;QACjC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QACpD,IAAI,CAAC,GAAG,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,OAAO;QACb,OAAO,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IACvC,CAAC;IAIO,OAAO,CAAC,IAAY;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAChC,OAAO,IAAI,IAAI,YAAY,IAAI,IAAI,IAAI,YAAY,CAAC;IACtD,CAAC;IAEO,OAAO,CAAC,IAAY;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAChC,OAAO,CACL,CAAC,IAAI,IAAI,YAAY,IAAI,IAAI,IAAI,YAAY,CAAC;YAC9C,CAAC,IAAI,IAAI,YAAY,IAAI,IAAI,IAAI,YAAY,CAAC,CAC/C,CAAC;IACJ,CAAC;IAEO,iBAAiB,CAAC,IAAY;QACpC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,GAAG,CAAC;IAC5C,CAAC;IAEO,gBAAgB,CAAC,IAAY;QACnC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,GAAG,CAAC;IAClE,CAAC;IAEO,YAAY,CAAC,IAAY;QAC/B,OAAO,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC;IACzE,CAAC;IAIO,WAAW,CAAC,IAAe,EAAE,KAAa;QAChD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IAC5D,CAAC;IAEO,aAAa,CAAC,IAAe,EAAE,KAAa,EAAE,QAAgB;QACpE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IAClD,CAAC;CACF;AA+BD,MAAM,UAAU,GAAG,CAAC,KAAa;IAE/B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,eAAe,CACvB,uCAAuC,aAAa,CAAC,KAAK,CAAC,EAAE,EAC7D,uBAAuB,CACxB,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;AACrC,CAAC"}
|
|
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,8 +173,26 @@ 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;
|
|
184
|
+
/**
|
|
185
|
+
* Rejects an `f` that reached LED position, which means no success count is
|
|
186
|
+
* there to own it — `parseSuccessCount` consumes its own `f`, so this is the
|
|
187
|
+
* only way the token surfaces.
|
|
188
|
+
*
|
|
189
|
+
* The trigger clause names the cause of nearly every orphan: an explode's
|
|
190
|
+
* comparison is optional, so `3d6!>4f1` reads as a success count with a botch
|
|
191
|
+
* threshold when `!` has already spent the `>4`. Naming it unconditionally
|
|
192
|
+
* keeps this off the `index.js` byte budget; **README.md → Arithmetic and
|
|
193
|
+
* precedence** carries the two rewrites.
|
|
194
|
+
*/
|
|
195
|
+
private static throwOrphanFailThreshold;
|
|
174
196
|
private parseVersus;
|
|
175
197
|
/**
|
|
176
198
|
* Checks whether the next token is a comparison operator.
|
|
@@ -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
|
}
|
|
@@ -173,8 +203,18 @@ export class Parser {
|
|
|
173
203
|
return this.parseSuccessCount(left, token);
|
|
174
204
|
case TokenType.VS:
|
|
175
205
|
return this.parseVersus(left, token);
|
|
176
|
-
|
|
206
|
+
case TokenType.FAIL:
|
|
207
|
+
return Parser.throwOrphanFailThreshold(token);
|
|
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
|
+
}
|
|
177
216
|
throw new ParseError(`Unexpected infix token '${token.value}'`, 'UNEXPECTED_TOKEN', token.position, token);
|
|
217
|
+
}
|
|
178
218
|
}
|
|
179
219
|
}
|
|
180
220
|
static syntheticLiteral(value, token) {
|
|
@@ -189,7 +229,7 @@ export class Parser {
|
|
|
189
229
|
};
|
|
190
230
|
}
|
|
191
231
|
parseUnaryMinus(token) {
|
|
192
|
-
const operand = this.parseExpression(BP.UNARY);
|
|
232
|
+
const operand = this.parseExpression(BP.UNARY, token);
|
|
193
233
|
this.rejectSuccessCountTarget(operand, token);
|
|
194
234
|
return {
|
|
195
235
|
type: 'UnaryOp',
|
|
@@ -200,7 +240,7 @@ export class Parser {
|
|
|
200
240
|
};
|
|
201
241
|
}
|
|
202
242
|
parsePrefixDice(token) {
|
|
203
|
-
const sides = this.parseExpression(BP.DICE_RIGHT);
|
|
243
|
+
const sides = this.parseExpression(BP.DICE_RIGHT, token);
|
|
204
244
|
this.rejectSuccessCountTarget(sides, token);
|
|
205
245
|
this.rejectVersusMetaOperand(sides, token);
|
|
206
246
|
return {
|
|
@@ -215,7 +255,7 @@ export class Parser {
|
|
|
215
255
|
this.rejectSuccessCountTarget(left, token);
|
|
216
256
|
this.rejectVersusMetaOperand(left, token);
|
|
217
257
|
this.rejectBareDiceChain(left, token);
|
|
218
|
-
const sides = this.parseExpression(BP.DICE_RIGHT);
|
|
258
|
+
const sides = this.parseExpression(BP.DICE_RIGHT, token);
|
|
219
259
|
this.rejectSuccessCountTarget(sides, token);
|
|
220
260
|
this.rejectVersusMetaOperand(sides, token);
|
|
221
261
|
return {
|
|
@@ -267,7 +307,10 @@ export class Parser {
|
|
|
267
307
|
};
|
|
268
308
|
}
|
|
269
309
|
parseGrouped(token) {
|
|
270
|
-
|
|
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);
|
|
271
314
|
const close = this.expect(TokenType.RPAREN);
|
|
272
315
|
return { type: 'Grouped', expression, start: token.position, end: close.end };
|
|
273
316
|
}
|
|
@@ -275,10 +318,10 @@ export class Parser {
|
|
|
275
318
|
if (this.peek().type === TokenType.RBRACE) {
|
|
276
319
|
throw new ParseError('Empty group', 'UNEXPECTED_TOKEN', startToken.position, startToken);
|
|
277
320
|
}
|
|
278
|
-
const expressions = [this.parseExpression(0)];
|
|
321
|
+
const expressions = [this.parseExpression(0, startToken)];
|
|
279
322
|
while (this.peek().type === TokenType.COMMA) {
|
|
280
|
-
this.advance();
|
|
281
|
-
expressions.push(this.parseExpression(0));
|
|
323
|
+
const comma = this.advance();
|
|
324
|
+
expressions.push(this.parseExpression(0, comma));
|
|
282
325
|
}
|
|
283
326
|
if (this.peek().type !== TokenType.RBRACE) {
|
|
284
327
|
const unterminated = this.peek();
|
|
@@ -291,15 +334,15 @@ export class Parser {
|
|
|
291
334
|
return { type: 'Variable', name: token.value, start: token.position, end: token.end };
|
|
292
335
|
}
|
|
293
336
|
parseFunctionCall(token) {
|
|
294
|
-
this.expect(TokenType.LPAREN);
|
|
337
|
+
const open = this.expect(TokenType.LPAREN);
|
|
295
338
|
const args = [];
|
|
296
339
|
if (this.peek().type !== TokenType.RPAREN) {
|
|
297
|
-
const first = this.parseExpression(0);
|
|
340
|
+
const first = this.parseExpression(0, open);
|
|
298
341
|
this.rejectSuccessCountTarget(first, token);
|
|
299
342
|
args.push(first);
|
|
300
343
|
while (this.peek().type === TokenType.COMMA) {
|
|
301
|
-
this.advance();
|
|
302
|
-
const next = this.parseExpression(0);
|
|
344
|
+
const comma = this.advance();
|
|
345
|
+
const next = this.parseExpression(0, comma);
|
|
303
346
|
this.rejectSuccessCountTarget(next, token);
|
|
304
347
|
args.push(next);
|
|
305
348
|
}
|
|
@@ -325,7 +368,7 @@ export class Parser {
|
|
|
325
368
|
this.rejectSuccessCountTarget(left, token);
|
|
326
369
|
const operator = this.getOperatorSymbol(token);
|
|
327
370
|
const rightBp = this.getRightBp(token);
|
|
328
|
-
const right = this.parseExpression(rightBp);
|
|
371
|
+
const right = this.parseExpression(rightBp, token);
|
|
329
372
|
this.rejectSuccessCountTarget(right, token);
|
|
330
373
|
return {
|
|
331
374
|
type: 'BinaryOp',
|
|
@@ -354,7 +397,7 @@ export class Parser {
|
|
|
354
397
|
rejectSuccessCountTarget(target, token) {
|
|
355
398
|
const node = unwrapGrouped(target);
|
|
356
399
|
if (isSuccessCount(node)) {
|
|
357
|
-
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);
|
|
358
401
|
}
|
|
359
402
|
}
|
|
360
403
|
rejectGroupTarget(target, token, action, code, singleSubRollPasses = false) {
|
|
@@ -422,7 +465,7 @@ export class Parser {
|
|
|
422
465
|
nextToken === TokenType.LPAREN ||
|
|
423
466
|
nextToken === TokenType.AT;
|
|
424
467
|
const count = hasExplicitCount
|
|
425
|
-
? this.parseExpression(BP.DICE_LEFT)
|
|
468
|
+
? this.parseExpression(BP.DICE_LEFT, token)
|
|
426
469
|
: Parser.syntheticLiteral(1, token);
|
|
427
470
|
this.rejectSuccessCountTarget(count, token);
|
|
428
471
|
this.rejectVersusMetaOperand(count, token);
|
|
@@ -500,7 +543,7 @@ export class Parser {
|
|
|
500
543
|
if (!hasExplicitValue) {
|
|
501
544
|
throw new ParseError(`Expected value after '${token.value}'`, 'EXPECTED_TOKEN', token.position, token);
|
|
502
545
|
}
|
|
503
|
-
const value = this.parseExpression(BP.DICE_LEFT);
|
|
546
|
+
const value = this.parseExpression(BP.DICE_LEFT, token);
|
|
504
547
|
this.rejectSuccessCountTarget(value, token);
|
|
505
548
|
this.rejectVersusMetaOperand(value, token);
|
|
506
549
|
return {
|
|
@@ -581,7 +624,7 @@ export class Parser {
|
|
|
581
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);
|
|
582
625
|
}
|
|
583
626
|
const operator = this.getCompareOp(token);
|
|
584
|
-
const value = this.parseExpression(BP.DICE_LEFT);
|
|
627
|
+
const value = this.parseExpression(BP.DICE_LEFT, token);
|
|
585
628
|
this.rejectSuccessCountTarget(value, token);
|
|
586
629
|
this.rejectVersusMetaOperand(value, token);
|
|
587
630
|
const start = target.start ?? token.position;
|
|
@@ -589,8 +632,8 @@ export class Parser {
|
|
|
589
632
|
if (this.peek().type !== TokenType.FAIL) {
|
|
590
633
|
return { type: 'SuccessCount', target, threshold: { operator, value }, start, end };
|
|
591
634
|
}
|
|
592
|
-
this.advance();
|
|
593
|
-
const failThreshold = this.parseFailThreshold(token);
|
|
635
|
+
const failToken = this.advance();
|
|
636
|
+
const failThreshold = this.parseFailThreshold(token, failToken);
|
|
594
637
|
return {
|
|
595
638
|
type: 'SuccessCount',
|
|
596
639
|
target,
|
|
@@ -600,14 +643,17 @@ export class Parser {
|
|
|
600
643
|
end: failThreshold.value.end ?? end,
|
|
601
644
|
};
|
|
602
645
|
}
|
|
603
|
-
parseFailThreshold(token) {
|
|
646
|
+
parseFailThreshold(token, failToken) {
|
|
604
647
|
if (this.isComparePointAhead())
|
|
605
648
|
return this.parseComparePoint();
|
|
606
|
-
const failValue = this.parseExpression(BP.DICE_LEFT);
|
|
649
|
+
const failValue = this.parseExpression(BP.DICE_LEFT, failToken);
|
|
607
650
|
this.rejectSuccessCountTarget(failValue, token);
|
|
608
651
|
this.rejectVersusMetaOperand(failValue, token);
|
|
609
652
|
return { operator: '=', value: failValue };
|
|
610
653
|
}
|
|
654
|
+
static throwOrphanFailThreshold(token) {
|
|
655
|
+
throw new ParseError(`Fail threshold requires a success count; an explode's comparison is its trigger`, 'UNEXPECTED_TOKEN', token.position, token);
|
|
656
|
+
}
|
|
611
657
|
parseVersus(left, token) {
|
|
612
658
|
this.rejectSuccessCountTarget(left, token);
|
|
613
659
|
let leftChain = left;
|
|
@@ -617,7 +663,7 @@ export class Parser {
|
|
|
617
663
|
if (leftChain.type === 'Versus') {
|
|
618
664
|
throw new ParseError('Cannot chain versus operators', 'NESTED_VERSUS', token.position, token);
|
|
619
665
|
}
|
|
620
|
-
const dc = this.parseExpression(BP.VS_RIGHT);
|
|
666
|
+
const dc = this.parseExpression(BP.VS_RIGHT, token);
|
|
621
667
|
this.rejectSuccessCountTarget(dc, token);
|
|
622
668
|
return {
|
|
623
669
|
type: 'Versus',
|
|
@@ -639,7 +685,7 @@ export class Parser {
|
|
|
639
685
|
const token = this.peek();
|
|
640
686
|
const operator = this.getCompareOp(token);
|
|
641
687
|
this.advance();
|
|
642
|
-
const value = this.parseExpression(BP.DICE_LEFT);
|
|
688
|
+
const value = this.parseExpression(BP.DICE_LEFT, token);
|
|
643
689
|
this.rejectSuccessCountTarget(value, token);
|
|
644
690
|
this.rejectVersusMetaOperand(value, token);
|
|
645
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":"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"}
|
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(
|
|
@@ -395,13 +462,35 @@ export class Parser {
|
|
|
395
462
|
case TokenType.VS:
|
|
396
463
|
return this.parseVersus(left, token);
|
|
397
464
|
|
|
398
|
-
|
|
465
|
+
case TokenType.FAIL:
|
|
466
|
+
return Parser.throwOrphanFailThreshold(token);
|
|
467
|
+
|
|
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
|
+
}
|
|
399
487
|
throw new ParseError(
|
|
400
488
|
`Unexpected infix token '${token.value}'`,
|
|
401
489
|
'UNEXPECTED_TOKEN',
|
|
402
490
|
token.position,
|
|
403
491
|
token,
|
|
404
492
|
);
|
|
493
|
+
}
|
|
405
494
|
}
|
|
406
495
|
}
|
|
407
496
|
|
|
@@ -427,7 +516,7 @@ export class Parser {
|
|
|
427
516
|
}
|
|
428
517
|
|
|
429
518
|
private parseUnaryMinus(token: Token): UnaryOpNode {
|
|
430
|
-
const operand = this.parseExpression(BP.UNARY);
|
|
519
|
+
const operand = this.parseExpression(BP.UNARY, token);
|
|
431
520
|
this.rejectSuccessCountTarget(operand, token);
|
|
432
521
|
return {
|
|
433
522
|
type: 'UnaryOp',
|
|
@@ -439,7 +528,7 @@ export class Parser {
|
|
|
439
528
|
}
|
|
440
529
|
|
|
441
530
|
private parsePrefixDice(token: Token): DiceNode {
|
|
442
|
-
const sides = this.parseExpression(BP.DICE_RIGHT);
|
|
531
|
+
const sides = this.parseExpression(BP.DICE_RIGHT, token);
|
|
443
532
|
this.rejectSuccessCountTarget(sides, token);
|
|
444
533
|
this.rejectVersusMetaOperand(sides, token);
|
|
445
534
|
return {
|
|
@@ -455,7 +544,7 @@ export class Parser {
|
|
|
455
544
|
this.rejectSuccessCountTarget(left, token);
|
|
456
545
|
this.rejectVersusMetaOperand(left, token);
|
|
457
546
|
this.rejectBareDiceChain(left, token);
|
|
458
|
-
const sides = this.parseExpression(BP.DICE_RIGHT);
|
|
547
|
+
const sides = this.parseExpression(BP.DICE_RIGHT, token);
|
|
459
548
|
this.rejectSuccessCountTarget(sides, token);
|
|
460
549
|
this.rejectVersusMetaOperand(sides, token);
|
|
461
550
|
return {
|
|
@@ -514,7 +603,13 @@ export class Parser {
|
|
|
514
603
|
}
|
|
515
604
|
|
|
516
605
|
private parseGrouped(token: Token): GroupedNode {
|
|
517
|
-
|
|
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);
|
|
518
613
|
const close = this.expect(TokenType.RPAREN);
|
|
519
614
|
return { type: 'Grouped', expression, start: token.position, end: close.end };
|
|
520
615
|
}
|
|
@@ -527,10 +622,10 @@ export class Parser {
|
|
|
527
622
|
throw new ParseError('Empty group', 'UNEXPECTED_TOKEN', startToken.position, startToken);
|
|
528
623
|
}
|
|
529
624
|
|
|
530
|
-
const expressions: ASTNode[] = [this.parseExpression(0)];
|
|
625
|
+
const expressions: ASTNode[] = [this.parseExpression(0, startToken)];
|
|
531
626
|
while (this.peek().type === TokenType.COMMA) {
|
|
532
|
-
this.advance();
|
|
533
|
-
expressions.push(this.parseExpression(0));
|
|
627
|
+
const comma = this.advance();
|
|
628
|
+
expressions.push(this.parseExpression(0, comma));
|
|
534
629
|
}
|
|
535
630
|
|
|
536
631
|
if (this.peek().type !== TokenType.RBRACE) {
|
|
@@ -554,16 +649,16 @@ export class Parser {
|
|
|
554
649
|
private parseFunctionCall(token: Token): FunctionCallNode {
|
|
555
650
|
// `FUNCTION`, `COMMA`, and `RPAREN` all sit at BP -1, so argument boundaries
|
|
556
651
|
// fall out of the inner `parseExpression(0)` calls terminating on their own.
|
|
557
|
-
this.expect(TokenType.LPAREN);
|
|
652
|
+
const open = this.expect(TokenType.LPAREN);
|
|
558
653
|
|
|
559
654
|
const args: ASTNode[] = [];
|
|
560
655
|
if (this.peek().type !== TokenType.RPAREN) {
|
|
561
|
-
const first = this.parseExpression(0);
|
|
656
|
+
const first = this.parseExpression(0, open);
|
|
562
657
|
this.rejectSuccessCountTarget(first, token);
|
|
563
658
|
args.push(first);
|
|
564
659
|
while (this.peek().type === TokenType.COMMA) {
|
|
565
|
-
this.advance();
|
|
566
|
-
const next = this.parseExpression(0);
|
|
660
|
+
const comma = this.advance();
|
|
661
|
+
const next = this.parseExpression(0, comma);
|
|
567
662
|
this.rejectSuccessCountTarget(next, token);
|
|
568
663
|
args.push(next);
|
|
569
664
|
}
|
|
@@ -607,7 +702,7 @@ export class Parser {
|
|
|
607
702
|
|
|
608
703
|
const operator = this.getOperatorSymbol(token);
|
|
609
704
|
const rightBp = this.getRightBp(token);
|
|
610
|
-
const right = this.parseExpression(rightBp);
|
|
705
|
+
const right = this.parseExpression(rightBp, token);
|
|
611
706
|
|
|
612
707
|
this.rejectSuccessCountTarget(right, token);
|
|
613
708
|
|
|
@@ -656,8 +751,12 @@ export class Parser {
|
|
|
656
751
|
// never hide inside one and widening the set would never match.
|
|
657
752
|
const node = unwrapGrouped(target);
|
|
658
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.
|
|
659
758
|
throw new ParseError(
|
|
660
|
-
`
|
|
759
|
+
`Success counting is terminal: it cannot be part of a larger expression`,
|
|
661
760
|
'INVALID_SUCCESS_COUNT_TARGET',
|
|
662
761
|
token.position,
|
|
663
762
|
token,
|
|
@@ -817,7 +916,7 @@ export class Parser {
|
|
|
817
916
|
nextToken === TokenType.LPAREN ||
|
|
818
917
|
nextToken === TokenType.AT;
|
|
819
918
|
const count: ASTNode = hasExplicitCount
|
|
820
|
-
? this.parseExpression(BP.DICE_LEFT)
|
|
919
|
+
? this.parseExpression(BP.DICE_LEFT, token)
|
|
821
920
|
: Parser.syntheticLiteral(1, token);
|
|
822
921
|
this.rejectSuccessCountTarget(count, token);
|
|
823
922
|
this.rejectVersusMetaOperand(count, token);
|
|
@@ -979,7 +1078,7 @@ export class Parser {
|
|
|
979
1078
|
);
|
|
980
1079
|
}
|
|
981
1080
|
|
|
982
|
-
const value = this.parseExpression(BP.DICE_LEFT);
|
|
1081
|
+
const value = this.parseExpression(BP.DICE_LEFT, token);
|
|
983
1082
|
this.rejectSuccessCountTarget(value, token);
|
|
984
1083
|
this.rejectVersusMetaOperand(value, token);
|
|
985
1084
|
|
|
@@ -1153,7 +1252,7 @@ export class Parser {
|
|
|
1153
1252
|
|
|
1154
1253
|
const operator = this.getCompareOp(token);
|
|
1155
1254
|
// Threshold binds at `BP.DICE_LEFT` — see `parseComparePoint` TSDoc.
|
|
1156
|
-
const value = this.parseExpression(BP.DICE_LEFT);
|
|
1255
|
+
const value = this.parseExpression(BP.DICE_LEFT, token);
|
|
1157
1256
|
this.rejectSuccessCountTarget(value, token);
|
|
1158
1257
|
this.rejectVersusMetaOperand(value, token);
|
|
1159
1258
|
const start = target.start ?? token.position;
|
|
@@ -1163,8 +1262,8 @@ export class Parser {
|
|
|
1163
1262
|
return { type: 'SuccessCount', target, threshold: { operator, value }, start, end };
|
|
1164
1263
|
}
|
|
1165
1264
|
|
|
1166
|
-
this.advance();
|
|
1167
|
-
const failThreshold = this.parseFailThreshold(token);
|
|
1265
|
+
const failToken = this.advance();
|
|
1266
|
+
const failThreshold = this.parseFailThreshold(token, failToken);
|
|
1168
1267
|
|
|
1169
1268
|
return {
|
|
1170
1269
|
type: 'SuccessCount',
|
|
@@ -1176,18 +1275,44 @@ export class Parser {
|
|
|
1176
1275
|
};
|
|
1177
1276
|
}
|
|
1178
1277
|
|
|
1179
|
-
/**
|
|
1180
|
-
|
|
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 {
|
|
1181
1286
|
if (this.isComparePointAhead()) return this.parseComparePoint();
|
|
1182
1287
|
|
|
1183
1288
|
// Same threshold binding as `parseComparePoint` (BP.DICE_LEFT).
|
|
1184
|
-
const failValue = this.parseExpression(BP.DICE_LEFT);
|
|
1289
|
+
const failValue = this.parseExpression(BP.DICE_LEFT, failToken);
|
|
1185
1290
|
this.rejectSuccessCountTarget(failValue, token);
|
|
1186
1291
|
this.rejectVersusMetaOperand(failValue, token);
|
|
1187
1292
|
|
|
1188
1293
|
return { operator: '=', value: failValue };
|
|
1189
1294
|
}
|
|
1190
1295
|
|
|
1296
|
+
/**
|
|
1297
|
+
* Rejects an `f` that reached LED position, which means no success count is
|
|
1298
|
+
* there to own it — `parseSuccessCount` consumes its own `f`, so this is the
|
|
1299
|
+
* only way the token surfaces.
|
|
1300
|
+
*
|
|
1301
|
+
* The trigger clause names the cause of nearly every orphan: an explode's
|
|
1302
|
+
* comparison is optional, so `3d6!>4f1` reads as a success count with a botch
|
|
1303
|
+
* threshold when `!` has already spent the `>4`. Naming it unconditionally
|
|
1304
|
+
* keeps this off the `index.js` byte budget; **README.md → Arithmetic and
|
|
1305
|
+
* precedence** carries the two rewrites.
|
|
1306
|
+
*/
|
|
1307
|
+
private static throwOrphanFailThreshold(token: Token): never {
|
|
1308
|
+
throw new ParseError(
|
|
1309
|
+
`Fail threshold requires a success count; an explode's comparison is its trigger`,
|
|
1310
|
+
'UNEXPECTED_TOKEN',
|
|
1311
|
+
token.position,
|
|
1312
|
+
token,
|
|
1313
|
+
);
|
|
1314
|
+
}
|
|
1315
|
+
|
|
1191
1316
|
private parseVersus(left: ASTNode, token: Token): VersusNode {
|
|
1192
1317
|
this.rejectSuccessCountTarget(left, token);
|
|
1193
1318
|
|
|
@@ -1203,7 +1328,7 @@ export class Parser {
|
|
|
1203
1328
|
throw new ParseError('Cannot chain versus operators', 'NESTED_VERSUS', token.position, token);
|
|
1204
1329
|
}
|
|
1205
1330
|
|
|
1206
|
-
const dc = this.parseExpression(BP.VS_RIGHT);
|
|
1331
|
+
const dc = this.parseExpression(BP.VS_RIGHT, token);
|
|
1207
1332
|
this.rejectSuccessCountTarget(dc, token);
|
|
1208
1333
|
|
|
1209
1334
|
return {
|
|
@@ -1253,7 +1378,7 @@ export class Parser {
|
|
|
1253
1378
|
|
|
1254
1379
|
this.advance();
|
|
1255
1380
|
|
|
1256
|
-
const value = this.parseExpression(BP.DICE_LEFT);
|
|
1381
|
+
const value = this.parseExpression(BP.DICE_LEFT, token);
|
|
1257
1382
|
this.rejectSuccessCountTarget(value, token);
|
|
1258
1383
|
this.rejectVersusMetaOperand(value, token);
|
|
1259
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';
|