diff options
Diffstat (limited to 'defs/id.def')
-rw-r--r-- | defs/id.def | 37 |
1 files changed, 25 insertions, 12 deletions
diff --git a/defs/id.def b/defs/id.def index fc7a04ffbc..2ddde7be70 100644 --- a/defs/id.def +++ b/defs/id.def @@ -2,11 +2,13 @@ firstline, predefined = __LINE__+1, %[\ max min + hash freeze nil? inspect intern object_id + const_added const_missing method_missing MethodMissing method_added @@ -24,7 +26,7 @@ firstline, predefined = __LINE__+1, %[\ lambda send __send__ - __attached__ + __recursive_key__ initialize initialize_copy initialize_clone @@ -56,6 +58,7 @@ firstline, predefined = __LINE__+1, %[\ quo name nil + path _ UScore @@ -73,6 +76,7 @@ firstline, predefined = __LINE__+1, %[\ "/*NULL*/" NULL empty? eql? + default respond_to? Respond_to respond_to_missing? Respond_to_missing <IFUNC> @@ -86,6 +90,7 @@ firstline, predefined = __LINE__+1, %[\ core#hash_merge_ptr core#hash_merge_kwd core#raise + core#sprintf - debug#created_info @@ -138,6 +143,21 @@ class KeywordError < RuntimeError end end +def id2varname(token, prefix = nil) + if /#/ =~ token + token = "_#{token.gsub(/\W+/, '_')}" + else + token = token.sub(/\?/, 'P') + token = prefix + token if prefix + token.sub!(/\A[a-z]/) {$&.upcase} + token.sub!(/\A\$/, "_G_") + token.sub!(/\A@@/, "_C_") + token.sub!(/\A@/, "_I_") + token.gsub!(/\W+/, "") + end + token +end + predefined_ids = {} preserved_ids = [] local_ids = [] @@ -153,16 +173,7 @@ predefined.split(/^/).each_with_index do |line, num| line.sub!(/\s+#.*/, '') name, token = line.split next unless 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 + token = id2varname(token || name) if name == '-' preserved_ids << token next @@ -185,13 +196,14 @@ predefined.split(/^/).each_with_index do |line, num| end << token predefined_ids[token] = name end +index = 127 token_ops.split(/^/).each do |line| next if /^#/ =~ line line.sub!(/\s+#.*/, '') id, op, token = line.split next unless id and op token ||= (id unless /\A\W\z/ =~ op) - token_op_ids << [id, op, token] + token_op_ids << [id, op, token, (index += 1 if token)] end { "LOCAL" => local_ids, @@ -203,4 +215,5 @@ end :preserved => preserved_ids, :predefined => predefined_ids, :token_op => token_op_ids, + :last_token => index, } |