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]

Reply via email to