From c9e5966a7e872692d2e209d69b6d9db4d24c694e Mon Sep 17 00:00:00 2001 From: EuAndreh Date: Sun, 13 Jul 2025 20:03:19 -0300 Subject: Add "[" to the possible characters of TRANSITION_FNS. Introducing "[" now we will start to write the code to parse the character class expressions, i.e. [a-z0-9]. The `context` key will contain a `set` with all the literal characters that were found, and all the ranges too. For parsing the ranges, a `range` key equivalent to the one for the {m,n} range is used. Despite the superficial syntax being simmilar, its logic, semantic and implementation will be different. * src/paca.mjs (TRANSITION_FNS) <"[">: Add new transition function for handling the start of a character class expression. * tests/paca.mjs (TRANSITION_FNS): Add a singular test entry, that exercises the conditionless body of the function. --- tests/paca.mjs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'tests/paca.mjs') diff --git a/tests/paca.mjs b/tests/paca.mjs index b259968..a7cd929 100644 --- a/tests/paca.mjs +++ b/tests/paca.mjs @@ -73,6 +73,24 @@ const test_TRANSITION_FNS = t => { }, ); }); + + t.testing("\"[\" only depends on `out`", () => { + t.assertEq( + TRANSITION_FNS["["]({ out: 123 }, null, null, null), + { + out: 123, + state: "class", + context: { + set: [], + range: { + from: [], + to: [], + where: "from", + }, + }, + }, + ); + }); }; const test_shouldConcat = t => { -- cgit v1.2.3