Edit report at http://bugs.php.net/bug.php?id=51674&edit=1
ID: 51674 Updated by: [email protected] Reported by: cogo at starzinger dot net Summary: Valid phpdoc comments are treated as T_COMMENT (and not T_DOC_COMMENT) Status: Open Type: Feature/Change Request Package: Scripting Engine problem PHP Version: 5.3SVN-2010-04-27 (SVN) New Comment: Complexifying the lexer just to have strange syntax introduced by phpdoc detected as such makes little sense. What if project FOO wants /**%%FOO%% */ to be detected as T_DOC_COMMENT as well? Previous Comments: ------------------------------------------------------------------------ [2010-04-27 14:37:51] cogo at starzinger dot net That would also work, but then you would allow /*** */ to be treated as T_DOC_COMMENT, which was why the whitespace requirement was added in the first place (according to the changelog). You would also get T_DOC_COMMENT when using /*...@- */ which is not valid according to the phpdoc manual. ------------------------------------------------------------------------ [2010-04-27 14:24:17] [email protected] It looks wrong to add cases for that in the lexer, I believe we should rather simplify it by lifting the whitespace requirement after /** ------------------------------------------------------------------------ [2010-04-27 14:12:02] cogo at starzinger dot net Description: ------------ phpdoc templates are labeled as T_COMMENT tokens, and not T_DOC_COMMENT. The reason for this is that the language scanner requires a whitespace char following /** for phpdoc comments. phpdoc templates use the following syntax: Start a template: /*...@+ * */ End a template: /*...@-*/ These do not have a whitespace following /** so it is treated as a regular multiline comment. Docs about phpdoc templates is available at http://manual.phpdoc.org/HTMLSmartyConverter/HandS/phpDocumentor/tutorial_phpDocumentor.howto.pkg.html#basics.docblocktemplate My patch includes a change in the language scanner to include these types of comments and a changed test in the tokenizer extension that tests for these comments as well. The patch is made against the 5.3 branch. This is the same issue that is mentioned in bug #26948 but the problem is not in the tokenizer extension, but the language scanner. Test script: --------------- <?php $source = '<?php /*...@+ * Start a template */ /*...@-*/ /*...@- */'; foreach (token_get_all($source) as $token) { print(token_name($token[0]) . PHP_EOL); } Expected result: ---------------- T_OPEN_TAG T_DOC_COMMENT T_WHITESPACE T_DOC_COMMENT T_WHITESPACE T_COMMENT Actual result: -------------- T_OPEN_TAG T_COMMENT T_WHITESPACE T_COMMENT T_WHITESPACE T_COMMENT ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/bug.php?id=51674&edit=1
