Author: pmichaud
Date: Sat May  7 22:48:46 2005
New Revision: 8006

Modified:
   trunk/compilers/pge/PGE/Match.pir
   trunk/runtime/parrot/library/PGE/Dumper.pir
   trunk/t/p6rules/backtrack.t
Log:
Added <?ws> and subrules to Dumper.
Cleaned up Match dumper.
Fixed backtracking tests.



Modified: trunk/compilers/pge/PGE/Match.pir
==============================================================================
--- trunk/compilers/pge/PGE/Match.pir   (original)
+++ trunk/compilers/pge/PGE/Match.pir   Sat May  7 22:48:46 2005
@@ -246,29 +246,10 @@
     concat prefix1, $S0
     concat prefix1, b2
     $I0 = defined capt[spi]
-    unless $I0 goto subpats_3
+    unless $I0 goto subpats_2
     $P0 = capt[spi]
-    $I0 = defined $P0
-    unless $I0 goto subpats_3
-    $I0 = 0
-    $I1 = elements $P0
-    unless $I0 < $I1 goto subpats_3
-    $P1 = getprop "isarray", $P0
-    if $P1 goto subpats_2
-    $P1 = $P0[-1]
-    $P1."dump"(prefix1, b1, b2)
-    goto subpats_3
+    bsr dumper
   subpats_2:
-    unless $I0 < $I1 goto subpats_3
-    $P1 = $P0[$I0]
-    prefix2 = concat prefix1, b1
-    $S0 = $I0
-    concat prefix2, $S0
-    concat prefix2, b2
-    $P1."dump"(prefix2, b1, b2)
-    inc $I0
-    goto subpats_2
-  subpats_3:
     inc spi
     goto subpats_1
 
@@ -286,16 +267,21 @@
     $I0 = defined capt[$S0]
     unless $I0 goto subrules_1
     $P0 = capt[$S0]
+    bsr dumper
+    goto subrules_1
+
+  dumper:
     $I0 = 0
     $I1 = elements $P0
-    unless $I0 < $I1 goto subrules_1
+    unless $I0 < $I1 goto dumper_1
     $P1 = getprop "isarray", $P0
-    if $P1 goto subrules_2
+    if $P1 goto dumper_2
     $P1 = $P0[-1]
     $P1."dump"(prefix1, b1, b2)
-    goto subrules_1
-  subrules_2:
-    unless $I0 < $I1 goto subrules_1
+  dumper_1:
+    ret
+  dumper_2:
+    unless $I0 < $I1 goto dumper_1
     $P1 = $P0[$I0]
     prefix2 = concat prefix1, b1
     $S0 = $I0
@@ -303,7 +289,7 @@
     concat prefix2, b2
     $P1."dump"(prefix2, b1, b2)
     inc $I0
-    goto subrules_2
+    goto dumper_2
   end:
 .end
 

Modified: trunk/runtime/parrot/library/PGE/Dumper.pir
==============================================================================
--- trunk/runtime/parrot/library/PGE/Dumper.pir (original)
+++ trunk/runtime/parrot/library/PGE/Dumper.pir Sat May  7 22:48:46 2005
@@ -83,6 +83,13 @@
     print "\n"
 .end
 
+.namespace [ "PGE::Exp::WS" ]
+
+.sub "dump" method
+    .param int indent
+    self."dumpindent"(indent)
+    print "<?ws>\n"
+.end
 
 .namespace [ "PGE::Exp::Anchor" ]
 
@@ -147,7 +154,7 @@
     print $S0
     $I0 = exists self["rname"]
     unless $I0 goto dump_0
-    print "subrule '"
+    print " subrule '"
     $S0 = self["rname"]
     print $S0
     print "'"

Modified: trunk/t/p6rules/backtrack.t
==============================================================================
--- trunk/t/p6rules/backtrack.t (original)
+++ trunk/t/p6rules/backtrack.t Sat May  7 22:48:46 2005
@@ -4,8 +4,8 @@
 p6rule_is(  'bazaar', 'a* a', 'control');
 p6rule_isnt('bazaar', 'a*:a', 'basic');
 
-p6rule_is(  'abbabbababba', '[a|b]*  aba', 'control');
-p6rule_isnt('abbabbababba', '[a|b]*: aba', 'outside a group');
+p6rule_is(  'abbabbababba', '^[a|b]*  aba', 'control');
+p6rule_isnt('abbabbababba', '^[a|b]*: aba', 'outside a group');
 
 p6rule_is(  'verify', '[ if    not | ify ]', 'control');
 p6rule_isnt('verify', '[ if :: not | ify ]', 'inside a group');

Reply via email to