summaryrefslogtreecommitdiff
path: root/tool
diff options
context:
space:
mode:
authorakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-03-15 12:59:54 +0000
committerakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-03-15 12:59:54 +0000
commit2ce0d5db9679372350f837abf54878311142bc35 (patch)
tree7c4f03ad2461ecce3cd0a6d3726fdd5ddc2926af /tool
parenta73374bb5716287b82879e6ced116315aac77f7d (diff)
* tool/transcode-tblgen.rb: ActionMap#each_firstbyte inlined.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26942 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'tool')
-rwxr-xr-xtool/transcode-tblgen.rb27
1 files changed, 13 insertions, 14 deletions
diff --git a/tool/transcode-tblgen.rb b/tool/transcode-tblgen.rb
index 34d5e8e77b..31c4ea0521 100755
--- a/tool/transcode-tblgen.rb
+++ b/tool/transcode-tblgen.rb
@@ -308,16 +308,6 @@ class ActionMap
end
end
- def each_firstbyte
- @tree.each {|byte_min, byte_max, child_tree|
- byte_min.upto(byte_max) {|byte|
- prefix = @prefix + ("%02X" % byte)
- am = ActionMap.new(prefix, child_tree)
- yield byte, am
- }
- }
- end
-
OffsetsMemo = {}
InfosMemo = {}
@@ -486,13 +476,22 @@ End
end
table = Array.new(0x100, :invalid)
- each_firstbyte {|byte, rest|
+ @tree.each {|byte_min, byte_max, child_tree|
+ prefix = @prefix + (byte_min == byte_max ? "%02X" % byte_min : "{%02X-%02X}" % [byte_min, byte_max])
+ rest = ActionMap.new(prefix, child_tree)
if a = rest.empty_action
- table[byte] = a
+ byte_min.upto(byte_max) {|byte|
+ table[byte] = a
+ }
else
name_hint2 = nil
- name_hint2 = "#{name_hint}_#{'%02X' % byte}" if name_hint
- table[byte] = "/*BYTE_LOOKUP*/" + rest.gennode(bytes_code, words_code, name_hint2)
+ if name_hint
+ name_hint2 = "#{name_hint}_#{'%02X' % byte_min}"
+ end
+ v = "/*BYTE_LOOKUP*/" + rest.gennode(bytes_code, words_code, name_hint2)
+ byte_min.upto(byte_max) {|byte|
+ table[byte] = v
+ }
end
}