mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-12-27 08:39:28 +08:00
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.
This commit is contained in:
parent
ef8b3b00b5
commit
05b476c298
@ -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(','); }
|
||||
|
Loading…
Reference in New Issue
Block a user