[svn:parrot] r44512 - branches/ops_pct/compilers/opsc/ops

bacek at svn.parrot.org bacek at svn.parrot.org
Fri Feb 26 23:37:47 UTC 2010


Author: bacek
Date: Fri Feb 26 23:37:46 2010
New Revision: 44512
URL: https://trac.parrot.org/parrot/changeset/44512

Log:
Switch load_skip_file to use grammar

Modified:
   branches/ops_pct/compilers/opsc/ops/oplib.pm

Modified: branches/ops_pct/compilers/opsc/ops/oplib.pm
==============================================================================
--- branches/ops_pct/compilers/opsc/ops/oplib.pm	Fri Feb 26 23:37:25 2010	(r44511)
+++ branches/ops_pct/compilers/opsc/ops/oplib.pm	Fri Feb 26 23:37:46 2010	(r44512)
@@ -182,7 +182,7 @@
 
 method load_op_map_files() {
     self._load_num_file();
-    #self._load_skip_file();
+    self._load_skip_file();
 }
 
 =begin METHODS
@@ -352,16 +352,25 @@
 
 method _load_skip_file() {
     my $buf     := slurp(self<skip_file>);
-    my @lines   := split("\n", $buf);
+    grammar SKIP {
+        rule TOP { <op>+ }
 
-    for @lines {
-        # XXX Bit ugly. But I don't know how to invoke ~~ in NQP...
-        if /^^ \S+ $$/($_) {
-            if ( exists( self<optable>, $_) ) {
-                die("skipped opcode '$_' is also in num_file");
-            }
-            self<skiptable>{$_} := 1;
+        rule op { $<name>=(\w+) }
+        token ws {
+            [
+            | \s+
+            | '#' \N*
+            ]*
+        }
+    }
+
+    my $lines := SKIP.parse($buf);
+
+    for $lines<op> {
+        if ( exists( self<optable>, $_) ) {
+            die("skipped opcode '$_' is also in num_file");
         }
+        self<skiptable>{$_} := 1;
     }
 }
 


More information about the parrot-commits mailing list