Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:98412 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 53413 invoked from network); 6 Mar 2017 21:40:49 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 6 Mar 2017 21:40:49 -0000 Authentication-Results: pb1.pair.com header.from=php@golemon.com; sender-id=softfail Authentication-Results: pb1.pair.com smtp.mail=php@golemon.com; spf=softfail; sender-id=softfail Received-SPF: softfail (pb1.pair.com: domain golemon.com does not designate 74.125.82.44 as permitted sender) X-PHP-List-Original-Sender: php@golemon.com X-Host-Fingerprint: 74.125.82.44 mail-wm0-f44.google.com Received: from [74.125.82.44] ([74.125.82.44:34326] helo=mail-wm0-f44.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id D6/61-40378-067DDB85 for ; Mon, 06 Mar 2017 16:40:48 -0500 Received: by mail-wm0-f44.google.com with SMTP id 196so20937112wmm.1 for ; Mon, 06 Mar 2017 13:40:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=golemon-com.20150623.gappssmtp.com; s=20150623; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=vhcTsCNa/8Qz2ix/5Tl2oDKtI518AKqTRrV+pDkrUBU=; b=MhL/A4AeYxRC1G882rYq2e0p/JuNDypLP7e+BZXZFxX/0yscDsP8vtVNqR7/QVnQOn QSzFthFfRzXjnUa4em3EsHDoLN9iKcXNEJZmk08uw9zdVryBYZWIZg9BrwdrQOZTrym7 IA5auTRaTK5nTqr3Wy/SfzTPoINO3k9BdasZZ8aoHn+hZYYdrUPCNB5BooxD+EAS3ZaJ q2JI2Rge6e09NO9mthcexQM5g6ugWI8CM9+fHZtv84+SuRlOmotYKAsG4MIqmmdQBQkq SY/UD9lUO4K1rjc6ZPSD+CrqRWvvB3MBVbD+Bd9/DcsWWh1YWNSdrOa5QWJcaib0+pPg 64Ag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=vhcTsCNa/8Qz2ix/5Tl2oDKtI518AKqTRrV+pDkrUBU=; b=bUopQh9EdD1uiXCrfM9rc0lnrbnYGJSxnsYf3HG3AymdIB1OhKs72Zt6q/DqZW6zeB Y27rxV8Dv6MZrD/E0ZRWdUHAUP6+LW0bINuvm1++L1ArR6Ib0XKO2uSwT9iR7XDCRxeI PUpK/0tDEMu7wk7PLKSPGlGvUr3qv+A1K0uzH/i1WaaNMtwaq1Svwkpctu4JSvjAvtnG HWBCx/aFld/lpuSZCm3pBiXBmrUjkghNeXiTa7H5f8Dc0/HzebS6zqmu1br9f0+pLpyt +ZfWjm7WmBmq1gmbSALDMIHLN88f/HmYoX8GexhZUm8gm7dxRmyOA6ndPtoWUZGv7DZf ZJSg== X-Gm-Message-State: AMke39lKvmyU/2NtPTbr/rdLvIYL/3xAzMDrwkT0ajMj/0ClGKdodqTMtsVH9g4fNI7YJfw7iDOtfZPHdM0ykw== X-Received: by 10.28.224.11 with SMTP id x11mr15683770wmg.98.1488836445605; Mon, 06 Mar 2017 13:40:45 -0800 (PST) MIME-Version: 1.0 Sender: php@golemon.com Received: by 10.223.152.213 with HTTP; Mon, 6 Mar 2017 13:40:45 -0800 (PST) X-Originating-IP: [73.9.224.155] In-Reply-To: References: Date: Mon, 6 Mar 2017 15:40:45 -0600 X-Google-Sender-Auth: gU6iSSNPYEnwQIquxhHZwY688-I Message-ID: To: Adam Baratz Cc: "internals@lists.php.net" Content-Type: text/plain; charset=UTF-8 Subject: Re: [PHP-DEV] generating code from AST From: pollita@php.net (Sara Golemon) On Mon, Mar 6, 2017 at 3:37 PM, Adam Baratz wrote: > I'm exploring how to automate some basic kinds of refactor operations. One > approach I'm considering: > > - Generate an AST > - Rearrange it as needed > - Turn it back into userland code > > Is this something anyone's explored? > The engine's internals actually have an ast export method which does this alread (it's used by the assert message generator). astkit makes use of this in an extension to do much of what you describe: https://github.com/sgolemon/astkit -Sara