# -*- mode: ruby; coding: us-ascii -*- firstline, predefined = __LINE__+1, %[\ intern method_missing MethodMissing length size gets succ each lambda send __send__ initialize initialize_copy initialize_clone initialize_dup _ UScore "/*NULL*/" NULL empty? respond_to? Respond_to respond_to_missing? Respond_to_missing core#set_method_alias core#set_variable_alias core#undef_method core#define_method core#define_singleton_method core#set_postexe core#hash_from_ary core#hash_merge_ary core#hash_merge_ptr core#hash_merge_kwd ] predefined_ids = {} preserved_ids = [] local_ids = [] instance_ids = [] global_ids = [] const_ids = [] class_ids = [] names = {} predefined.lines.each_with_index do |line, num| next if /^#/ =~ line or (name, token = line.split; !name) token ||= name if /#/ =~ token token = "_#{token.gsub(/\W+/, '_')}" else token = token.sub(/\?/, 'P').sub(/\A[a-z]/) {$&.upcase} token.sub!(/\A\$/, "_G_") token.sub!(/\A@@/, "_C_") token.sub!(/\A@/, "_I_") token.gsub!(/\W+/, "") end case name when /\A[A-Z]\w*\z/; const_ids when /\A(?!\d)\w+\z/; local_ids when /\A\$(?:\d+|(?!\d)\w+)\z/; global_ids when /\A@@(?!\d)\w+\z/; class_ids when /\A@(?!\d)\w+\z/; instance_ids else preserved_ids end << token predefined_ids[token] = name end { "LOCAL" => local_ids, "INSTANCE" => instance_ids, "GLOBAL" => global_ids, "CONST" => const_ids, "CLASS" => class_ids, :preserved => preserved_ids, :predefined => predefined_ids, }