[svn:parrot] r44511 - branches/ops_pct/compilers/opsc/ops
bacek at svn.parrot.org
bacek at svn.parrot.org
Fri Feb 26 23:37:26 UTC 2010
Author: bacek
Date: Fri Feb 26 23:37:25 2010
New Revision: 44511
URL: https://trac.parrot.org/parrot/changeset/44511
Log:
Change load_num_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:36:55 2010 (r44510)
+++ branches/ops_pct/compilers/opsc/ops/oplib.pm Fri Feb 26 23:37:25 2010 (r44511)
@@ -1,6 +1,12 @@
# Copyright (C) 2009, Parrot Foundation.
# $Id$
+INIT {
+ Q:PIR<
+ load_bytecode "dumper.pbc"
+ >
+};
+
class Ops::OpLib is Hash;
=begin NAME
@@ -176,7 +182,7 @@
method load_op_map_files() {
self._load_num_file();
- self._load_skip_file();
+ #self._load_skip_file();
}
=begin METHODS
@@ -304,13 +310,26 @@
method _load_num_file() {
# slurp isn't very efficient. But extending NQP beyond bare minimum is not in scope.
my $buf := slurp(self<num_file>);
- my @ops := split("\n", $buf);
+ grammar NUM {
+ rule TOP { <op>+ }
+
+ rule op { $<name>=(\w+) $<number>=(\d+) }
+ token ws {
+ [
+ | \s+
+ | '#' \N*
+ ]*
+ }
+ }
+
+ #say("Parsing NUM");
+ my $ops := NUM.parse($buf);
+ #_dumper($ops);
my $prev := -1;
- for @ops {
- my @parts := split( /\s+/, $_ );
- my $name := @parts[0];
- my $number := @parts[1];
+ for $ops<op> {
+ my $name := ~$_<name>;
+ my $number := +$_<number>;
#say(@parts[0] ~ ' => ' ~@parts[1]);
if ((+$number) eq $number) {
if ($prev + 1 != $number) {
@@ -327,6 +346,8 @@
}
}
}
+
+ #_dumper(self<optable>);
}
method _load_skip_file() {
More information about the parrot-commits
mailing list