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');