At 10:41 AM 4/2/2003 -0500, Andrei Zmievski wrote:
On Wed, 02 Apr 2003, Andi Gutmans wrote:
> Oh, I didn't think of that. You are completely right. This is definitely a
> problem. Andrei's patch returns a token for /** */ on the parser level so
> only places which are allowed to have this work.
> This sounds like a serious flaw because any place which has such comments
> will fail. I guess we'll need to revert his patch and try to think of a
> completely different way of doing it (unless someone has a good idea of how
> to solve this problem).


No, it won't fail. Look:

statement:
unticked_statement { zend_do_ticks(TSRMLS_C); }
| doc_comment { zend_do_free(&$1 TSRMLS_CC); } unticked_statement { zend_do_ticks(TSRMLS_C); }
;


This allows doc comments before any non-declarative statement. The only
remaining problem is having doc comments before class vars and
constants.

If you think it's better to go with the approach that Alan outlined, I
can live with that too, but it seems easier to handle this in the parser
rather than in zend_do_* functions and also having to reset the doc
comment for each statement.

How about: if ($a /** $a is great variable */ || $b) {

}

I'm sure I can find other more realistic examples which would break. I don't know why I didn't think of it before but I think having this in the parser is impossible. We need to find a smarter way of doing it.

Andi



-Andrei http://www.gravitonic.com/

The Feynman problem solving algorithm:

1) Write down the problem.
2) Think real hard.
3) Write down the answer.


--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Reply via email to