aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2004-02-24 22:06:32 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2004-02-24 22:06:32 +0000
commitfa96a5e15b69707c2e05aa04bc73fa88b9a85f7a (patch)
treef96b6765fbef3523cd5e323153b298be26a66add
parent58e705320e0c9e691a3fd2bd544f375ee0ca23d6 (diff)
downloadpostgresql-fa96a5e15b69707c2e05aa04bc73fa88b9a85f7a.tar.gz
postgresql-fa96a5e15b69707c2e05aa04bc73fa88b9a85f7a.zip
Add %option nodefault to all our flex lexers. Fix a couple of rule gaps
exposed thereby. AFAICT these would not lead to any worse problems than junk emitted on the backend's stdout, but we should have the option to catch possible worse errors in future.
-rw-r--r--contrib/cube/cubescan.l3
-rw-r--r--contrib/seg/segscan.l3
-rw-r--r--contrib/tsearch/parser.l1
-rw-r--r--contrib/tsearch2/wordparser/parser.l1
-rw-r--r--src/backend/bootstrap/bootscanner.l3
-rw-r--r--src/backend/utils/misc/guc-file.l3
-rw-r--r--src/interfaces/ecpg/preproc/pgc.l3
-rw-r--r--src/pl/plpgsql/src/scan.l6
8 files changed, 16 insertions, 7 deletions
diff --git a/contrib/cube/cubescan.l b/contrib/cube/cubescan.l
index c5e1a20f6b1..a47dc4334aa 100644
--- a/contrib/cube/cubescan.l
+++ b/contrib/cube/cubescan.l
@@ -26,6 +26,7 @@ void cube_scanner_finish(void);
%option 8bit
%option never-interactive
+%option nodefault
%option nounput
%option noyywrap
%option prefix="cube_yy"
@@ -44,7 +45,7 @@ float ({integer}|{real})([eE]{integer})?
\( yylval = "("; return O_PAREN;
\) yylval = ")"; return C_PAREN;
\, yylval = ")"; return COMMA;
-[ ]+ /* discard spaces */
+[ \t\n\r\f]+ /* discard spaces */
. return yytext[0]; /* alert parser of the garbage */
%%
diff --git a/contrib/seg/segscan.l b/contrib/seg/segscan.l
index 21eb5fa0207..b2a3bbe6845 100644
--- a/contrib/seg/segscan.l
+++ b/contrib/seg/segscan.l
@@ -25,6 +25,7 @@ void seg_scanner_finish(void);
%option 8bit
%option never-interactive
+%option nodefault
%option nounput
%option noyywrap
%option prefix="seg_yy"
@@ -44,7 +45,7 @@ float ({integer}|{real})([eE]{integer})?
\< yylval.text = "<"; return EXTENSION;
\> yylval.text = ">"; return EXTENSION;
\~ yylval.text = "~"; return EXTENSION;
-[ ]+ /* discard spaces */
+[ \t\n\r\f]+ /* discard spaces */
. return yytext[0]; /* alert parser of the garbage */
%%
diff --git a/contrib/tsearch/parser.l b/contrib/tsearch/parser.l
index 17ac21dcd1c..3eb411dded3 100644
--- a/contrib/tsearch/parser.l
+++ b/contrib/tsearch/parser.l
@@ -16,6 +16,7 @@ YY_BUFFER_STATE buf = NULL; /* buffer to parse; it need for parse from string */
%option 8bit
%option never-interactive
+%option nodefault
%option nounput
%option noyywrap
diff --git a/contrib/tsearch2/wordparser/parser.l b/contrib/tsearch2/wordparser/parser.l
index e36c19355c5..e80f5fea903 100644
--- a/contrib/tsearch2/wordparser/parser.l
+++ b/contrib/tsearch2/wordparser/parser.l
@@ -18,6 +18,7 @@ YY_BUFFER_STATE buf = NULL; /* buffer to parse; it need for parse from string */
%option 8bit
%option never-interactive
+%option nodefault
%option nounput
%option noyywrap
diff --git a/src/backend/bootstrap/bootscanner.l b/src/backend/bootstrap/bootscanner.l
index 6d3081695f4..d8f683596d9 100644
--- a/src/backend/bootstrap/bootscanner.l
+++ b/src/backend/bootstrap/bootscanner.l
@@ -9,7 +9,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/bootstrap/bootscanner.l,v 1.32 2003/11/29 19:51:41 pgsql Exp $
+ * $PostgreSQL: pgsql/src/backend/bootstrap/bootscanner.l,v 1.33 2004/02/24 22:06:32 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -53,6 +53,7 @@ static int yyline; /* keep track of the line number for error reporting */
%option 8bit
%option never-interactive
+%option nodefault
%option nounput
%option noyywrap
diff --git a/src/backend/utils/misc/guc-file.l b/src/backend/utils/misc/guc-file.l
index df895722607..eb5f0c7f071 100644
--- a/src/backend/utils/misc/guc-file.l
+++ b/src/backend/utils/misc/guc-file.l
@@ -4,7 +4,7 @@
*
* Copyright (c) 2000-2003, PostgreSQL Global Development Group
*
- * $PostgreSQL: pgsql/src/backend/utils/misc/guc-file.l,v 1.20 2003/11/29 19:52:03 pgsql Exp $
+ * $PostgreSQL: pgsql/src/backend/utils/misc/guc-file.l,v 1.21 2004/02/24 22:06:32 tgl Exp $
*/
%{
@@ -47,6 +47,7 @@ char *GUC_scanstr(char *);
%option 8bit
%option never-interactive
+%option nodefault
%option nounput
%option noyywrap
diff --git a/src/interfaces/ecpg/preproc/pgc.l b/src/interfaces/ecpg/preproc/pgc.l
index 264f93f847c..376c87c73ba 100644
--- a/src/interfaces/ecpg/preproc/pgc.l
+++ b/src/interfaces/ecpg/preproc/pgc.l
@@ -12,7 +12,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/pgc.l,v 1.125 2004/02/15 13:48:54 meskes Exp $
+ * $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/pgc.l,v 1.126 2004/02/24 22:06:32 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -70,6 +70,7 @@ static struct _if_value
%option 8bit
%option never-interactive
+%option nodefault
%option noyywrap
%option yylineno
diff --git a/src/pl/plpgsql/src/scan.l b/src/pl/plpgsql/src/scan.l
index 62a7880c6c2..b891e2b9e18 100644
--- a/src/pl/plpgsql/src/scan.l
+++ b/src/pl/plpgsql/src/scan.l
@@ -4,7 +4,7 @@
* procedural language
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/pl/plpgsql/src/scan.l,v 1.30 2003/11/29 19:52:12 pgsql Exp $
+ * $PostgreSQL: pgsql/src/pl/plpgsql/src/scan.l,v 1.31 2004/02/24 22:06:32 tgl Exp $
*
* This software is copyrighted by Jan Wieck - Hamburg.
*
@@ -63,6 +63,7 @@ int plpgsql_SpaceScanned = 0;
%option 8bit
%option never-interactive
+%option nodefault
%option nounput
%option noyywrap
@@ -272,6 +273,7 @@ dump { return O_DUMP; }
BEGIN IN_STRING;
}
<IN_STRING>\\. { }
+<IN_STRING>\\ { /* can only happen with \ at EOF */ }
<IN_STRING>'' { }
<IN_STRING>' {
yyleng -= (yytext - start_charpos);
@@ -279,13 +281,13 @@ dump { return O_DUMP; }
BEGIN INITIAL;
return T_STRING;
}
+<IN_STRING>[^'\\]+ { }
<IN_STRING><<EOF>> {
plpgsql_error_lineno = start_lineno;
ereport(ERROR,
(errcode(ERRCODE_DATATYPE_MISMATCH),
errmsg("unterminated string")));
}
-<IN_STRING>[^'\\]* { }
/* ----------
* Any unmatched character is returned as is