Re: [RFC] Introduce Abstract Syntax Tree

From: Date: Sat, 02 Aug 2014 21:27:31 +0000
Subject: Re: [RFC] Introduce Abstract Syntax Tree
References: 1 2 3  Groups: php.internals 
Request: Send a blank email to internals+get-76313@lists.php.net to get a copy of this message
Hi! On 2 Aug 2014, at 21:44, Nikita Popov <nikita.ppv@gmail.com> wrote: > Why do you think this isn't a good idea? I think it would be a nice way to prototype > language features before pulling them into PHP. Though admittedly I don't think there are many > things that could be implemented that way. If people can extend the syntax, they will, and I don’t like the possible consequences of that. I’m all for overloading, but if people start relying on custom syntactical features, it means non-portable and confusing to read code. Granted, it might be useful for prototyping, but prototyping itself would be easier with an AST, so I’m not sure it matters. > A native extension has the limitation that it will not be able to parse files for newer PHP > versions (which, depending on the use case may or may not be a problem) and probably won't > provide a stable structure across versions. At least I think giving BC guarantees on the AST > structure between minor versions would be way too limiting for us. As such I think both a native ext > (which provides awesome perf) and PHP-Parser (which provides x-compat) have their place ;) Yeah, I was thinking that you could keep it around for version compatibility. You could even make your library pass through to the native ext where possible. :) > Yes, the AST structure is based on the existing work on constant scalar expressions, though by > now the structure and API deviate a good bit from that. It doesn't cause problems for them - > constant expressions go through a validation that checks that only valid nodes are used and adjusts > those nodes that have special representation for the constexpr case (e.g. constant and class > constant access) Ah, I see. -- Andrea Faulds http://ajf.me/

« previous php.internals (#76313) next »