Il 14 marzo 2012 23:02, Józef Kucia <joseph.ku...@gmail.com> ha scritto: > @@ -679,11 +649,23 @@ void pp_writestring(const char *format, ...) > } > } > <pp_iqs,pp_dqs,pp_sqs>\\. add_string(ppy_text, ppy_leng); > -<pp_iqs,pp_dqs,pp_sqs>\n { > +<pp_iqs>\n { > newline(1); > add_string(ppy_text, ppy_leng); > ppy_warning("Newline in string constant encountered (started > line %d)", string_start()); > } > +<pp_dqs>\n { > + newline(-1); > + add_string(ppy_text, ppy_leng); > + ppy_warning("Newline in double quoted string constant > encountered (started line %d)", string_start()); > + if(end_double_quoted_string()) return tDQSTRING; > + } > +<pp_sqs>\n { > + newline(-1); > + add_string(ppy_text, ppy_leng); > + ppy_warning("Newline in single quoted string constant > encountered (started line %d)", string_start()); > + if(end_single_quoted_string()) return tSQSTRING; > + } > > /* > * Identifier scanning
I'm not sure this is legit. If I'm reading the C spec correctly, a character or string constant can be only terminated by ' or " respectively. Although it can't contain unescaped newline characters either, so it looks like we are actually in the realm of "undefined behavior". So, I guess this change will only have any effect on non-standard complying sources, and in the specific case of asm-style comments, it brings us the behavior we want. On the other hand, it also actually turns an error (unexpected end of file) into a warning, which may be troublesome in general. I hope it doesn't break anything else... (You can take this email as "okay for me, but someone else may know better")