Re: [ZEND-ENGINE-CVS] cvs: ZendEngine2 / zend_compile.c zend_compile.h zend_globals.h zend_highlight.c zend_language_parser.y
zend_language_scanner.l
| From: | Andi Gutmans | Date: | Wed, 19 Mar 2003 21:40:26 +0000 |
| Subject: | Re: [ZEND-ENGINE-CVS] cvs: ZendEngine2 / zend_compile.c zend_compile.h zend_globals.h zend_highlight.c zend_language_parser.y zend_language_scanner.l |
||
| References: | 1 | Groups: | php.zend-engine.cvs |
| Request: | Send a blank email to php-zend-engine-cvs+get-1054@lists.php.net to get a copy of this message | ||
Looking at your code again, I understand from your patch that this is the first and last patch in the series. You save the whole comment as-is and extensions will parse it for individual variable names and other information. Am I correct? If so I think this is fine as long as we won't have to do more work on the engine level.
Andi
At 09:17 PM 3/19/2003 +0000, Andrei Zmievski wrote:
andrei Wed Mar 19 16:17:47 2003 EDTModified files:/ZendEngine2 zend_compile.c zend_compile.h zend_globals.h zend_highlight.c zend_language_parser.y zend_language_scanner.lLog: - Keep track of starting/ending line numbers for user functions. - Store last parsed doc comment in a compiler global for future use. Index: ZendEngine2/zend_compile.c diff -u ZendEngine2/zend_compile.c:1.396 ZendEngine2/zend_compile.c:1.397--- ZendEngine2/zend_compile.c:1.396 Tue Mar 18 11:30:23 2003+++ ZendEngine2/zend_compile.c Wed Mar 19 16:17:47 2003 @@ -17,7 +17,7 @@+----------------------------------------------------------------------+*/ -/* $Id: zend_compile.c,v 1.396 2003/03/18 16:30:23 zeev Exp $ */ +/* $Id: zend_compile.c,v 1.397 2003/03/19 21:17:47 andrei Exp $ */ #include "zend_language_parser.h" #include "zend.h" @@ -976,6 +976,8 @@op_array.scope = CG(active_class_entry); op_array.ns = CG(active_namespace);+ op_array.line_start = CG(zend_lineno);+if (is_method) { char *short_class_name = CG(active_class_entry)->name; int short_class_name_length = CG(active_class_entry)->name_length;@@ -1073,6 +1075,7 @@zend_do_extended_info(TSRMLS_C); zend_do_return(NULL, 0 TSRMLS_CC); pass_two(CG(active_op_array) TSRMLS_CC); + CG(active_op_array)->line_end = CG(zend_lineno); CG(active_op_array) = function_token->u.op_array;/* Pop the switch and foreach seperators */@@ -3210,6 +3213,7 @@retval = lex_scan(&zendlval->u.constant TSRMLS_CC); switch (retval) { case T_COMMENT: + case T_DOC_COMMENT: case T_OPEN_TAG: case T_WHITESPACE: retval = zendlex(zendlval TSRMLS_CC);Index: ZendEngine2/zend_compile.h diff -u ZendEngine2/zend_compile.h:1.224 ZendEngine2/zend_compile.h:1.225--- ZendEngine2/zend_compile.h:1.224 Sun Mar 9 17:17:15 2003+++ ZendEngine2/zend_compile.h Wed Mar 19 16:17:47 2003 @@ -17,7 +17,7 @@+----------------------------------------------------------------------+*/ -/* $Id: zend_compile.h,v 1.224 2003/03/09 22:17:15 zeev Exp $ */ +/* $Id: zend_compile.h,v 1.225 2003/03/19 21:17:47 andrei Exp $ */ #ifndef ZEND_COMPILE_H #define ZEND_COMPILE_H @@ -146,6 +146,8 @@zend_bool uses_this;char *filename; + int line_start; + int line_end;void *reserved[ZEND_MAX_RESERVED_RESOURCES];}; Index: ZendEngine2/zend_globals.h diff -u ZendEngine2/zend_globals.h:1.120 ZendEngine2/zend_globals.h:1.121--- ZendEngine2/zend_globals.h:1.120 Wed Mar 5 06:14:43 2003+++ ZendEngine2/zend_globals.h Wed Mar 19 16:17:47 2003 @@ -17,7 +17,7 @@+----------------------------------------------------------------------+*/ -/* $Id: zend_globals.h,v 1.120 2003/03/05 11:14:43 zeev Exp $ */ +/* $Id: zend_globals.h,v 1.121 2003/03/19 21:17:47 andrei Exp $ */ #ifndef ZEND_GLOBALS_H #define ZEND_GLOBALS_H @@ -85,6 +85,8 @@int comment_start_line; char *heredoc; int heredoc_len; + char *doc_comment; + int doc_comment_len;zend_op_array *active_op_array;Index: ZendEngine2/zend_highlight.c diff -u ZendEngine2/zend_highlight.c:1.35 ZendEngine2/zend_highlight.c:1.36 --- ZendEngine2/zend_highlight.c:1.35 Thu Mar 6 10:38:28 2003+++ ZendEngine2/zend_highlight.c Wed Mar 19 16:17:47 2003@@ -17,7 +17,7 @@+----------------------------------------------------------------------+*/ -/* $Id: zend_highlight.c,v 1.35 2003/03/06 15:38:28 iliaa Exp $ */ +/* $Id: zend_highlight.c,v 1.36 2003/03/19 21:17:47 andrei Exp $ */ #include "zend.h" #include "zend_language_parser.h" @@ -97,6 +97,7 @@next_color = syntax_highlighter_ini->highlight_html; break; case T_COMMENT: + case T_DOC_COMMENT: next_color = syntax_highlighter_ini->highlight_comment; break; case T_OPEN_TAG:Index: ZendEngine2/zend_language_parser.y diff -u ZendEngine2/zend_language_parser.y:1.103 ZendEngine2/zend_language_parser.y:1.104--- ZendEngine2/zend_language_parser.y:1.103 Sun Mar 9 17:23:27 2003+++ ZendEngine2/zend_language_parser.y Wed Mar 19 16:17:47 2003 @@ -18,7 +18,7 @@+----------------------------------------------------------------------+*/ -/* $Id: zend_language_parser.y,v 1.103 2003/03/09 22:23:27 zeev Exp $ */ +/* $Id: zend_language_parser.y,v 1.104 2003/03/19 21:17:47 andrei Exp $ */ /* * LALR shift/reduce conflicts and how they are resolved: @@ -130,7 +130,7 @@ %token T_LINE %token T_FILE %token T_COMMENT -%token T_ML_COMMENT +%token T_DOC_COMMENT %token T_OPEN_TAG %token T_OPEN_TAG_WITH_ECHO %token T_CLOSE_TAG Index: ZendEngine2/zend_language_scanner.l diff -u ZendEngine2/zend_language_scanner.l:1.80 ZendEngine2/zend_language_scanner.l:1.81--- ZendEngine2/zend_language_scanner.l:1.80 Sun Mar 9 16:12:12 2003+++ ZendEngine2/zend_language_scanner.l Wed Mar 19 16:17:47 2003 @@ -19,7 +19,7 @@+----------------------------------------------------------------------+*/ -/* $Id: zend_language_scanner.l,v 1.80 2003/03/09 21:12:12 andi Exp $ */ +/* $Id: zend_language_scanner.l,v 1.81 2003/03/19 21:17:47 andrei Exp $ */ #define yyleng SCNG(yy_leng) #define yytext SCNG(yy_text) @@ -41,6 +41,7 @@ %x ST_LOOKING_FOR_PROPERTY %x ST_LOOKING_FOR_VARNAME %x ST_COMMENT +%x ST_DOC_COMMENT %x ST_ONE_LINE_COMMENT %option stack @@ -134,6 +135,10 @@efree(CG(heredoc)); CG(heredoc_len)=0; } + if (CG(doc_comment)) { + efree(CG(doc_comment)); + CG(doc_comment_len) = 0; + }} END_EXTERN_C() @@ -1169,6 +1174,12 @@}} +<ST_IN_SCRIPTING>"/** "{NEWLINE} {+ CG(comment_start_line) = CG(zend_lineno); + BEGIN(ST_DOC_COMMENT); + yymore();+} + <ST_IN_SCRIPTING>"/*" {CG(comment_start_line) = CG(zend_lineno); BEGIN(ST_COMMENT);@@ -1176,17 +1187,28 @@ } -<ST_COMMENT>[^*]+ { +<ST_COMMENT,ST_DOC_COMMENT>[^*]+ {yymore();} +<ST_DOC_COMMENT>"*/" {+ if (CG(doc_comment)) { + efree(CG(doc_comment)); + } + CG(doc_comment) = estrndup(yytext, yyleng); + CG(doc_comment_len) = yyleng; + HANDLE_NEWLINES(yytext, yyleng); + BEGIN(ST_IN_SCRIPTING); + return T_DOC_COMMENT;+} + <ST_COMMENT>"*/" {HANDLE_NEWLINES(yytext, yyleng); BEGIN(ST_IN_SCRIPTING); return T_COMMENT;} -<ST_COMMENT>"*" { +<ST_COMMENT,ST_DOC_COMMENT>"*" {yymore();} @@ -1552,7 +1574,7 @@return 0;} -<ST_COMMENT><<EOF>> { +<ST_COMMENT,ST_DOC_COMMENT><<EOF>> {zend_error(E_COMPILE_WARNING,"Unterminated comment starting line %d", CG(comment_start_line)); return 0;} -- Zend Engine CVS Mailing List (http://cvs.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php