ruby-changes:14935
From: akr <ko1@a...>
Date: Thu, 4 Mar 2010 00:12:12 +0900 (JST)
Subject: [ruby-changes:14935] Ruby:r26806 (trunk): * tool/transcode-tblgen.rb (HEX2): extracted from regexps.
akr 2010-03-04 00:11:56 +0900 (Thu, 04 Mar 2010) New Revision: 26806 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=26806 Log: * tool/transcode-tblgen.rb (HEX2): extracted from regexps. Modified files: trunk/ChangeLog trunk/tool/transcode-tblgen.rb Index: ChangeLog =================================================================== --- ChangeLog (revision 26805) +++ ChangeLog (revision 26806) @@ -1,3 +1,7 @@ +Thu Mar 4 00:10:54 2010 Tanaka Akira <akr@f...> + + * tool/transcode-tblgen.rb (HEX2): extracted from regexps. + Wed Mar 3 23:16:32 2010 Marc-Andre Lafortune <ruby-core@m...> * complex.c (nucomp_real_check): raise TypeError instead of Index: tool/transcode-tblgen.rb =================================================================== --- tool/transcode-tblgen.rb (revision 26805) +++ tool/transcode-tblgen.rb (revision 26806) @@ -18,17 +18,20 @@ '"' + 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 @@ 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 @@ "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 @@ {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] -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/