in reply to Re^5: Replace only unescaped metachars
in thread Replace only unescaped metachars

Parsers can't do lookbehind, not to mention recursive lookbehind. You're straying way off your point (that this is a parser problem, not a regexp problem) by saying variable-length lookbehind is required.

Besides, you said "The recognition of escaped escapes is a naturally recursive problem." There's nothing recursive about "Count the number of slashes leading up to the char. If the count is odd, the character is escaped. If the count is even, the character is not escaped."

Replies are listed 'Best First'.
Re^7: Replace only unescaped metachars
by Anno (Deacon) on Feb 22, 2007 at 21:06 UTC
    The definition would have to be: A backslash is escaped if it preceded by an unescaped backslash. Implementing that directly leads to recursion. It takes an analysis of the definition to arrive at the the odd-even rule and a simpler implementation.

    Anno

      You got me there. Still not the reason why parser is better, though. The tokenizer converts strings literals to strings before the parser is involved, so the parser never even sees the escapes.