Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:38899 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 91009 invoked from network); 10 Jul 2008 12:45:59 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 10 Jul 2008 12:45:59 -0000 Authentication-Results: pb1.pair.com header.from=php_lists@realplain.com; sender-id=unknown Authentication-Results: pb1.pair.com smtp.mail=php_lists@realplain.com; spf=permerror; sender-id=unknown Received-SPF: error (pb1.pair.com: domain realplain.com from 209.151.69.1 cause and error) X-PHP-List-Original-Sender: php_lists@realplain.com X-Host-Fingerprint: 209.151.69.1 liberty.vosn.net Linux 2.4/2.6 Received: from [209.151.69.1] ([209.151.69.1:55366] helo=liberty.vosn.net) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 6F/B3-24522-E7406784 for ; Thu, 10 Jul 2008 08:45:59 -0400 Received: from 75-121-93-175.dyn.centurytel.net ([75.121.93.175]:64460 helo=pc1) by liberty.vosn.net with smtp (Exim 4.69) (envelope-from ) id 1KGvWt-0006nT-7w; Thu, 10 Jul 2008 06:45:47 -0600 Message-ID: <013201c8e28a$e024a000$0201a8c0@pc1> To: Cc: "Dmitry Stogov" , "Nuno Lopes" References: <013a01c8aec5$b189d650$0201a8c0@pc1> Date: Thu, 10 Jul 2008 07:45:44 -0500 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2800.1914 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1914 X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - liberty.vosn.net X-AntiAbuse: Original Domain - lists.php.net X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - realplain.com Subject: Re: [PHP-DEV] [PATCH] Some string changes/optimizations From: php_lists@realplain.com ("Matt Wilmas") Hi all, I had been meaning to update this patch for a while (after conflicting updates to some files), and finally did. :-) See original message for more details... There's been one change for strings -- before, I was moving the first ADD_* op into INIT_STRING, but wasn't too satisfied with that. So I eliminated the INIT_STRING opcode after realizing that simply setting the string to NULL makes it create a new string in add_string_to_string (the first ADD_* has op1 set to IS_UNUSED; otherwise it's still IS_TMP_VAR, though it's not "used" after my changes). Is this OK? The other prior changes seem fine to me: syntax highlighting consistency, combining the duplicate heredoc/nowdoc stuff and removing the NOWDOC tokens, allowing static heredocs to be used in static contexts, etc.? http://realplain.com/php/string_optimizations.diff http://realplain.com/php/string_optimizations_5_3.diff Remember to regenerate the scanner/parser with re2c/bison and run zend_vm_gen.php! I also included possible NEWS updates in the 5.3 patch this time. :-P Thanks for any feedback, Matt ----- Original Message ----- From: "Matt Wilmas" Sent: Monday, May 05, 2008 > Hi all, > > This patch... Saves one opcode per interpolated string [snip, old info] > > Next, after nowdoc support was added, I noticed it was mostly duplicate > heredoc code in the scanner, so I combined them for the most part, removing > the NOWDOC tokens, etc. Is that OK? It seems like they may have just been > there for the parser... but I updated the parser so that static heredocs > also work like nowdocs. Also removed the ST_START_[HEREDOC|NOWDOC] states > in the scanner, by doing their work (to catch immediate ending label) in the > initial heredoc rule. > > While removing the NOWDOC references from zend_highlight.c, I made a little > change that I think improves (err... adds) highlighting of variables in > double-quoted strings, and makes literal text in heredocs/backticks the > correct "highlight_string" color. This makes coloring consistent across all > strings. :-) Before/after example: http://realplain.com/php/highlight.html > > Speaking of backticks, while updating their parser grammar, they now behave > more precisely like shell_exec(), in that `cmd` (constant string) or `$cmd` > (one variable) won't use INIT_STRING and create a temporary variable... > > Oh, almost forgot a couple things -- for HEAD: [snip] moved > HANDLE_NEWLINES() so nowdoc text is copied first, otherwise the line number > would be off if there's an error in zend_copy_scanner_string. [snip] > > http://realplain.com/php/string_optimizations.diff > http://realplain.com/php/string_optimizations_5_3.diff > > > Thanks, > Matt > > P.S. (for Marcus?), the ({LABEL}|([']{LABEL}['])|(["]{LABEL}["])) part of > the heredoc rule crashed re2c (Windows) until I added the extra ( ), which > shouldn't be needed AFAIK and was fine with just 2 alternate matches... >