pe icon indicating copy to clipboard operation
pe copied to clipboard

Allow escaped hyphens in character classes ([\-])

Open goodmami opened this issue 4 months ago • 0 comments

As mentioned in https://github.com/goodmami/pe/issues/59#issuecomment-3186903306, escaping a hyphen is the recommended way to get a literal - in a character class but it is not actually allowed in Pe's PEG metasyntax:

>>> pe.match(r'[a\-]', "-")
Traceback (most recent call last):
  [...]
pe._errors.ParseError:
  line 0, character 3
    [a\-]
       ^
ParseError: `[tnvfr"'\[\]\\\\]`, `[0-7]`, `x`, `u`, `U`, `U`

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  [...]
pe._errors.GrammarError: invalid grammar

This should be allowed. Furthermore, it's probably time to have separate escaping/unescaping rules for character classes and regular strings.

goodmami avatar Aug 16 '25 17:08 goodmami