Resend...

On 9/26/09, Tom Lane <t...@sss.pgh.pa.us> wrote:
> Marko Kreen <mark...@gmail.com> writes:
>  > On 9/26/09, Peter Eisentraut <pete...@gmx.net> wrote:
>
> >> That patch results in the following message from flex:
>  >>
>  >> psqlscan.l:1039: warning, -s option given but default rule can be
>  >> matched
>
>  > Agh.  Well, that just means the <xeu> state must be commented out:
>
>  >  -%x xeu
>  >  +/* %x xeu */
>
>
> Ick --- that breaks the whole concept of keeping the two sets of
>  flex rules in sync.  And it's quite unclear why it fixes the problem,
>  too.  At the very least, if you do it that way, it needs a comment
>  explaining exactly why it's different from the backend.

The commenting-out fixes the problem, because I copy pasted the state
declaration without any rules in it.

Anyway, now I attached a patch, where I filled the section but without
referring it from anywhere.  The rules itself are now equal.  Is that OK?

-- 
marko
diff --git a/src/bin/psql/psqlscan.l b/src/bin/psql/psqlscan.l
index 7f08da2..8309577 100644
--- a/src/bin/psql/psqlscan.l
+++ b/src/bin/psql/psqlscan.l
@@ -158,6 +158,7 @@ static void emit(const char *txt, int len);
  *  <xdolq> $foo$ quoted strings
  *  <xui> quoted identifier with Unicode escapes
  *  <xus> quoted string with Unicode escapes
+ *  <xeu> Unicode surrogate pair in extended quoted string.
  */
 
 %x xb
@@ -169,6 +170,7 @@ static void emit(const char *txt, int len);
 %x xdolq
 %x xui
 %x xus
+%x xeu
 /* Additional exclusive states for psql only: lex backslash commands */
 %x xslashcmd
 %x xslasharg
@@ -253,6 +255,8 @@ xeinside		[^\\']+
 xeescape		[\\][^0-7]
 xeoctesc		[\\][0-7]{1,3}
 xehexesc		[\\]x[0-9A-Fa-f]{1,2}
+xeunicode		[\\](u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})
+xeunicodefail	[\\](u[0-9A-Fa-f]{0,3}|U[0-9A-Fa-f]{0,7})
 
 /* Extended quote
  * xqdouble implements embedded quote, ''''
@@ -511,6 +515,20 @@ other			.
 <xe>{xeinside}  {
 					ECHO;
 				}
+<xe>{xeunicode}	{
+					ECHO;
+				}
+<xeu>{xeunicode} {
+					ECHO;
+				}
+<xeu>.			|
+<xeu>\n			|
+<xeu><<EOF>>	{
+					ECHO;
+				}
+<xe,xeu>{xeunicodefail} {
+					ECHO;
+				}
 <xe>{xeescape}  {
 					ECHO;
 				}
-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to