diff options
| author | EuAndreh <eu@euandre.org> | 2025-07-11 15:25:36 -0300 |
|---|---|---|
| committer | EuAndreh <eu@euandre.org> | 2025-07-11 15:25:36 -0300 |
| commit | 689f3a0d0cab399717d1152da21929c980061e9b (patch) | |
| tree | a3dc3ca03eee63331072e9ba36e32b54cc7f3fe2 /src/paca.mjs | |
| parent | tests/paca.mjs (test_tokenizeRegexStep): Compute `char` and `index` (diff) | |
| download | paca-689f3a0d0cab399717d1152da21929c980061e9b.tar.gz paca-689f3a0d0cab399717d1152da21929c980061e9b.tar.xz | |
src/paca.mjs: Move error detection from tokenizeRegexStep => tokenizeRegex
Diffstat (limited to 'src/paca.mjs')
| -rw-r--r-- | src/paca.mjs | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/src/paca.mjs b/src/paca.mjs index 993d26c..380200a 100644 --- a/src/paca.mjs +++ b/src/paca.mjs @@ -36,12 +36,6 @@ const tokenizeRegexStep = chars => ({ out, state }, char, index) => { } if (char === "\\") { - if (next === undefined) { - throw new SyntaxError( - `bad trailing escape character: ${chars}`, - ); - } - return { out, state: ConcatStep.ESCAPING, @@ -61,8 +55,18 @@ const tokenizeRegexFn = chars => state: ConcatStep.ACCEPTING, }); -const tokenizeRegex = chars => - tokenizeRegexFn(chars).out; +const tokenizeRegex = chars => { + const tokens = tokenizeRegexFn(chars); + if (!!tokens.error) { + throw tokens.error; + } + + if (tokens.state !== ConcatStep.ACCEPTING) { + throw new SyntaxError("bad ending state: " + tokens.state); + } + + return tokens.out; +}; const PRECEDENCE = { "(": 4, |
