aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/src/sgml/ecpg.sgml6
-rw-r--r--src/interfaces/ecpg/preproc/pgc.l8
2 files changed, 10 insertions, 4 deletions
diff --git a/doc/src/sgml/ecpg.sgml b/doc/src/sgml/ecpg.sgml
index c629726affe..120d760ba21 100644
--- a/doc/src/sgml/ecpg.sgml
+++ b/doc/src/sgml/ecpg.sgml
@@ -64,8 +64,10 @@ EXEC SQL ...;
These statements syntactically take the place of a C statement.
Depending on the particular statement, they can appear at the
global level or within a function. Embedded
- <acronym>SQL</acronym> statements follow the case-sensitivity rules
- of normal <acronym>SQL</acronym> code, and not those of C.
+ <acronym>SQL</acronym> statements follow the case-sensitivity rules of
+ normal <acronym>SQL</acronym> code, and not those of C. Also they allow nested
+ C-style comments that are part of the SQL standard. The C part of the
+ program, however, follows the C standard of not accepting nested comments.
</para>
<para>
diff --git a/src/interfaces/ecpg/preproc/pgc.l b/src/interfaces/ecpg/preproc/pgc.l
index 6deef59d53f..f04e34a53de 100644
--- a/src/interfaces/ecpg/preproc/pgc.l
+++ b/src/interfaces/ecpg/preproc/pgc.l
@@ -394,17 +394,20 @@ cppline {space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})(.*\\{space})*.
xcdepth++;
/* Put back any characters past slash-star; see above */
yyless(2);
- fputs("/*", yyout);
+ fputs("/_*", yyout);
}
<xcsql>{xcstop} {
- ECHO;
if (xcdepth <= 0)
{
+ ECHO;
BEGIN(state_before);
token_start = NULL;
}
else
+ {
xcdepth--;
+ fputs("*_/", yyout);
+ }
}
<xcc>{xcstop} {
ECHO;
@@ -861,6 +864,7 @@ cppline {space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})(.*\\{space})*.
}
}
}
+<C>{xcstop} { mmerror(PARSE_ERROR, ET_ERROR, "nested /* ... */ comments"); }
<C>":" { return(':'); }
<C>";" { return(';'); }
<C>"," { return(','); }