diff options
| author | Gabriel Schneider <[email protected]> | 2026-09-29 17:46:11 -0300 |
|---|---|---|
| committer | Gabriel Schneider <[email protected]> | 2026-10-01 00:12:17 -0300 |
| commit | e3e605bd33fc5be56cb7ec842449718bc5337a75 (patch) | |
| tree | 85a9d70524ecb3358bc3f92225851c6abd249a10 /docs | |
| parent | 290584fc1127d017603c7c98c9aab27c0523a2cf (diff) | |
| download | pardes-e3e605bd33fc5be56cb7ec842449718bc5337a75.tar.gz pardes-e3e605bd33fc5be56cb7ec842449718bc5337a75.zip | |
A class with non-ASCII runes matches them: [éa-z] is taken as (é|[a-z]), a range up to 256 runes spelled out
mvzr's classes hold bytes, and it refused a multibyte member as a bad expression. Rewriting the class before compiling, as ^a|^b already is, needs no mvzr patch; runes that differ only in their last byte go as one alternative (\xc3[\xa0-\xbf] for [à-ÿ]) so a 256-rune range fits the 512-operation limit, which counts the pattern as rewritten. A wider range and [^é] are refused, naming why.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/fs.md | 7 |
1 files changed, 6 insertions, 1 deletions
@@ -733,7 +733,12 @@ unanchored branches (`^def|x`) is refused, `bad regular expression`, since mvzr keeps `^` only first. A pattern may be up to 512 of mvzr's operations, about 512 characters (mvzr's own is 64; pardes builds it with more); a longer one is refused, `bad regular expression: longer than mvzr's 512 -operations`. An expression is +operations`. A class may hold non-ASCII runes (`[éa-z]`, `[à-ÿ]`): it is +taken as an alternation of them (`(é|[a-z])`), a range of up to 256 runes +spelled out, and the 512 counts the pattern as rewritten. A wider range +(`a range of runes wider than 256 in [...] is not supported`) and a negated +class with a non-ASCII rune (`[^é]`) are refused, since mvzr's classes hold +bytes. An expression is evaluated from the current address, the range last written to `addr` (or left by the last `data` write, just past it), as acme evaluates it from `w->addr` (xfid.c:446): `.` is that address, not the selection (`dot` is |
