summaryrefslogtreecommitdiff
path: root/Zend/zend_language_scanner.l
diff options
context:
space:
mode:
authorAndrei Zmievski <andrei@php.net>2003-03-19 21:17:47 +0000
committerAndrei Zmievski <andrei@php.net>2003-03-19 21:17:47 +0000
commit39d5a638030a210c35db20502fe45681c1ca9496 (patch)
tree4ebf5306322db795143f00c58093ab039f3393b6 /Zend/zend_language_scanner.l
parent3a297fac22d47114e877f1c37305ee1d9e0396be (diff)
downloadphp-git-39d5a638030a210c35db20502fe45681c1ca9496.tar.gz
- Keep track of starting/ending line numbers for user functions.
- Store last parsed doc comment in a compiler global for future use.
Diffstat (limited to 'Zend/zend_language_scanner.l')
-rw-r--r--Zend/zend_language_scanner.l28
1 files changed, 25 insertions, 3 deletions
diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l
index 7d966fb996..e84874c004 100644
--- a/Zend/zend_language_scanner.l
+++ b/Zend/zend_language_scanner.l
@@ -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 @@ void shutdown_scanner(TSRMLS_D)
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 @@ NAMESPACE_NAME ({LABEL}":")+{LABEL}
}
}
+<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 @@ NAMESPACE_NAME ({LABEL}":")+{LABEL}
}
-<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 @@ NAMESPACE_NAME ({LABEL}":")+{LABEL}
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;
}