aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Meskes <meskes@postgresql.org>2000-03-03 09:56:03 +0000
committerMichael Meskes <meskes@postgresql.org>2000-03-03 09:56:03 +0000
commit3a81a1a4623b2d56f25443e57ae243e13a44cad2 (patch)
tree180b337c8b1aeca38fd19cbd6e29bf9a80174a08
parent85b2875a3a00c69a9ba194a93f731384a59015ca (diff)
downloadpostgresql-3a81a1a4623b2d56f25443e57ae243e13a44cad2.tar.gz
postgresql-3a81a1a4623b2d56f25443e57ae243e13a44cad2.zip
*** empty log message ***
-rw-r--r--doc/src/sgml/ecpg.sgml2
-rw-r--r--src/interfaces/ecpg/ChangeLog4
-rw-r--r--src/interfaces/ecpg/preproc/pgc.l45
-rw-r--r--src/interfaces/ecpg/preproc/preproc.y3
4 files changed, 24 insertions, 30 deletions
diff --git a/doc/src/sgml/ecpg.sgml b/doc/src/sgml/ecpg.sgml
index 4b0eed30cf5..7f0f785d4b6 100644
--- a/doc/src/sgml/ecpg.sgml
+++ b/doc/src/sgml/ecpg.sgml
@@ -2,7 +2,7 @@
<DocInfo>
<AuthorGroup>
<Author>
-<FirstName>Linux</FirstName>
+<FirstName>Linus</FirstName>
<Surname>Tolke</Surname>
</Author>
<Author>
diff --git a/src/interfaces/ecpg/ChangeLog b/src/interfaces/ecpg/ChangeLog
index 846aa8a158a..a7882c20a1e 100644
--- a/src/interfaces/ecpg/ChangeLog
+++ b/src/interfaces/ecpg/ChangeLog
@@ -848,5 +848,9 @@ Thu Mar 2 17:42:16 CET 2000
- Print error message if an indicator array is given for input
variables.
+
+Fri Mar 3 10:47:06 CET 2000
+
+ - Fixed handling of double quote in C code.
- Set library version to 3.1.0.
- Set ecpg version to 2.7.0.
diff --git a/src/interfaces/ecpg/preproc/pgc.l b/src/interfaces/ecpg/preproc/pgc.l
index fcb033787c5..ec265dded16 100644
--- a/src/interfaces/ecpg/preproc/pgc.l
+++ b/src/interfaces/ecpg/preproc/pgc.l
@@ -12,7 +12,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/pgc.l,v 1.51 2000/02/22 19:57:10 meskes Exp $
+ * $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/pgc.l,v 1.52 2000/03/03 09:56:03 meskes Exp $
*
*-------------------------------------------------------------------------
*/
@@ -51,7 +51,7 @@ static int literalalloc; /* current allocated buffer size */
#define startlit() (literalbuf[0] = '\0', literallen = 0)
static void addlit(char *ytext, int yleng);
-int before_comment;
+int state_before;
struct _yy_buffer { YY_BUFFER_STATE buffer;
long lineno;
@@ -268,12 +268,12 @@ cppline {space}*#(.*\\{line_end})*.*
{xcline} { ECHO; }
{xcstart} {
- before_comment = YYSTATE;
+ state_before = YYSTATE;
ECHO;
BEGIN(xc);
}
-<xc>{xcstop} { ECHO; BEGIN(before_comment); }
+<xc>{xcstop} { ECHO; BEGIN(state_before); }
<xc>{xcinside} { ECHO; }
@@ -303,7 +303,7 @@ cppline {space}*#(.*\\{line_end})*.*
BEGIN(xh);
startlit();
}
-<xh>{xhstop} {
+<xh>{xhstop} {
char* endptr;
BEGIN(SQL);
@@ -314,45 +314,36 @@ cppline {space}*#(.*\\{line_end})*.*
return ICONST;
}
-<SQL>{xqstart} {
+{xqstart} {
+ state_before == YYSTATE;
BEGIN(xq);
startlit();
}
-<xq>{xqstop} {
- BEGIN(SQL);
+<xq>{xqstop} {
+ BEGIN(state_before);
yylval.str = mm_strdup(literalbuf);
return SCONST;
}
<xq>{xqdouble} |
<xq>{xqinside} |
-<xq>{xqliteral} {
+<xq>{xqliteral} {
addlit(yytext, yyleng);
}
-<xq>{xqcat} { /* ignore */
+<xq>{xqcat} {
+ /* ignore */
}
-<SQL>{xdstart} {
+{xdstart} {
+ state_before = YYSTATE;
BEGIN(xd);
startlit();
}
-<xd>{xdstop} {
- BEGIN(SQL);
- yylval.str = mm_strdup(literalbuf);
- return CSTRING;
- }
-<xd>{xdinside} {
- addlit(yytext, yyleng);
- }
-{xdstart} {
- BEGIN(xdc);
- startlit();
- }
-<xdc>{xdstop} {
- BEGIN(C);
+<xd>{xdstop} {
+ BEGIN(state_before);
yylval.str = mm_strdup(literalbuf);
return CSTRING;
}
-<xdc>{xdcinside} {
+<xd>{xdinside} {
addlit(yytext, yyleng);
}
<SQL>{typecast} { return TYPECAST; }
@@ -365,7 +356,7 @@ cppline {space}*#(.*\\{line_end})*.*
BEGIN C;
return yytext[0];
}
-<SQL>{operator} {
+<SQL>{operator} {
if (strcmp((char*)yytext,"!=") == 0)
yylval.str = mm_strdup("<>"); /* compatability */
else
diff --git a/src/interfaces/ecpg/preproc/preproc.y b/src/interfaces/ecpg/preproc/preproc.y
index d3abd002286..88591f831bc 100644
--- a/src/interfaces/ecpg/preproc/preproc.y
+++ b/src/interfaces/ecpg/preproc/preproc.y
@@ -5086,6 +5086,7 @@ c_anything: IDENT { $$ = $1; }
| CSTRING { $$ = make3_str(make_str("\""), $1, make_str("\"")); }
| Iconst { $$ = $1; }
| Fconst { $$ = $1; }
+ | Sconst { $$ = $1; }
| '*' { $$ = make_str("*"); }
| '+' { $$ = make_str("+"); }
| '-' { $$ = make_str("-"); }
@@ -5112,8 +5113,6 @@ c_anything: IDENT { $$ = $1; }
| VARCHAR { $$ = make_str("varchar"); }
| '[' { $$ = make_str("["); }
| ']' { $$ = make_str("]"); }
-/* | '(' { $$ = make_str("("); }
- | ')' { $$ = make_str(")"); }*/
| '=' { $$ = make_str("="); }
blockstart : '{' {