perl.cvs.parrot
[Top] [All Lists]

[svn:parrot] r29303 - in trunk/languages/pipp: src/pct t/php

Subject: [svn:parrot] r29303 - in trunk/languages/pipp: src/pct t/php
From:
Date: Fri, 11 Jul 2008 12:08:05 -0700 PDT
Newsgroups: perl.cvs.parrot

Author: bernhard
Date: Fri Jul 11 12:08:05 2008
New Revision: 29303

Modified:
   trunk/languages/pipp/src/pct/quote_expression.pir
   trunk/languages/pipp/t/php/strings.t

Log:
[Pipp PCT] Avoid infinite loop for curly string interpolation,
but break some tests.


Modified: trunk/languages/pipp/src/pct/quote_expression.pir
==============================================================================
--- trunk/languages/pipp/src/pct/quote_expression.pir   (original)
+++ trunk/languages/pipp/src/pct/quote_expression.pir   Fri Jul 11 12:08:05 2008
@@ -291,10 +291,13 @@
 
     .local string literal
     literal = ''
-
   scan_loop:
     if pos > lastpos goto fail
     $S0 = substr target, pos, stoplen
+    #_dumper( target, pos, $S0 )
+    #_dumper( pos )
+    #_dumper( $S0 )
+    #_dumper( stop )
     if $S0 == stop goto succeed
     goto scan_loop_1
     $I0 = is_cclass .CCLASS_WHITESPACE, target, pos
@@ -306,7 +309,9 @@
     .local string litchar
     litchar = substr target, pos, 1
     ##  if we've reached an escape char, we're done
+    if litchar == '{' goto add_litchar
     $I0 = index escapes, litchar
+    #_dumper( escapes )
     if $I0 >= 0 goto succeed
     ##  if this isn't an interpolation, add the char
     unless optq goto add_litchar

Modified: trunk/languages/pipp/t/php/strings.t
==============================================================================
--- trunk/languages/pipp/t/php/strings.t        (original)
+++ trunk/languages/pipp/t/php/strings.t        Fri Jul 11 12:08:05 2008
@@ -18,7 +18,7 @@
 use lib "$FindBin::Bin/../../lib";
 
 # core Perl modules
-use Test::More     tests => 8;
+use Test::More     tests => 10;
 
 # Parrot modules
 use Parrot::Test;
@@ -99,7 +99,16 @@
 VAR1 VAR2
 END_EXPECTED
 
-language_output_is( 'Pipp', <<'END_CODE', <<'END_EXPECTED', 'string 
interpolation, complex syntax' );
+language_output_is( 'Pipp', <<'END_CODE', <<'END_EXPECTED', 'curly string 
interpolation, one var' );
+<?php
+$var1 = "VAR1";
+echo "{$var1}\n";
+?>
+END_CODE
+VAR1
+END_EXPECTED
+
+language_output_is( 'Pipp', <<'END_CODE', <<'END_EXPECTED', 'curly string 
interpolation, two vars', todo => 'broken' );
 <?php
 $var1 = "VAR1";
 $var2 = "VAR2";
@@ -109,8 +118,6 @@
 VAR1 VAR2
 END_EXPECTED
 
-=for comment
-
 language_output_is( 'Pipp', <<'END_CODE', <<'END_EXPECTED', 'print a pair of 
curlies' );
 <?php
 echo "curlies: {}\n";
@@ -119,8 +126,6 @@
 curlies: {}
 END_EXPECTED
 
-=cut
-
 language_output_is( 'Pipp', <<'END_CODE', <<'END_EXPECTED', 'single quotes and 
backslash' );
 <?php
 

<Prev in Thread] Current Thread [Next in Thread>
  • [svn:parrot] r29303 - in trunk/languages/pipp: src/pct t/php, bernhard <=