Synced parser yet again.

Michael
This commit is contained in:
Michael Meskes 2002-07-20 08:24:18 +00:00
parent d4803f5513
commit a58930bbd5
5 changed files with 271 additions and 879 deletions

View File

@ -1270,6 +1270,12 @@ Mon Jun 17 15:23:51 CEST 2002
- Fixed parser bug in pgc.l. Octal numbers in single quotes are now
correctly handled.
Sat Jul 20 10:09:58 CEST 2002
- Synced preproc.y with gram.y.
- Synced pgc.l with scan.l.
- Synced keywords.c.
- Set ecpg version to 2.10.0.
- Set library version to 3.4.0.

View File

@ -1,4 +1,4 @@
/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/lib/Attic/execute.c,v 1.37 2002/06/12 12:06:53 meskes Exp $ */
/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/lib/Attic/execute.c,v 1.38 2002/07/20 08:24:18 meskes Exp $ */
/*
* The aim is to get a simpler inteface to the database routines.
@ -56,7 +56,7 @@ struct sqlca sqlca =
};
/* This function returns a newly malloced string that has the \
in the argument quoted with \ and the ' quote with ' as SQL92 says.
in the argument quoted with \ and the ' quoted with ' as SQL92 says.
*/
static
char *
@ -84,13 +84,12 @@ quote_postgres(char *arg, int lineno)
default:
;
}
res[ri] = arg[i];
}
res[ri++] = '\'';
res[ri] = '\0';
return res;
}

View File

@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/keywords.c,v 1.52 2002/07/01 06:56:10 meskes Exp $
* $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/keywords.c,v 1.53 2002/07/20 08:24:18 meskes Exp $
*
*-------------------------------------------------------------------------
*/
@ -44,6 +44,8 @@ static ScanKeyword ScanKeywords[] = {
{"as", AS},
{"asc", ASC},
{"assertion", ASSERTION},
{"assignment", ASSIGNMENT},
{"asymmetric", ASYMMETRIC},
{"at", AT},
{"authorization", AUTHORIZATION},
{"backward", BACKWARD},
@ -77,6 +79,7 @@ static ScanKeyword ScanKeywords[] = {
{"committed", COMMITTED},
{"constraint", CONSTRAINT},
{"constraints", CONSTRAINTS},
{"conversion", CONVERSION_P},
{"copy", COPY},
{"create", CREATE},
{"createdb", CREATEDB},
@ -98,6 +101,7 @@ static ScanKeyword ScanKeywords[] = {
{"deferred", DEFERRED},
{"definer", DEFINER},
{"delete", DELETE_P},
{"delimiter", DELIMITER},
{"delimiters", DELIMITERS},
{"desc", DESC},
{"distinct", DISTINCT},
@ -251,6 +255,8 @@ static ScanKeyword ScanKeywords[] = {
{"setof", SETOF},
{"share", SHARE},
{"show", SHOW},
{"similar", SIMILAR},
{"simple", SIMPLE},
{"smallint", SMALLINT},
{"some", SOME},
{"stable", STABLE},
@ -262,6 +268,7 @@ static ScanKeyword ScanKeywords[] = {
{"storage", STORAGE},
{"strict", STRICT},
{"substring", SUBSTRING},
{"symmetric", SYMMETRIC},
{"sysid", SYSID},
{"table", TABLE},
{"temp", TEMP},
@ -274,6 +281,7 @@ static ScanKeyword ScanKeywords[] = {
{"toast", TOAST},
{"trailing", TRAILING},
{"transaction", TRANSACTION},
{"treat", TREAT},
{"trigger", TRIGGER},
{"trim", TRIM},
{"true", TRUE_P},
@ -304,6 +312,7 @@ static ScanKeyword ScanKeywords[] = {
{"with", WITH},
{"without", WITHOUT},
{"work", WORK},
{"write", WRITE},
{"year", YEAR_P},
{"zone", ZONE},
};

View File

@ -12,7 +12,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/pgc.l,v 1.96 2002/07/01 06:56:10 meskes Exp $
* $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/pgc.l,v 1.97 2002/07/20 08:24:18 meskes Exp $
*
*-------------------------------------------------------------------------
*/
@ -89,14 +89,14 @@ static struct _if_value
* We use exclusive states for quoted strings, extended comments,
* and to eliminate parsing troubles for numeric strings.
* Exclusive states:
* <xbit> bit string literal
* <xb> bit string literal
* <xc> extended C-style comments - thomas 1997-07-12
* <xd> delimited identifiers (double-quoted identifiers) - thomas 1997-10-27
* <xh> hexadecimal numeric string - thomas 1997-11-16
* <xq> quoted strings - thomas 1997-07-30
*/
%x xbit
%x xb
%x xc
%x xd
%x xdc
@ -108,10 +108,10 @@ static struct _if_value
/* Bit string
*/
xbitstart [bB]{quote}
xbitstop {quote}
xbitinside [^']*
xbitcat {quote}{whitespace_with_newline}{quote}
xbstart [bB]{quote}
xbstop {quote}
xbinside [^']*
xbcat {quote}{whitespace_with_newline}{quote}
/* Hexadecimal number
*/
@ -120,6 +120,10 @@ xhstop {quote}
xhinside [^']+
xhcat {quote}{whitespace_with_newline}{quote}
/* National character
*/
xnstart [nN]{quote}
/* C version of hex number
*/
xch 0[xX][0-9A-Fa-f]*
@ -318,13 +322,13 @@ cppline {space}*#(.*\\{space})*.*
<xc><<EOF>> { mmerror(PARSE_ERROR, ET_ERROR, "Unterminated /* comment"); }
<SQL>{xbitstart} {
<SQL>{xbstart} {
token_start = yytext;
BEGIN(xbit);
BEGIN(xb);
startlit();
addlitchar('b');
}
<xbit>{xbitstop} {
<xb>{xbstop} {
BEGIN(SQL);
if (literalbuf[strspn(literalbuf, "01") + 1] != '\0')
mmerror(PARSE_ERROR, ET_ERROR, "invalid bit string input.");
@ -333,10 +337,10 @@ cppline {space}*#(.*\\{space})*.*
}
<xh>{xhinside} |
<xbit>{xbitinside} { addlit(yytext, yyleng); }
<xb>{xbinside} { addlit(yytext, yyleng); }
<xh>{xhcat} |
<xbit>{xbitcat} { /* ignore */ }
<xbit><<EOF>> { mmerror(PARSE_ERROR, ET_ERROR, "Unterminated bit string"); }
<xb>{xbcat} { /* ignore */ }
<xb><<EOF>> { mmerror(PARSE_ERROR, ET_ERROR, "Unterminated bit string"); }
<SQL>{xhstart} {
token_start = yytext;
@ -362,7 +366,15 @@ cppline {space}*#(.*\\{space})*.*
}
<xh><<EOF>> { mmerror(PARSE_ERROR, ET_ERROR, "Unterminated hexadecimal integer"); }
<SQL>{xnstart} {
/* National character.
* Need to remember type info to flow it forward into the parser.
* Not yet implemented. - thomas 2002-06-17
*/
token_start = yytext;
BEGIN(xq);
startlit();
}
<C,SQL>{xqstart} {
token_start = yytext;
state_before = YYSTATE;
@ -372,7 +384,6 @@ cppline {space}*#(.*\\{space})*.*
<xq>{xqstop} {
BEGIN(state_before);
yylval.str = mm_strdup(literalbuf);
printf("MM: %s\n", yylval.str);
return SCONST;
}
<xq>{xqdouble} { addlitchar('\''); }
@ -580,7 +591,7 @@ cppline {space}*#(.*\\{space})*.*
*/
if (ptr == NULL)
{
yylval.str = mm_strdup( yytext);
yylval.str = mm_strdup(yytext);
return IDENT;
}
}

File diff suppressed because it is too large Load Diff