diff options
| author | Andrei Zmievski <andrei@php.net> | 2003-03-19 21:17:47 +0000 |
|---|---|---|
| committer | Andrei Zmievski <andrei@php.net> | 2003-03-19 21:17:47 +0000 |
| commit | 39d5a638030a210c35db20502fe45681c1ca9496 (patch) | |
| tree | 4ebf5306322db795143f00c58093ab039f3393b6 /Zend/zend_language_scanner.l | |
| parent | 3a297fac22d47114e877f1c37305ee1d9e0396be (diff) | |
| download | php-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.l | 28 |
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; } |
