diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2014-10-27 06:38:09 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2014-10-27 06:38:09 +0000 |
commit | 92c61ca747e319d76884960643ef098734040fd3 (patch) | |
tree | 771a377eca75df425c4d57356165c5b032e1d760 /ext | |
parent | d8e1bf2760370bd50a49a778309227aff88ba3ec (diff) | |
download | ruby-92c61ca747e319d76884960643ef098734040fd3.tar.gz |
ripper/tools/generate.rb: shorten generated source
* ext/ripper/tools/generate.rb (generate_eventids1): shorten
generated source.
* ext/ripper/tools/generate.rb (generate_eventids2): ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48155 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext')
-rwxr-xr-x | ext/ripper/tools/generate.rb | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/ext/ripper/tools/generate.rb b/ext/ripper/tools/generate.rb index 48ad9e1d25..fc30e775bb 100755 --- a/ext/ripper/tools/generate.rb +++ b/ext/ripper/tools/generate.rb @@ -68,15 +68,22 @@ end def generate_eventids1(ids) buf = "" + buf << %Q[static struct {\n] ids.each do |id, arity| - buf << %Q[static ID ripper_id_#{id};\n] + buf << %Q[ ID id_#{id};\n] + end + buf << %Q[} ripper_parser_ids;\n] + buf << %Q[\n] + ids.each do |id, arity| + buf << %Q[#define ripper_id_#{id} ripper_parser_ids.id_#{id}\n] end buf << %Q[\n] buf << %Q[static void\n] buf << %Q[ripper_init_eventids1(void)\n] buf << %Q[{\n] + buf << %Q[#define set_id1(name) ripper_id_##name = rb_intern_const("on_"#name)\n] ids.each do |id, arity| - buf << %Q[ ripper_id_#{id} = rb_intern_const("on_#{id}");\n] + buf << %Q[ set_id1(#{id});\n] end buf << %Q[}\n] buf << %Q[\n] @@ -84,11 +91,9 @@ def generate_eventids1(ids) buf << %Q[ripper_init_eventids1_table(VALUE self)\n] buf << %Q[{\n] buf << %Q[ VALUE h = rb_hash_new();\n] - buf << %Q[ ID id;\n] buf << %Q[ rb_define_const(self, "PARSER_EVENT_TABLE", h);\n] ids.each do |id, arity| - buf << %Q[ id = rb_intern_const("#{id}");\n] - buf << %Q[ rb_hash_aset(h, ID2SYM(id), INT2NUM(#{arity}));\n] + buf << %Q[ rb_hash_aset(h, intern_sym("#{id}"), INT2FIX(#{arity}));\n] end buf << %Q[}\n] buf @@ -100,11 +105,9 @@ def generate_eventids2_table(ids) buf << %Q[ripper_init_eventids2_table(VALUE self)\n] buf << %Q[{\n] buf << %Q[ VALUE h = rb_hash_new();\n] - buf << %Q[ ID id;\n] buf << %Q[ rb_define_const(self, "SCANNER_EVENT_TABLE", h);\n] ids.each do |id| - buf << %Q[ id = rb_intern_const("#{id}");\n] - buf << %Q[ rb_hash_aset(h, ID2SYM(id), INT2NUM(1));\n] + buf << %Q[ rb_hash_aset(h, intern_sym("#{id}"), INT2FIX(1));\n] end buf << %Q[}\n] buf @@ -135,9 +138,9 @@ def read_ids1_with_locations(path) h = {} File.open(path) {|f| f.each do |line| - next if /\A\#\s*define\s+s?dispatch/ =~ line + next if /\A\#\s*define\s+dispatch/ =~ line next if /ripper_dispatch/ =~ line - line.scan(/dispatch(\d)\((\w+)/) do |arity, event| + line.scan(/\bdispatch(\d)\((\w+)/) do |arity, event| (h[event] ||= []).push [f.lineno, arity.to_i] end end @@ -147,7 +150,7 @@ end def read_ids2(path) File.open(path) {|f| - return f.read.scan(/ripper_id_(\w+)/).flatten.uniq.sort + return f.read.scan(/ID\s+ripper_id_(\w+)/).flatten.uniq.sort } end |