[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