[svn:parrot] r47775 - in branches/gsoc_past_optimization: . config/gen/makefiles runtime/parrot/library/PAST runtime/parrot/library/PAST/Pattern runtime/parrot/library/Tree runtime/parrot/library/Tree/Pattern

tcurtis at svn.parrot.org tcurtis at svn.parrot.org
Wed Jun 23 05:00:36 UTC 2010


Author: tcurtis
Date: Wed Jun 23 05:00:36 2010
New Revision: 47775
URL: https://trac.parrot.org/parrot/changeset/47775

Log:
Move PAST::Pattern::Transformer to Tree::Pattern::Transformer. It only works on PAST's though.

Added:
   branches/gsoc_past_optimization/runtime/parrot/library/Tree/Pattern/Transformer.nqp
      - copied, changed from r47769, branches/gsoc_past_optimization/runtime/parrot/library/PAST/Pattern/Transformer.nqp
Deleted:
   branches/gsoc_past_optimization/runtime/parrot/library/PAST/Pattern/Transformer.nqp
Modified:
   branches/gsoc_past_optimization/MANIFEST
   branches/gsoc_past_optimization/MANIFEST.SKIP
   branches/gsoc_past_optimization/config/gen/makefiles/root.in
   branches/gsoc_past_optimization/runtime/parrot/library/PAST/Pattern/   (props changed)
   branches/gsoc_past_optimization/runtime/parrot/library/PAST/Pattern.nqp
   branches/gsoc_past_optimization/runtime/parrot/library/Tree/Pattern/   (props changed)
   branches/gsoc_past_optimization/runtime/parrot/library/Tree/Pattern.nqp

Modified: branches/gsoc_past_optimization/MANIFEST
==============================================================================
--- branches/gsoc_past_optimization/MANIFEST	Wed Jun 23 04:37:52 2010	(r47774)
+++ branches/gsoc_past_optimization/MANIFEST	Wed Jun 23 05:00:36 2010	(r47775)
@@ -1,7 +1,7 @@
 # ex: set ro:
 # $Id$
 #
-# generated by tools/dev/mk_manifest_and_skip.pl Wed Jun 23 04:32:25 2010 UT
+# generated by tools/dev/mk_manifest_and_skip.pl Wed Jun 23 04:50:40 2010 UT
 #
 # See below for documentation on the format of this file.
 #
@@ -1176,7 +1176,6 @@
 runtime/parrot/library/P6object.pir                         [library]
 runtime/parrot/library/PAST/Pattern.nqp                     [library]
 runtime/parrot/library/PAST/Pattern/Node.nqp                [library]
-runtime/parrot/library/PAST/Pattern/Transformer.nqp         [library]
 runtime/parrot/library/PAST/Transformer.pir                 [library]
 runtime/parrot/library/PAST/Transformer/Dynamic.pir         [library]
 runtime/parrot/library/PAST/Walker.pir                      [library]
@@ -1240,6 +1239,7 @@
 runtime/parrot/library/Tree/Pattern/Closure.nqp             [library]
 runtime/parrot/library/Tree/Pattern/Constant.nqp            [library]
 runtime/parrot/library/Tree/Pattern/Match.nqp               [library]
+runtime/parrot/library/Tree/Pattern/Transformer.nqp         [library]
 runtime/parrot/library/URI.pir                              [library]
 runtime/parrot/library/URI/Escape.pir                       [library]
 runtime/parrot/library/YAML/Dumper.pir                      [library]

Modified: branches/gsoc_past_optimization/MANIFEST.SKIP
==============================================================================
--- branches/gsoc_past_optimization/MANIFEST.SKIP	Wed Jun 23 04:37:52 2010	(r47774)
+++ branches/gsoc_past_optimization/MANIFEST.SKIP	Wed Jun 23 05:00:36 2010	(r47775)
@@ -1,6 +1,6 @@
 # ex: set ro:
 # $Id$
-# generated by tools/dev/mk_manifest_and_skip.pl Wed Jun 23 04:32:25 2010 UT
+# generated by tools/dev/mk_manifest_and_skip.pl Wed Jun 23 04:50:40 2010 UT
 #
 # This file should contain a transcript of the svn:ignore properties
 # of the directories in the Parrot subversion repository. (Needed for
@@ -598,18 +598,8 @@
 # generated from svn:ignore of 'runtime/parrot/library/PAST/Pattern/'
 ^runtime/parrot/library/PAST/Pattern/.*\.pbc$
 ^runtime/parrot/library/PAST/Pattern/.*\.pbc/
-^runtime/parrot/library/PAST/Pattern/Any\.pir$
-^runtime/parrot/library/PAST/Pattern/Any\.pir/
-^runtime/parrot/library/PAST/Pattern/Closure\.pir$
-^runtime/parrot/library/PAST/Pattern/Closure\.pir/
-^runtime/parrot/library/PAST/Pattern/Constant\.pir$
-^runtime/parrot/library/PAST/Pattern/Constant\.pir/
-^runtime/parrot/library/PAST/Pattern/Match\.pir$
-^runtime/parrot/library/PAST/Pattern/Match\.pir/
 ^runtime/parrot/library/PAST/Pattern/Node\.pir$
 ^runtime/parrot/library/PAST/Pattern/Node\.pir/
-^runtime/parrot/library/PAST/Pattern/Transformer\.pir$
-^runtime/parrot/library/PAST/Pattern/Transformer\.pir/
 # generated from svn:ignore of 'runtime/parrot/library/PAST/Transformer/'
 ^runtime/parrot/library/PAST/Transformer/.*\.pbc$
 ^runtime/parrot/library/PAST/Transformer/.*\.pbc/
@@ -664,6 +654,8 @@
 ^runtime/parrot/library/Tree/Pattern/Constant\.pir/
 ^runtime/parrot/library/Tree/Pattern/Match\.pir$
 ^runtime/parrot/library/Tree/Pattern/Match\.pir/
+^runtime/parrot/library/Tree/Pattern/Transformer\.pir$
+^runtime/parrot/library/Tree/Pattern/Transformer\.pir/
 # generated from svn:ignore of 'runtime/parrot/library/URI/'
 ^runtime/parrot/library/URI/.*\.pbc$
 ^runtime/parrot/library/URI/.*\.pbc/

Modified: branches/gsoc_past_optimization/config/gen/makefiles/root.in
==============================================================================
--- branches/gsoc_past_optimization/config/gen/makefiles/root.in	Wed Jun 23 04:37:52 2010	(r47774)
+++ branches/gsoc_past_optimization/config/gen/makefiles/root.in	Wed Jun 23 05:00:36 2010	(r47775)
@@ -284,8 +284,6 @@
     $(LIBRARY_DIR)/PAST/Pattern.pir \
     $(LIBRARY_DIR)/PAST/Pattern/Node.pbc \
     $(LIBRARY_DIR)/PAST/Pattern/Node.pir \
-    $(LIBRARY_DIR)/PAST/Pattern/Transformer.pbc \
-    $(LIBRARY_DIR)/PAST/Pattern/Transformer.pir \
     $(LIBRARY_DIR)/PAST/Transformer.pbc \
     $(LIBRARY_DIR)/PAST/Transformer/Dynamic.pbc \
     $(LIBRARY_DIR)/PAST/Walker.pbc \
@@ -339,6 +337,8 @@
     $(LIBRARY_DIR)/Tree/Pattern/Constant.pir \
     $(LIBRARY_DIR)/Tree/Pattern/Match.pbc \
     $(LIBRARY_DIR)/Tree/Pattern/Match.pir \
+    $(LIBRARY_DIR)/Tree/Pattern/Transformer.pbc \
+    $(LIBRARY_DIR)/Tree/Pattern/Transformer.pir \
     $(LIBRARY_DIR)/URI.pbc \
     $(LIBRARY_DIR)/URI/Escape.pbc \
     $(LIBRARY_DIR)/uuid.pbc \
@@ -1103,33 +1103,6 @@
 $(LIBRARY_DIR)/PAST/Pattern.pir: $(LIBRARY_DIR)/PAST/Pattern.nqp $(NQP_RX)
 	$(NQP_RX) --target=pir $(LIBRARY_DIR)/PAST/Pattern.nqp > $@
 
-$(LIBRARY_DIR)/PAST/Pattern/Any.pbc: \
-	$(LIBRARY_DIR)/PAST/Pattern/Any.pir
-	$(PARROT) -o $@ $(LIBRARY_DIR)/PAST/Pattern/Any.pir
-
-$(LIBRARY_DIR)/PAST/Pattern/Any.pir: \
-	$(LIBRARY_DIR)/PAST/Pattern/Any.nqp $(NQP_RX)
-	$(NQP_RX) --target=pir $(LIBRARY_DIR)/PAST/Pattern/Any.nqp \
-	> $@
-
-$(LIBRARY_DIR)/PAST/Pattern/Constant.pbc: \
-	$(LIBRARY_DIR)/PAST/Pattern/Constant.pir
-	$(PARROT) -o $@ $(LIBRARY_DIR)/PAST/Pattern/Constant.pir
-
-$(LIBRARY_DIR)/PAST/Pattern/Constant.pir: \
-	$(LIBRARY_DIR)/PAST/Pattern/Constant.nqp $(NQP_RX)
-	$(NQP_RX) --target=pir $(LIBRARY_DIR)/PAST/Pattern/Constant.nqp \
-	> $@
-
-$(LIBRARY_DIR)/PAST/Pattern/Closure.pbc: \
-	$(LIBRARY_DIR)/PAST/Pattern/Closure.pir
-	$(PARROT) -o $@ $(LIBRARY_DIR)/PAST/Pattern/Closure.pir
-
-$(LIBRARY_DIR)/PAST/Pattern/Closure.pir: \
-	$(LIBRARY_DIR)/PAST/Pattern/Closure.nqp $(NQP_RX)
-	$(NQP_RX) --target=pir $(LIBRARY_DIR)/PAST/Pattern/Closure.nqp\
-	> $@
-
 $(LIBRARY_DIR)/PAST/Pattern/Node.pbc: \
 	$(LIBRARY_DIR)/PAST/Pattern/Node.pir
 	$(PARROT) -o $@ $(LIBRARY_DIR)/PAST/Pattern/Node.pir
@@ -1139,15 +1112,6 @@
 	$(NQP_RX) --target=pir $(LIBRARY_DIR)/PAST/Pattern/Node.nqp \
 	> $@
 
-$(LIBRARY_DIR)/PAST/Pattern/Transformer.pbc: \
-	$(LIBRARY_DIR)/PAST/Pattern/Transformer.pir
-	$(PARROT) -o $@ $(LIBRARY_DIR)/PAST/Pattern/Transformer.pir
-
-$(LIBRARY_DIR)/PAST/Pattern/Transformer.pir: \
-	$(LIBRARY_DIR)/PAST/Pattern/Transformer.nqp $(NQP_RX)
-	$(NQP_RX) --target=pir $(LIBRARY_DIR)/PAST/Pattern/Transformer.nqp \
-	> $@
-
 #
 # Profiling runcore test supporting code
 #
@@ -1232,6 +1196,15 @@
 	$(NQP_RX) --target=pir $(LIBRARY_DIR)/Tree/Pattern/Match.nqp \
 	> $@
 
+$(LIBRARY_DIR)/Tree/Pattern/Transformer.pbc: \
+	$(LIBRARY_DIR)/Tree/Pattern/Transformer.pir
+	$(PARROT) -o $@ $(LIBRARY_DIR)/Tree/Pattern/Transformer.pir
+
+$(LIBRARY_DIR)/Tree/Pattern/Transformer.pir: \
+	$(LIBRARY_DIR)/Tree/Pattern/Transformer.nqp $(NQP_RX)
+	$(NQP_RX) --target=pir $(LIBRARY_DIR)/Tree/Pattern/Transformer.nqp \
+	> $@
+
 ###############################################################################
 #
 # Other Dependencies and Build Rules:

Modified: branches/gsoc_past_optimization/runtime/parrot/library/PAST/Pattern.nqp
==============================================================================
--- branches/gsoc_past_optimization/runtime/parrot/library/PAST/Pattern.nqp	Wed Jun 23 04:37:52 2010	(r47774)
+++ branches/gsoc_past_optimization/runtime/parrot/library/PAST/Pattern.nqp	Wed Jun 23 05:00:36 2010	(r47775)
@@ -8,19 +8,7 @@
 }
 
 class PAST::Pattern is Tree::Pattern {
-    method transform ($past, $transform) {
-        my &transSub;
-        if ($transform ~~ PAST::Transformer) {
-            &transSub := sub ($/) { $transformer.walk($/.from()); };
-        } elsif (pir::does__iPS($transform, 'invokable')) {
-            &transSub := $transform;
-        } else {
-            pir::die('$transform must be invokable or a PAST::Transformer.');
-        }
-        my $transformer :=
-          PAST::Pattern::Transformer.new(self, &transSub);
-        $transformer.walk($past);
-    }
+
 }
 
 module PAST::Node {
@@ -35,8 +23,6 @@
 
 INIT {
     pir::load_bytecode('PAST/Pattern/Node.pbc');
-
-    pir::load_bytecode('PAST/Pattern/Transformer.pbc');
 }
 
 # Local Variables:

Deleted: branches/gsoc_past_optimization/runtime/parrot/library/PAST/Pattern/Transformer.nqp
==============================================================================
--- branches/gsoc_past_optimization/runtime/parrot/library/PAST/Pattern/Transformer.nqp	Wed Jun 23 05:00:36 2010	(r47774)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,72 +0,0 @@
-#!./parrot-nqp
-# Copyright (C) 2010, Parrot Foundation.
-# $Id$
-
-class PAST::Pattern::Transformer is PAST::Transformer {
-    has $pattern;
-    has $transform;
-
-    method new ($pattern?, $transform?) {
-        my $class := pir::getattribute__PPS(self.HOW(),
-                                           'parrotclass');
-        my $self := pir::new__PP($class);
-        $self.pattern($pattern);
-        $self.transform($transform);
-        $self;
-    }
-
-    method pattern ($pattern?) {
-        my $result;
-        if pir::defined__iP($pattern) {
-            pir::setattribute(self, '$pattern', $pattern);
-        }
-        else {
-            $result := pir::getattribute__PPs(self, '$pattern');
-        }
-        $result;
-    }
-
-    method transform ($transform?) {
-        my $result;
-        if pir::defined__iP($transform) {
-            pir::setattribute(self, '$transform', $transform);
-        }
-        else {
-            $result := pir::getattribute__PPs(self, '$transform');
-        }
-        $result;
-    }
-
-}
-
-module PAST::Walker {
-    our multi sub walk (PAST::Pattern::Transformer $walker,
-                    PAST::Node $node) {
-        my $pattern := $walker.pattern();
-        my $shouldTransform;
-        if ($pattern ~~ PAST::Pattern::Node) {
-            $shouldTransform := $pattern.ACCEPTSEXACTLY($node);
-        }
-        else {
-            $shouldTransform := $pattern.ACCEPTS($node);
-        }
-        my $result;
-        if ($shouldTransform) {
-            $result := $walker.transform()($shouldTransform);
-        }
-        else {
-            $result := $node;
-        }
-        my $newChildren := walkChildren($walker, $result);
-        replaceChildren($result, $newChildren);
-        $result;
-    }
-
-}
-
-# Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:

Modified: branches/gsoc_past_optimization/runtime/parrot/library/Tree/Pattern.nqp
==============================================================================
--- branches/gsoc_past_optimization/runtime/parrot/library/Tree/Pattern.nqp	Wed Jun 23 04:37:52 2010	(r47774)
+++ branches/gsoc_past_optimization/runtime/parrot/library/Tree/Pattern.nqp	Wed Jun 23 05:00:36 2010	(r47775)
@@ -24,6 +24,20 @@
         $result;
     }
 
+    method transform ($node, $transform) {
+        my &transSub;
+        if ($transform ~~ PAST::Transformer) {
+            &transSub := sub ($/) { $transformer.walk($/.from()); };
+        } elsif (pir::does__iPS($transform, 'invokable')) {
+            &transSub := $transform;
+        } else {
+            pir::die('$transform must be invokable or a PAST::Transformer.');
+        }
+        my $transformer :=
+          Tree::Pattern::Transformer.new(self, &transSub);
+        $transformer.walk($node);
+    }
+
     method ACCEPTS ($node, *%opts) {
         my $global := ?%opts<g> || ?%opts<global>;
         my $pos := %opts<p> || %opts<pos>;
@@ -88,6 +102,8 @@
     pir::load_bytecode('Tree/Pattern/Any.pbc');
     pir::load_bytecode('Tree/Pattern/Closure.pbc');
     pir::load_bytecode('Tree/Pattern/Constant.pbc');
+
+    pir::load_bytecode('Tree/Pattern/Transformer.pbc');
 }
 
 # Local Variables:

Copied and modified: branches/gsoc_past_optimization/runtime/parrot/library/Tree/Pattern/Transformer.nqp (from r47769, branches/gsoc_past_optimization/runtime/parrot/library/PAST/Pattern/Transformer.nqp)
==============================================================================
--- branches/gsoc_past_optimization/runtime/parrot/library/PAST/Pattern/Transformer.nqp	Tue Jun 22 22:37:44 2010	(r47769, copy source)
+++ branches/gsoc_past_optimization/runtime/parrot/library/Tree/Pattern/Transformer.nqp	Wed Jun 23 05:00:36 2010	(r47775)
@@ -2,7 +2,11 @@
 # Copyright (C) 2010, Parrot Foundation.
 # $Id$
 
-class PAST::Pattern::Transformer is PAST::Transformer {
+INIT {
+    pir::load_bytecode('PAST/Transformer.pbc');
+}
+
+class Tree::Pattern::Transformer is PAST::Transformer {
     has $pattern;
     has $transform;
 
@@ -40,12 +44,12 @@
 }
 
 module PAST::Walker {
-    our multi sub walk (PAST::Pattern::Transformer $walker,
+    our multi sub walk (Tree::Pattern::Transformer $walker,
                     PAST::Node $node) {
         my $pattern := $walker.pattern();
         my $shouldTransform;
-        if ($pattern ~~ PAST::Pattern::Node) {
-            $shouldTransform := $pattern.ACCEPTSEXACTLY($node);
+        if ($pattern ~~ Tree::Pattern) {
+            $shouldTransform := $pattern.ACCEPTS($node, :pos($node));
         }
         else {
             $shouldTransform := $pattern.ACCEPTS($node);


More information about the parrot-commits mailing list