PHP != C
--Jani On Tue, 27 Nov 2001, Adam Wright wrote: >But in C, you can #if 0 whole blocks out regardless. I'm in favour of a >change like this (if not this specific one) in 4.2. > >adamw > >----- Original Message ----- >From: "Andi Gutmans" <[EMAIL PROTECTED]> >To: "Anders Johannsen" <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]> >Sent: Tuesday, November 27, 2001 5:21 PM >Subject: Re: [PHP-DEV] Patch: Nested comments > > >> I don't think this should be changed and we should stick to the way it is >> in C. (It is also not BC and even if I thought it's a good idea, which I >> don't, I don't think it's worth it). >> >> Andi >> >> At 11:48 AM 11/27/2001 +0100, Anders Johannsen wrote: >> >This patch allows for nested 'C-style' comments, which can be useful >> >especially while debugging. >> > >> > <?php >> > /* comments >> > /* now /* nest */ */ >> > >> > /*/*/*/* >> > */*/*/*/ >> > */ >> > ?> >> > >> >Since comments are handled purely lexical, there should be virtually no >> >performance hit. >> > >> >The following two examples show how errors are handled: >> > >> >1) >> > <?php >> > /* >> > */ >> > */ >> > ?> >> > >> >2) >> > <?php >> > /* >> > /* >> > */ >> > ?> >> > >> >Ad 1) This will yield a zend_error(E_COMPILE_ERROR,"Invalid nesting of >> >comments") on the >> >last line. Unpatched, a parse error is the most likely result. >> > >> >Ad 2) A zend_error(E_COMPILE_WARNING, "unterminated comment starting line >> >%d", CG(comment_start_line)) is raised. >> > >> >The attached patch is against latest CVS >> > >> >Best regards, >> >Anders Johannsen >> >-- >> >[EMAIL PROTECTED] >> > >> >Index: zend_globals.h >> >=================================================================== >> >RCS file: /repository/Zend/zend_globals.h,v >> >retrieving revision 1.80 >> >diff -u -r1.80 zend_globals.h >> >--- zend_globals.h 2001/10/23 01:19:16 1.80 >> >+++ zend_globals.h 2001/11/27 10:08:06 >> >@@ -82,6 +82,7 @@ >> > int comment_start_line; >> > char *heredoc; >> > int heredoc_len; >> >+ unsigned int comment_nest_level; >> > >> > zend_op_array *active_op_array; >> > >> >Index: zend_language_scanner.l >> >=================================================================== >> >RCS file: /repository/Zend/zend_language_scanner.l,v >> >retrieving revision 1.40 >> >diff -u -r1.40 zend_language_scanner.l >> >--- zend_language_scanner.l 2001/09/22 00:06:27 1.40 >> >+++ zend_language_scanner.l 2001/11/27 10:08:07 >> >@@ -1,5 +1,4 @@ >> > %{ >> >- >> > /* >> > >> >+----------------------------------------------------------------------+ >> > | Zend >> >Engine | >> >@@ -125,6 +124,7 @@ >> > { >> > CG(heredoc) = NULL; >> > CG(heredoc_len)=0; >> >+ CG(comment_nest_level)=0; >> > } >> > >> > >> >@@ -1057,24 +1057,39 @@ >> > } >> > } >> > >> >+<ST_IN_SCRIPTING>"*/" { >> >+ zend_error(E_COMPILE_ERROR,"Invalid nesting of comments"); >> >+} >> >+ >> > <ST_IN_SCRIPTING>"/*" { >> > CG(comment_start_line) = CG(zend_lineno); >> > BEGIN(ST_COMMENT); >> >+ CG(comment_nest_level) = 1; >> > yymore(); >> > } >> > >> >- >> >-<ST_COMMENT>[^*]+ { >> >+<ST_COMMENT>[^/*]+ { >> > yymore(); >> > } >> > >> >+<ST_COMMENT>"/*" { >> >+ CG(comment_nest_level)++; >> >+ yymore(); >> >+} >> >+ >> > <ST_COMMENT>"*/" { >> >- HANDLE_NEWLINES(yytext, yyleng); >> >- BEGIN(ST_IN_SCRIPTING); >> >- return T_COMMENT; >> >+ CG(comment_nest_level)--; >> >+ >> >+ if (CG(comment_nest_level) == 0) { >> >+ HANDLE_NEWLINES(yytext, yyleng); >> >+ BEGIN(ST_IN_SCRIPTING); >> >+ return T_COMMENT; >> >+ } else { >> >+ yymore(); >> >+ } >> > } >> > >> >-<ST_COMMENT>"*" { >> >+<ST_COMMENT>"*"|"/" { >> > yymore(); >> > } >> > >> > >> > >> > >> > >> >-- >> >PHP Development Mailing List <http://www.php.net/> >> >To unsubscribe, e-mail: [EMAIL PROTECTED] >> >For additional commands, e-mail: [EMAIL PROTECTED] >> >To contact the list administrators, e-mail: [EMAIL PROTECTED] >> >> >> -- >> PHP Development Mailing List <http://www.php.net/> >> To unsubscribe, e-mail: [EMAIL PROTECTED] >> For additional commands, e-mail: [EMAIL PROTECTED] >> To contact the list administrators, e-mail: [EMAIL PROTECTED] >> >> > > > -- PHP Development Mailing List <http://www.php.net/> To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]