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:35:30 +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-1053@lists.php.net to get a copy of this message | ||
Argh. I thought we were still debating if this should be in the engine or not?
I'd first like to understand all of the things you are planning to add because I don't want to bloat the engine and mess up the code too much. The question is if this is the last or the first patch in this round.
Let's talk first,
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