[svn:parrot] r44567 - in branches/ops_pct/compilers/opsc: src/Ops t

bacek at svn.parrot.org bacek at svn.parrot.org
Mon Mar 1 09:45:23 UTC 2010


Author: bacek
Date: Mon Mar  1 09:45:23 2010
New Revision: 44567
URL: https://trac.parrot.org/parrot/changeset/44567

Log:
Implement Ops::File.read_ops

Added:
   branches/ops_pct/compilers/opsc/t/05-opsfile.t
Modified:
   branches/ops_pct/compilers/opsc/src/Ops/File.pm

Modified: branches/ops_pct/compilers/opsc/src/Ops/File.pm
==============================================================================
--- branches/ops_pct/compilers/opsc/src/Ops/File.pm	Mon Mar  1 09:44:42 2010	(r44566)
+++ branches/ops_pct/compilers/opsc/src/Ops/File.pm	Mon Mar  1 09:45:23 2010	(r44567)
@@ -176,8 +176,10 @@
 
 =end
 
-method new(@files, $nolines) {
+method new(*@files, :$nolines) {
     self<files>   := @files;
+    self<parsed_ops> := list(); # Raw ops parsed.
+    self<ops>        := list(); # Renumbered versions of ops
 
     for @files { self.read_ops( $_, $nolines ) }
 
@@ -199,6 +201,15 @@
 =end
 
 method read_ops($file, $nolines) {
+    my $compiler := pir::compreg__Ps('Ops');
+
+    say("Parsing $file");
+    my $buffer := slurp($file);
+    my $past   := $compiler.compile($buffer, :target('past'));
+
+    for @($past<ops>) {
+        self<parsed_ops>.push($_);
+    }
 }
 
 =begin

Added: branches/ops_pct/compilers/opsc/t/05-opsfile.t
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/ops_pct/compilers/opsc/t/05-opsfile.t	Mon Mar  1 09:45:23 2010	(r44567)
@@ -0,0 +1,23 @@
+#!./parrot-nqp
+
+pir::load_bytecode("compilers/opsc/opsc.pbc");
+pir::load_bytecode("nqp-settings.pbc");
+
+plan(2);
+
+my $f := Ops::File.new();
+ok($f, "Empty Ops::File created");
+
+my @files := <
+    src/ops/core.ops
+    src/ops/math.ops
+>;
+
+$f := Ops::File.new(|@files);
+
+# 84 core
+# 116 math
+say( "Parsed " ~ +$f<parsed_ops>);
+ok( $f<parsed_ops> == 84 + 116, "Ops parsed correctly");
+
+# vim: expandtab shiftwidth=4 ft=perl6:


More information about the parrot-commits mailing list