1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* tool/transcode-tblgen.rb: gather infos arrays and BYTE_LOOKUPs.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19036 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
akr 2008-09-01 14:16:30 +00:00
parent bf2473d869
commit edf1d608c7
2 changed files with 21 additions and 18 deletions

View file

@ -1,3 +1,7 @@
Mon Sep 1 23:14:25 2008 Tanaka Akira <akr@fsij.org>
* tool/transcode-tblgen.rb: gather infos arrays and BYTE_LOOKUPs.
Mon Sep 1 22:42:54 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp> Mon Sep 1 22:42:54 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
* lib/mkmf.rb (distclean): added RM_RF conftest.dSYM. * lib/mkmf.rb (distclean): added RM_RF conftest.dSYM.
@ -19,7 +23,7 @@ Mon Sep 1 22:20:22 2008 Tanaka Akira <akr@fsij.org>
Mon Sep 1 21:46:18 2008 Tanaka Akira <akr@fsij.org> Mon Sep 1 21:46:18 2008 Tanaka Akira <akr@fsij.org>
* tool/transcode-tblgen.rb: gather offsets array at top. * tool/transcode-tblgen.rb: gather offsets arrays at top.
Mon Sep 1 21:09:04 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp> Mon Sep 1 21:09:04 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>

View file

@ -297,7 +297,7 @@ class ActionMap
code code
end end
def generate_lookup_node(bytes_code, code, name, table) def generate_lookup_node(bytes_code, words_code, name, table)
offsets = [] offsets = []
infos = [] infos = []
infomap = {} infomap = {}
@ -361,14 +361,14 @@ static const BYTE_LOOKUP
}; };
End End
code << r words_code << r
end end
PreMemo = {} PreMemo = {}
PostMemo = {} PostMemo = {}
NextName = "a" NextName = "a"
def generate_node(bytes_code, code, name_hint=nil, valid_encoding=nil) def generate_node(bytes_code, words_code, name_hint=nil, valid_encoding=nil)
if n = PreMemo[[self,valid_encoding]] if n = PreMemo[[self,valid_encoding]]
return n return n
end end
@ -380,7 +380,7 @@ End
else else
name_hint2 = nil name_hint2 = nil
name_hint2 = "#{name_hint}_#{'%02X' % byte}" if name_hint name_hint2 = "#{name_hint}_#{'%02X' % byte}" if name_hint
table[byte] = "&" + rest.generate_node(bytes_code, code, name_hint2, rest_valid_encoding) table[byte] = "&" + rest.generate_node(bytes_code, words_code, name_hint2, rest_valid_encoding)
end end
} }
@ -395,14 +395,13 @@ End
PreMemo[[self,valid_encoding]] = PostMemo[table] = name_hint PreMemo[[self,valid_encoding]] = PostMemo[table] = name_hint
generate_lookup_node(bytes_code, code, name_hint, table) generate_lookup_node(bytes_code, words_code, name_hint, table)
name_hint name_hint
end end
def gennode(bytes_code, name_hint=nil, valid_encoding=nil) def gennode(bytes_code, words_code, name_hint=nil, valid_encoding=nil)
code = '' name = generate_node(bytes_code, words_code, name_hint, valid_encoding)
name = generate_node(bytes_code, code, name_hint, valid_encoding) return name
return name, code
end end
end end
@ -544,13 +543,14 @@ def transcode_compile_tree(name, from, map)
valid_encoding = nil valid_encoding = nil
end end
defined_name, code = am.gennode(TRANSCODE_GENERATED_BYTES_CODE, name, valid_encoding) defined_name = am.gennode(TRANSCODE_GENERATED_BYTES_CODE, TRANSCODE_GENERATED_WORDS_CODE, name, valid_encoding)
return defined_name, code, max_input return defined_name, max_input
end end
TRANSCODERS = [] TRANSCODERS = []
TRANSCODE_GENERATED_BYTES_CODE = '' TRANSCODE_GENERATED_BYTES_CODE = ''
TRANSCODE_GENERATED_CODE = '' TRANSCODE_GENERATED_WORDS_CODE = ''
TRANSCODE_GENERATED_TRANSCODER_CODE = ''
def transcode_tblgen(from, to, map) def transcode_tblgen(from, to, map)
STDERR.puts "converter from #{from} to #{to}" if VERBOSE_MODE STDERR.puts "converter from #{from} to #{to}" if VERBOSE_MODE
@ -564,7 +564,7 @@ def transcode_tblgen(from, to, map)
tree_name = "from_#{id_from}_to_#{id_to}" tree_name = "from_#{id_from}_to_#{id_to}"
end end
map = encode_utf8(map) map = encode_utf8(map)
real_tree_name, tree_code, max_input = transcode_compile_tree(tree_name, from, map) real_tree_name, max_input = transcode_compile_tree(tree_name, from, map)
transcoder_name = "rb_#{tree_name}" transcoder_name = "rb_#{tree_name}"
TRANSCODERS << transcoder_name TRANSCODERS << transcoder_name
input_unit_length = UnitLength[from] input_unit_length = UnitLength[from]
@ -581,19 +581,18 @@ static const rb_transcoder
NULL, NULL, NULL NULL, NULL, NULL
}; };
End End
TRANSCODE_GENERATED_CODE << tree_code + "\n" + transcoder_code TRANSCODE_GENERATED_TRANSCODER_CODE << transcoder_code
'' ''
end end
def transcode_generate_node(am, name_hint=nil) def transcode_generate_node(am, name_hint=nil)
STDERR.puts "converter for #{name_hint}" if VERBOSE_MODE STDERR.puts "converter for #{name_hint}" if VERBOSE_MODE
name, code = am.gennode(TRANSCODE_GENERATED_BYTES_CODE, name_hint) name = am.gennode(TRANSCODE_GENERATED_BYTES_CODE, TRANSCODE_GENERATED_WORDS_CODE, name_hint)
TRANSCODE_GENERATED_CODE << code
'' ''
end end
def transcode_generated_code def transcode_generated_code
TRANSCODE_GENERATED_BYTES_CODE + TRANSCODE_GENERATED_CODE TRANSCODE_GENERATED_BYTES_CODE + TRANSCODE_GENERATED_WORDS_CODE + TRANSCODE_GENERATED_TRANSCODER_CODE
end end
def transcode_register_code def transcode_register_code