Author: pmichaud
Date: Thu Nov 3 12:56:44 2005
New Revision: 9759
Modified:
trunk/runtime/parrot/library/PGE/Glob.pir
trunk/t/library/pge.t
Log:
Fixed PGE::Glob for new underlying structures, updated tests
in t/library/pge.t.
Modified: trunk/runtime/parrot/library/PGE/Glob.pir
==============================================================================
--- trunk/runtime/parrot/library/PGE/Glob.pir (original)
+++ trunk/runtime/parrot/library/PGE/Glob.pir Thu Nov 3 12:56:44 2005
@@ -176,10 +176,10 @@ Parse alternations of the form {a,b,c} w
$S0 = substr pattern, pos, 1
if $S0 == "!" goto negate
if $S0 == "^" goto negate
- exp["charmatch"] = "if"
+ exp["isnegated"] = 0
goto first_bracket
negate:
- exp["charmatch"] = "unless"
+ exp["isnegated"] = 1
inc pos
first_bracket:
$S0 = substr pattern, pos, 1
@@ -212,7 +212,7 @@ Parse alternations of the form {a,b,c} w
end_class:
inc pos
lex["pos"] = pos
- exp["charlist"] = charclass
+ exp["value"] = charclass
end:
.return (exp)
.end
Modified: trunk/t/library/pge.t
==============================================================================
--- trunk/t/library/pge.t (original)
+++ trunk/t/library/pge.t Thu Nov 3 12:56:44 2005
@@ -14,7 +14,7 @@ t/library/pge.t - Grammar Engine tests
use strict;
-use Parrot::Test tests => 9;
+use Parrot::Test tests => 19;
use Parrot::Test::PGE;
# 1-6
@@ -26,100 +26,19 @@ pgeglob_is ('ana', '?n?*', "glob wildca
pgeglob_isnt('an', '?n?*', "glob wildcards");
# 7
-pir_output_is(<<'CODE', <<'OUT', "Glob, character classes");
+pgeglob_is ('orange','[go]range','glob enumerated characters');
+pgeglob_is ('grange','[go]range','glob enumerated characters');
+pgeglob_isnt('ggrange','[go]range','glob enumerated characters');
+pgeglob_isnt('borange','[go]range','glob enumerated characters');
+pgeglob_isnt('arange','[go]range','glob enumerated characters');
+pgeglob_is ('a','[^0-9]','glob enumerated characters');
+pgeglob_isnt('4','[^0-9]','glob enumerated characters');
+pgeglob_isnt('0','[^0-9]','glob enumerated characters');
+pgeglob_isnt('9','[^0-9]','glob enumerated characters');
+pgeglob_isnt('4a','[^0-9]','glob enumerated characters');
+pgeglob_isnt('aa','[^0-9]','glob enumerated characters');
-.sub _main
- load_bytecode "library/PGE.pbc"
- load_bytecode "library/PGE/Glob.pir"
-
- .local pmc rule
- $P0 = find_global "PGE", "glob"
- (rule, $P1, $P2) = $P0("[go]range")
-
- $P1 = rule("orange")
- if $P1 goto ok1
- print "not "
-ok1:
- print "ok1\n"
-
- $P1 = rule("grange")
- if $P1 goto ok2
- print "not "
-ok2:
- print "ok2\n"
-
- $P1 = rule("ggrange")
- unless $P1 goto ok3
- print "not "
-ok3:
- print "ok3\n"
-
- $P1 = rule("borange")
- unless $P1 goto ok4
- print "not "
-ok4:
- print "ok4\n"
-
- $P1 = rule("arange")
- unless $P1 goto ok5
- print "not "
-ok5:
- print "ok5\n"
-
- (rule, $P1, $P2) = $P0("[^0-9]")
-
- $P1 = rule("a")
- if $P1 goto ok6
- print "not "
-ok6:
- print "ok6\n"
-
- $P1 = rule("4")
- unless $P1 goto ok7
- print "not "
-ok7:
- print "ok7\n"
-
- $P1 = rule("0")
- unless $P1 goto ok8
- print "not "
-ok8:
- print "ok8\n"
-
- $P1 = rule("9")
- unless $P1 goto ok9
- print "not "
-ok9:
- print "ok9\n"
-
- $P1 = rule("4a")
- unless $P1 goto ok10
- print "not "
-ok10:
- print "ok10\n"
-
- $P1 = rule("aa")
- unless $P1 goto ok11
- print "not "
-ok11:
- print "ok11\n"
-
-.end
-CODE
-ok1
-ok2
-ok3
-ok4
-ok5
-ok6
-ok7
-ok8
-ok9
-ok10
-ok11
-OUT
-
-# 8
+# 18
pir_output_is(<<'CODE', <<'OUT', "Glob, alternate");
.sub _main
@@ -213,7 +132,7 @@ ok10
ok11
OUT
-# 9
+# 19
pir_output_is(<<'CODE', <<'OUT', "This made Parrot m4 fail");
.sub 'test' :main