On 31 Jul 2014, at 19:11, Nikita Popov <nikita....@gmail.com> wrote:

> I've created a draft RFC and implementation for the introduction of an
> Abstract Syntax Tree (AST) as an intermediate structure in our compilation
> process:

Oh man, you got the implementation done? That makes me so happy. ^^

Like Sara, I am very, very much for this. There are so many potential benefits, 
and the only real downside IMO (memory use and performance at parsing-time) is 
largely negated by using opcache, a built-in feature of PHP. An AST is really 
the most obvious and best way to do compilation, IMO, and as it so happens, 
I’ve used them in the past when implementing a programming language I designed.

A benefit I particularly like is we could perhaps add nicer generator 
expression and list() syntaxes, as you have described. I can’t remember if you 
implemented the former. If you did, I’d love it if you’d also propose it should 
ASTs get in, they’re an awesome feature and it is a shame we didn’t get them 
when we got generators.

On another note, while we *could* allow extensions to hook into the AST, I’d 
stray away from letting them modify it and implement new features. That really 
doesn’t sound like a good idea at all (I could elaborate on why, but I won’t 
bother unless someone asks me). Letting them read it would clearly be a good 
thing though. Side note: Would that obsolete your PHP-Parser userland library 
once an extension allows reading the AST? If an extension is written, perhaps 
it should have the same API as your library had. I believe many projects 
already use it.

On an *implementation* note, I assume this is based on the existing constant 
ASTs, unless you renamed it to something other then zend_ast. Does this cause 
any problems for them? While I can see the benefits of course, I’d just like to 
be sure that the validator doesn’t let anything slip through.

It’s also nice to see zend_emit_op and _jump, I suspect they’ll make code 
easier to read (currently I have to scan for the other operands sometimes as 
they’re not always set together).

Again, I really like this. I look forward to its inclusion. Thank you so much!

--
Andrea Faulds
http://ajf.me/





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

Reply via email to