Re: pgsql-server/src/pl/plpgsql/src scan.l

Поиск
Список
Период
Сортировка
От Bruce Momjian
Тема Re: pgsql-server/src/pl/plpgsql/src scan.l
Дата
Msg-id 200208040411.g744BlR02298@candle.pha.pa.us
обсуждение исходный текст
Ответ на Re: pgsql-server/src/pl/plpgsql/src scan.l  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-committers
Tom Lane wrote:
> momjian@postgresql.org (Bruce Momjian - CVS) writes:
> >     I send a simple patch for PL/pgSQL parser which allow now to use
> >     whitespaces in identifers of any kind(table names,attribute
> >     names,variables ...) in Pl/pgSQL procedural language.Explicit definition
> >     of bug can be found in Re: [HACKERS] Bug of PL/pgSQL parser
>
> I feel sure I pointed out that this patch is wrong.

Yea, I was already researching this.  I can't find your comment and I
thought this was a _newer_ version of the patch.  Can't find your
comment in the archives.  Let me attach the patch.  Is it wrong?

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026
--- src/pl/plpgsql/src/scan.l    Thu Mar  7 07:52:15 2002
+++ ../DONE/scan.l    Mon Jul 22 06:53:14 2002
@@ -57,9 +57,9 @@

 %option yylineno

-
-WS    [\200-\377_A-Za-z"]
-WC    [\200-\377_A-Za-z0-9"]
+DQUOTE    \"([^\"])*\"
+WS    [\200-\377_A-Za-z]
+WC    [\200-\377_A-Za-z0-9]

 %x    IN_STRING IN_COMMENT

@@ -151,17 +151,48 @@
      * ----------
      */
 {WS}{WC}*        { return plpgsql_parse_word(yytext);    }
+{DQUOTE}*        { return plpgsql_parse_word(yytext);    }
+
 {WS}{WC}*\.{WS}{WC}*    { return plpgsql_parse_dblword(yytext);    }
+{WS}{WC}*\.{DQUOTE}*    { return plpgsql_parse_dblword(yytext);    }
+{DQUOTE}*\.{WS}{WC}*    { return plpgsql_parse_dblword(yytext);    }
+{DQUOTE}*\.{DQUOTE}*    { return plpgsql_parse_dblword(yytext);    }
+
 {WS}{WC}*\.{WS}{WC}*\.{WS}{WC}*    { return plpgsql_parse_tripword(yytext); }
+{WS}{WC}*\.{WS}{WC}*\.{DQUOTE}*    { return plpgsql_parse_tripword(yytext); }
+{WS}{WC}*\.{DQUOTE}*\.{WS}{WC}*    { return plpgsql_parse_tripword(yytext); }
+{WS}{WC}*\.{DQUOTE}*\.{DQUOTE}*    { return plpgsql_parse_tripword(yytext); }
+{DQUOTE}*\.{WS}{WC}*\.{WS}{WC}*    { return plpgsql_parse_tripword(yytext); }
+{DQUOTE}*\.{WS}{WC}*\.{DQUOTE}*    { return plpgsql_parse_tripword(yytext); }
+{DQUOTE}*\.{DQUOTE}*\.{WS}{WC}*    { return plpgsql_parse_tripword(yytext); }
+{DQUOTE}*\.{DQUOTE}*\.{DQUOTE}*    { return plpgsql_parse_tripword(yytext); }
+
 {WS}{WC}*%TYPE        { return plpgsql_parse_wordtype(yytext);    }
+{DQUOTE}*%TYPE        { return plpgsql_parse_wordtype(yytext);    }
+
 {WS}{WC}*\.{WS}{WC}*%TYPE    { return plpgsql_parse_dblwordtype(yytext); }
+{WS}{WC}*\.{DQUOTE}*%TYPE    { return plpgsql_parse_dblwordtype(yytext); }
+{DQUOTE}*\.{WS}{WC}*%TYPE    { return plpgsql_parse_dblwordtype(yytext); }
+{DQUOTE}*\.{DQUOTE}*%TYPE    { return plpgsql_parse_dblwordtype(yytext); }
+
 {WS}{WC}*%ROWTYPE    { return plpgsql_parse_wordrowtype(yytext);    }
+{DQUOTE}*%ROWTYPE    { return plpgsql_parse_wordrowtype(yytext);    }

 \$[0-9]+        { return plpgsql_parse_word(yytext);    }
+
 \$[0-9]+\.{WS}{WC}*    { return plpgsql_parse_dblword(yytext);    }
+\$[0-9]+\.{DQUOTE}*    { return plpgsql_parse_dblword(yytext);    }
+
 \$[0-9]+\.{WS}{WC}*\.{WS}{WC}*    { return plpgsql_parse_tripword(yytext); }
+\$[0-9]+\.{WS}{WC}*\.{DQUOTE}*    { return plpgsql_parse_tripword(yytext); }
+\$[0-9]+\.{DQUOTE}*\.{WS}{WC}*    { return plpgsql_parse_tripword(yytext); }
+\$[0-9]+\.{DQUOTE}*\.{DQUOTE}*    { return plpgsql_parse_tripword(yytext); }
+
 \$[0-9]+%TYPE        { return plpgsql_parse_wordtype(yytext);    }
+
 \$[0-9]+\.{WS}{WC}*%TYPE    { return plpgsql_parse_dblwordtype(yytext); }
+\$[0-9]+\.{DQUOTE}*%TYPE    { return plpgsql_parse_dblwordtype(yytext); }
+
 \$[0-9]+%ROWTYPE    { return plpgsql_parse_wordrowtype(yytext);    }

 [0-9]+            { return T_NUMBER;            }

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

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: pgsql-server/src/pl/plpgsql/src scan.l
Следующее
От: momjian@postgresql.org (Bruce Momjian - CVS)
Дата:
Сообщение: pgsql-server/doc TODO