Re: Lexer patch question

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: Lexer patch question
Дата
Msg-id 4411.1118856684@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Lexer patch question  (Bruce Momjian <pgman@candle.pha.pa.us>)
Ответы Re: Lexer patch question  (Bruce Momjian <pgman@candle.pha.pa.us>)
Список pgsql-patches
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

В списке pgsql-patches по дате отправления:

Предыдущее
От: Bruce Momjian
Дата:
Сообщение: Lexer patch question
Следующее
От: Bruce Momjian
Дата:
Сообщение: Re: Lexer patch question