Although my vote doesn't count much here :-) I'm for it...
... but it would be a problem for 4.x I guess because this
horribly breaks BC when/if there's a new 4.x release and
people start using it.
But it would be nice to have it in ZE2.
my 2c - Markus
On Tue, Nov 27, 2001 at 11:48:51AM +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]
--
Please always Cc to me when replying to me on the lists.
--
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]