fix: correct regexp slash escapes
Fixes #68 in support of https://github.com/eslint/eslint/issues/16555.
This solution is a kind of hacky workaround based on #68's comments. It "encodes" all backslash-escaped forward slashes ('\\' + '/') with a backslash and an equivalent unicode character ('\\' + '\\x2F').
I think it would be much better to work within the PEG grammar in grammar.pegjs. Unfortunately, there is no backtracking or other nontrivial regular expression techniques in PEG.js. Expressions like d:[^\/]+ ("capture any number of characters other than /, under the name d") don't have a way I could find to, say, skip past a character like \.
& { predicate } and ! { predicate } with matchers like "/" d:.+ { ... } "/" or just "/" d:.+ { ... } also seemed promising. But then I couldn't figure out how to get it to match non-greedily: i.e. the full /foo\/bar/ instead of just /foo\/.
I don't often work with PEGs and am not confident I didn't miss some obvious technique. I hope someone who's more experienced in these matters will point something out that's more PEG-oriented. 🙂