Bruce Momjian <pgman@candle.pha.pa.us> writes: > I am confused why the following change Tom made to scan.l works. > Isn't that 'x' required so xqescape doesn't match '\x'?
> *** scan.l 2 Jun 2005 01:23:08 -0000 1.123 > --- scan.l 2 Jun 2005 17:45:17 -0000 1.124 > *************** > *** 193,199 **** > xqstart {quote} > xqdouble {quote}{quote} > xqinside [^\\']+ > ! xqescape [\\][^0-7x] > xqoctesc [\\][0-7]{1,3} > xqhexesc [\\]x[0-9A-Fa-f]{1,2} > --- 193,199 ---- > xqstart {quote} > xqdouble {quote}{quote} > xqinside [^\\']+ > ! xqescape [\\][^0-7] > xqoctesc [\\][0-7]{1,3} > xqhexesc [\\]x[0-9A-Fa-f]{1,2} No; if a match to xqhexesc is possible, the lexer will prefer that match because it is longer. If a match to xqhexesc is not possible --- that is, we have \x not followed by a hex digit --- then we *want* xqescape to match. The original coding forced a backup to the <xq>. rule in this situation, which is not how we want it to behave. regards, tom lane ---------------------------(end of broadcast)--------------------------- TIP 4: Don't 'kill -9' the postmaster