Commit 737f1cd4 authored by Tom Lane's avatar Tom Lane

Cosmetic changes (mostly whitespace) to make it easier to diff the

backend lexer against psql's.
parent 2e3d5f11
...@@ -4,12 +4,13 @@ ...@@ -4,12 +4,13 @@
* scan.l * scan.l
* lexical scanner for PostgreSQL * lexical scanner for PostgreSQL
* *
* XXX The rules in this file must be kept in sync with psql's lexer!!!
*
* Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California * Portions Copyright (c) 1994, Regents of the University of California
* *
*
* IDENTIFICATION * IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/parser/scan.l,v 1.112 2003/11/29 19:51:52 pgsql Exp $ * $PostgreSQL: pgsql/src/backend/parser/scan.l,v 1.113 2004/02/19 19:11:30 tgl Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -29,9 +30,6 @@ ...@@ -29,9 +30,6 @@
#include "utils/builtins.h" #include "utils/builtins.h"
#include "mb/pg_wchar.h" #include "mb/pg_wchar.h"
/* No reason to constrain amount of data slurped */
#define YY_READ_BUF_SIZE 16777216
/* Avoid exit() on fatal scanner errors (a bit ugly -- see yy_fatal_error) */ /* Avoid exit() on fatal scanner errors (a bit ugly -- see yy_fatal_error) */
#define fprintf(file, fmt, msg) ereport(ERROR, (errmsg_internal("%s", msg))) #define fprintf(file, fmt, msg) ereport(ERROR, (errmsg_internal("%s", msg)))
...@@ -103,6 +101,41 @@ unsigned char unescape_single_char(unsigned char c); ...@@ -103,6 +101,41 @@ unsigned char unescape_single_char(unsigned char c);
%x xh %x xh
%x xq %x xq
/*
* In order to make the world safe for Windows and Mac clients as well as
* Unix ones, we accept either \n or \r as a newline. A DOS-style \r\n
* sequence will be seen as two successive newlines, but that doesn't cause
* any problems. Comments that start with -- and extend to the next
* newline are treated as equivalent to a single whitespace character.
*
* NOTE a fine point: if there is no newline following --, we will absorb
* everything to the end of the input as a comment. This is correct. Older
* versions of Postgres failed to recognize -- as a comment if the input
* did not end with a newline.
*
* XXX perhaps \f (formfeed) should be treated as a newline as well?
*/
space [ \t\n\r\f]
horiz_space [ \t\f]
newline [\n\r]
non_newline [^\n\r]
comment ("--"{non_newline}*)
whitespace ({space}+|{comment})
/*
* SQL requires at least one newline in the whitespace separating
* string literals that are to be concatenated. Silly, but who are we
* to argue? Note that {whitespace_with_newline} should not have * after
* it, whereas {whitespace} should generally have a * after it...
*/
special_whitespace ({space}+|{comment}{newline})
horiz_whitespace ({horiz_space}|{comment})
whitespace_with_newline ({horiz_whitespace}*{newline}{special_whitespace}*)
/* Bit string /* Bit string
* It is tempting to scan the string for only those characters * It is tempting to scan the string for only those characters
* which are allowed. However, this leads to silently swallowed * which are allowed. However, this leads to silently swallowed
...@@ -205,41 +238,6 @@ real ((({digit}*\.{digit}+)|({digit}+\.{digit}*)|({digit}+))([Ee][-+]?{digit}+ ...@@ -205,41 +238,6 @@ real ((({digit}*\.{digit}+)|({digit}+\.{digit}*)|({digit}+))([Ee][-+]?{digit}+
param \${integer} param \${integer}
/*
* In order to make the world safe for Windows and Mac clients as well as
* Unix ones, we accept either \n or \r as a newline. A DOS-style \r\n
* sequence will be seen as two successive newlines, but that doesn't cause
* any problems. Comments that start with -- and extend to the next
* newline are treated as equivalent to a single whitespace character.
*
* NOTE a fine point: if there is no newline following --, we will absorb
* everything to the end of the input as a comment. This is correct. Older
* versions of Postgres failed to recognize -- as a comment if the input
* did not end with a newline.
*
* XXX perhaps \f (formfeed) should be treated as a newline as well?
*/
space [ \t\n\r\f]
horiz_space [ \t\f]
newline [\n\r]
non_newline [^\n\r]
comment ("--"{non_newline}*)
whitespace ({space}+|{comment})
/*
* SQL requires at least one newline in the whitespace separating
* string literals that are to be concatenated. Silly, but who are we
* to argue? Note that {whitespace_with_newline} should not have * after
* it, whereas {whitespace} should generally have a * after it...
*/
special_whitespace ({space}+|{comment}{newline})
horiz_whitespace ({horiz_space}|{comment})
whitespace_with_newline ({horiz_whitespace}*{newline}{special_whitespace}*)
other . other .
/* /*
...@@ -261,7 +259,9 @@ other . ...@@ -261,7 +259,9 @@ other .
token_start = NULL; token_start = NULL;
%} %}
{whitespace} { /* ignore */ } {whitespace} {
/* ignore */
}
{xcstart} { {xcstart} {
token_start = yytext; token_start = yytext;
...@@ -288,9 +288,13 @@ other . ...@@ -288,9 +288,13 @@ other .
xcdepth--; xcdepth--;
} }
<xc>{xcinside} { /* ignore */ } <xc>{xcinside} {
/* ignore */
}
<xc>{op_chars} { /* ignore */ } <xc>{op_chars} {
/* ignore */
}
<xc><<EOF>> { yyerror("unterminated /* comment"); } <xc><<EOF>> { yyerror("unterminated /* comment"); }
...@@ -319,9 +323,8 @@ other . ...@@ -319,9 +323,8 @@ other .
<xb>{xbcat} { <xb>{xbcat} {
/* ignore */ /* ignore */
} }
<xb><<EOF>> { <xb><<EOF>> { yyerror("unterminated bit string literal"); }
yyerror("unterminated bit string literal");
}
{xhstart} { {xhstart} {
/* Hexadecimal bit type. /* Hexadecimal bit type.
* At some point we should simply pass the string * At some point we should simply pass the string
...@@ -358,7 +361,6 @@ other . ...@@ -358,7 +361,6 @@ other .
return keyword->value; return keyword->value;
} }
{xqstart} { {xqstart} {
token_start = yytext; token_start = yytext;
BEGIN(xq); BEGIN(xq);
...@@ -387,7 +389,6 @@ other . ...@@ -387,7 +389,6 @@ other .
} }
<xq><<EOF>> { yyerror("unterminated quoted string"); } <xq><<EOF>> { yyerror("unterminated quoted string"); }
{xdstart} { {xdstart} {
token_start = yytext; token_start = yytext;
BEGIN(xd); BEGIN(xd);
...@@ -421,9 +422,13 @@ other . ...@@ -421,9 +422,13 @@ other .
} }
<xd><<EOF>> { yyerror("unterminated quoted identifier"); } <xd><<EOF>> { yyerror("unterminated quoted identifier"); }
{typecast} { return TYPECAST; } {typecast} {
return TYPECAST;
}
{self} { return yytext[0]; } {self} {
return yytext[0];
}
{operator} { {operator} {
/* /*
...@@ -571,7 +576,9 @@ other . ...@@ -571,7 +576,9 @@ other .
return IDENT; return IDENT;
} }
{other} { return yytext[0]; } {other} {
return yytext[0];
}
%% %%
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment