mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* tool/transcode-tblgen.rb: make offsets arrays into single array.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19032 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
03ec9b1aac
commit
339dfc32a7
2 changed files with 20 additions and 8 deletions
|
@ -1,3 +1,7 @@
|
|||
Mon Sep 1 22:20:22 2008 Tanaka Akira <akr@fsij.org>
|
||||
|
||||
* tool/transcode-tblgen.rb: make offsets arrays into single array.
|
||||
|
||||
Mon Sep 1 21:46:18 2008 Tanaka Akira <akr@fsij.org>
|
||||
|
||||
* tool/transcode-tblgen.rb: gather offsets array at top.
|
||||
|
|
|
@ -236,7 +236,7 @@ class ActionMap
|
|||
|
||||
def format_offsets(min, max, offsets)
|
||||
offsets = offsets[min..max]
|
||||
code = "{ %d, %d,\n" % [min, max]
|
||||
code = "%d, %d,\n" % [min, max]
|
||||
0.step(offsets.length-1,16) {|i|
|
||||
code << " "
|
||||
code << offsets[i,8].map {|off| "%3d," % off.to_s }.join('')
|
||||
|
@ -246,7 +246,6 @@ class ActionMap
|
|||
end
|
||||
code << "\n"
|
||||
}
|
||||
code << '}'
|
||||
code
|
||||
end
|
||||
|
||||
|
@ -322,15 +321,24 @@ class ActionMap
|
|||
offsets_key = [min, max, offsets[min..max]]
|
||||
if n = OffsetsMemo[offsets_key]
|
||||
offsets_name = n
|
||||
offsets_code = ''
|
||||
else
|
||||
offsets_name = "#{name}_offsets"
|
||||
offsets_code = <<"End"
|
||||
static const unsigned char
|
||||
#{offsets_name}[#{2+max-min+1}] = #{format_offsets(min,max,offsets)};
|
||||
End
|
||||
OffsetsMemo[offsets_key] = offsets_name
|
||||
bytes_code << offsets_code
|
||||
if bytes_code.empty?
|
||||
bytes_code << <<"End"
|
||||
static const unsigned char
|
||||
byte_array[0] = {
|
||||
};
|
||||
End
|
||||
end
|
||||
size = bytes_code[/\[\d+\]/][1...-1].to_i
|
||||
bytes_code.sub!(/^(\};\n\z)/) {
|
||||
"\#define #{offsets_name} (byte_array+#{size})\n" +
|
||||
format_offsets(min,max,offsets) + "\n" +
|
||||
$1
|
||||
}
|
||||
size += 2+max-min+1
|
||||
bytes_code.sub!(/\[\d+\]/) { "[#{size}]" }
|
||||
end
|
||||
|
||||
if n = InfosMemo[infos]
|
||||
|
|
Loading…
Add table
Reference in a new issue