Commit 05b476c2 authored by Michael Meskes's avatar Michael Meskes

More improvement to comment parsing in ecpg.

ECPG is not supposed to allow and output nested comments in C. These comments
are only allowed in the SQL parts and must not be written into the C file.
Also the different handling of different comments is documented.
parent ef8b3b00
......@@ -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>
......
......@@ -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(','); }
......
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