diff options
Diffstat (limited to 'ext/ripper/tools/generate-ripper_rb.rb')
-rwxr-xr-x | ext/ripper/tools/generate-ripper_rb.rb | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/ext/ripper/tools/generate-ripper_rb.rb b/ext/ripper/tools/generate-ripper_rb.rb index 9d33bddc4c..b85d2745a0 100755 --- a/ext/ripper/tools/generate-ripper_rb.rb +++ b/ext/ripper/tools/generate-ripper_rb.rb @@ -2,6 +2,12 @@ def main template, ids1, ids2 = *ARGV + print <<header +# +# This file is automatically generated from #{template} and parse.y. +# DO NOT MODIFY!!!!!! +# +header File.foreach(template) do |line| case line when /\A\#include ids1/ @@ -13,7 +19,7 @@ def main id, arity = line.split arity = arity.to_i puts - puts " def on__#{id}(#{argdecl(arity)})" + puts " def on__#{id}#{paramdecl(arity)}" puts " #{arity == 0 ? 'nil' : 'a'}" puts " end" end @@ -35,20 +41,21 @@ def main end def print_items(ids) - comma = "\n" - ids.each do |id| + comma = '' + ids.each do |id, arity| print comma; comma = ",\n" - print " #{id.intern.inspect}" + print " #{id.intern.inspect} => #{arity}" end puts end def read_ids(path) - File.readlines(path).map {|line| line.split[0] } + File.readlines(path).map {|line| line.split } end -def argdecl(n) - %w(a b c d e f g h i j k l m)[0, n].join(', ') +def paramdecl(n) + return '' if n == 0 + '(' + %w(a b c d e f g h i j k l m)[0, n].join(', ') + ')' end main |