(<SC_CHARACTER>): Don't worry about any backslash

escapes other than \\ and \'; this simplifies the code.
(<SC_STRING>): Likewise, for \\ and \".
(<SC_COMMENT,SC_LINE_COMMENT,SC_STRING,SC_CHARACTER,SC_BRACED_CODE,
SC_PROLOGUE,SC_EPILOGUE>): Escape $ and @, too.
Use new escapes @{ and @} for [ and ].
This commit is contained in:
Paul Eggert
2002-11-12 07:27:04 +00:00
parent 6c239755dc
commit ac060e78a3

View File

@@ -469,10 +469,9 @@ splice (\\[ \f\t\v]*\n)*
<SC_CHARACTER> <SC_CHARACTER>
{ {
"'" YY_OBS_GROW; BEGIN c_context; "'" YY_OBS_GROW; BEGIN c_context;
\\{splice}[^\[\]] YY_OBS_GROW; \\{splice}[\'\\] YY_OBS_GROW;
{splice} YY_OBS_GROW; <<EOF>> unexpected_end_of_file (yylloc, "'");
<<EOF>> unexpected_end_of_file (yylloc, "'");
} }
@@ -483,10 +482,9 @@ splice (\\[ \f\t\v]*\n)*
<SC_STRING> <SC_STRING>
{ {
"\"" YY_OBS_GROW; BEGIN c_context; "\"" YY_OBS_GROW; BEGIN c_context;
\\{splice}[^\[\]] YY_OBS_GROW; \\{splice}[\"\\] YY_OBS_GROW;
{splice} YY_OBS_GROW; <<EOF>> unexpected_end_of_file (yylloc, "\"");
<<EOF>> unexpected_end_of_file (yylloc, "\"");
} }
@@ -578,8 +576,10 @@ splice (\\[ \f\t\v]*\n)*
<SC_COMMENT,SC_LINE_COMMENT,SC_STRING,SC_CHARACTER,SC_BRACED_CODE,SC_PROLOGUE,SC_EPILOGUE> <SC_COMMENT,SC_LINE_COMMENT,SC_STRING,SC_CHARACTER,SC_BRACED_CODE,SC_PROLOGUE,SC_EPILOGUE>
{ {
\[ obstack_sgrow (&string_obstack, "@<:@"); \$ obstack_sgrow (&string_obstack, "$][");
\] obstack_sgrow (&string_obstack, "@:>@"); \@ obstack_sgrow (&string_obstack, "@@");
\[ obstack_sgrow (&string_obstack, "@{");
\] obstack_sgrow (&string_obstack, "@}");
.|\n YY_OBS_GROW; .|\n YY_OBS_GROW;
} }