Re: [RFC][Discussion] Parser extension API

From: Date: Wed, 18 Feb 2015 19:06:04 +0000
Subject: Re: [RFC][Discussion] Parser extension API
References: 1 2 3 4  Groups: php.internals 
Request: Send a blank email to internals+get-83105@lists.php.net to get a copy of this message
On Wed, Feb 18, 2015 at 4:22 PM, Alexander Lisachenko < lisachenko.it@gmail.com> wrote: > > 2015-02-18 17:59 GMT+03:00 Nikita Popov <nikita.ppv@gmail.com>: > >> Alexander, I would recommend you to split this into two RFCs, one dealing >> only with AST export (and maybe pretty printing) and the second one with >> the compilation hooks. There's probably a few questions about the export >> API that should be discussed that will be forgotten if everyone focuses on >> the more complicated, and probably not yet relevant, question of >> compilation hooks. > > > > Hello, Nikita! Thanks for you thoughts! > > Sounds reasonable for me, because of short timeframe for PHP7. Let's go > with the first part of RFC, because second part is really cumbersome and > can be applied later, eg. in 7.1 I will split this RFC into two parts and > mark first part for 7.0. > Great! About first part, do you agree with proposed classes and namespace > Php\Parser? > Yeah, I'm okay with that namespace. I prefer php\ast as being more distinctive from existing projects, but that's not really important. > I want to propose to use classes for parser API instead of pure functions > because it can give more usable OO-API for future needs. > I'm okay with having stuff like ->getKindName() on the nodes, however I'd still keep around the free-standing functions, because they can be used without a node (i.e. you only need the kind AST_FOO and not an instantiated node). I also don't see why we need ParserEngine::parse() instead of just a (namespaced) parse() function. Not a fan of unnecessary wrapper classes. > There is one more notice regarding to the zval nodes, they should be also > exported as objects, not as values. I think we should export coherent nodes > for everything. > What's the advantage of this? Most leaf nodes will be zval nodes and I feel it would be rather inconvenient if they'd all have extra wrappers. Is there some specific problem with including the values directly? Nikita

« previous php.internals (#83105) next »