summaryrefslogtreecommitdiff
path: root/tool
diff options
context:
space:
mode:
authorakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-03-03 15:11:56 +0000
committerakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-03-03 15:11:56 +0000
commit5521b78fc31efffb45f2e904df59bd86c96345f3 (patch)
tree86758cb6305062927c72fbd91062e3472fe686a9 /tool
parent215b8092a7821700baa8b89bac010db721891f99 (diff)
* 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
Diffstat (limited to 'tool')
-rwxr-xr-xtool/transcode-tblgen.rb25
1 files changed, 14 insertions, 11 deletions
diff --git a/tool/transcode-tblgen.rb b/tool/transcode-tblgen.rb
index 4f505379b7..f8da86d8c9 100755
--- a/tool/transcode-tblgen.rb
+++ b/tool/transcode-tblgen.rb
@@ -18,17 +18,20 @@ def c_esc(str)
'"' + str.gsub(C_ESC_PAT) { C_ESC[$&] } + '"'
end
+HEX2 = /[0-9A-Fa-f]{2}/
+
class StrSet
attr_reader :pat
+
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}"
end
result = []
pattern.scan(/\S+/) {|seq|
seq_result = []
while !seq.empty?
- if /\A([0-9a-f][0-9a-f])/i =~ seq
+ if /\A(#{HEX2})/o =~ seq
byte = $1.to_i(16)
seq_result << [byte..byte]
seq = $'
@@ -37,11 +40,11 @@ class StrSet
seq = $'
set_result = []
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)
e = $2.to_i(16)
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)
set_result << (byte..byte)
else
@@ -333,19 +336,19 @@ class ActionMap
"FUNio"
when :func_so
"FUNso"
- when /\A([0-9a-f][0-9a-f])\z/i
+ when /\A(#{HEX2})\z/o
"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)"
- 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)"
when /funsio\((\d+)\)/
"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)"
- 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)"
- when /\A([0-9a-f][0-9a-f]){4,259}\z/i
+ when /\A(#{HEX2}){4,259}\z/o
gen_str(info.upcase)
when /\A\/\*BYTE_LOOKUP\*\// # pointer to BYTE_LOOKUP structure
$'.to_s
@@ -740,7 +743,7 @@ ValidEncoding = {
{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 =
if ValidEncoding[pattern_or_label]
ValidEncoding[pattern_or_label]