cvs: ZendEngine2 / zend_compile.c zend_compile.h zend_globals.h zend_highlight.c zend_language_parser.y zend_language_scanner.l

From: Date: Wed, 19 Mar 2003 21:17:47 +0000
Subject: cvs: ZendEngine2 / zend_compile.c zend_compile.h zend_globals.h zend_highlight.c zend_language_parser.y zend_language_scanner.l
Groups: php.zend-engine.cvs 
Request: Send a blank email to php-zend-engine-cvs+get-1052@lists.php.net to get a copy of this message
andrei Wed Mar 19 16:17:47 2003 EDT Modified files: /ZendEngine2 zend_compile.c zend_compile.h zend_globals.h zend_highlight.c zend_language_parser.y zend_language_scanner.l Log: - 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; }

« previous php.zend-engine.cvs (#1052) next »