cvs: ZendEngine2 / zend_compile.c zend_compile.h zend_globals.h zend_highlight.c zend_language_parser.y zend_language_scanner.l
| From: | Andrei Zmievski | 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;
}