* tool/transcode-tblgen.rb (HEX2): extracted from regexps.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26806 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
215b8092a7
commit
5521b78fc3
@ -1,3 +1,7 @@
|
|||||||
|
Thu Mar 4 00:10:54 2010 Tanaka Akira <akr@fsij.org>
|
||||||
|
|
||||||
|
* tool/transcode-tblgen.rb (HEX2): extracted from regexps.
|
||||||
|
|
||||||
Wed Mar 3 23:16:32 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
|
Wed Mar 3 23:16:32 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
|
||||||
|
|
||||||
* complex.c (nucomp_real_check): raise TypeError instead of
|
* complex.c (nucomp_real_check): raise TypeError instead of
|
||||||
|
@ -18,17 +18,20 @@ def c_esc(str)
|
|||||||
'"' + str.gsub(C_ESC_PAT) { C_ESC[$&] } + '"'
|
'"' + str.gsub(C_ESC_PAT) { C_ESC[$&] } + '"'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
HEX2 = /[0-9A-Fa-f]{2}/
|
||||||
|
|
||||||
class StrSet
|
class StrSet
|
||||||
attr_reader :pat
|
attr_reader :pat
|
||||||
|
|
||||||
def self.parse(pattern)
|
def self.parse(pattern)
|
||||||
if /\A\s*(([0-9a-f][0-9a-f]|\{([0-9a-f][0-9a-f]|[0-9a-f][0-9a-f]-[0-9a-f][0-9a-f])(,([0-9a-f][0-9a-f]|[0-9a-f][0-9a-f]-[0-9a-f][0-9a-f]))*\})+(\s+|\z))*\z/i !~ pattern
|
if /\A\s*((#{HEX2}|\{(#{HEX2}|#{HEX2}-#{HEX2})(,(#{HEX2}|#{HEX2}-#{HEX2}))*\})+(\s+|\z))*\z/o !~ pattern
|
||||||
raise ArgumentError, "invalid pattern: #{pattern.inspect}"
|
raise ArgumentError, "invalid pattern: #{pattern.inspect}"
|
||||||
end
|
end
|
||||||
result = []
|
result = []
|
||||||
pattern.scan(/\S+/) {|seq|
|
pattern.scan(/\S+/) {|seq|
|
||||||
seq_result = []
|
seq_result = []
|
||||||
while !seq.empty?
|
while !seq.empty?
|
||||||
if /\A([0-9a-f][0-9a-f])/i =~ seq
|
if /\A(#{HEX2})/o =~ seq
|
||||||
byte = $1.to_i(16)
|
byte = $1.to_i(16)
|
||||||
seq_result << [byte..byte]
|
seq_result << [byte..byte]
|
||||||
seq = $'
|
seq = $'
|
||||||
@ -37,11 +40,11 @@ class StrSet
|
|||||||
seq = $'
|
seq = $'
|
||||||
set_result = []
|
set_result = []
|
||||||
set.scan(/[^,]+/) {|range|
|
set.scan(/[^,]+/) {|range|
|
||||||
if /\A([0-9a-f][0-9a-f])-([0-9a-f][0-9a-f])\z/i =~ range
|
if /\A(#{HEX2})-(#{HEX2})\z/o =~ range
|
||||||
b = $1.to_i(16)
|
b = $1.to_i(16)
|
||||||
e = $2.to_i(16)
|
e = $2.to_i(16)
|
||||||
set_result << (b..e)
|
set_result << (b..e)
|
||||||
elsif /\A([0-9a-f][0-9a-f])\z/i =~ range
|
elsif /\A(#{HEX2})\z/o =~ range
|
||||||
byte = $1.to_i(16)
|
byte = $1.to_i(16)
|
||||||
set_result << (byte..byte)
|
set_result << (byte..byte)
|
||||||
else
|
else
|
||||||
@ -333,19 +336,19 @@ class ActionMap
|
|||||||
"FUNio"
|
"FUNio"
|
||||||
when :func_so
|
when :func_so
|
||||||
"FUNso"
|
"FUNso"
|
||||||
when /\A([0-9a-f][0-9a-f])\z/i
|
when /\A(#{HEX2})\z/o
|
||||||
"o1(0x#$1)"
|
"o1(0x#$1)"
|
||||||
when /\A([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])\z/i
|
when /\A(#{HEX2})(#{HEX2})\z/o
|
||||||
"o2(0x#$1,0x#$2)"
|
"o2(0x#$1,0x#$2)"
|
||||||
when /\A([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])\z/i
|
when /\A(#{HEX2})(#{HEX2})(#{HEX2})\z/o
|
||||||
"o3(0x#$1,0x#$2,0x#$3)"
|
"o3(0x#$1,0x#$2,0x#$3)"
|
||||||
when /funsio\((\d+)\)/
|
when /funsio\((\d+)\)/
|
||||||
"funsio(#{$1})"
|
"funsio(#{$1})"
|
||||||
when /\A([0-9a-f][0-9a-f])(3[0-9])([0-9a-f][0-9a-f])(3[0-9])\z/i
|
when /\A(#{HEX2})(3[0-9])(#{HEX2})(3[0-9])\z/o
|
||||||
"g4(0x#$1,0x#$2,0x#$3,0x#$4)"
|
"g4(0x#$1,0x#$2,0x#$3,0x#$4)"
|
||||||
when /\A(f[0-7])([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])\z/i
|
when /\A(f[0-7])(#{HEX2})(#{HEX2})(#{HEX2})\z/o
|
||||||
"o4(0x#$1,0x#$2,0x#$3,0x#$4)"
|
"o4(0x#$1,0x#$2,0x#$3,0x#$4)"
|
||||||
when /\A([0-9a-f][0-9a-f]){4,259}\z/i
|
when /\A(#{HEX2}){4,259}\z/o
|
||||||
gen_str(info.upcase)
|
gen_str(info.upcase)
|
||||||
when /\A\/\*BYTE_LOOKUP\*\// # pointer to BYTE_LOOKUP structure
|
when /\A\/\*BYTE_LOOKUP\*\// # pointer to BYTE_LOOKUP structure
|
||||||
$'.to_s
|
$'.to_s
|
||||||
@ -740,7 +743,7 @@ ValidEncoding = {
|
|||||||
{81-fe}{30-39}{81-fe}{30-39}',
|
{81-fe}{30-39}{81-fe}{30-39}',
|
||||||
}
|
}
|
||||||
|
|
||||||
def set_valid_byte_pattern (encoding, pattern_or_label)
|
def set_valid_byte_pattern(encoding, pattern_or_label)
|
||||||
pattern =
|
pattern =
|
||||||
if ValidEncoding[pattern_or_label]
|
if ValidEncoding[pattern_or_label]
|
||||||
ValidEncoding[pattern_or_label]
|
ValidEncoding[pattern_or_label]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user