Re: Patch: Nested comments

From: Date: Tue, 27 Nov 2001 17:21:49 +0000
Subject: Re: Patch: Nested comments
References: 1  Groups: php.dev 
Request: Send a blank email to php-dev+get-71826@lists.php.net to get a copy of this message
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 -- aj@php.net 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: php-dev-unsubscribe@lists.php.net For additional commands, e-mail: php-dev-help@lists.php.net To contact the list administrators, e-mail: php-list-admin@lists.php.net


« previous php.dev (#71826) next »