feat(unicode): \p{...} / \P{...} Unicode property escapes (General_Category)
Add Unicode property escapes to the engine:
- Generated `unicode_gc_data.zig` — 3409 General_Category ranges built from
UnicodeData.txt — and rewrote `getGeneralCategory` to binary-search it
(previously a coarse ASCII/Latin approximation). `matchesProperty` now covers
every General_Category (single + super-categories) and `fromString` maps all
short/long names plus `gc=`.
- Parser: `\p{Name}` / `\P{Name}` (and `gc=Name`) lex to `escape_p`/`escape_P`
tokens carrying the resolved `UnicodeProperty`; an unknown name is a syntax
error; bare `\p` (no `{...}`) is an IdentityEscape. New `unicode_property` AST
node.
- Backtracking matcher decodes the UTF-8 code point and tests the property
(consuming the whole code point); the feature forces the backtracking engine.
Verified end-to-end from zig-js: `\p{L}`, `\p{Lu}`, `\P{L}`, `\p{Letter}`,
`\p{gc=Lu}`, and accurate non-ASCII categories (Greek, CJK, currency). C
Chris committed
14394b2edc024eb24232cc3cef4464eb6579a625
Parent: 470d9ee